<?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>202500</bug_id>
          
          <creation_ts>2019-10-02 16:03:37 -0700</creation_ts>
          <short_desc>Only wrapping CryptoKeys for IDB during serialization</short_desc>
          <delta_ts>2019-12-17 15:58:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=202648</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=202715</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=205361</see_also>
          <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="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>rniwa</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1576230</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-02 16:03:37 -0700</bug_when>
    <thetext>Only wrapping CryptoKeys for IDB during serialization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576231</commentid>
    <comment_count>1</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-02 16:03:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/52445927&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576300</commentid>
    <comment_count>2</comment_count>
      <attachid>380081</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-02 22:49:57 -0700</bug_when>
    <thetext>Created attachment 380081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576340</commentid>
    <comment_count>3</comment_count>
      <attachid>380091</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-03 02:01:19 -0700</bug_when>
    <thetext>Created attachment 380091
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576422</commentid>
    <comment_count>4</comment_count>
      <attachid>380091</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-03 08:42:24 -0700</bug_when>
    <thetext>Comment on attachment 380091
Patch

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

&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:417
&gt; +    m_thread.workerLoaderProxy().postTaskToLoader([resultContainer = resultContainer.copyRef(), key, wrappedKeyContainer = wrappedKeyContainer.copyRef(), doneContainer = doneContainer.copyRef(), workerMessagingProxy = Ref&lt;WorkerMessagingProxy&gt;(downcast&lt;WorkerMessagingProxy&gt;(m_thread.workerLoaderProxy()))](ScriptExecutionContext&amp; context) {

Ref&apos;ing the WorkerMessagingProxy and passing it to another thread like this is not correct. If you look at the constructor / destructor of WorkerMessagingProxy, you&apos;ll see that this object needs to be constructed and destroyed on the same thread. The fact that it subclasses ThreadSafeRefCounted&lt;&gt; does not change that.

&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:420
&gt; +        ((WorkerLoaderProxy&amp;)workerMessagingProxy.get()).postTaskForModeToWorkerGlobalScope([](ScriptExecutionContext&amp; context) {

No C-casts please.

&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:427
&gt;          waitResult = m_thread.runLoop().runInMode(this, WorkerRunLoop::defaultMode());

What makes sure that |this| stays alive while spinning the run loop? I do not see you holding a Ref&lt;&gt; to the WorkerGlobalScope, which seems wrong.

&gt; Tools/ChangeLog:9
&gt; +        Modifies IndexedDB.StructuredCloneBackwardCompatibility test to include CryptoKeys.

Do these reproduce the crash?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577270</commentid>
    <comment_count>5</comment_count>
      <attachid>380091</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-06 16:51:44 -0700</bug_when>
    <thetext>Comment on attachment 380091
Patch

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

Thanks Chris for taking a look.

&gt;&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:417
&gt;&gt; +    m_thread.workerLoaderProxy().postTaskToLoader([resultContainer = resultContainer.copyRef(), key, wrappedKeyContainer = wrappedKeyContainer.copyRef(), doneContainer = doneContainer.copyRef(), workerMessagingProxy = Ref&lt;WorkerMessagingProxy&gt;(downcast&lt;WorkerMessagingProxy&gt;(m_thread.workerLoaderProxy()))](ScriptExecutionContext&amp; context) {
&gt; 
&gt; Ref&apos;ing the WorkerMessagingProxy and passing it to another thread like this is not correct. If you look at the constructor / destructor of WorkerMessagingProxy, you&apos;ll see that this object needs to be constructed and destroyed on the same thread. The fact that it subclasses ThreadSafeRefCounted&lt;&gt; does not change that.

Thanks for pointing it out. I didn&apos;t consider that. However, it looks like that WorkerMessagingProxy expects itself to be destructed in main thread which is where this lambda is going to be executed. It looks fine for me then.

&gt;&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:420
&gt;&gt; +        ((WorkerLoaderProxy&amp;)workerMessagingProxy.get()).postTaskForModeToWorkerGlobalScope([](ScriptExecutionContext&amp; context) {
&gt; 
&gt; No C-casts please.

Fixed.

&gt;&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:427
&gt;&gt;          waitResult = m_thread.runLoop().runInMode(this, WorkerRunLoop::defaultMode());
&gt; 
&gt; What makes sure that |this| stays alive while spinning the run loop? I do not see you holding a Ref&lt;&gt; to the WorkerGlobalScope, which seems wrong.

Added.

&gt;&gt; Tools/ChangeLog:9
&gt;&gt; +        Modifies IndexedDB.StructuredCloneBackwardCompatibility test to include CryptoKeys.
&gt; 
&gt; Do these reproduce the crash?

No, none of the tests help reproduce the crash. The crash is very racy and it is very hard to reproduce. I will give it one more shot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577274</commentid>
    <comment_count>6</comment_count>
      <attachid>380305</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-06 18:13:59 -0700</bug_when>
    <thetext>Created attachment 380305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577359</commentid>
    <comment_count>7</comment_count>
      <attachid>380305</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-07 08:34:16 -0700</bug_when>
    <thetext>Comment on attachment 380305
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Only wrapping CryptoKeys for IDB during serialization

EWS failures look legit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577360</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-07 08:36:11 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; Comment on attachment 380305 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=380305&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        Only wrapping CryptoKeys for IDB during serialization
&gt; 
&gt; EWS failures look legit.

For example:
ASSERTION FAILED: isActive()
./Modules/indexeddb/IDBTransaction.cpp(1254) : Ref&lt;WebCore::IDBRequest&gt; WebCore::IDBTransaction::requestPutOrAdd(JSC::ExecState &amp;, WebCore::IDBObjectStore &amp;, RefPtr&lt;WebCore::IDBKey&gt; &amp;&amp;, WebCore::SerializedScriptValue &amp;, IndexedDB::ObjectStoreOverwriteMode)
1   0x102724019 WTFCrash
2   0x1120c834b WTFCrashWithInfo(int, char const*, char const*, int)
3   0x1138996dc WebCore::IDBTransaction::requestPutOrAdd(JSC::ExecState&amp;, WebCore::IDBObjectStore&amp;, WTF::RefPtr&lt;WebCore::IDBKey, WTF::DumbPtrTraits&lt;WebCore::IDBKey&gt; &gt;&amp;&amp;, WebCore::SerializedScriptValue&amp;, WebCore::IndexedDB::ObjectStoreOverwriteMode)
4   0x113899325 WebCore::IDBObjectStore::putOrAdd(JSC::ExecState&amp;, JSC::JSValue, WTF::RefPtr&lt;WebCore::IDBKey, WTF::DumbPtrTraits&lt;WebCore::IDBKey&gt; &gt;, WebCore::IndexedDB::ObjectStoreOverwriteMode, WebCore::IDBObjectStore::InlineKeyCheck)
5   0x113899433 WebCore::IDBObjectStore::put(JSC::ExecState&amp;, JSC::JSValue, JSC::JSValue)
6   0x112d9e364 WebCore::jsIDBObjectStorePrototypeFunctionPutBody(JSC::ExecState*, WebCore::JSIDBObjectStore*, JSC::ThrowScope&amp;)
7   0x112d812e0 long long WebCore::IDLOperation&lt;WebCore::JSIDBObjectStore&gt;::call&lt;&amp;(WebCore::jsIDBObjectStorePrototypeFunctionPutBody(JSC::ExecState*, WebCore::JSIDBObjectStore*, JSC::ThrowScope&amp;)), (WebCore::CastedThisErrorBehavior)0&gt;(JSC::ExecState&amp;, char const*)
8   0x112d80fcc WebCore::jsIDBObjectStorePrototypeFunctionPut(JSC::ExecState*)
9   0x2d4ae99894b
10  0x102c63562 op_call_slow_return_location_narrow
11  0x102c63562 op_call_slow_return_location_narrow
12  0x102c47063 vmEntryToJavaScript
13  0x1039772ce JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*)
14  0x1039778ff JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;)
15  0x103c5531c JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;)
16  0x103c5540a JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
17  0x103c556fe JSC::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
18  0x113e9283b WebCore::JSExecState::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
19  0x113ee082a WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext&amp;, WebCore::Event&amp;)
20  0x1145332b3 WebCore::EventTarget::innerInvokeEventListeners(WebCore::Event&amp;, WTF::Vector&lt;WTF::RefPtr&lt;WebCore::RegisteredEventListener, WTF::DumbPtrTraits&lt;WebCore::RegisteredEventListener&gt; &gt;, 1ul, WTF::CrashOnOverflow, 16ul&gt;, WebCore::EventTarget::EventInvokePhase)
21  0x11452eac2 WebCore::EventTarget::fireEventListeners(WebCore::Event&amp;, WebCore::EventTarget::EventInvokePhase)
22  0x114508c67 WebCore::EventContext::handleLocalEvents(WebCore::Event&amp;, WebCore::EventTarget::EventInvokePhase) const
23  0x114509781 WebCore::dispatchEventInDOM(WebCore::Event&amp;, WebCore::EventPath const&amp;)
24  0x114509ba2 void WebCore::dispatchEventWithType&lt;WebCore::EventTarget&gt;(WTF::Vector&lt;WebCore::EventTarget*, 0ul, WTF::CrashOnOverflow, 16ul&gt; const&amp;, WebCore::Event&amp;)
25  0x114509a3d WebCore::EventDispatcher::dispatchEvent(WTF::Vector&lt;WebCore::EventTarget*, 0ul, WTF::CrashOnOverflow, 16ul&gt; const&amp;, WebCore::Event&amp;)
26  0x1138a1f2a WebCore::IDBRequest::dispatchEvent(WebCore::Event&amp;)
27  0x1138a1a4e WebCore::IDBOpenDBRequest::dispatchEvent(WebCore::Event&amp;)
28  0x1160464a0 WebCore::WorkerEventQueue::EventDispatcher::dispatch()
29  0x116046414 WebCore::WorkerEventQueue::enqueueEvent(WTF::Ref&lt;WebCore::Event, WTF::DumbPtrTraits&lt;WebCore::Event&gt; &gt;&amp;&amp;)::$_1::operator()(WebCore::ScriptExecutionContext&amp;) const
30  0x116046204 WTF::Detail::CallableWrapper&lt;WebCore::WorkerEventQueue::enqueueEvent(WTF::Ref&lt;WebCore::Event, WTF::DumbPtrTraits&lt;WebCore::Event&gt; &gt;&amp;&amp;)::$_1, void, WebCore::ScriptExecutionContext&amp;&gt;::call(WebCore::ScriptExecutionContext&amp;)
31  0x113d1ae00 WTF::Function&lt;void (WebCore::ScriptExecutionContext&amp;)&gt;::operator()(WebCore::ScriptExecutionContext&amp;) const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577363</commentid>
    <comment_count>9</comment_count>
      <attachid>380305</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-07 08:46:54 -0700</bug_when>
    <thetext>Comment on attachment 380305
Patch

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

r- due to failures.

&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:418
&gt; +    m_thread.workerLoaderProxy().postTaskToLoader([resultContainer = resultContainer.copyRef(), key, wrappedKeyContainer = wrappedKeyContainer.copyRef(), doneContainer = doneContainer.copyRef(), workerMessagingProxy = Ref&lt;WorkerMessagingProxy&gt;(downcast&lt;WorkerMessagingProxy&gt;(m_thread.workerLoaderProxy()))](ScriptExecutionContext&amp; context) {

Why not use makeRef() instead of Ref&lt;WorkerMessagingProxy&gt;() ?

&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:421
&gt; +        static_cast&lt;WorkerLoaderProxy&amp;&gt;(workerMessagingProxy.get()).postTaskForModeToWorkerGlobalScope([](ScriptExecutionContext&amp; context) {

Why is the static_cast() needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577406</commentid>
    <comment_count>10</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-07 11:36:56 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; Comment on attachment 380305 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=380305&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        Only wrapping CryptoKeys for IDB during serialization
&gt; 
&gt; EWS failures look legit.

Not sure how. Will talk to Brady or Sihui about this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577410</commentid>
    <comment_count>11</comment_count>
      <attachid>380305</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-07 11:40:58 -0700</bug_when>
    <thetext>Comment on attachment 380305
Patch

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

&gt;&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:418
&gt;&gt; +    m_thread.workerLoaderProxy().postTaskToLoader([resultContainer = resultContainer.copyRef(), key, wrappedKeyContainer = wrappedKeyContainer.copyRef(), doneContainer = doneContainer.copyRef(), workerMessagingProxy = Ref&lt;WorkerMessagingProxy&gt;(downcast&lt;WorkerMessagingProxy&gt;(m_thread.workerLoaderProxy()))](ScriptExecutionContext&amp; context) {
&gt; 
&gt; Why not use makeRef() instead of Ref&lt;WorkerMessagingProxy&gt;() ?

Fixed.

&gt;&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:421
&gt;&gt; +        static_cast&lt;WorkerLoaderProxy&amp;&gt;(workerMessagingProxy.get()).postTaskForModeToWorkerGlobalScope([](ScriptExecutionContext&amp; context) {
&gt; 
&gt; Why is the static_cast() needed?

postTaskForModeToWorkerGlobalScope is not exposed in WorkerMessagingProxy, and therefore I need to upcast the object to WorkerLoaderProxy to use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577439</commentid>
    <comment_count>12</comment_count>
      <attachid>380305</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-07 12:50:04 -0700</bug_when>
    <thetext>Comment on attachment 380305
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt;&gt;&gt; +        Only wrapping CryptoKeys for IDB during serialization
&gt;&gt;&gt; 
&gt;&gt;&gt; EWS failures look legit.
&gt;&gt; 
&gt;&gt; For example:
&gt;&gt; ASSERTION FAILED: isActive()
&gt;&gt; ./Modules/indexeddb/IDBTransaction.cpp(1254) : Ref&lt;WebCore::IDBRequest&gt; WebCore::IDBTransaction::requestPutOrAdd(JSC::ExecState &amp;, WebCore::IDBObjectStore &amp;, RefPtr&lt;WebCore::IDBKey&gt; &amp;&amp;, WebCore::SerializedScriptValue &amp;, IndexedDB::ObjectStoreOverwriteMode)
&gt;&gt; 1   0x102724019 WTFCrash
&gt;&gt; 2   0x1120c834b WTFCrashWithInfo(int, char const*, char const*, int)
&gt;&gt; 3   0x1138996dc WebCore::IDBTransaction::requestPutOrAdd(JSC::ExecState&amp;, WebCore::IDBObjectStore&amp;, WTF::RefPtr&lt;WebCore::IDBKey, WTF::DumbPtrTraits&lt;WebCore::IDBKey&gt; &gt;&amp;&amp;, WebCore::SerializedScriptValue&amp;, WebCore::IndexedDB::ObjectStoreOverwriteMode)
&gt;&gt; 4   0x113899325 WebCore::IDBObjectStore::putOrAdd(JSC::ExecState&amp;, JSC::JSValue, WTF::RefPtr&lt;WebCore::IDBKey, WTF::DumbPtrTraits&lt;WebCore::IDBKey&gt; &gt;, WebCore::IndexedDB::ObjectStoreOverwriteMode, WebCore::IDBObjectStore::InlineKeyCheck)
&gt;&gt; 5   0x113899433 WebCore::IDBObjectStore::put(JSC::ExecState&amp;, JSC::JSValue, JSC::JSValue)
&gt;&gt; 6   0x112d9e364 WebCore::jsIDBObjectStorePrototypeFunctionPutBody(JSC::ExecState*, WebCore::JSIDBObjectStore*, JSC::ThrowScope&amp;)
&gt;&gt; 7   0x112d812e0 long long WebCore::IDLOperation&lt;WebCore::JSIDBObjectStore&gt;::call&lt;&amp;(WebCore::jsIDBObjectStorePrototypeFunctionPutBody(JSC::ExecState*, WebCore::JSIDBObjectStore*, JSC::ThrowScope&amp;)), (WebCore::CastedThisErrorBehavior)0&gt;(JSC::ExecState&amp;, char const*)
&gt;&gt; 8   0x112d80fcc WebCore::jsIDBObjectStorePrototypeFunctionPut(JSC::ExecState*)
&gt;&gt; 9   0x2d4ae99894b
&gt;&gt; 10  0x102c63562 op_call_slow_return_location_narrow
&gt;&gt; 11  0x102c63562 op_call_slow_return_location_narrow
&gt;&gt; 12  0x102c47063 vmEntryToJavaScript
&gt;&gt; 13  0x1039772ce JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*)
&gt;&gt; 14  0x1039778ff JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;)
&gt;&gt; 15  0x103c5531c JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;)
&gt;&gt; 16  0x103c5540a JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
&gt;&gt; 17  0x103c556fe JSC::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
&gt;&gt; 18  0x113e9283b WebCore::JSExecState::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
&gt;&gt; 19  0x113ee082a WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext&amp;, WebCore::Event&amp;)
&gt;&gt; 20  0x1145332b3 WebCore::EventTarget::innerInvokeEventListeners(WebCore::Event&amp;, WTF::Vector&lt;WTF::RefPtr&lt;WebCore::RegisteredEventListener, WTF::DumbPtrTraits&lt;WebCore::RegisteredEventListener&gt; &gt;, 1ul, WTF::CrashOnOverflow, 16ul&gt;, WebCore::EventTarget::EventInvokePhase)
&gt;&gt; 21  0x11452eac2 WebCore::EventTarget::fireEventListeners(WebCore::Event&amp;, WebCore::EventTarget::EventInvokePhase)
&gt;&gt; 22  0x114508c67 WebCore::EventContext::handleLocalEvents(WebCore::Event&amp;, WebCore::EventTarget::EventInvokePhase) const
&gt;&gt; 23  0x114509781 WebCore::dispatchEventInDOM(WebCore::Event&amp;, WebCore::EventPath const&amp;)
&gt;&gt; 24  0x114509ba2 void WebCore::dispatchEventWithType&lt;WebCore::EventTarget&gt;(WTF::Vector&lt;WebCore::EventTarget*, 0ul, WTF::CrashOnOverflow, 16ul&gt; const&amp;, WebCore::Event&amp;)
&gt;&gt; 25  0x114509a3d WebCore::EventDispatcher::dispatchEvent(WTF::Vector&lt;WebCore::EventTarget*, 0ul, WTF::CrashOnOverflow, 16ul&gt; const&amp;, WebCore::Event&amp;)
&gt;&gt; 26  0x1138a1f2a WebCore::IDBRequest::dispatchEvent(WebCore::Event&amp;)
&gt;&gt; 27  0x1138a1a4e WebCore::IDBOpenDBRequest::dispatchEvent(WebCore::Event&amp;)
&gt;&gt; 28  0x1160464a0 WebCore::WorkerEventQueue::EventDispatcher::dispatch()
&gt;&gt; 29  0x116046414 WebCore::WorkerEventQueue::enqueueEvent(WTF::Ref&lt;WebCore::Event, WTF::DumbPtrTraits&lt;WebCore::Event&gt; &gt;&amp;&amp;)::$_1::operator()(WebCore::ScriptExecutionContext&amp;) const
&gt;&gt; 30  0x116046204 WTF::Detail::CallableWrapper&lt;WebCore::WorkerEventQueue::enqueueEvent(WTF::Ref&lt;WebCore::Event, WTF::DumbPtrTraits&lt;WebCore::Event&gt; &gt;&amp;&amp;)::$_1, void, WebCore::ScriptExecutionContext&amp;&gt;::call(WebCore::ScriptExecutionContext&amp;)
&gt;&gt; 31  0x113d1ae00 WTF::Function&lt;void (WebCore::ScriptExecutionContext&amp;)&gt;::operator()(WebCore::ScriptExecutionContext&amp;) const
&gt; 
&gt; Not sure how. Will talk to Brady or Sihui about this.

Without my change, indexeddb crashes at the same location with my test. Bug 202648.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577443</commentid>
    <comment_count>13</comment_count>
      <attachid>380347</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-07 12:54:18 -0700</bug_when>
    <thetext>Created attachment 380347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577445</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-07 13:01:35 -0700</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #11)
&gt; Comment on attachment 380305 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=380305&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:418
&gt; &gt;&gt; +    m_thread.workerLoaderProxy().postTaskToLoader([resultContainer = resultContainer.copyRef(), key, wrappedKeyContainer = wrappedKeyContainer.copyRef(), doneContainer = doneContainer.copyRef(), workerMessagingProxy = Ref&lt;WorkerMessagingProxy&gt;(downcast&lt;WorkerMessagingProxy&gt;(m_thread.workerLoaderProxy()))](ScriptExecutionContext&amp; context) {
&gt; &gt; 
&gt; &gt; Why not use makeRef() instead of Ref&lt;WorkerMessagingProxy&gt;() ?
&gt; 
&gt; Fixed.
&gt; 
&gt; &gt;&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:421
&gt; &gt;&gt; +        static_cast&lt;WorkerLoaderProxy&amp;&gt;(workerMessagingProxy.get()).postTaskForModeToWorkerGlobalScope([](ScriptExecutionContext&amp; context) {
&gt; &gt; 
&gt; &gt; Why is the static_cast() needed?
&gt; 
&gt; postTaskForModeToWorkerGlobalScope is not exposed in WorkerMessagingProxy,
&gt; and therefore I need to upcast the object to WorkerLoaderProxy to use it.

WorkerMessagingProxy is a subclass of WorkerLoaderProxy so there should be no reason to cast. If the issue is that an override was marked as private in the subclass, then just make it public.
Or maybe the subclass has a good reason to make this private, in which case you&apos;d have a bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577460</commentid>
    <comment_count>15</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-07 13:29:29 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #14)
&gt; (In reply to Jiewen Tan from comment #11)
&gt; &gt; Comment on attachment 380305 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=380305&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:418
&gt; &gt; &gt;&gt; +    m_thread.workerLoaderProxy().postTaskToLoader([resultContainer = resultContainer.copyRef(), key, wrappedKeyContainer = wrappedKeyContainer.copyRef(), doneContainer = doneContainer.copyRef(), workerMessagingProxy = Ref&lt;WorkerMessagingProxy&gt;(downcast&lt;WorkerMessagingProxy&gt;(m_thread.workerLoaderProxy()))](ScriptExecutionContext&amp; context) {
&gt; &gt; &gt; 
&gt; &gt; &gt; Why not use makeRef() instead of Ref&lt;WorkerMessagingProxy&gt;() ?
&gt; &gt; 
&gt; &gt; Fixed.
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:421
&gt; &gt; &gt;&gt; +        static_cast&lt;WorkerLoaderProxy&amp;&gt;(workerMessagingProxy.get()).postTaskForModeToWorkerGlobalScope([](ScriptExecutionContext&amp; context) {
&gt; &gt; &gt; 
&gt; &gt; &gt; Why is the static_cast() needed?
&gt; &gt; 
&gt; &gt; postTaskForModeToWorkerGlobalScope is not exposed in WorkerMessagingProxy,
&gt; &gt; and therefore I need to upcast the object to WorkerLoaderProxy to use it.
&gt; 
&gt; WorkerMessagingProxy is a subclass of WorkerLoaderProxy so there should be
&gt; no reason to cast. If the issue is that an override was marked as private in
&gt; the subclass, then just make it public.
&gt; Or maybe the subclass has a good reason to make this private, in which case
&gt; you&apos;d have a bug.

Made public.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577469</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-07 13:37:06 -0700</bug_when>
    <thetext>Still not concerned about those?
Tests that failed text/pixel/audio diff (2): flag all

 test 	results		actual failure	expected failure	history
+imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-serializable.html	expected actual diff pretty diff		text	pass	history
+imported/w3c/web-platform-tests/workers/semantics/structured-clone/dedicated.html	expected actual diff pretty diff		text	pass	history


You did touch the structured cloning implementation which I why I believed they could be related.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577498</commentid>
    <comment_count>17</comment_count>
      <attachid>380347</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-07 14:05:01 -0700</bug_when>
    <thetext>Comment on attachment 380347
Patch

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

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:-3093
&gt; -        case ImageBitmapTag:

Oops... I&apos;m bad at merging stuffs...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577505</commentid>
    <comment_count>18</comment_count>
      <attachid>380360</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-07 14:09:51 -0700</bug_when>
    <thetext>Created attachment 380360
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577508</commentid>
    <comment_count>19</comment_count>
      <attachid>380360</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-07 14:14:07 -0700</bug_when>
    <thetext>Comment on attachment 380360
Patch

r=me assuming the bots are happy this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577510</commentid>
    <comment_count>20</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-07 14:14:59 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #19)
&gt; Comment on attachment 380360 [details]
&gt; Patch
&gt; 
&gt; r=me assuming the bots are happy this time.

Thanks, Chris. I will only cq+ it once the bots are all green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577595</commentid>
    <comment_count>21</comment_count>
      <attachid>380360</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-07 18:16:15 -0700</bug_when>
    <thetext>Comment on attachment 380360
Patch

Clearing flags on attachment: 380360

Committed r250811: &lt;https://trac.webkit.org/changeset/250811&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577596</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-07 18:16:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577795</commentid>
    <comment_count>23</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-10-08 09:32:07 -0700</bug_when>
    <thetext>The new test crypto/workers/subtle/aes-indexeddb.html

added in https://trac.webkit.org/changeset/250811/webkit

is timing out and crashing depending on platform.this is a constant crash on Mojave debug wk2

History:
https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=crypto%2Fworkers%2Fsubtle%2Faes-indexeddb.html

log:
ASSERTION FAILED: isActive()
./Modules/indexeddb/IDBTransaction.cpp(1254) : Ref&lt;WebCore::IDBRequest&gt; WebCore::IDBTransaction::requestPutOrAdd(JSC::ExecState &amp;, WebCore::IDBObjectStore &amp;, RefPtr&lt;WebCore::IDBKey&gt; &amp;&amp;, WebCore::SerializedScriptValue &amp;, IndexedDB::ObjectStoreOverwriteMode)
1   0x552cf0239 WTFCrash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577840</commentid>
    <comment_count>24</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-08 11:15:31 -0700</bug_when>
    <thetext>(In reply to Truitt Savell from comment #23)
&gt; The new test crypto/workers/subtle/aes-indexeddb.html
&gt; 
&gt; added in https://trac.webkit.org/changeset/250811/webkit
&gt; 
&gt; is timing out and crashing depending on platform.this is a constant crash on
&gt; Mojave debug wk2
&gt; 
&gt; History:
&gt; https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.
&gt; html#showAllRuns=true&amp;tests=crypto%2Fworkers%2Fsubtle%2Faes-indexeddb.html
&gt; 
&gt; log:
&gt; ASSERTION FAILED: isActive()
&gt; ./Modules/indexeddb/IDBTransaction.cpp(1254) : Ref&lt;WebCore::IDBRequest&gt;
&gt; WebCore::IDBTransaction::requestPutOrAdd(JSC::ExecState &amp;,
&gt; WebCore::IDBObjectStore &amp;, RefPtr&lt;WebCore::IDBKey&gt; &amp;&amp;,
&gt; WebCore::SerializedScriptValue &amp;, IndexedDB::ObjectStoreOverwriteMode)
&gt; 1   0x552cf0239 WTFCrash

Could you add some expectations? Here is the bug I have created. It is nothing to do with my code change here. IDB is flaky somehow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577846</commentid>
    <comment_count>25</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-10-08 11:23:41 -0700</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #24)
&gt; Could you add some expectations? Here is the bug I have created. It is
&gt; nothing to do with my code change here. IDB is flaky somehow.

Giving expectations like this to your new test would be the same as not having a test at all for your commit, which is against webkit policy. Is there a better way of resolving this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577849</commentid>
    <comment_count>26</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-10-08 11:28:01 -0700</bug_when>
    <thetext>I do understand there are other tests in your commit but my concern is still there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577858</commentid>
    <comment_count>27</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-08 11:51:23 -0700</bug_when>
    <thetext>(In reply to Truitt Savell from comment #26)
&gt; I do understand there are other tests in your commit but my concern is still
&gt; there.

Here is the test gardening:
Committed r250844: &lt;https://trac.webkit.org/changeset/250844&gt;

We still have release macOS coverage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578376</commentid>
    <comment_count>28</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-10-09 14:07:21 -0700</bug_when>
    <thetext>Marked this test as a Timeout on Mojave WK2 Release: https://trac.webkit.org/changeset/250931/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380081</attachid>
            <date>2019-10-02 22:49:57 -0700</date>
            <delta_ts>2019-10-03 02:01:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202500-20191002224956.patch</filename>
            <type>text/plain</type>
            <size>65349</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ5MTI2ZjBmZmJiM2Rm
MGQ5MzYwZjQwMWQ0NjI4MzI4NWZlYTIyOC4uMzZjYjZmNWM4YjhhZmY4MWU5MzM3NjcwYzE5YzRi
YmQyNjIyMDg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE5LTEwLTAyICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgT25seSB3cmFwcGluZyBD
cnlwdG9LZXlzIGZvciBJREIgZHVyaW5nIHNlcmlhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjUwMAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTI0NDU5Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV3JhcHBpbmcgQ3J5cHRvS2V5cyBkdXJpbmcgSURCIHNlcmlhbGl6YXRpb24gaXMg
YSBsZWdhY3kgcmVxdWVzdCBmcm9tIE5ldGZsaXggd2hlbiBXZWJLaXQgd2FzIGFuCisgICAgICAg
IGVhcmx5IGFkb3B0ZXIuIEl0IGlzIG5vdCBuZWNlc3NhcnkgZm9yIG90aGVyIGtpbmRzIG9mIHNl
cmlhbGl6YXRpb24uIEhvd2V2ZXIsIGdpdmVuIGV4aXN0aW5nIGtleXMKKyAgICAgICAgc3RvcmVk
IGluIHVzZXJzJyBpZGIgYXJlIHdyYXBwZWQsIHRoZSB3cmFwcGluZy91bndyYXBwaW5nIG1lY2hh
bmlzbSBjYW5ub3QgYmUgZWFzaWx5IGRpc2NhcmRlZC4KKyAgICAgICAgVGhlcmVmb3JlLCB0aGlz
IHBhdGNoIHJlc3RyaWN0cyB0aGUgd3JhcHBpbmcvdW53cmFwcGluZyBtZWNoYW5pc20gdG8gaWRi
IG9ubHkuCisKKyAgICAgICAgVG8gZG8gc28sIGEgaXNXcmFwcGluZ1JlcXVpcmVkIGZsYWcgaXMg
YWRkZWQgdG8gQ3J5cHRvS2V5IHN1Y2ggdGhhdCB3aGVuZXZlciBpZGIgc2VlcyBhIENyeXB0b0tl
eSwKKyAgICAgICAgaXQgY2FuIHNldCBpdC4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIHdpbGwgdGhl
biBvbmx5IHdyYXAgYSBDcnlwdG9LZXkgd2hlbiB0aGlzIGZsYWcgaXMgc2V0LiBPdGhlcndpc2Us
CisgICAgICAgIGEgbmV3IHRhZyBVbndyYXBwZWRDcnlwdG9LZXlUYWcgaXMgdXNlZCB0byBzdG9y
ZSB1bndyYXBwZWQgQ3J5cHRvS2V5cyBpbiBvcmRlciB0byBrZWVwIHRoZSBvbGQgQ3J5cHRvS2V5
VGFnCisgICAgICAgIGJpbmFyaWVzIGludGFjdC4gRm9yIGRlc2VyaWFsaXphdGlvbiwgZWFjaCB0
eXBlIHdpbGwgYmUgZGVzZXJpYWxpemVkIGRpZmZlcmVudGx5LgorCisgICAgICAgIEJlc2lkZXMg
dGhlIGFib3ZlLCB0aGlzIHBhdGNoIGFsc28gaGFyZGVucyBXb3JrZXJHbG9iYWxTY29wZTo6d3Jh
cENyeXB0b0tleS91bndyYXBDcnlwdG9LZXkgZm9yCisgICAgICAgIGFueSBwb3RlbnRpYWwgcmFj
eSBpc3N1ZXMuIENyeXB0b0Jvb2xlYW5Db250YWluZXIgaXMgaW50cm9kdWNlZCB0byBjYXB0dXJl
IGJvb2xlYW4gaW4gdGhlIGxhbWJkYS4KKyAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUgaXMgcmVw
bGFjZWQgd2l0aCB3b3JrZXJNZXNzYWdpbmdQcm94eS4gTm93LCBldmVyeSB2YXJpYWJsZXMgY2Fw
dHVyZWQgaW4gdGhlIGxhbWJkYXMKKyAgICAgICAgc2hvdWxkIGJlIGVpdGhlciBhIGNvcHkgb3Ig
YSB0aHJlYWQgc2FmZSByZWYgb2YgdGhlIG9yaWdpbmFsIG9iamVjdC4KKworICAgICAgICBUZXN0
OiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvYWVzLWluZGV4ZWRkYi5odG1sCisKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0M6OnNldElzV3JhcHBpbmdSZXF1aXJlZEZvckNyeXB0b0tleSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZTo6cHV0T3JBZGQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6
OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpy
ZWFkVGVybWluYWwpOgorICAgICAgICAqIGNyeXB0by9DcnlwdG9LZXkuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0tleTo6aXNXcmFwcGluZ1JlcXVpcmVkIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0tleTo6c2V0SXNXcmFwcGluZ1JlcXVpcmVkKToKKyAgICAgICAgKiBkb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQm9vbGVhbkNvbnRhaW5lcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Jvb2xlYW5Db250YWluZXI6OmJvb2xlYW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQm9vbGVhbkNvbnRhaW5lcjo6c2V0Qm9v
bGVhbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6d3JhcENyeXB0b0tl
eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6dW53cmFwQ3J5cHRvS2V5
KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTG9hZGVy
UHJveHk6OmlzV29ya2VyTWVzc2FnaW5nUHJveHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyTWVzc2FnaW5nUHJveHkuaDoKKyAgICAgICAgKGlzVHlwZSk6CisKIDIwMTktMTAtMDIg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtH
VEtdW1dQRV0gU3RvcCB1c2luZyBsZWdhY3kgY3VzdG9tIHByb3RvY29sIGltcGxlbWVudGF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDQ1MWQxZDc3MzBlNmZmMTk3NjcyMjQwNTU3ZDVhNzg5M2QxZGEyMWYuLjkw
NTg4ZTU0NTJlYjQ0MTZkMTRlMmEzMmUyYzI3ZjVmMTAwMmRjYTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTktMTAtMDIgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4K
KworICAgICAgICBPbmx5IHdyYXBwaW5nIENyeXB0b0tleXMgZm9yIElEQiBkdXJpbmcgc2VyaWFs
aXphdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAyNTAwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MjQ0NTkyNz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHA6CisgICAgICAgIEFkZHMgYSBoZWFkZXIgZm9yIHVuaWZpZWQgYnVpbGQuCisKIDIw
MTktMTAtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdW1dQRV0gU3RvcCB1c2luZyBsZWdhY3kgY3VzdG9tIHByb3RvY29sIGltcGxl
bWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5jcHAKaW5kZXggYTU5N2FjMTliNjNiODg4YzEyMmY5MjgzYTdkY2EyZWY5NzRm
ZWUyMC4uMjg3ODc3NzkyZDYwNmYxMzY2NmZiZDM4ZmFiMDdlOWVlZTFjMTkzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApA
QCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKICNpbmNsdWRlICJJREJU
cmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIkluZGV4ZWREQi5oIgorI2luY2x1ZGUgIkpTQ3J5cHRv
S2V5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCkBAIC01NCw2ICs1NSwxNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAorbmFtZXNwYWNlIHsKK3N0YXRpYyBp
bmxpbmUgdm9pZCBzZXRJc1dyYXBwaW5nUmVxdWlyZWRGb3JDcnlwdG9LZXkoVk0mIHZtLCBjb25z
dCBKU1ZhbHVlJiB2YWx1ZSkKK3sKKyAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAg
IHJldHVybjsKKyAgICBhdXRvKiBvYmogPSBhc09iamVjdCh2YWx1ZSk7CisgICAgaWYgKGF1dG8q
IGtleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQodm0sIG9iaikpCisgICAgICAgIGtleS0+c2V0
SXNXcmFwcGluZ1JlcXVpcmVkKCk7Cit9Cit9CisKIElEQk9iamVjdFN0b3JlOjpJREJPYmplY3RT
dG9yZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mIGluZm8sIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKICAgICA6IEFjdGl2ZURP
TU9iamVjdCgmY29udGV4dCkKICAgICAsIG1faW5mbyhpbmZvKQpAQCAtMzM5LDYgKzM1MSw3IEBA
IEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OnB1dE9yQWRkKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUKICAgICBpZiAobV90cmFuc2FjdGlvbi5pc1JlYWRPbmx5
KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSZWFkb25seUVycm9yLCAiRmFpbGVkIHRv
IHN0b3JlIHJlY29yZCBpbiBhbiBJREJPYmplY3RTdG9yZTogVGhlIHRyYW5zYWN0aW9uIGlzIHJl
YWQtb25seS4iX3MgfTsKIAorICAgIHNldElzV3JhcHBpbmdSZXF1aXJlZEZvckNyeXB0b0tleSh2
bSwgdmFsdWUpOwogICAgIGF1dG8gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoc3RhdGUsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRGF0YUNsb25lRXJyb3IsICJGYWls
ZWQgdG8gc3RvcmUgcmVjb3JkIGluIGFuIElEQk9iamVjdFN0b3JlOiBBbiBvYmplY3QgY291bGQg
bm90IGJlIGNsb25lZC4iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDc4ZWYxZmVjYmExNDNhMGFmMmY3NWJl
ZmIzOGI5NjQ0OWYwZDQ1M2EuLjFjOWExOWVlNDY1MGQwOTZmZGEyMDE5Y2JiMGNmYjE1NDI2Y2Q5
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcApAQCAtMTY1LDYgKzE2NSw5IEBAIGVudW0gU2VyaWFsaXphdGlvblRhZyB7
CiAgICAgSW1hZ2VCaXRtYXBUcmFuc2ZlclRhZyA9IDQzLAogI2lmIEVOQUJMRShXRUJfUlRDKQog
ICAgIFJUQ0NlcnRpZmljYXRlVGFnID0gNDQsCisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX0NSWVBU
TykKKyAgICBVbndyYXBwZWRDcnlwdG9LZXlUYWcgPSA0NSwKICNlbmRpZgogICAgIEVycm9yVGFn
ID0gMjU1CiB9OwpAQCAtMzQ4LDYgKzM1MSw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJp
bmdEYXRhSXM4Qml0RmxhZyA9IDB4ODAwMDAwMDA7CiAgKiAgICB8IERPTVF1YWQKICAqICAgIHwg
SW1hZ2VCaXRtYXBUcmFuc2ZlclRhZyA8dmFsdWU6dWludDMyX3Q+CiAgKiAgICB8IFJUQ0NlcnRp
ZmljYXRlVGFnCisgKiAgICB8IFVud3JhcHBlZENyeXB0b0tleVRhZyA8dW53cmFwcGVkS2V5TGVu
Z3RoOnVpbnQzMl90PiA8ZmFjdG9yOmJ5dGV7dW53cmFwcGVkS2V5TGVuZ3RofT4KICAqCiAgKiBJ
bnNpZGUgY2VydGlmaWNhdGUsIGRhdGEgaXMgc2VyaWFsaXplZCBpbiB0aGlzIGZvcm1hdCBhcyBw
ZXIgc3BlYzoKICAqCkBAIC0xMDU0LDcgKzEwNTgsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IH0KICNpZiBFTkFCTEUoV0VCX0NSWVBUTykKICAgICAgICAgICAgIGlmIChhdXRvKiBrZXkgPSBK
U0NyeXB0b0tleTo6dG9XcmFwcGVkKHZtLCBvYmopKSB7Ci0gICAgICAgICAgICAgICAgd3JpdGUo
Q3J5cHRvS2V5VGFnKTsKKyAgICAgICAgICAgICAgICBpZiAoa2V5LT5pc1dyYXBwaW5nUmVxdWly
ZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgd3JpdGUoQ3J5cHRvS2V5VGFnKTsKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHdyaXRlKFVud3JhcHBlZENyeXB0b0tl
eVRhZyk7CiAgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNlcmlhbGl6ZWRLZXk7CiAg
ICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZHVtbXlCbG9iVVJMczsKICAgICAgICAgICAg
ICAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gZHVtbXlNZXNzYWdlUG9ydHM7CkBAIC0x
MDY5LDEwICsxMDc2LDE0IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAg
ZHVtbXlCbG9iVVJMcywgc2VyaWFsaXplZEtleSwgU2VyaWFsaXphdGlvbkNvbnRleHQ6OkRlZmF1
bHQsIGR1bW15U2hhcmVkQnVmZmVycyk7CiAgICAgICAgICAgICAgICAgcmF3S2V5U2VyaWFsaXpl
ci53cml0ZShrZXkpOwotICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB3cmFwcGVkS2V5
OwotICAgICAgICAgICAgICAgIGlmICghd3JhcENyeXB0b0tleShtX2V4ZWMsIHNlcmlhbGl6ZWRL
ZXksIHdyYXBwZWRLZXkpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgd3JpdGUod3JhcHBlZEtleSk7CisgICAgICAgICAgICAgICAgaWYgKGtleS0+
aXNXcmFwcGluZ1JlcXVpcmVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHdyYXBwZWRLZXk7CisgICAgICAgICAgICAgICAgICAgIGlmICghd3JhcENyeXB0b0tleSht
X2V4ZWMsIHNlcmlhbGl6ZWRLZXksIHdyYXBwZWRLZXkpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB3cml0ZSh3cmFwcGVkS2V5KTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIHdyaXRlKHNlcmlhbGl6ZWRLZXkpOwogICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAgICAgfQogI2VuZGlmCkBAIC0zMDI5LDYgKzMwNDAsMjggQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBSVENDZXJ0aWZpY2F0ZVRhZzoKICAgICAgICAgICAgIHJldHVy
biByZWFkUlRDQ2VydGlmaWNhdGUoKTsKIAorI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9DUllQVE8p
CisgICAgICAgIGNhc2UgVW53cmFwcGVkQ3J5cHRvS2V5VGFnOiB7CisgICAgICAgICAgICBWZWN0
b3I8dWludDhfdD4gc2VyaWFsaXplZEtleTsKKyAgICAgICAgICAgIGlmICghcmVhZChzZXJpYWxp
emVkS2V5KSkgeworICAgICAgICAgICAgICAgIGZhaWwoKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgSlNWYWx1ZSBjcnlwdG9L
ZXk7CisgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gZHVtbXlNZXNzYWdl
UG9ydHM7CisgICAgICAgICAgICBDbG9uZURlc2VyaWFsaXplciByYXdLZXlEZXNlcmlhbGl6ZXIo
bV9leGVjLCBtX2dsb2JhbE9iamVjdCwgZHVtbXlNZXNzYWdlUG9ydHMsIG51bGxwdHIsIHsgfSwK
KyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyNlbmRp
ZgorICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWRLZXkpOworICAgICAgICAgICAgaWYgKCFyYXdL
ZXlEZXNlcmlhbGl6ZXIucmVhZENyeXB0b0tleShjcnlwdG9LZXkpKSB7CisgICAgICAgICAgICAg
ICAgZmFpbCgpOworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBtX2djQnVmZmVyLmFwcGVuZFdpdGhDcmFzaE9uT3ZlcmZsb3coY3J5
cHRvS2V5KTsKKyAgICAgICAgICAgIHJldHVybiBjcnlwdG9LZXk7CisgICAgICAgIH0KICNlbmRp
ZgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgbV9wdHItLTsgLy8gUHVzaCB0aGUgdGFn
IGJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuaCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuaAppbmRleCAwZWJjNTcyMDQ0ZjkyZjA5OWJh
MDVjMzQyZTlkZTcxMTYyODExMTA2Li4zODY1ZDI5MGUzNTI5N2M3Nzc4ZWE4ZmMxOTUxNzA1NmI1
ZWJkMDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5oCkBAIC03Miw2ICs3Miw4IEBAIHB1
YmxpYzoKICAgICBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXNCaXRtYXAoKSBjb25zdCB7IHJl
dHVybiBtX3VzYWdlczsgfQogICAgIHZvaWQgc2V0VXNhZ2VzQml0bWFwKENyeXB0b0tleVVzYWdl
Qml0bWFwIHVzYWdlKSB7IG1fdXNhZ2VzID0gdXNhZ2U7IH07CiAgICAgYm9vbCBhbGxvd3MoQ3J5
cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2UpIGNvbnN0IHsgcmV0dXJuIHVzYWdlID09IChtX3VzYWdl
cyAmIHVzYWdlKTsgfQorICAgIGJvb2wgaXNXcmFwcGluZ1JlcXVpcmVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc1dyYXBwaW5nUmVxdWlyZWQ7IH0KKyAgICB2b2lkIHNldElzV3JhcHBpbmdSZXF1aXJl
ZCgpIHsgbV9pc1dyYXBwaW5nUmVxdWlyZWQgPSB0cnVlOyB9CiAKICAgICBzdGF0aWMgVmVjdG9y
PHVpbnQ4X3Q+IHJhbmRvbURhdGEoc2l6ZV90KTsKIApAQCAtODAsNiArODIsNyBAQCBwcml2YXRl
OgogICAgIFR5cGUgbV90eXBlOwogICAgIGJvb2wgbV9leHRyYWN0YWJsZTsKICAgICBDcnlwdG9L
ZXlVc2FnZUJpdG1hcCBtX3VzYWdlczsKKyAgICBib29sIG1faXNXcmFwcGluZ1JlcXVpcmVkIHsg
ZmFsc2UgfTsKIH07CiAKIGlubGluZSBhdXRvIENyeXB0b0tleTo6dHlwZSgpIGNvbnN0IC0+IFR5
cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IGYw
ZTY1NGI3MzBiOWRlMmE2NTBjY2U1MjQyODQyNmUwNmM5YzEyMmUuLjEyN2UwYTQ0MDk2ZjA2MmEz
M2FhNjVkZjA1ZjRmOTJiM2YzYmU3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaApAQCAtMjIwLDYgKzIyMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dERhdGFiYXNlQ29udGV4dChEYXRhYmFzZUNvbnRleHQqKTsKIAogI2lmIEVOQUJMRShXRUJfQ1JZ
UFRPKQorICAgIC8vIFRoZXNlIHR3byBtZXRob2RzIGFyZSB1c2VkIHdoZW4gQ3J5cHRvS2V5cyBh
cmUgc2VyaWFsaXplZCBpbnRvIEluZGV4ZWREQi4KICAgICB2aXJ0dWFsIGJvb2wgd3JhcENyeXB0
b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVk
S2V5KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8
dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3Rvcjx1aW50OF90PiYga2V5KSA9IDA7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggMWU4
ZmMwNmJkM2UxMzk1N2QwYWIyZmJmNjJlNjE5ZmQ2NDU4YzI3Ny4uYjVhM2JlNzIwMzU3ODc0MjAz
NTExMjFiNTZjMDliZWY2ZmY2MWVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJXb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJveHkuaCIKICNpbmNs
dWRlICJXb3JrZXJMb2NhdGlvbi5oIgorI2luY2x1ZGUgIldvcmtlck1lc3NhZ2luZ1Byb3h5Lmgi
CiAjaW5jbHVkZSAiV29ya2VyTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiV29ya2VyUmVwb3J0aW5n
UHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uaCIKQEAgLTM5OCw0
OCArMzk5LDU4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVmZmVyOwogfTsK
IAorY2xhc3MgQ3J5cHRvQm9vbGVhbkNvbnRhaW5lciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxDcnlwdG9Cb29sZWFuQ29udGFpbmVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxD
cnlwdG9Cb29sZWFuQ29udGFpbmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENy
eXB0b0Jvb2xlYW5Db250YWluZXIpOyB9CisgICAgYm9vbCBib29sZWFuKCkgY29uc3QgeyByZXR1
cm4gbV9ib29sZWFuOyB9CisgICAgdm9pZCBzZXRCb29sZWFuKGJvb2wgYm9vbGVhbikgeyBtX2Jv
b2xlYW4gPSBib29sZWFuOyB9CisKK3ByaXZhdGU6CisgICAgc3RkOjphdG9taWM8Ym9vbD4gbV9i
b29sZWFuIHsgZmFsc2UgfTsKK307CisKIGJvb2wgV29ya2VyR2xvYmFsU2NvcGU6OndyYXBDcnlw
dG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIFZlY3Rvcjx1aW50OF90PiYgd3JhcHBl
ZEtleSkKIHsKLSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHN0ZDo6YXRvbWljPGJvb2w+
IGRvbmUgPSBmYWxzZTsKLSAgICBhdXRvIGNvbnRhaW5lciA9IENyeXB0b0J1ZmZlckNvbnRhaW5l
cjo6Y3JlYXRlKCk7Ci0gICAgbV90aHJlYWQud29ya2VyTG9hZGVyUHJveHkoKS5wb3N0VGFza1Rv
TG9hZGVyKFsmcmVzdWx0LCBrZXksIGNvbnRhaW5lclJlZiA9IGNvbnRhaW5lci5jb3B5UmVmKCks
ICZkb25lLCB3b3JrZXJHbG9iYWxTY29wZSA9IHRoaXNdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsKLSAgICAgICAgcmVzdWx0ID0gY29udGV4dC53cmFwQ3J5cHRvS2V5KGtleSwg
Y29udGFpbmVyUmVmLT5idWZmZXIoKSk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOwotICAgICAgICB3
b3JrZXJHbG9iYWxTY29wZS0+cG9zdFRhc2soW10oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgeworICAgIGF1dG8gcmVzdWx0Q29udGFpbmVyID0gQ3J5cHRvQm9vbGVhbkNvbnRhaW5l
cjo6Y3JlYXRlKCk7CisgICAgYXV0byBkb25lQ29udGFpbmVyID0gQ3J5cHRvQm9vbGVhbkNvbnRh
aW5lcjo6Y3JlYXRlKCk7CisgICAgYXV0byB3cmFwcGVkS2V5Q29udGFpbmVyID0gQ3J5cHRvQnVm
ZmVyQ29udGFpbmVyOjpjcmVhdGUoKTsKKyAgICBtX3RocmVhZC53b3JrZXJMb2FkZXJQcm94eSgp
LnBvc3RUYXNrVG9Mb2FkZXIoW3Jlc3VsdENvbnRhaW5lciA9IHJlc3VsdENvbnRhaW5lci5jb3B5
UmVmKCksIGtleSwgd3JhcHBlZEtleUNvbnRhaW5lciA9IHdyYXBwZWRLZXlDb250YWluZXIuY29w
eVJlZigpLCBkb25lQ29udGFpbmVyID0gZG9uZUNvbnRhaW5lci5jb3B5UmVmKCksIHdvcmtlck1l
c3NhZ2luZ1Byb3h5ID0gUmVmPFdvcmtlck1lc3NhZ2luZ1Byb3h5Pihkb3duY2FzdDxXb3JrZXJN
ZXNzYWdpbmdQcm94eT4obV90aHJlYWQud29ya2VyTG9hZGVyUHJveHkoKSkpXShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIHJlc3VsdENvbnRhaW5lci0+c2V0Qm9v
bGVhbihjb250ZXh0LndyYXBDcnlwdG9LZXkoa2V5LCB3cmFwcGVkS2V5Q29udGFpbmVyLT5idWZm
ZXIoKSkpOworICAgICAgICBkb25lQ29udGFpbmVyLT5zZXRCb29sZWFuKHRydWUpOworICAgICAg
ICAoKFdvcmtlckxvYWRlclByb3h5Jil3b3JrZXJNZXNzYWdpbmdQcm94eS5nZXQoKSkucG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNX
b3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgfSk7CisgICAgICAgIH0sIFdvcmtlclJ1bkxv
b3A6OmRlZmF1bHRNb2RlKCkpOwogICAgIH0pOwogCiAgICAgYXV0byB3YWl0UmVzdWx0ID0gTWVz
c2FnZVF1ZXVlTWVzc2FnZVJlY2VpdmVkOwotICAgIHdoaWxlICghZG9uZSAmJiB3YWl0UmVzdWx0
ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpCisgICAgd2hpbGUgKCFkb25lQ29udGFpbmVyLT5i
b29sZWFuKCkgJiYgd2FpdFJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKQogICAgICAg
ICB3YWl0UmVzdWx0ID0gbV90aHJlYWQucnVuTG9vcCgpLnJ1bkluTW9kZSh0aGlzLCBXb3JrZXJS
dW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIAotICAgIGlmIChkb25lKQotICAgICAgICB3cmFwcGVk
S2V5LnN3YXAoY29udGFpbmVyLT5idWZmZXIoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBp
ZiAoZG9uZUNvbnRhaW5lci0+Ym9vbGVhbigpKQorICAgICAgICB3cmFwcGVkS2V5LnN3YXAod3Jh
cHBlZEtleUNvbnRhaW5lci0+YnVmZmVyKCkpOworICAgIHJldHVybiByZXN1bHRDb250YWluZXIt
PmJvb2xlYW4oKTsKIH0KIAogYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6dW53cmFwQ3J5cHRvS2V5
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkp
CiB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBzdGQ6OmF0b21pYzxib29sPiBkb25l
ID0gZmFsc2U7Ci0gICAgYXV0byBjb250YWluZXIgPSBDcnlwdG9CdWZmZXJDb250YWluZXI6OmNy
ZWF0ZSgpOwotICAgIG1fdGhyZWFkLndvcmtlckxvYWRlclByb3h5KCkucG9zdFRhc2tUb0xvYWRl
cihbJnJlc3VsdCwgd3JhcHBlZEtleSwgY29udGFpbmVyUmVmID0gY29udGFpbmVyLmNvcHlSZWYo
KSwgJmRvbmUsIHdvcmtlckdsb2JhbFNjb3BlID0gdGhpc10oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgewotICAgICAgICByZXN1bHQgPSBjb250ZXh0LnVud3JhcENyeXB0b0tleSh3
cmFwcGVkS2V5LCBjb250YWluZXJSZWYtPmJ1ZmZlcigpKTsKLSAgICAgICAgZG9uZSA9IHRydWU7
Ci0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5wb3N0VGFzayhbXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7CisgICAgYXV0byByZXN1bHRDb250YWluZXIgPSBDcnlwdG9Cb29s
ZWFuQ29udGFpbmVyOjpjcmVhdGUoKTsKKyAgICBhdXRvIGRvbmVDb250YWluZXIgPSBDcnlwdG9C
b29sZWFuQ29udGFpbmVyOjpjcmVhdGUoKTsKKyAgICBhdXRvIGtleUNvbnRhaW5lciA9IENyeXB0
b0J1ZmZlckNvbnRhaW5lcjo6Y3JlYXRlKCk7CisgICAgbV90aHJlYWQud29ya2VyTG9hZGVyUHJv
eHkoKS5wb3N0VGFza1RvTG9hZGVyKFtyZXN1bHRDb250YWluZXIgPSByZXN1bHRDb250YWluZXIu
Y29weVJlZigpLCB3cmFwcGVkS2V5LCBrZXlDb250YWluZXIgPSBrZXlDb250YWluZXIuY29weVJl
ZigpLCBkb25lQ29udGFpbmVyID0gZG9uZUNvbnRhaW5lci5jb3B5UmVmKCksIHdvcmtlck1lc3Nh
Z2luZ1Byb3h5ID0gUmVmPFdvcmtlck1lc3NhZ2luZ1Byb3h5Pihkb3duY2FzdDxXb3JrZXJNZXNz
YWdpbmdQcm94eT4obV90aHJlYWQud29ya2VyTG9hZGVyUHJveHkoKSkpXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIHJlc3VsdENvbnRhaW5lci0+c2V0Qm9vbGVh
bihjb250ZXh0LnVud3JhcENyeXB0b0tleSh3cmFwcGVkS2V5LCBrZXlDb250YWluZXItPmJ1ZmZl
cigpKSk7CisgICAgICAgIGRvbmVDb250YWluZXItPnNldEJvb2xlYW4odHJ1ZSk7CisgICAgICAg
ICgoV29ya2VyTG9hZGVyUHJveHkmKXdvcmtlck1lc3NhZ2luZ1Byb3h5LmdldCgpKS5wb3N0VGFz
a0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIHsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dv
cmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAgICB9KTsKKyAgICAgICAgfSwgV29ya2VyUnVuTG9v
cDo6ZGVmYXVsdE1vZGUoKSk7CiAgICAgfSk7CiAKICAgICBhdXRvIHdhaXRSZXN1bHQgPSBNZXNz
YWdlUXVldWVNZXNzYWdlUmVjZWl2ZWQ7Ci0gICAgd2hpbGUgKCFkb25lICYmIHdhaXRSZXN1bHQg
IT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCkKKyAgICB3aGlsZSAoIWRvbmVDb250YWluZXItPmJv
b2xlYW4oKSAmJiB3YWl0UmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpCiAgICAgICAg
IHdhaXRSZXN1bHQgPSBtX3RocmVhZC5ydW5Mb29wKCkucnVuSW5Nb2RlKHRoaXMsIFdvcmtlclJ1
bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogCi0gICAgaWYgKGRvbmUpCi0gICAgICAgIGtleS5zd2Fw
KGNvbnRhaW5lci0+YnVmZmVyKCkpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgaWYgKGRvbmVD
b250YWluZXItPmJvb2xlYW4oKSkKKyAgICAgICAga2V5LnN3YXAoa2V5Q29udGFpbmVyLT5idWZm
ZXIoKSk7CisgICAgcmV0dXJuIHJlc3VsdENvbnRhaW5lci0+Ym9vbGVhbigpOwogfQogCiAjZW5k
aWYgLy8gRU5BQkxFKFdFQl9DUllQVE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmgKaW5kZXggYmM3MWI1NjY2YzFjMmVjNGU2ZWQ3NzkyNGRkYWFjZDMyOTFlNzk4
Ny4uMzliOGZjNTFiMDdmZGE4NTY0NDVmNjgxODgzZDBjYjcwYTI1OTEwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMTY3LDEzICsxNjcsNiBAQCBw
cml2YXRlOgogICAgIFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4oKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3RvcE9yaWdpbi5nZXQoKTsgfQogCiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCi0gICAg
Ly8gVGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25zIGFyZSBzaWRlIGVmZmVjdHMgb2YgcHJvdmlk
aW5nIGV4dHJhIHByb3RlY3Rpb24gdG8gc2VyaWFsaXplZAotICAgIC8vIENyeXB0b0tleSBkYXRh
IHRoYXQgd2VudCB0aHJvdWdoIHRoZSBzdHJ1Y3R1cmVkIGNsb25lIGFsZ29yaXRobSB0byBsb2Nh
bCBzdG9yYWdlIHN1Y2ggYXMKLSAgICAvLyBJbmRleGVkREIuIFRoZXkgZG9uJ3QgcHJvdmlkZSBh
bnkgcHJvY3RlY3Rpb24gYWdhaW5zdCBjb21tdW5pY2F0aW9ucyBiZXR3ZWVuIG1haW5UaHJlYWQK
LSAgICAvLyBhbmQgd29ya2VyVGhyZWFkcy4gSW4gZmFjdCwgdGhleSBjYXVzZSBleHRyYSBleHBl
bnNlIGFzIHdvcmtlclRocmVhZHMgY2Fubm90IHRhbGsgdG8gY2xpZW50cwotICAgIC8vIHRvIHVu
d3JhcC93cmFwIGNyeXB0byBrZXlzLiBIZW5jZSwgd29ya2VyVGhyZWFkcyBtdXN0IGFsd2F5cyBh
c2sgbWFpblRocmVhZCB0byB1bndyYXAvd3JhcAotICAgIC8vIGtleXMsIHdoaWNoIHJlc3VsdHMg
aW4gYSBzZWNvbmQgY29tbXVuaWNhdGlvbiBhbmQgcGxhaW4ga2V5cyBiZWluZyB0cmFuc2ZlcnJl
ZCBiZXR3ZWVuCi0gICAgLy8gd29ya2VyVGhyZWFkcyBhbmQgdGhlIG1haW5UaHJlYWQuCiAgICAg
Ym9vbCB3cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBWZWN0b3I8dWlu
dDhfdD4mIHdyYXBwZWRLZXkpIGZpbmFsOwogICAgIGJvb2wgdW53cmFwQ3J5cHRvS2V5KGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkpIGZpbmFs
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvYWRl
clByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgKaW5k
ZXggNGE2MzM3OTJjMjI5YWJhY2QzN2I1NmFiMWViODMxY2M5ODYyMDEyMy4uNjE1MzFlZDQwODY0
YjM4YWNiOTljYzA2NzU3YmZjMTExMjNkOGQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyTG9hZGVyUHJveHkuaApAQCAtNDUsNiArNDUsOCBAQCBjbGFzcyBXb3JrZXJMb2FkZXJQ
cm94eSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V29ya2VyTG9hZGVyUHJveHkoKSA9IGRlZmF1
bHQ7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNXb3JrZXJNZXNzYWdpbmdQcm94eSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisKICAgICAvLyBDcmVhdGVzIGEgY2FjaGUgc3RvcmFnZSBjb25uZWN0
aW9uIHRvIGJlIHVzZWQgb24gdGhlIG1haW4gdGhyZWFkLiBNZXRob2QgbXVzdCBiZSBjYWxsZWQg
b24gdGhlIG1haW4gdGhyZWFkLgogICAgIHZpcnR1YWwgUmVmPENhY2hlU3RvcmFnZUNvbm5lY3Rp
b24+IGNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAppbmRleCA1Yzc4MzMyZWNhMjkzZWQz
NDZmNDIyYzEwNTg0YTgzZTk3NDU4YzFjLi4wODBjYzAxZTBhY2UxM2I5MmM5N2Q1YjIxMmFmNDUw
NWEyZDdkMDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5oCkBAIC03MCw2ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50YXRpb24g
b2YgV29ya2VyTG9hZGVyUHJveHkuCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQg
b24gZGlmZmVyZW50IHRocmVhZHMgdG8gc2NoZWR1bGUgbG9hZGluZwogICAgIC8vIHJlcXVlc3Rz
IGFuZCB0byBzZW5kIGNhbGxiYWNrcyBiYWNrIHRvIFdvcmtlckdsb2JhbFNjb3BlLgorICAgIGJv
b2wgaXNXb3JrZXJNZXNzYWdpbmdQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
ICAgICB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYm
KSBmaW5hbDsKICAgICBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJpbmcmIG1vZGUpIGZpbmFsOwog
ICAgIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uKCkgZmluYWw7CkBAIC05OCwzICs5OSw3IEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V29y
a2VyTWVzc2FnaW5nUHJveHkpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6
OldvcmtlckxvYWRlclByb3h5JiBwcm94eSkgeyByZXR1cm4gcHJveHkuaXNXb3JrZXJNZXNzYWdp
bmdQcm94eSgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMmI5M2FiMmI0NjU5OWUyMGIzZWQ4
NTlmM2U3YmE0MzY1MjQwZWY1Yy4uOTI3YTNhNjVkNjBkMTdkMTM2NGY2NTYwNDk1N2VmYWI5NzEy
MjlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAt
OTEsNiArOTEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVk
ZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJ
Lmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4MjMxYzAwNDQzMGRlZjc4MzM2NmViZWRm
YzI4MmNjNjJkYzk0YzVhLi5lYzg3YjVhYTFjZjBhMGMzNTc2OTQ4MmRiZWY4MzU5NGVhMzBjODY4
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjIgQEAKKzIwMTktMTAtMDIgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNv
bT4KKworICAgICAgICBPbmx5IHdyYXBwaW5nIENyeXB0b0tleXMgZm9yIElEQiBkdXJpbmcgc2Vy
aWFsaXphdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAyNTAwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MjQ0NTkyNz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb2RpZmllcyBJbmRleGVkREIu
U3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5IHRlc3QgdG8gaW5jbHVkZSBDcnlw
dG9LZXlzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRl
eGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkubW06CisgICAgICAgICgt
W1N0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eU5hdmlnYXRpb25EZWxlZ2F0ZSBf
d2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldzpdKToKKyAgICAgICAgKFRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3RydWN0dXJlZENs
b25lQmFja3dhcmRDb21wYXRpYmlsaXR5LnNxbGl0ZTM6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBh
dGliaWxpdHkuc3FsaXRlMy1zaG06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3Fs
aXRlMy13YWw6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRl
eGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHlSZWFkLmh0bWw6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVk
Q2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHlXcml0ZS5odG1sOgorCiAyMDE5LTEwLTAyICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtX
UEVdIFN0b3AgdXNpbmcgbGVnYWN5IGN1c3RvbSBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJT
dHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29t
cGF0aWJpbGl0eS5tbQppbmRleCBmMWU0MjE2YWEyZjZhOWE2NTExNGRkMDlmYzBhNDgxNDE0ZDU4
YmZlLi5hZjgxYWEzYjgwNTEzMDRiMzhhZTVhNzE3YjM1ZjkxMDQ3YzVjNzIxIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVy
ZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0
aWJpbGl0eS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC01Myw2ICs1MywxOCBAQCAtICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjoo
V0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZAogCiBAZW5k
CiAKK0BpbnRlcmZhY2UgU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5TmF2aWdh
dGlvbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorQGVuZAorCitA
aW1wbGVtZW50YXRpb24gU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5TmF2aWdh
dGlvbkRlbGVnYXRlCisKKy0gKE5TRGF0YSAqKV93ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgcmV0dXJuIFtOU0RhdGEgZGF0YVdpdGhCeXRl
czooY29uc3QgdWludDhfdCopIlx4MDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XHgwOFx4
MDlceDBhXHgwYlx4MGNceDBkXHgwZVx4MGYiIGxlbmd0aDoxNl07Cit9CisKK0BlbmQKKwogc3Rh
dGljIFdLU2NyaXB0TWVzc2FnZSAqZ2V0TmV4dE1lc3NhZ2UoKQogewogICAgIGlmIChzY3JpcHRN
ZXNzYWdlcy5pc0VtcHR5KCkpIHsKQEAgLTkyLDYgKzEwNCw4IEBAIFRFU1QoSW5kZXhlZERCLCBT
dHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkpCiAKICAgICAvLyBSdW4gdGhlIHRl
c3QKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbW1N0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eU5hdmlnYXRpb25EZWxlZ2F0
ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxl
Z2F0ZS5nZXQoKV07CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiSW5k
ZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5UmVhZCIgd2l0aEV4dGVu
c2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwog
ICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJh
Y2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHku
c3FsaXRlMwppbmRleCAzNDIwY2Q4MDhmODk2ZGJlNThkNmEzN2FmOTYyNTUzZDgyNTE0ZmE4Li44
NmJiZWE3ZTg0MjkzMGIwNDRiZGY3MjdhZTBlZGUwZjA4MjU4MzRkIDEwMDY0NApHSVQgYmluYXJ5
IHBhdGNoCmRlbHRhIDIyCmNjbVpvclhpJTd0IzleWXElSyF1ZDh3Pm1TQ21PSD0wNm9oRUd5bmhx
CgpkZWx0YSAyMgpjY21ab3JYaSU3dCMzQXNUbWpNVV9IV3YydFBjJmMkMDd0MD4+aV9AJQoKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERC
U3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5LnNxbGl0ZTMtc2htIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVC
YWNrd2FyZENvbXBhdGliaWxpdHkuc3FsaXRlMy1zaG0KaW5kZXggZTc4MTU4ZDMzZTU2OTdkMjZi
YjI5YjI0YTg3YjM1MWFiMWZjNGU2OS4uYjRlYzczNDBlMWNhMzMwNzRjYzhhM2E1N2FmZTU3OGUz
N2EzZDRiYSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAxOTcKemNtWm9AVX18ViFzK1Z9
QSVLIXF4SytNUiVBbTllMVdxXjN3dEFMan15bFNSZjdfJSFiaEQ3PTR6VmwrTUtYTHlVCnpzcF40
N2ZkUjxlfDQwQlQlKjVjZnY1fXV+YXw1R2AheyNmRmRoQ3FPbjxwfSFXP1gjRWk8OGp9JFcmKEJ7
Myt5ewpZNnImNH17Z3I5KnkmP2BxUzFAeilvbCtHcDBLNCElbiphYSsKCmRlbHRhIDE5Mwp6Y21a
b0BVfXxWIXMrVn1BJUshcEdLK01SJUFtOVh+V3FfRCh5RiVQaj9pcjdHNSZ9MUY7UVg/KV9wI0hw
WVRMfiEKenFeYnVSMXFOMD9AOz8lUTNOdFk8WTs1RmIrYE5GJSM5e0lWTXVFKiY5UUR7WUZKZTV5
eGNIbkdDeT00U3hjTzdhClZIel4/TjhgST1fTUkyenA8fnlZLVRtUztGS3I7WFUKCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVj
dHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzLXdhbCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dh
cmRDb21wYXRpYmlsaXR5LnNxbGl0ZTMtd2FsCmluZGV4IGM3NWFmNTdlZWI5Y2U2YTJjZmE5ZGMz
YjBmNjMwOWRmNDBiY2NlZmQuLmYzZDVlZDQ0NmIwNWY1OTJjZTI0NDc1MTY1NDFkNmVhMjM4M2Vl
Y2IgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNjc0MAp6Y21kXkRje28pNCtkcCY4RiFt
WUNPaypxaTdUSVAobzJBa3NUUzdeOHZUcUBqQ1Eod3pSI1FubExgcnJVcjdTSGYKeiQ8ayZpTVdu
SzFoKkZCKmNTYmF4PipARlFLTDVTZmQjLUVGSj9CMj5iMSRGIXtAKExGKTYkNDVlI0ViPk1QV1kj
Cnpza3xYVjVEc0QtPHRWU3YpQD9RPiMjXzwlRUs9MjEwfkx4QEtYYDg8ZUFAPHhCeCh5a1lEdHB5
VDlfbkphXyN+YQp6SDsyMnYxfWo3NkVGK2JmO1clKmYrUVYpfntmJFZFJFZebTlqMDZLIykrbGlT
JVJoKG4mPSRFdHYoPjxHbTZfdSgKenprczktQTA4YWJRUjwhcigpNV9YP3xMaV95RVhFNFl4bkho
eVVealpYR2A0MXFVNypkKyZjIypQVDcmZ1ZiUDFwCnolcUNLdytUUj9TNFImQVR5O18rdzN0U1kq
MWxtVGpJOD83ayM5dDZydkBDUjM8K15PbHRORlhsRU47VkpPa0NWdwp6RUk5SmdPOzd0dWtESGgy
bTJsd1peUylQS1Vma3JyUkZlP35qM2FPWXR+dXY4QGVTRiM8IWckb199QGEqSUFOfGkKekBqI2Il
KjQ0IXhybUxZSTdGVEJ5IW1ySTcteWQzKkltK1ZkJU9OKlQ7cFB8QmU+MGIrTSUyITI3IVlFWmF7
X2d0CnprcHhnSXdsO2A4Rjc8dHo8X3l3QmFDbHpVVVJkJUtWaSFDWGFJLT1LI3AwJk9KditTR1NI
MCRNWnVBNnFrPjg3YQp6dSVvSk5vcHFEQ21EU0M7SHpOLTxEKFkxaHZNVGk/NVNNZnw7eVRxS2Ey
OH02NFFGOFMldlBPYVkwT1NeZytSR2AKejxaT1dhQWkjTlk8SiFIZF5KUjIzWF5GYG8hdWY3fG02
Zjd2YWwleEltWTJuPCM8MXQ0WCpTNz4oUH5ScykjK25nCnpydC1jRGR1WipxU2spZzQxWHFvelUr
U1JJQUc0fTJKKHV9NVkqdnlAPExHNW91ZFU4NjVHeWVJTlIjLSlzKCN8bgp6NiZraXpLYk5NQnok
Xmg4Wm5xdXF7MXpUWEdaU1EwQThTbE0hKERRak1zdEAyWUtiYGwxbGExVWtmb2ZGak18fDIKek1q
Pm5zSFVnYH5IKEtWMT4qMz5IaGh+U0NnbTd7PTJaczN2YDVDIX1RSHxFWldHYy03WmtATGZSM21f
aV40e3BqCnojanQ9S2ZVd2BPcFJzaTgwSTwtQnJNNSlEPW9NJSo4LWhZMTI7JlVIMipTemVSNmcq
VHBCTmI5JiloYmlOe1h7YQp6OXopcDIqaHk/Ul85SE5JM3JrSU9oUzZOfUZgeWFPM2lKTWxxRT8w
N2VXbVpmJW1EaVYhY0ppKXVwYChIME5SMW8Kek1XWWNFMlJNTjxmYC04dmQ9TzMhO0NleF5jQD9f
SnlUVT4qfDJfI0FqYjxjNm9OdDY8Tzw3I3J5UEopZUR+WS0mCno4ZkdqZDh0QWJMKnVgX34zWTky
IXdPSXo8Vip+ekIqZU9RRlYlUkFWODY3SmslNGtHe3BfK1R6X19wYWIhLUxadQp6Rz0mU1NtRDZ8
QGt2S2xfKFRBcDI0eVIrS1VDNkZGRSpmcStEa0xANjx0aWo2YiFgPFZPJjR0eWxBRUBVN0hQUkEK
emlBKnxtMk5xd2N1QSUwdHpGYnFxTmxpbWpnK3l7RHNXQHI1SUlGMVpzNV9CMCRaQT83WEFSJlIh
eH0qNDd5SWhXCnpzXmVhPz9SVmhoS2tgSzdlRnt0SXxBOHlAV2xyOUhQUVYkMWB1VTh7KjZrYVh7
MkZuOT1LbUJ2fDdRLT5gKFV2QAp6JSNHMXleUkJwaHgxMWBsKUtzTSU/UERjKEJFTG0kZjFAdXFF
cHJeR2gyfX56YElTYV4tUEUpUTchYWE0MXx1X0EKenliIUNrXmdOPjUpQkZsU1Q4anxFMD12NFdq
PEVpJVk3S2FsQERvTzBnPkJzKEVyKzdaem87T3lxOGQ4fVBMWWpsCno8aVY0fnBENkg/YFlVdmNq
SjBtakBkZUhfSEFgMDVNLVJiTV5AQkMwOzdPNjZGY0RVbVdKJGw9N0ZDQ1EjeXVGZgp6MWA9aHgz
RDxVaFMkY2tlbzNVemVrUl5tfCFlKVMjJms2ZyRvVHhYYnQwKmNlMEErJHdoaTBJTVAlTERiOylx
a0IKemBsUH49Qz1CJlBEeSREZ1lidlk+Z3dHS345Zip1MGglNkFoUFFxZTlncjleSmZaJmN7RCVF
MlVkMmxzKTV8I3BECnplKyhpR0x9bTtre3dLeyQ/VCRnelAjN0JqUTYhWFNRNlFSflEhI1FRMVVh
QlY8YzUkMzxQRXQoeio7SUlXJX56eAp6STZYNW4hKVdAMFpobjV0ZjxsOSEjRXRkKz9JOHZkMnBn
eE8rKXVPWEFWKDtPVkhVWEhoOCZuclB6JHFSNWZIWmUKek5ra2I0eU9XNjJ7M3d0PXRaWkIlTEVs
ZUhKYzsxMztCTXsoTDxAKmw3WjVUS0xPQlM3c0VzK3lzez1XUiRVSVd9CnopPzQ/S08mamNKY3sh
bDheRH5WbmF4OFg0RHg4LVdJe3t8dTheJWxuNkFrK1lPcGVEYExwRENmOU9Zc2laNkh1fgp6Rmls
dVMra0U1YT9yVnMrNXopSHhfb0djfCFGPVpYSWlKT1ZPfGlONDVXR2hGQHt5UCFeTmFMbjJwYEMw
dj08PSYKeiFPQDR2MGlvSzVFQyN9KTQ8USZiSU9EKkp1JVJSZzVEWkN4RHt1KHVHMU01bUBJcDA/
c2ImYEAwYD1sd1BqbCNECnpzRihXPzVpdGVgalZDTXcoUkNTV2duSUEtdiR5YDM+YjNWcig9LXxm
SUF8Ukd0Vyp+dHtYc0tjd1BRNmVjNFVyZgp6S3MwdnpBRSpYeSomc0g0PTE8dV9RcTVNOHFHX0Q8
ZGdfMHNueEZZb18+V1h+b2t2fEIqfVBHWlc9MjMpQGlPQG8KeiNZLXxkSzw0O19uOFhSPUJeSWhA
c1VoTipFTSFhdUBjRG5JVjJrRUBGMTVpI2B5UF4teitoOD4kRGZNck43blEzCnorfnEwZiQ+dkdz
aVJBR0lCX2leOztte35hNm5jJnNxTXBKK2deLV43TElxQXdabFF1aFBqO2FLKHZ3LUpwekJLMAp6
VVgzOWQkb3ZBYGVfVEI2PTtudXFkQktMYD1LPSppZ0JAUGJISF98TVRManQjJkhtckkyOHRUTCQ0
MzlMX1YtPCoKemokWHZ2Sz5lNGxgQ3Y5c0w2K2xIWDNUUlUqckhoeig2VCV7dD14NTdfTUVZcDAr
PFhVYCs9ZXkzc3p1OU51SnlXCnp1QEpec1BMZXlwN1JBWm0raGIzVm4lWXdvakcpPXJGJnd0OHpS
WD5oc3wob3IrM1hFO14hRW99KkJlO2BJcXRSJgp6YVNoeiM7cGMxMGtGTkV5YEF9Y1J4NXleWnVs
NFk9PVhHaigpQ3BEK0o/cy1eeSpgKjl2S3pLKmk4bnlUUy1qREUKekRYIUkrcjBIWiVqWXB+LW1J
KWRCYTdtWXppfH5QI29rTE4qJHtNWXlpeTw+RT5qYmswJD9KJUc/czU5TSFHfUcmCnpDYU1HPzwp
KnN5WStDWF5lcEtIZW8xP004Y3ZaQkhWcX19IXd9R2JEZHcxJiladHxzK0NSRWw0SEJ+TVR7LUIx
fAp6JDxGN0J5N3lgSUx5dlgmUUN9UGBpNFYyRW9EUWclVEk1M1VNPTlZPmA5M3IkKCRFO2I4IT5W
Uzw9fEhNIT5KNXoKek5meXt0elcte1RuQSFHP2Q8UStOLUZyLTBab30zb2woPXhSb0RmTzBrZHxW
PCNScHNNU0dBcGMkcVN2K1B4QlNuCnpDck91eiN0I2Q/bWljdVIkN344UFhiSmI0Xk0kYiZjNmIr
cnBUUy00QUsxOVErYWRSZ2gkYktCd1l4dll1PXJrbgp6TzZATFhAaz4jZmJUKGdrbEMqNGxtUFNF
K3pReDw/I0Ylc3FAaEFuc0ptbXdtdEBKTWAwVj1WYj4hWHoqUFJkemcKeldYa0ZkTm0wazV0b0pr
fD1Xb01YTjFiZ0ZeanhfK2x5QDx8VldzVXI9OFcjbkErTXd1X3Z6SWshcHFpN2Fke1pRCnppUk9G
V2wxN1QoNENkSGxpZjwxck5ecWFGKTVBel9gQUQmUD10JD5XXk9+I25va0hNNWdZJUIzSzM7MW9Q
djRfdwp6dlJ8Pyh4aTIzVENeM0FvY3d+MWNgQSlWSkA3PVJtbiV9cClYfEoqcHIjNjQ8YH1FR0Bp
UVFZeCNgeFQmY1N8KmUKenRaaWYwZT59KiRWPkhadWI/MXQ2MnxgdWJtKk9oZ2E8YE1NbCNaU3RA
KEZMdEtHPm9EKlBVQHkpY2Z+YUhNPiotCnpLQTJNRSlSZG15KyorSHlDV28hbT5DQnA8bUpCQDN7
OF9jTU0jaFRlKDQ9UjQhNFdRTGAzO2k4KUV3QG5pKGZxSAp6Kj58U2dUWH5NbGQpaitpWkVUVXsl
amIoeVl9MCVqQT5+d3Z0LW43TlBIZmE0em4odCRuTzB+cCl4NWJVXk1WfVYKemBFa1BPOWt0KUFD
JTQ0KF9nayEzYCk9dVpNSUYtM3pOZ2xtYihBeFM/P1MjX0c7fEtfNnxFR3FkbTZhVWs4ZntKCno2
WWxmRkx5ZWhUYGt4ZGZfVnA7eWVNeT1GejgjSmhKR2hJey1KTFI1NG1zZno+Rnt7OTtPP30jX0ZJ
eH1UNFEyUAp6RzIjaEJXVjU0cEBzciFyLUJ4eHpESUwxPGE+VDUqSEdVOzBINX0mZnU2Xjd4UVR+
LXN1cCVVS15rejMqa24/VXMKelJTRk1mPTF0dz11ZGRTfU5CN2slYz8qQCZOaklrOGgtcT9UVTJM
bUA/KUN2dW5Ve3M+YF8hdFFNYHtIaGU7MkErCnpCR3MyQHlycH5kN0hXRHt2Z1NaVD00Z3FiVkVF
fnRqeyEoUSlfZEpFLS13SD8tYitpSjR+a25FSiE8RHhWVTBFXgp6JndOcGE+b2hDPXlwclBtSUhL
bSV7bVVmcituekpZZjg4e1FyY2tgRShZcmZhWiNaSmQ5O1cya28wR217clV8M3QKel4mTHhzSGBm
IyZ6SXcqM3l7LTZgO25JZnttViM/VlV3N1FSOWFFQEdyYVhVaG1gNiN4dl4oY0EtP3xFYyZ4cz5E
CnpUZWhqPiRPKFZiKj50a25vWHtTbWB0ayZsKj1WdFJ5SSEqZ201PHUlQyRrRk97bXprbHp0KXdW
RiE3VGl1V1hqagp6azNISGRsdDtCUTBtR2x1QEFxdTNAO3w5T154YUZ7V0pVan5oaEV2alokOzkt
eWlCQExjRFhYYFJGTl5rd2F1VmoKemVAb3p0RU9VajJUUEBtR05FYDNWPS1uRlpNMkhiO0plcSVK
UzYtfmdTcmU8aFNGe2JrSiY2QlFYVy1JU2JzK1U/CnpnPE9QPEAzJUpMI1pBLXg9ZSYtbmwreWJJ
R0pZKFJJK0RMQ1FyTXR5bEh5KUFZemFYO2hVP1ZHVF5EXkBNczRMdQp6YDBtKE9LU1hfc15GR3cj
OTg3VjxqTUxoN2Z7KFd2YTBaMURsYGkjMDU+OytCYUEwe31uQnM3dUMoMlgjST1sbX0KemJ0ayRT
RHtCWWdQfmRmakE2Zzc0TE1qaiR7Z3E5S08mJHpXYUtPeX15fSVkZEl8eCg3SThoKXIjaSQrZlU8
QWpBCnp7VGppdXlDY2FPZmNjanI3JHV8TCtDVDEkMVNJWGhLaUt5ZHlHYmEpJH1LZkd7dzJxYz0q
bVU+ODF2MnRIITtgWQp6RT1xckxMfiZiJj0mUWwhQEFTPnl5NVFNQCotYj9QNG9ZWGVtYiQ7fUct
dlR5bDY7TG1jYW5kTVE9RFNNNE5EPy0KemUwamlOVEtBYyozWnU+IXFsem5jX3JKZSt0LTdwZWJ6
WWRRUTFJYSlAZytMUiYkezE5KV9MRksyfE0/N3FmVnxpCnpgTD1ybiYobkI0ZWJJQSoxNis2WCUp
SERmIztmLUNVbGVYQnIqeD1oKUIzTE9NOVJgQ0ZQMFIkYF4mMmg+XlghPwp6LW81WCNxb1khfShM
PzBocGtkUEdic3NuUEEqO24zTGZAfTlLWEoqMyF5PShrZFZgRSZ5OytgNG1sWT1sP3lEQ0gKejZI
UU1TQFQxPypfWUdNV3hZO3AtZHR4dlMqWCl5ITZMVX5HdiRIOTd4VHN9amc9WHltbj5XLV45aT5n
VHJPPXhQCnpzMWcpVi18fXwkWHhiNmtCX3FAT1NNTklRXkNJalRZRGFKTTl1SDk4eiVDOSN2YlZ8
VVRec1koMWhNVUNVUlluJAp6RT50TSRfLXJrSVEocCliQTg4PjYke1U2SVJvPlpNdUgtZEZ7cl9F
a2FTQ3lVQ2Q1d0smZiMzfHN+SlZUYlRPKSEKekFZeHY+bGx9UUIzeWJINkQhQSpVSEkxRT9eLVk1
T3hIKT82VTlrJGsqO3RUZnBSKWIrX1hpb3AzYj5hTUVnLSpmCnppal5JSU5APEBkJEcrbkNodz0p
T2EzfkpgI2ZtQ3Foa1hnTmQ3PUtmWnlfbDBraTlJKD4jKU1GeXVkYWNmRiMlZAp6RldRIX1hTzs0
fVMzRGl2aks5T35rM1YtYVJEUzN7a28kTDIxZk5rb219SXhTKmwpUyt6MS1VLXZUTEc9YChKO1cK
elk5cTZZVTJTJUdLJDB6THUodi1MRkA/XnI1KUxYPndUOEZscFA0JTRyUDx0e2QqQytSWU5GZEpx
aXZ9fWlsYzR6CnpaSkFjTVI/anp1WDN9cSkmTHYhQU85PzRgXjQ7KipYUGFYZD1pWDgyYnQpJmRU
P0JtQ3tmeTJ4OCRMcD97MHtuMgp6P3VGOEVrMmMtanchNnxib05aIW5uZ0hHWVFETkAhOSklM1J0
IWM9RkVJamJGXyhlRzh2Q3kmYFVMNi1LYktrcSkKenNSUHtOamohbEVOUm9BUkY/bzZWek5sMj8h
cnA7O3A9bEk5U3BTVVV4NkxEWGgqdClYOUY2YCheNlhBdUApTG1sCnolaWVMYUhOVk9nWkohO1kl
OX45d2krJnNCVFgoWTNOe2ZBfUIlPTNCezQpfiFDMjZfejRoTXJQPnowTk1xdjJSVgp6alh9UEkr
PnprKk97bEYoS353dmxuPyZnenNDcExQK05PM2l7R2R4eytPem4kPi10VyVFNnRuSitQUX0laDRZ
ZHYKejBYNGdDKXR2cW1SO2ZIQDVvaDVSTUM2X0hLNElxbUE8K3A/bFpkbkFFTTlWcXU9KnVzRmxu
ZTsraTAlcyZSKUlHCnpCbjB8eCtjaVg1Tjs4JnwmQFY9MlV2ZWE/e3RZNyg9OGhHb1dVe3ROPUhM
XzYzQ3o7IVVKKnxOXzI4eEQxcCYxZQp6I3xuZzAhYGl9SD9SRm8rdytXOGRDck9oKVg2Z3huVUVZ
KipuSUB4X1EoO310YnBrbWlXM0p8PzVrT3xuMjFseD0Kekh0e19SX2dMe0dIaCQ+VlR3K2NVaVR7
fEdeUUBMfVBSMl91ZTBpSClQWDlrJV4jbUR7Z1RWTSNsekhHOD1sPWo9CkMwTlk7eAoKZGVsdGEg
MzQyNAp6Y21lSEpjfkJFcTc9T0RqMzVoWWgxKFI/Xk1ZSWFtRDFuM3xwNzl1VGxxemJpTll5YWB0
aztNfEBUd0xTMWdmQDAKejQlZXd4IUdjaGFRSDs3O045enJFdj9eKm5NZ0AmWnRxM1M2dHlLRFVM
Km1BJTlqNTx2cmFRQ3kmM15sUy18emM9CnpAQSE3bDEmQHA4RFQ2Kil2PVhUQWM+X1FKX0cmK0VZ
ez8hOyE9V0BvT3k/JX51dGUtNGAyTkZWOXorTXx3bD5mZwp6SiY0WmhDSnJVM1MwJFNZNWFxel9e
fU1ySWNHKWBMOGNCJk1yKzRiZj88QENKVHtfMDB2ZVclcG5EeEFXMHJHSSoKel5hKFFVdyNFJGlj
R2pfIStaJGxSYHJgN2FveTIlTWtURyQ8VylxSylLRUpKV2ZOWmtKbTlXQkVxZ3JIQjw9U3pOCnpy
ZzZBbFcqJVlsMkhGc3FhblM4OCFvZkxuTzl5PSM5Y1R4N3Q+QSFAU01VZ24md0hMZTdaU2JPbUdF
LSVgbUpTOAp6JkkjP2Y7clNlSFo5V2dUYUFVO1VKJEgrbXRmbXElPCplSD9xTkh4Y0g9RUN9WF5A
bXNnMCtAN0d8OT5ERChgKmMKek0jTmh3UWt4cCFDdVFhbGNCLU4oal9PR2prMTlSWXhVUSRNZjJ9
cElvPTBgPXZGRlU5QDAhZVNnJWpQI0BFO3s+CnoleDEkYEBWcWN1UGw2WmduYVo/dl9XcFVqYWst
RkUkb09rUDV0O0I+cEx8PyFBY1d4MmdiJSMpI3t+RHkzMilJegp6P0BrJkphcEE2LTRqeU54JHI7
Q3w9e0cjO21pTkt0M3xDYkBTZ2k/TXZoPjt8ZFJsQFZHJno7cmYpdzBSYipPWUcKekdWYlFnb3x9
Zio2WkY2ZEk+anshSzdNJUNlZFJiTkdZZTx2VCNidXxtZDNaTmQ4bEJEeEFOVUI5all0KFIlWUVg
CnpqX3V7VSViJXZBV1prVEE9SzJZfmBed1VtKVNCRDdNbGZ9a2BFRTtEJmQ3WFFRenU0enBZT2c3
TSt4NmduT24mQwp6S2oqdXpPXz84NmNkcXlnI3NFb1BmP0Q2MmFYSV5yNGBDdVpAWkdVUWw7bmAj
cGNCbER1R3JubEE7OXI5TS14a0AKel5wfi03MUNidH1BSkg8VHgwPE9TTF5ESWtPQzZtOTEhYyN8
YHFabzFhUmNpQllETzsqbGI7TGt4P0FUXzB3UFFaCnoyPzlkKU5zPHNzKnYwNk1afDkqZnt6YnE1
O1RXbWI5LXREU0NSQi1AVnk0VDgmV3NAZ29oZCE0eldSMDF1ISghQAp6RGIpaD4zTkBseUpnXkZk
Ml9QaUlQKGIxKnpNKHtuMzAhOGF2RXx0PnI1b3FuZV47OUgjVDMlcElobz54MmJ2ISgKej4/aGBT
MU1RVmN2ZkZ7ZD4hYmh+OUVDc2JJTntGKTU2VU1BRiVeTWN1X2RXK04qLWhxPXxNYXVqdTJhaiNs
JU8xCnprI0dZUVU+JXJ9WktpYmVnO2xUJUEpOyRuIU5KJlEocUpleWFjTk00NFY/engheyRnRFJB
Rjs3NEYrTlooPlo1UQp6SV8hYnAjLV9zblkhY0k5U0ReP0tCMDRWemBnR05XWUJidUlQXzBeUCha
e0teWDF6e3IyKkkhQj4zWEJsNztDbCEKeiRJI2MpVks1PExCcEdsfmQjX21ua3RBcV4wZjE9Jjkz
PnBnMWFtK2Y1WVpjUVVfaVZ2V1YlSGt0NU5IV01qVE5hCno2UTtJPT1xJjJjKnkoMCVhOUNKcXMz
cjd1T0dedUkxN1B7fGAxc3o1aXhUfnpQIWlPPUhRWD5AMjhuRHE5OWp5Rgp6TVZ5cGhQYTJ7b2cl
Uy0qJGE9PkIzeiZzUiNOY3NRZzxSTVI3ZDE1KERwZGdadkhLOT4rcXBvM1YoRChEZHRfeFoKemZk
JX05dEdHNX1VRWQmQzEhTE1yZXY4X28hVE04ViQ5YD83NHMrdyQtWHVebkZtQVZ2P3o1WVRJej91
K2lIVms3CnpBcC1gdGZsQVpjR0FHYEd4ITQ4a3RobjVGXnBPaVNKLT1rO1RfSEVPalprQUZSYykr
fC1HTlQzUV9uTDtLVlBGPAp6JjFCZzQ7ITVgP2hHJDYrLURDMF51dl9qfV5PUn1WPUlvYmcoS3Z2
ZEYoPChtcT4lSFk5ZyF6cGAoNWdseis5OT0Kejk/VVFQKVpGPzxDJHs2RSUydD8/NUEhLUJkYmwm
QyYmbVRqS0JgYEJJQ15PZVQ3cE08eDEjVkwjaGNYNj82fGVTCnpaTnZna0NVXm9MKjEoTVpOfUNh
UjdMVzk4aDU3UGZVOD55RHMpQ2FQKmwjMj81Y3Umd2p0YGRKLVYhSCQkKH1KMwp6bTslc0dYYlYz
MHtAPkw5ZXAzZkhQZ1Qrb0B8bnQ8SEd8Ml9nJGpoWHtJJnc5JEwzQX0pTHxucDxXOXA4aDF9Y2MK
emgweGNEezVpYmg9KlQ/SmMxJj8wb0AhQEQ3KFMlLWNLaUsjVml7YDBPeyR2aDIoX3BoY1o4ZDBm
S2JNRW9PYnJjCnpmTS0pQWFjSzxCNFh+fUdzd09mZj96ZVh9aENwOGJsQ30wUGRgdG5BVl4wajk5
Nmo0LSh9OUNVYnl1TX5FfkVaRgp6UkFNOHghUzJ9ZnZCNkgqako4MiNJRDdQbzZ+MDJFaXhRQilB
SFUmQ1plcmJUM0xqVEQja29hMy1xX3ZnJjFrVm4Kekx+cGwyVWxqYHlEM3E/Q3g8UlpQKCNzM0Ry
cU8xM3FjYFgoeX59TyQ4U3o4RHl1cWBnJjswdHNoZFg0YikqKXstCnpZSCpQaygrUn53aWZpJXd6
VSExWEMzOUt5ak4rdH58MTItWHtUfT9TeWlAJWRfaj88cGctb1BVYTlHQV49JT90eQpwKWVSalEw
IX1PK2d9PHhZRXtDX0d2I1V6b3UhakdFTiRTQVBySVApLTs0VElHezBsamczYF90MwoKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3Ry
dWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5UmVhZC5odG1sIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2Fy
ZENvbXBhdGliaWxpdHlSZWFkLmh0bWwKaW5kZXggMGY0NzYxOWI1ZjY1MzQxZTI1OWFkNDJhZWQ0
NzkzNWZkZWQ4YjgwYy4uYzA4YjI5MjZmNDVkY2ExODg5OWNmNjU0NDZmODgzYWU5MTNmYjI2NSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVk
REJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHlSZWFkLmh0bWwKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xv
bmVCYWNrd2FyZENvbXBhdGliaWxpdHlSZWFkLmh0bWwKQEAgLTEsMjEgKzEsMjEgQEAKIDxzY3Jp
cHQ+CiAgICAgZnVuY3Rpb24gbG9nKG1zZykKICAgICB7Ci0vLyAgICAgICAgYWxlcnQobXNnKTsK
KyAgICAgICAgLy8gYWxlcnQobXNnKTsKICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFu
ZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UobXNnKTsKICAgICB9CiAKICAgICBmdW5jdGlv
biBzaG91bGRCZVR5cGUoX2EsIF90eXBlKQogICAgIHsKLSAgICAgICAgdmFyIGV4Y2VwdGlvbjsK
LSAgICAgICAgdmFyIF9hdjsKKyAgICAgICAgbGV0IGV4Y2VwdGlvbjsKKyAgICAgICAgbGV0IF9h
djsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIF9hdiA9IGV2YWwoX2EpOwogICAgICAgICB9
IGNhdGNoIChlKSB7CiAgICAgICAgICAgICBleGNlcHRpb24gPSBlOwogICAgICAgICB9CiAKLSAg
ICAgICAgdmFyIF90eXBldiA9IGV2YWwoX3R5cGUpOworICAgICAgICBjb25zdCBfdHlwZXYgPSBl
dmFsKF90eXBlKTsKICAgICAgICAgaWYgKF9hdiBpbnN0YW5jZW9mIF90eXBldikgewogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0yMyw4ICsyMywyMSBAQAog
ICAgICAgICB9CiAgICAgfQogCisgICAgZnVuY3Rpb24gc2hvdWxkQmVDcnlwdG9LZXkoX2EsIF9r
ZXkpCisgICAgeworICAgICAgICBpZiAoIShKU09OLnN0cmluZ2lmeShfa2V5LmtleV9vcHMpID09
IEpTT04uc3RyaW5naWZ5KF9hLmtleV9vcHMpKSB8fCAhKF9rZXkuZXh0ID09IF9hLmV4dCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChfa2V5Lmt0eSAgPT0gIm9jdCIg
JiYgX2Eua3R5ID09ICJvY3QiKQorICAgICAgICAgICAgcmV0dXJuIChfa2V5LmsgPT0gX2Euaykg
JiYgKF9rZXkuYWxnID09IF9hLmFsZyk7CisgICAgICAgIGlmIChfa2V5Lmt0eSAgPT0gIkVDIiAm
JiBfYS5rdHkgPT0gIkVDIikKKyAgICAgICAgICAgIHJldHVybiAoX2tleS5rID09IF9hLmspICYm
IChfa2V5LmNydiA9PSBfYS5jcnYpICYmIChfa2V5LnggPT0gX2EueCkgJiYgKF9rZXkueSA9PSBf
YS55KSAmJiAoX2tleS5kID09IF9hLmQpOworICAgICAgICBpZiAoX2tleS5rdHkgID09ICJSU0Ei
ICYmIF9hLmt0eSA9PSAiUlNBIikKKyAgICAgICAgICAgIHJldHVybiAoX2tleS5hbGcgPT0gX2Eu
YWxnKSAmJiAoX2tleS5uID09IF9hLm4pICYmIChfa2V5LmUgPT0gX2EuZSkgJiYgKF9rZXkuZCA9
PSBfYS5kKSAmJiAoX2tleS5wID09IF9hLnApICYmIChfa2V5LnEgPT0gX2EucSkgJiYgKF9rZXku
ZHAgPT0gX2EuZHApICYmIChfa2V5LmRxID09IF9hLmRxKSAmJiAoX2tleS5xaSA9PSBfYS5xaSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICAvLyBWYWx1ZXMgdGhhdCBhcmUg
dXNlZCB0byBpbmZlciB0aGUgdHlwZSBvZiBhIGdpdmVuIHByaW1pdGl2ZSB0eXBlLgotICAgIHZh
ciB0ZXN0VmFsdWVzID0gWworICAgIGNvbnN0IHRlc3RWYWx1ZXMgPSBbCiAgICAgICAgIHVuZGVm
aW5lZCwKICAgICAgICAgbnVsbCwKICAgICAgICAgNSwgLy8gSW50CkBAIC0zOCwyNSArNTEsMzUg
QEAKICAgICBdOwogCiAgICAgLy8gVmFsdWVzIHRoYXQgYXJlIHVzZWQgdG8gaW5mZXIgdGhlIHR5
cGUgb2YgYSBnaXZlbiBCb29sZWFuL1N0cmluZyB0eXBlLgotICAgIHZhciB0ZXN0VHlwZVZhbHVl
cyA9IFsKKyAgICBjb25zdCB0ZXN0VHlwZVZhbHVlcyA9IFsKICAgICAgICAgeyBpdGVtOiBuZXcg
Qm9vbGVhbih0cnVlKSwgdHlwZTogIkJvb2xlYW4iLCB2YWx1ZTogdHJ1ZSB9LAogICAgICAgICB7
IGl0ZW06IG5ldyBCb29sZWFuKGZhbHNlKSwgdHlwZTogIkJvb2xlYW4iLCB2YWx1ZTogZmFsc2Ug
fSwKICAgICAgICAgeyBpdGVtOiBuZXcgU3RyaW5nKCksIHR5cGU6ICJTdHJpbmciLCB2YWx1ZTog
IiIgfQogICAgIF07CiAKLSAgICB2YXIgb3BlblJlcXVlc3QgPSBpbmRleGVkREIub3BlbigiYmFj
a3dhcmRfY29tcGF0aWJpbGl0eSIpOworICAgIC8vIFZhbHVlcyBhcmUgaW4gSldLIGZvcm1hdHMu
CisgICAgY29uc3QgdGVzdENyeXB0b0tleVZhbHVlcyA9IFsKKyAgICAgICAgeyBrdHk6ICJvY3Qi
LCBrOiAiWVdKalpHVm1aMmd4TWpNME5UWTNPQSIsIGFsZzogIkExMjhDQkMiLCB1c2U6ICJlbmMi
LCBrZXlfb3BzOiBbJ2RlY3J5cHQnLCAnZW5jcnlwdCcsICd1bndyYXBLZXknLCAnd3JhcEtleSdd
LCBleHQ6IHRydWUgfSwKKyAgICAgICAgeyBrdHk6ICJFQyIsIHVzZTogInNpZyIsIGV4dDogdHJ1
ZSwgY3J2OiAiUC0yNTYiLCB4OiAiMUZTVldpZVR2aWtGa0cxTk95aGtVQ2FNYmRRaHh3SDZhQ3U0
RXotc1J0QSIsIHk6ICI5am1OVExxTTRjakJoZEFuSGNOSTlZUVYzTzhMRm1vLUVkWldrOG50QWFJ
Iiwga2V5X29wczogWyd2ZXJpZnknXSB9LAorICAgICAgICB7IGt0eTogIkVDIiwgdXNlOiAic2ln
IiwgZXh0OiB0cnVlLCBrZXlfb3BzOiBbInNpZ24iXSwgY3J2OiAiUC0yNTYiLCB4OiAiMUZTVldp
ZVR2aWtGa0cxTk95aGtVQ2FNYmRRaHh3SDZhQ3U0RXotc1J0QSIsIHk6ICI5am1OVExxTTRjakJo
ZEFuSGNOSTlZUVYzTzhMRm1vLUVkWldrOG50QWFJIiwgZDogInBweEJTb3YzTjhfQVVjaXNBdXZt
TFY0eUU4ZV9MX0JMRThiWmI5WjFYamciIH0sCisgICAgICAgIHsga3R5OiAib2N0IiwgazogIllX
SmpaR1ZtWjJneE1qTTBOVFkzT0EiLCBhbGc6ICJIUzI1NiIsIHVzZTogInNpZyIsIGtleV9vcHM6
IFsic2lnbiIsICJ2ZXJpZnkiXSwgZXh0OiB0cnVlLCB9LAorICAgICAgICB7IGt0eTogIlJTQSIs
IGFsZzogIlBTMjU2IiwgdXNlOiAic2lnIiwga2V5X29wczogWyJ2ZXJpZnkiXSwgZXh0OiB0cnVl
LCBuOiAicmNDVUN2N09jMUhWYW0xREloQ3pxa25UaFdhd09wOFFMazhaaXkycDEwQnlqUUZDYWpv
Rml5dUFXbC1SMVdYWmFmNHhpdExScmFjVDlhZ3B6SXpjLU1iTFNISUdnV1FHTzIxbEdpSW15NWZ0
Wi1EOGJIQXFSejJ5MTVwekQ0YzRDRW91N1hTU0xEb1JuUjBRRzVNc0RoRDZzMmdWOW13SGtydGtD
eHRNV2RCaS03N2FzOHdHbWxOUmxkY09TZ1pETEs4VW5DU2dBMU9ndVo5ODliRnljOHRPT0VJYjB4
VVNmUFN6M0xQU0NueVl6NjhhRGptS1ZlTkgtaWc4NTdPU2N5V2JHeUV5M0JpdzY0cXVuM2p1VWxO
V3NKM3puZ2tPZHRlWVd5dHg1UXI0WEtOczZSLU15eXE3MktVcDAybUpEWmlpeWlnbHhNTF9pMy1f
Q2VlY0N3IiwgZTogIkFRQUIiIH0sCisgICAgICAgIHsga3R5OiAiUlNBIiwgYWxnOiAiUFMxIiwg
dXNlOiAic2lnIiwga2V5X29wczogWyJzaWduIl0sIGV4dDogdHJ1ZSwgbjogInJjQ1VDdjdPYzFI
VmFtMURJaEN6cWtuVGhXYXdPcDhRTGs4Wml5MnAxMEJ5alFGQ2Fqb0ZpeXVBV2wtUjFXWFphZjR4
aXRMUnJhY1Q5YWdwekl6Yy1NYkxTSElHZ1dRR08yMWxHaUlteTVmdFotRDhiSEFxUnoyeTE1cHpE
NGM0Q0VvdTdYU1NMRG9SblIwUUc1TXNEaEQ2czJnVjltd0hrcnRrQ3h0TVdkQmktNzdhczh3R21s
TlJsZGNPU2daRExLOFVuQ1NnQTFPZ3VaOTg5YkZ5Yzh0T09FSWIweFVTZlBTejNMUFNDbnlZejY4
YURqbUtWZU5ILWlnODU3T1NjeVdiR3lFeTNCaXc2NHF1bjNqdVVsTldzSjN6bmdrT2R0ZVlXeXR4
NVFyNFhLTnM2Ui1NeXlxNzJLVXAwMm1KRFppaXlpZ2x4TUxfaTMtX0NlZWNDdyIsIGU6ICJBUUFC
IiwgZDogImVOTFMzN2FDejdSWFNOUERfRHRMQko2ajVUOGNTeGR6UkJDalBhSTZXY0dxSnAxNmxx
M1VUd3VvRExBcWxBOW9HWW0yMzhkc0lXcHV1Y1BfbFF0YldlLTdTcHhvSTZfdm1ZR2Y3WVZVSHYx
LURGOXFpT21Tck1tZHhNblZPellYWThSYVQ2dGhQam5fSjVjZkxWMnhJX0x3c3JNdG1wZFN5Tmxn
WDB6VFVod3R1YWhnQUtNRUNoWWpIMkVuakhkSHc2c1kyLXdBcGRjUUk3VUxFMG9vNVJ6YlFacG11
aGNOOWhpQmMwTDNoaEYwcW81MG1ibDAyXzY1X0dRN0RwVmtYQnhOZ1JCTHpsUGFibXp6RzJvQWhm
ZWZMZ1ltU0Mxb3BhQ2tYRTZ2UldRTldOTDQ1UlpOWkZZTTN1b0pnaE9NcUdlb2NNMEJwamRDaEhy
UE9sRnZTUSIsIHA6ICI0bWlUdUFqS01lSDV1SjVLQjM5N1FVd2hia1lFZ1NiY0EybWlmbVNrdkUy
MDE4Z2I1NXFrQkhLMWVWcnlmMV9tNDNMTmxjNk9fYWs2Z2Z6ZFpJWnZTNU5DR2pQbDBxMDlwbFVw
dThxRk9Tc3BCd0E2N3FHSDc2bEZsWkxuX2Q0eWdsUzd3ZkxydTRfNVlzOHFMTHMtRHFWTHZpd3Bv
c09ueXlXcXdNNUFYcDAiLCBxOiAieEhZcnpraXZ0bW56X3NHY2huV0djMHEtcERPa0tpY3B0UnB2
MnBNRklJWHhuRlg1YU1lRVhJWmpWdWpYdHdVeTFVbEZJTjJHWkpTdnk1S0o3OW11X1h5Tm5GSE16
ZWRILUEzZWUzdThoMVVVclpGLXZVdTFfZTRVX3g2N05OMWRlZHpVU0t5bk43cEZsM09rdVNoTUJX
R1YtY3d6T1BkY1ZBZlZ1Wmx4VU1jIiwgZHA6ICJmQnpEellEVUJtQlFHb3A3SG4wZHZmX1QyN1Y2
UnFwY3RXbzA3NENRWmNGYlAyYXRGVnRLU2ozdmlXVDN4aWQyVkh6Y2dpREhkZnBNM25FVmxFTzF3
d0lvbkdDU3ZkakdFT1ppaUZWT2pyWkFPVnhBOGd1T2p5eUZ2cWJYa2UwNlZ3UElJVnZmS2VTVTJ6
dWhiUF9fMXR0NkZfZnhvdzRLYjJ4b25HVDBHR2siLCBkcTogImptRTJEaUlQZGh3RGdMWEFRcElh
QnFRODFiTzNYZlZUX0xSVUxBd3d3d2xQdVFWMTQ4SDA0emxoOVRKNlkyR1pIWW9rVjFVMGVPQnBK
eGZrYjdkTFl0cEpwdWlCalJmNHlJVUVvR2xra0lfUWxKbkZTRnItWWpHUmRmTkhxV0JreGxTTVpM
NzcwUjltSUFUbmRHa0g3ejV4LXI5S3dCWkZDNEZDRzJoZ196RSIsIHFpOiAiWUNYX3BMd2JNQkEx
VGhWSDBXY3dtbnl0cU5jck1DRXdUbTdCeUEyZVU2bldiUXJVTHZmN205X2t6ZkxVY2pzbnBBVmxC
UUc1Sk1YTXkwU3E0cHR3Ynl3c2E1LUc4S0FPT09SMkwzdjRoQy1FeXM5ZnRnRk1fM2kwbzQwZWVR
SDRiM2hhUGJudHJJZU1nOEl6bE91VllLZjktMlF1S0RvV2VSZGQ3TnNkeFRrIiB9CisgICAgXTsK
KworICAgIGNvbnN0IG9wZW5SZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oImJhY2t3YXJkX2NvbXBh
dGliaWxpdHkiKTsKICAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsK
ICAgICAgICAgbG9nKCJFcnJvcjogIiArIGV2ZW50LnRhcmdldC5lcnJvci5uYW1lKTsKLSAgICB9
CisgICAgfTsKICAgICBvcGVuUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewog
ICAgICAgICBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CiAgICAgICAgIHJlYWRUeXBlKCk7Ci0g
ICAgfQorICAgIH07CiAKLSAgICB2YXIgcmVzdWx0ID0gdHJ1ZTsKKyAgICBsZXQgcmVzdWx0ID0g
dHJ1ZTsKICAgICBmdW5jdGlvbiByZWFkVHlwZSgpCiAgICAgewotICAgICAgICB2YXIgb2JqZWN0
U3RvcmUgPSBkYi50cmFuc2FjdGlvbigidHlwZSIpLm9iamVjdFN0b3JlKCJ0eXBlIik7CisgICAg
ICAgIGNvbnN0IG9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oInR5cGUiKS5vYmplY3RTdG9y
ZSgidHlwZSIpOwogICAgICAgICBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkub25zdWNjZXNzID0g
ZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1
bHQ7CiAgICAgICAgICAgICBpZiAoY3Vyc29yKSB7CkBAIC02OSw3ICs5Miw3IEBACiAKICAgICBm
dW5jdGlvbiByZWFkVmFsdWUoKQogICAgIHsKLSAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gZGIu
dHJhbnNhY3Rpb24oInZhbHVlIikub2JqZWN0U3RvcmUoInZhbHVlIik7CisgICAgICAgIGNvbnN0
IG9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oInZhbHVlIikub2JqZWN0U3RvcmUoInZhbHVl
Iik7CiAgICAgICAgIG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKS5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bihldmVudCkgewogICAgICAgICAgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAg
ICAgICAgICAgIGlmIChjdXJzb3IpIHsKQEAgLTgyLDEyICsxMDUsMjcgQEAKIAogICAgIGZ1bmN0
aW9uIHJlYWRUeXBlVmFsdWUoKQogICAgIHsKLSAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gZGIu
dHJhbnNhY3Rpb24oInR5cGVWYWx1ZSIpLm9iamVjdFN0b3JlKCJ0eXBlVmFsdWUiKTsKKyAgICAg
ICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigidHlwZVZhbHVlIikub2JqZWN0
U3RvcmUoInR5cGVWYWx1ZSIpOwogICAgICAgICBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkub25z
dWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAgIGN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7CiAgICAgICAgICAgICBpZiAoY3Vyc29yKSB7CiAgICAgICAgICAgICAgICAg
cmVzdWx0ID0gcmVzdWx0ICYmIHNob3VsZEJlVHlwZSgiY3Vyc29yLnZhbHVlIiwgdGVzdFR5cGVW
YWx1ZXNbY3Vyc29yLmtleSAtIDFdLnR5cGUpICYmIChjdXJzb3IudmFsdWUgPT0gdGVzdFR5cGVW
YWx1ZXNbY3Vyc29yLmtleSAtIDFdLnZhbHVlKTsKICAgICAgICAgICAgICAgICBjdXJzb3IuY29u
dGludWUoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmVhZENyeXB0
b0tleSgpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKworICAgIGFzeW5jIGZ1
bmN0aW9uIHJlYWRDcnlwdG9LZXkoKQorICAgIHsKKyAgICAgICAgY29uc3Qgb2JqZWN0U3RvcmUg
PSBkYi50cmFuc2FjdGlvbigiY3J5cHRvS2V5Iikub2JqZWN0U3RvcmUoImNyeXB0b0tleSIpOwor
ICAgICAgICBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkub25zdWNjZXNzID0gYXN5bmMgZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Cisg
ICAgICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICAgICAgY29uc3QgandrS2V5ID0g
YXdhaXQgY3J5cHRvLnN1YnRsZS5leHBvcnRLZXkoImp3ayIsIGN1cnNvci52YWx1ZSk7CisgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICYmIHNob3VsZEJlQ3J5cHRvS2V5KGp3a0tleSwg
dGVzdENyeXB0b0tleVZhbHVlc1tjdXJzb3Iua2V5IC0gMV0pOworICAgICAgICAgICAgICAgIGN1
cnNvci5jb250aW51ZSgpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0KQogICAgICAgICAgICAgICAgICAgICBsb2coIlBhc3MiKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3RydWN0dXJl
ZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5V3JpdGUuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21w
YXRpYmlsaXR5V3JpdGUuaHRtbAppbmRleCBiMjY2ZWNjNGVhYWIxOWNmYTVmZTE5YjdhYjkzMzNj
YTMwNDE1MzQ3Li4wZTA4ZDQzZmRjNjYwODc2NjJlNzhhNDY4YmVkZDBhNzNmYjk4ZDZiIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0
cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVdyaXRlLmh0bWwKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVC
YWNrd2FyZENvbXBhdGliaWxpdHlXcml0ZS5odG1sCkBAIC0xLDIxICsxLDIxIEBACiA8c2NyaXB0
PgogICAgIGZ1bmN0aW9uIGxvZyhtc2cpCiAgICAgewotLy8gICAgICAgIGFsZXJ0KG1zZyk7Cisg
ICAgICAgIC8vIGFsZXJ0KG1zZyk7CiAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRs
ZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKG1zZyk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24g
c2hvdWxkQmVUeXBlKF9hLCBfdHlwZSkKICAgICB7Ci0gICAgICAgIHZhciBleGNlcHRpb247Ci0g
ICAgICAgIHZhciBfYXY7CisgICAgICAgIGxldCBleGNlcHRpb247CisgICAgICAgIGxldCBfYXY7
CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBfYXYgPSBldmFsKF9hKTsKICAgICAgICAgfSBj
YXRjaCAoZSkgewogICAgICAgICAgICAgZXhjZXB0aW9uID0gZTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZhciBfdHlwZXYgPSBldmFsKF90eXBlKTsKKyAgICAgICAgY29uc3QgX3R5cGV2ID0gZXZh
bChfdHlwZSk7CiAgICAgICAgIGlmIChfYXYgaW5zdGFuY2VvZiBfdHlwZXYpIHsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9IGVsc2UgewpAQCAtMjMsOCArMjMsMjEgQEAKICAg
ICAgICAgfQogICAgIH0KIAorICAgIGZ1bmN0aW9uIHNob3VsZEJlQ3J5cHRvS2V5KF9hLCBfa2V5
KQorICAgIHsKKyAgICAgICAgaWYgKCEoSlNPTi5zdHJpbmdpZnkoX2tleS5rZXlfb3BzKSA9PSBK
U09OLnN0cmluZ2lmeShfYS5rZXlfb3BzKSkgfHwgIShfa2V5LmV4dCA9PSBfYS5leHQpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoX2tleS5rdHkgID09ICJvY3QiICYm
IF9hLmt0eSA9PSAib2N0IikKKyAgICAgICAgICAgIHJldHVybiAoX2tleS5rID09IF9hLmspICYm
IChfa2V5LmFsZyA9PSBfYS5hbGcpOworICAgICAgICBpZiAoX2tleS5rdHkgID09ICJFQyIgJiYg
X2Eua3R5ID09ICJFQyIpCisgICAgICAgICAgICByZXR1cm4gKF9rZXkuayA9PSBfYS5rKSAmJiAo
X2tleS5jcnYgPT0gX2EuY3J2KSAmJiAoX2tleS54ID09IF9hLngpICYmIChfa2V5LnkgPT0gX2Eu
eSkgJiYgKF9rZXkuZCA9PSBfYS5kKTsKKyAgICAgICAgaWYgKF9rZXkua3R5ICA9PSAiUlNBIiAm
JiBfYS5rdHkgPT0gIlJTQSIpCisgICAgICAgICAgICByZXR1cm4gKF9rZXkuYWxnID09IF9hLmFs
ZykgJiYgKF9rZXkubiA9PSBfYS5uKSAmJiAoX2tleS5lID09IF9hLmUpICYmIChfa2V5LmQgPT0g
X2EuZCkgJiYgKF9rZXkucCA9PSBfYS5wKSAmJiAoX2tleS5xID09IF9hLnEpICYmIChfa2V5LmRw
ID09IF9hLmRwKSAmJiAoX2tleS5kcSA9PSBfYS5kcSkgJiYgKF9rZXkucWkgPT0gX2EucWkpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgLy8gVmFsdWVzIHRoYXQgYXJlIHVz
ZWQgdG8gaW5mZXIgdGhlIHR5cGUgb2YgYSBnaXZlbiBwcmltaXRpdmUgdHlwZS4KLSAgICB2YXIg
dGVzdFZhbHVlcyA9IFsKKyAgICBjb25zdCB0ZXN0VmFsdWVzID0gWwogICAgICAgICB1bmRlZmlu
ZWQsCiAgICAgICAgIG51bGwsCiAgICAgICAgIDUsIC8vIEludApAQCAtMzgsMzkgKzUxLDUxIEBA
CiAgICAgXTsKIAogICAgIC8vIFZhbHVlcyB0aGF0IGFyZSB1c2VkIHRvIGluZmVyIHRoZSB0eXBl
IG9mIGEgZ2l2ZW4gQm9vbGVhbi9TdHJpbmcgdHlwZS4KLSAgICB2YXIgdGVzdFR5cGVWYWx1ZXMg
PSBbCisgICAgY29uc3QgdGVzdFR5cGVWYWx1ZXMgPSBbCiAgICAgICAgIHsgaXRlbTogbmV3IEJv
b2xlYW4odHJ1ZSksIHR5cGU6ICJCb29sZWFuIiwgdmFsdWU6IHRydWUgfSwKICAgICAgICAgeyBp
dGVtOiBuZXcgQm9vbGVhbihmYWxzZSksIHR5cGU6ICJCb29sZWFuIiwgdmFsdWU6IGZhbHNlIH0s
CiAgICAgICAgIHsgaXRlbTogbmV3IFN0cmluZygpLCB0eXBlOiAiU3RyaW5nIiwgdmFsdWU6ICIi
IH0KICAgICBdOwogCisgICAgLy8gVmFsdWVzIGFyZSBpbiBKV0sgZm9ybWF0cy4KKyAgICBjb25z
dCB0ZXN0Q3J5cHRvS2V5VmFsdWVzID0gWworICAgICAgICB7IGt0eTogIm9jdCIsIGs6ICJZV0pq
WkdWbVoyZ3hNak0wTlRZM09BIiwgYWxnOiAiQTEyOENCQyIsIHVzZTogImVuYyIsIGtleV9vcHM6
IFsnZGVjcnlwdCcsICdlbmNyeXB0JywgJ3Vud3JhcEtleScsICd3cmFwS2V5J10sIGV4dDogdHJ1
ZSB9LAorICAgICAgICB7IGt0eTogIkVDIiwgdXNlOiAic2lnIiwgZXh0OiB0cnVlLCBjcnY6ICJQ
LTI1NiIsIHg6ICIxRlNWV2llVHZpa0ZrRzFOT3loa1VDYU1iZFFoeHdINmFDdTRFei1zUnRBIiwg
eTogIjlqbU5UTHFNNGNqQmhkQW5IY05JOVlRVjNPOExGbW8tRWRaV2s4bnRBYUkiLCBrZXlfb3Bz
OiBbJ3ZlcmlmeSddIH0sCisgICAgICAgIHsga3R5OiAiRUMiLCB1c2U6ICJzaWciLCBleHQ6IHRy
dWUsIGtleV9vcHM6IFsic2lnbiJdLCBjcnY6ICJQLTI1NiIsIHg6ICIxRlNWV2llVHZpa0ZrRzFO
T3loa1VDYU1iZFFoeHdINmFDdTRFei1zUnRBIiwgeTogIjlqbU5UTHFNNGNqQmhkQW5IY05JOVlR
VjNPOExGbW8tRWRaV2s4bnRBYUkiLCBkOiAicHB4QlNvdjNOOF9BVWNpc0F1dm1MVjR5RThlX0xf
QkxFOGJaYjlaMVhqZyIgfSwKKyAgICAgICAgeyBrdHk6ICJvY3QiLCBrOiAiWVdKalpHVm1aMmd4
TWpNME5UWTNPQSIsIGFsZzogIkhTMjU2IiwgdXNlOiAic2lnIiwga2V5X29wczogWyJzaWduIiwg
InZlcmlmeSJdLCBleHQ6IHRydWUsIH0sCisgICAgICAgIHsga3R5OiAiUlNBIiwgYWxnOiAiUFMy
NTYiLCB1c2U6ICJzaWciLCBrZXlfb3BzOiBbInZlcmlmeSJdLCBleHQ6IHRydWUsIG46ICJyY0NV
Q3Y3T2MxSFZhbTFESWhDenFrblRoV2F3T3A4UUxrOFppeTJwMTBCeWpRRkNham9GaXl1QVdsLVIx
V1haYWY0eGl0TFJyYWNUOWFncHpJemMtTWJMU0hJR2dXUUdPMjFsR2lJbXk1ZnRaLUQ4YkhBcVJ6
MnkxNXB6RDRjNENFb3U3WFNTTERvUm5SMFFHNU1zRGhENnMyZ1Y5bXdIa3J0a0N4dE1XZEJpLTc3
YXM4d0dtbE5SbGRjT1NnWkRMSzhVbkNTZ0ExT2d1Wjk4OWJGeWM4dE9PRUliMHhVU2ZQU3ozTFBT
Q255WXo2OGFEam1LVmVOSC1pZzg1N09TY3lXYkd5RXkzQml3NjRxdW4zanVVbE5Xc0ozem5na09k
dGVZV3l0eDVRcjRYS05zNlItTXl5cTcyS1VwMDJtSkRaaWl5aWdseE1MX2kzLV9DZWVjQ3ciLCBl
OiAiQVFBQiIgfSwKKyAgICAgICAgeyBrdHk6ICJSU0EiLCBhbGc6ICJQUzEiLCB1c2U6ICJzaWci
LCBrZXlfb3BzOiBbInNpZ24iXSwgZXh0OiB0cnVlLCBuOiAicmNDVUN2N09jMUhWYW0xREloQ3px
a25UaFdhd09wOFFMazhaaXkycDEwQnlqUUZDYWpvRml5dUFXbC1SMVdYWmFmNHhpdExScmFjVDlh
Z3B6SXpjLU1iTFNISUdnV1FHTzIxbEdpSW15NWZ0Wi1EOGJIQXFSejJ5MTVwekQ0YzRDRW91N1hT
U0xEb1JuUjBRRzVNc0RoRDZzMmdWOW13SGtydGtDeHRNV2RCaS03N2FzOHdHbWxOUmxkY09TZ1pE
TEs4VW5DU2dBMU9ndVo5ODliRnljOHRPT0VJYjB4VVNmUFN6M0xQU0NueVl6NjhhRGptS1ZlTkgt
aWc4NTdPU2N5V2JHeUV5M0JpdzY0cXVuM2p1VWxOV3NKM3puZ2tPZHRlWVd5dHg1UXI0WEtOczZS
LU15eXE3MktVcDAybUpEWmlpeWlnbHhNTF9pMy1fQ2VlY0N3IiwgZTogIkFRQUIiLCBkOiAiZU5M
UzM3YUN6N1JYU05QRF9EdExCSjZqNVQ4Y1N4ZHpSQkNqUGFJNldjR3FKcDE2bHEzVVR3dW9ETEFx
bEE5b0dZbTIzOGRzSVdwdXVjUF9sUXRiV2UtN1NweG9JNl92bVlHZjdZVlVIdjEtREY5cWlPbVNy
TW1keE1uVk96WVhZOFJhVDZ0aFBqbl9KNWNmTFYyeElfTHdzck10bXBkU3lObGdYMHpUVWh3dHVh
aGdBS01FQ2hZakgyRW5qSGRIdzZzWTItd0FwZGNRSTdVTEUwb281UnpiUVpwbXVoY045aGlCYzBM
M2hoRjBxbzUwbWJsMDJfNjVfR1E3RHBWa1hCeE5nUkJMemxQYWJtenpHMm9BaGZlZkxnWW1TQzFv
cGFDa1hFNnZSV1FOV05MNDVSWk5aRllNM3VvSmdoT01xR2VvY00wQnBqZENoSHJQT2xGdlNRIiwg
cDogIjRtaVR1QWpLTWVINXVKNUtCMzk3UVV3aGJrWUVnU2JjQTJtaWZtU2t2RTIwMThnYjU1cWtC
SEsxZVZyeWYxX200M0xObGM2T19hazZnZnpkWkladlM1TkNHalBsMHEwOXBsVXB1OHFGT1NzcEJ3
QTY3cUdINzZsRmxaTG5fZDR5Z2xTN3dmTHJ1NF81WXM4cUxMcy1EcVZMdml3cG9zT255eVdxd001
QVhwMCIsIHE6ICJ4SFlyemtpdnRtbnpfc0djaG5XR2MwcS1wRE9rS2ljcHRScHYycE1GSUlYeG5G
WDVhTWVFWElaalZ1alh0d1V5MVVsRklOMkdaSlN2eTVLSjc5bXVfWHlObkZITXplZEgtQTNlZTN1
OGgxVVVyWkYtdlV1MV9lNFVfeDY3Tk4xZGVkelVTS3luTjdwRmwzT2t1U2hNQldHVi1jd3pPUGRj
VkFmVnVabHhVTWMiLCBkcDogImZCekR6WURVQm1CUUdvcDdIbjBkdmZfVDI3VjZScXBjdFdvMDc0
Q1FaY0ZiUDJhdEZWdEtTajN2aVdUM3hpZDJWSHpjZ2lESGRmcE0zbkVWbEVPMXd3SW9uR0NTdmRq
R0VPWmlpRlZPanJaQU9WeEE4Z3VPanl5RnZxYlhrZTA2VndQSUlWdmZLZVNVMnp1aGJQX18xdHQ2
Rl9meG93NEtiMnhvbkdUMEdHayIsIGRxOiAiam1FMkRpSVBkaHdEZ0xYQVFwSWFCcVE4MWJPM1hm
VlRfTFJVTEF3d3d3bFB1UVYxNDhIMDR6bGg5VEo2WTJHWkhZb2tWMVUwZU9CcEp4ZmtiN2RMWXRw
SnB1aUJqUmY0eUlVRW9HbGtrSV9RbEpuRlNGci1ZakdSZGZOSHFXQmt4bFNNWkw3NzBSOW1JQVRu
ZEdrSDd6NXgtcjlLd0JaRkM0RkNHMmhnX3pFIiwgcWk6ICJZQ1hfcEx3Yk1CQTFUaFZIMFdjd21u
eXRxTmNyTUNFd1RtN0J5QTJlVTZuV2JRclVMdmY3bTlfa3pmTFVjanNucEFWbEJRRzVKTVhNeTBT
cTRwdHdieXdzYTUtRzhLQU9PT1IyTDN2NGhDLUV5czlmdGdGTV8zaTBvNDBlZVFINGIzaGFQYm50
ckllTWc4SXpsT3VWWUtmOS0yUXVLRG9XZVJkZDdOc2R4VGsiIH0KKyAgICBdOworCiAgICAgaW5k
ZXhlZERCLmRlbGV0ZURhdGFiYXNlKCJiYWNrd2FyZF9jb21wYXRpYmlsaXR5Iik7Ci0gICAgdmFy
IG9wZW5SZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oImJhY2t3YXJkX2NvbXBhdGliaWxpdHkiKTsK
KyAgICBjb25zdCBvcGVuUmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCJiYWNrd2FyZF9jb21wYXRp
YmlsaXR5Iik7CiAgICAgb3BlblJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZl
bnQpIHsKICAgICAgICAgLy8gVGhpcyBvYmplY3RTdG9yZSBzdG9yZXMgZWxlbWVudHMgdGhhdCB3
ZSBvbmx5IG5lZWQgdG8gY2hlY2sgaXRzIHR5cGUgdG8gZGV0ZXJtaW5lIGl0cyBzZXJpYWxpemF0
aW9uIHRhZy4KLSAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gZXZlbnQudGFyZ2V0LnJlc3VsdC5j
cmVhdGVPYmplY3RTdG9yZSgidHlwZSIpOworICAgICAgICBldmVudC50YXJnZXQucmVzdWx0LmNy
ZWF0ZU9iamVjdFN0b3JlKCJ0eXBlIik7CiAgICAgICAgIC8vIFRoaXMgb2JqZWN0U3RvcmUgc3Rv
cmVzIGVsZW1lbnRzIHRoYXQgd2UgbmVlZCB0byBjaGVjayBpdHMgdmFsdWUgdG8gZGV0ZXJtaW5l
IGl0cyBzZXJpYWxpemF0aW9uIHRhZy4KLSAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdC5jcmVhdGVPYmplY3RTdG9yZSgidmFsdWUiLCB7IGF1dG9JbmNyZW1lbnQg
OiB0cnVlIH0pOworICAgICAgICBldmVudC50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3Jl
KCJ2YWx1ZSIsIHsgYXV0b0luY3JlbWVudCA6IHRydWUgfSk7CiAgICAgICAgIC8vIFRoaXMgb2Jq
ZWN0U3RvcmUgc3RvcmVzIGVsZW1lbnRzIHRoYXQgd2UgbmVlZCB0byBjaGVjayBib3RoIGl0cyB0
eXBlIGFuZCBpdHMgdmFsdWUgdG8gZGV0ZXJtaW5lIGl0cyBzZXJpYWxpemF0aW9uIHRhZy4KLSAg
ICAgICAgdmFyIG9iamVjdFN0b3JlID0gZXZlbnQudGFyZ2V0LnJlc3VsdC5jcmVhdGVPYmplY3RT
dG9yZSgidHlwZVZhbHVlIiwgeyBhdXRvSW5jcmVtZW50IDogdHJ1ZSB9KTsKLSAgICB9CisgICAg
ICAgIGV2ZW50LnRhcmdldC5yZXN1bHQuY3JlYXRlT2JqZWN0U3RvcmUoInR5cGVWYWx1ZSIsIHsg
YXV0b0luY3JlbWVudCA6IHRydWUgfSk7CisgICAgICAgIC8vIFRoaXMgb2JqZWN0U3RvcmUgc3Rv
cmVzIGNyeXB0byBrZXlzLgorICAgICAgICBldmVudC50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVj
dFN0b3JlKCJjcnlwdG9LZXkiLCB7IGF1dG9JbmNyZW1lbnQgOiB0cnVlIH0pOworICAgIH07CiAg
ICAgb3BlblJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIGxvZygi
RXJyb3I6ICIgKyBldmVudC50YXJnZXQuZXJyb3IubmFtZSk7Ci0gICAgfQorICAgIH07CiAgICAg
b3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0OwogICAgICAgICBzdG9yZVR5cGUoKTsKLSAgICB9CisgICAgfTsK
IAogICAgIGZ1bmN0aW9uIHN0b3JlVHlwZSgpCiAgICAgewotICAgICAgICB2YXIgdHJhbnNhY3Rp
b24gPSBkYi50cmFuc2FjdGlvbigidHlwZSIsICJyZWFkd3JpdGUiKTsKKyAgICAgICAgY29uc3Qg
dHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbigidHlwZSIsICJyZWFkd3JpdGUiKTsKICAgICAg
ICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgICAgICBs
b2coIkVycm9yOiAiICsgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUpOwotICAgICAgICB9Ci0gICAg
ICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeyBzdG9yZVZhbHVl
KCk7IH0KKyAgICAgICAgfTsKKyAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0
aW9uKGV2ZW50KSB7IHN0b3JlVmFsdWUoKTsgfTsKIAotICAgICAgICB2YXIgb2JqZWN0U3RvcmUg
PSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgidHlwZSIpOworICAgICAgICBjb25zdCBvYmplY3RT
dG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJ0eXBlIik7CiAgICAgICAgIC8vIFRoZSBr
ZXkgb2YgYW4gaXRlbSBpcyB0aGUgdHlwZSBvZiBpdHMgdmFsdWUsIGhlbmNlIHdlIGNvdWxkIGRl
dGVybWluZSB0eXBlIG1pc21hdGNoLCBpLmUuIHNlcmlhbGl6YXRpb24gdGFnIHJlb3JkZXIKICAg
ICAgICAgLy8gc2ltcGx5IGJ5IHVzaW5nIGFuIGl0ZW0ncyBrZXkgYW5kIHZhbHVlLgogICAgICAg
ICBvYmplY3RTdG9yZS5hZGQoWzEsIDJdLCAiQXJyYXkiKTsKQEAgLTk5LDM2ICsxMjQsNjAgQEAK
IAogICAgIGZ1bmN0aW9uIHN0b3JlVmFsdWUoKQogICAgIHsKLSAgICAgICAgdmFyIHRyYW5zYWN0
aW9uID0gZGIudHJhbnNhY3Rpb24oInZhbHVlIiwgInJlYWR3cml0ZSIpOworICAgICAgICBjb25z
dCB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCJ2YWx1ZSIsICJyZWFkd3JpdGUiKTsKICAg
ICAgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgICAg
ICBsb2coIkVycm9yOiAiICsgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUpOwotICAgICAgICB9Ci0g
ICAgICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeyBzdG9yZVR5
cGVWYWx1ZSgpOyB9CisgICAgICAgIH07CisgICAgICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUg
PSBmdW5jdGlvbihldmVudCkgeyBzdG9yZVR5cGVWYWx1ZSgpOyB9OwogCi0gICAgICAgIHZhciBv
YmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJ2YWx1ZSIpOworICAgICAgICBj
b25zdCBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJ2YWx1ZSIpOwogICAg
ICAgICAvLyBIZXJlIHdlIHN0b3JlIHZhbHVlcyBpbiB0aGUgdGVzdCBtYXRyaXggaW4gb3JkZXIg
YW5kIHJlYWQgdGhlbSBpbiBvcmRlciB0byBzZWUgaWYgYW55IG1pc21hdGNoIGhhcHBlbnMuCi0g
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdFZhbHVlcy5sZW5ndGg7IGkrKykKKyAgICAg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZXN0VmFsdWVzLmxlbmd0aDsgaSsrKQogICAgICAgICAg
ICAgb2JqZWN0U3RvcmUuYWRkKHRlc3RWYWx1ZXNbaV0pOwogICAgIH0KIAogICAgIGZ1bmN0aW9u
IHN0b3JlVHlwZVZhbHVlKCkKICAgICB7Ci0gICAgICAgIHZhciB0cmFuc2FjdGlvbiA9IGRiLnRy
YW5zYWN0aW9uKCJ0eXBlVmFsdWUiLCAicmVhZHdyaXRlIik7CisgICAgICAgIGNvbnN0IHRyYW5z
YWN0aW9uID0gZGIudHJhbnNhY3Rpb24oInR5cGVWYWx1ZSIsICJyZWFkd3JpdGUiKTsKICAgICAg
ICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgICAgICBs
b2coIkVycm9yOiAiICsgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUpOwotICAgICAgICB9Ci0gICAg
ICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeyByZWFkVHlwZSgp
OyB9CisgICAgICAgIH07CisgICAgICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlv
bihldmVudCkgeyBzdG9yZUNyeXB0b0tleSgpOyB9OwogCi0gICAgICAgIHZhciBvYmplY3RTdG9y
ZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJ0eXBlVmFsdWUiKTsKKyAgICAgICAgY29uc3Qg
b2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgidHlwZVZhbHVlIik7CiAgICAg
ICAgIC8vIEhlcmUgd2Ugc3RvcmUgaXRlbXMgaW4gdGhlIHRlc3QgbWF0cml4IGluIG9yZGVyIGFu
ZCByZWFkIHRoZW0gaW4gb3JkZXIgdG8gc2VlIGlmIGFueSBtaXNtYXRjaGVzIGl0cyB0eXBlIGFu
ZCB2YWx1ZS4KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0VHlwZVZhbHVlcy5sZW5n
dGg7IGkrKykKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZXN0VHlwZVZhbHVlcy5sZW5n
dGg7IGkrKykKICAgICAgICAgICAgIG9iamVjdFN0b3JlLmFkZCh0ZXN0VHlwZVZhbHVlc1tpXS5p
dGVtKTsKICAgICB9CiAKLSAgICB2YXIgcmVzdWx0ID0gdHJ1ZTsKKyAgICBhc3luYyBmdW5jdGlv
biBzdG9yZUNyeXB0b0tleSgpCisgICAgeworICAgICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGRi
LnRyYW5zYWN0aW9uKCJjcnlwdG9LZXkiLCAicmVhZHdyaXRlIik7CisgICAgICAgIHRyYW5zYWN0
aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgbG9nKCJFcnJvcjog
IiArIGV2ZW50LnRhcmdldC5lcnJvci5uYW1lKTsKKyAgICAgICAgfTsKKyAgICAgICAgdHJhbnNh
Y3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7IHJlYWRUeXBlKCk7IH07CisKKyAg
ICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiY3J5cHRv
S2V5Iik7CisgICAgICAgIC8vIEhlcmUgd2Ugc3RvcmUgaXRlbXMgaW4gdGhlIHRlc3QgbWF0cml4
IGluIG9yZGVyIGFuZCByZWFkIHRoZW0gaW4gb3JkZXIgdG8gc2VlIGlmIGFueSBtaXNtYXRjaGVz
IGl0cyB0eXBlIGFuZCB2YWx1ZS4KKyAgICAgICAgbGV0IGNyeXB0b0tleSA9IGF3YWl0IGNyeXB0
by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCB0ZXN0Q3J5cHRvS2V5VmFsdWVzWzBdLCAiYWVzLWNi
YyIsIHRydWUsIFsiZW5jcnlwdCIsICJkZWNyeXB0IiwgIndyYXBLZXkiLCAidW53cmFwS2V5Il0p
OworICAgICAgICBvYmplY3RTdG9yZS5hZGQoY3J5cHRvS2V5KTsKKyAgICAgICAgY3J5cHRvS2V5
ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIHRlc3RDcnlwdG9LZXlWYWx1
ZXNbMV0sIHsgbmFtZTogIkVDRFNBIiwgbmFtZWRDdXJ2ZTogIlAtMjU2IiB9LCB0cnVlLCBbJ3Zl
cmlmeSddKTsKKyAgICAgICAgb2JqZWN0U3RvcmUuYWRkKGNyeXB0b0tleSk7CisgICAgICAgIGNy
eXB0b0tleSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCB0ZXN0Q3J5cHRv
S2V5VmFsdWVzWzJdLCB7IG5hbWU6ICJFQ0RTQSIsIG5hbWVkQ3VydmU6ICJQLTI1NiIgfSwgdHJ1
ZSwgWyJzaWduIl0pOworICAgICAgICBvYmplY3RTdG9yZS5hZGQoY3J5cHRvS2V5KTsKKyAgICAg
ICAgY3J5cHRvS2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIHRlc3RD
cnlwdG9LZXlWYWx1ZXNbM10sIHtuYW1lOiAiaG1hYyIsIGhhc2g6ICJzaGEtMjU2In0sIHRydWUs
IFsic2lnbiIsICJ2ZXJpZnkiXSk7CisgICAgICAgIG9iamVjdFN0b3JlLmFkZChjcnlwdG9LZXkp
OworICAgICAgICBjcnlwdG9LZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandr
IiwgdGVzdENyeXB0b0tleVZhbHVlc1s0XSwge25hbWU6ICJSU0EtUFNTIiwgaGFzaDogIlNIQS0y
NTYifSwgdHJ1ZSwgWyJ2ZXJpZnkiXSk7CisgICAgICAgIG9iamVjdFN0b3JlLmFkZChjcnlwdG9L
ZXkpOworICAgICAgICBjcnlwdG9LZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgi
andrIiwgdGVzdENyeXB0b0tleVZhbHVlc1s1XSwge25hbWU6ICJSU0EtUFNTIiwgaGFzaDogIlNI
QS0xIn0sIHRydWUsIFsic2lnbiJdKTsKKyAgICAgICAgb2JqZWN0U3RvcmUuYWRkKGNyeXB0b0tl
eSk7CisgICAgfQorCisgICAgbGV0IHJlc3VsdCA9IHRydWU7CiAgICAgZnVuY3Rpb24gcmVhZFR5
cGUoKQogICAgIHsKLSAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oInR5
cGUiKS5vYmplY3RTdG9yZSgidHlwZSIpOworICAgICAgICBjb25zdCBvYmplY3RTdG9yZSA9IGRi
LnRyYW5zYWN0aW9uKCJ0eXBlIikub2JqZWN0U3RvcmUoInR5cGUiKTsKICAgICAgICAgb2JqZWN0
U3RvcmUub3BlbkN1cnNvcigpLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAg
ICAgICBjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OwogICAgICAgICAgICAgaWYgKGN1cnNv
cikgewpAQCAtMTQxLDcgKzE5MCw3IEBACiAKICAgICBmdW5jdGlvbiByZWFkVmFsdWUoKQogICAg
IHsKLSAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oInZhbHVlIikub2Jq
ZWN0U3RvcmUoInZhbHVlIik7CisgICAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gZGIudHJhbnNh
Y3Rpb24oInZhbHVlIikub2JqZWN0U3RvcmUoInZhbHVlIik7CiAgICAgICAgIG9iamVjdFN0b3Jl
Lm9wZW5DdXJzb3IoKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewogICAgICAgICAgICAg
Y3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAgICAgICAgICAgIGlmIChjdXJzb3IpIHsK
QEAgLTE1NCwxMiArMjAzLDI3IEBACiAKICAgICBmdW5jdGlvbiByZWFkVHlwZVZhbHVlKCkKICAg
ICB7Ci0gICAgICAgIHZhciBvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCJ0eXBlVmFsdWUi
KS5vYmplY3RTdG9yZSgidHlwZVZhbHVlIik7CisgICAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0g
ZGIudHJhbnNhY3Rpb24oInR5cGVWYWx1ZSIpLm9iamVjdFN0b3JlKCJ0eXBlVmFsdWUiKTsKICAg
ICAgICAgb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50
KSB7CiAgICAgICAgICAgICBjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OwogICAgICAgICAg
ICAgaWYgKGN1cnNvcikgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAmJiBzaG91
bGRCZVR5cGUoImN1cnNvci52YWx1ZSIsIHRlc3RUeXBlVmFsdWVzW2N1cnNvci5rZXkgLSAxXS50
eXBlKSAmJiAoY3Vyc29yLnZhbHVlID09IHRlc3RUeXBlVmFsdWVzW2N1cnNvci5rZXkgLSAxXS52
YWx1ZSk7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIHJlYWRDcnlwdG9LZXkoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfTsKKyAgICB9CisKKyAgICBhc3luYyBmdW5jdGlvbiByZWFkQ3J5cHRvS2V5KCkK
KyAgICB7CisgICAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oImNyeXB0
b0tleSIpLm9iamVjdFN0b3JlKCJjcnlwdG9LZXkiKTsKKyAgICAgICAgb2JqZWN0U3RvcmUub3Bl
bkN1cnNvcigpLm9uc3VjY2VzcyA9IGFzeW5jIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAg
ICBjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICAgICAgaWYgKGN1cnNvcikg
eworICAgICAgICAgICAgICAgIGNvbnN0IGp3a0tleSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZXhw
b3J0S2V5KCJqd2siLCBjdXJzb3IudmFsdWUpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJl
c3VsdCAmJiBzaG91bGRCZUNyeXB0b0tleShqd2tLZXksIHRlc3RDcnlwdG9LZXlWYWx1ZXNbY3Vy
c29yLmtleSAtIDFdKTsKKyAgICAgICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAg
ICAgICAgICAgbG9nKCJQYXNzIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODAxNDMyMDk4MjczMzY1YjdjM2YwNmFlYjZk
NjEwZTA0YjVjNjc3Ny4uYmY1NWMzOGY5NDA3MWM3MWQ3YjgzYjI5Njc4OTNjMmVjNjI2NTJkNiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTEwLTAyICBKaWV3ZW4gVGFuICA8amlld2VuX3Rh
bkBhcHBsZS5jb20+CisKKyAgICAgICAgT25seSB3cmFwcGluZyBDcnlwdG9LZXlzIGZvciBJREIg
ZHVyaW5nIHNlcmlhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMjUwMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTI0NDU5Mjc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIG5l
dyB0ZXN0IGFlcy1pbmRleGVkZGIuaHRtbCB0byBkbyBpZGIgaW4gd29ya2VycyBhbmQgbWFrZXMK
KyAgICAgICAgb3RoZXIgdGVzdHMgbW9yZSBkZXRlcm1pbmlzdGljLgorCisgICAgICAgICogY3J5
cHRvL3dvcmtlcnMvc3VidGxlL2Flcy1pbmRleGVkZGItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvYWVzLWluZGV4ZWRkYi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvZWMtcG9zdE1lc3NhZ2Utd29ya2VyLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvZWMtcG9zdE1lc3Nh
Z2Utd29ya2VyLmh0bWw6CisgICAgICAgICogY3J5cHRvL3dvcmtlcnMvc3VidGxlL2hyc2EtcG9z
dE1lc3NhZ2Utd29ya2VyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBjcnlwdG8vd29ya2Vycy9z
dWJ0bGUvaHJzYS1wb3N0TWVzc2FnZS13b3JrZXIuaHRtbDoKKyAgICAgICAgKiBjcnlwdG8vd29y
a2Vycy9zdWJ0bGUvcmVzb3VyY2VzL2Flcy1pbmRleGVkZGIuanM6IEFkZGVkLgorICAgICAgICAq
IGNyeXB0by93b3JrZXJzL3N1YnRsZS9yc2EtcG9zdE1lc3NhZ2Utd29ya2VyLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvcnNhLXBvc3RNZXNzYWdlLXdvcmtl
ci5odG1sOgorCiAyMDE5LTEwLTAyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEdUSyBnYXJkZW5pbmcuIEFkZCBtaXNzaW5n
IHJlc3VsdHMgYWZ0ZXIgcjI1MDI3Ni4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NyeXB0by93
b3JrZXJzL3N1YnRsZS9hZXMtaW5kZXhlZGRiLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Ny
eXB0by93b3JrZXJzL3N1YnRsZS9hZXMtaW5kZXhlZGRiLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZmIyMTYwMjdiZTAxYzYyM2IyNDQ2OGM4ZjU4YTg0ZTdiYjVhN2ViCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL2Flcy1pbmRleGVkZGItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1tXb3JrZXJdIFRlc3QgZ2VuZXJhdGluZyBhbiBB
RVMga2V5IHVzaW5nIEFFUy1DQkMgYWxnb3JpdGhtIGluIHdvcmtlcnMuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitTdGFydGluZyB3b3JrZXI6IHJlc291cmNlcy9hZXMtaW5kZXhl
ZGRiLmpzCitbV29ya2VyXSBJbXBvcnRpbmcgYSBrZXkuLi4KK1BBU1MgW1dvcmtlcl0gcmV0cmll
dmVkS2V5LnR5cGUgaXMgJ3NlY3JldCcKK1BBU1MgW1dvcmtlcl0gcmV0cmlldmVkS2V5LmV4dHJh
Y3RhYmxlIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gcmV0cmlldmVkS2V5LmFsZ29yaXRobS5uYW1l
IGlzICdBRVMtQ0JDJworUEFTUyBbV29ya2VyXSByZXRyaWV2ZWRLZXkuYWxnb3JpdGhtLmxlbmd0
aCBpcyAxMjgKK1BBU1MgW1dvcmtlcl0gcmV0cmlldmVkS2V5LnVzYWdlcyBpcyBbJ2RlY3J5cHQn
LCAnZW5jcnlwdCcsICd1bndyYXBLZXknLCAnd3JhcEtleSddCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y3J5cHRvL3dvcmtlcnMvc3VidGxlL2Flcy1pbmRleGVkZGIuaHRtbCBiL0xheW91dFRlc3RzL2Ny
eXB0by93b3JrZXJzL3N1YnRsZS9hZXMtaW5kZXhlZGRiLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTc4MmU3
NGRiMGFmMTMyZDE4NDIyYzFiY2Q3M2U5MmYzNGNkMmQwYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9hZXMtaW5kZXhlZGRiLmh0bWwKQEAgLTAs
MCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0PgorICAgIHdvcmtlciA9IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMv
YWVzLWluZGV4ZWRkYi5qcycpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvZWMtcG9zdE1lc3NhZ2Ut
d29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9l
Yy1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IDc1YmM3OWVlN2FlMzBmN2Jh
NWY5OTU3NDcwMDJiYjgwYWZiOWI0NmMuLjJmOWIzYTA2ZmUzMzEzZWFmZDQwZjdiYzQ1NDRkMGNi
NTAxMDc4ZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9l
Yy1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NyeXB0
by93b3JrZXJzL3N1YnRsZS9lYy1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0z
LDYgKzMsMTQgQEAgVGVzdCBzZW5kaW5nIGVjIGNyeXB0byBrZXlzIHZpYSBwb3N0TWVzc2FnZSB0
byBhIHdvcmtlci4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitQQVNTIEFsbCBjaGVj
a3MgcGFzc2VkIGluIHdvcmtlciBmb3IgcHVibGljIGtleQorUEFTUyBwdWJsaWNLZXkudHlwZSBp
cyAncHVibGljJworUEFTUyBwdWJsaWNLZXkuZXh0cmFjdGFibGUgaXMgdHJ1ZQorUEFTUyBwdWJs
aWNLZXkuYWxnb3JpdGhtLm5hbWUgaXMgJ0VDREgnCitQQVNTIHB1YmxpY0tleS5hbGdvcml0aG0u
bmFtZWRDdXJ2ZSBpcyAnUC0yNTYnCitQQVNTIHB1YmxpY0tleS51c2FnZXMgaXMgWyBdCitQQVNT
IGV4cG9ydGVkS2V5LnggaXMgcHVibGljS2V5SlNPTi54CitQQVNTIGV4cG9ydGVkS2V5LnkgaXMg
cHVibGljS2V5SlNPTi55CiBQQVNTIEFsbCBjaGVja3MgcGFzc2VkIGluIHdvcmtlciBmb3IgcHJp
dmF0ZSBrZXkKIFBBU1MgcHJpdmF0ZUtleS50eXBlIGlzICdwcml2YXRlJwogUEFTUyBwcml2YXRl
S2V5LmV4dHJhY3RhYmxlIGlzIHRydWUKQEAgLTEyLDE0ICsyMCw2IEBAIFBBU1MgcHJpdmF0ZUtl
eS51c2FnZXMgaXMgWydkZXJpdmVCaXRzJ10KIFBBU1MgZXhwb3J0ZWRLZXkueCBpcyBwcml2YXRl
S2V5SlNPTi54CiBQQVNTIGV4cG9ydGVkS2V5LnkgaXMgcHJpdmF0ZUtleUpTT04ueQogUEFTUyBl
eHBvcnRlZEtleS5kIGlzIHByaXZhdGVLZXlKU09OLmQKLVBBU1MgQWxsIGNoZWNrcyBwYXNzZWQg
aW4gd29ya2VyIGZvciBwdWJsaWMga2V5Ci1QQVNTIHB1YmxpY0tleS50eXBlIGlzICdwdWJsaWMn
Ci1QQVNTIHB1YmxpY0tleS5leHRyYWN0YWJsZSBpcyB0cnVlCi1QQVNTIHB1YmxpY0tleS5hbGdv
cml0aG0ubmFtZSBpcyAnRUNESCcKLVBBU1MgcHVibGljS2V5LmFsZ29yaXRobS5uYW1lZEN1cnZl
IGlzICdQLTI1NicKLVBBU1MgcHVibGljS2V5LnVzYWdlcyBpcyBbIF0KLVBBU1MgZXhwb3J0ZWRL
ZXkueCBpcyBwdWJsaWNLZXlKU09OLngKLVBBU1MgZXhwb3J0ZWRLZXkueSBpcyBwdWJsaWNLZXlK
U09OLnkKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL2VjLXBvc3RNZXNz
YWdlLXdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL2VjLXBv
c3RNZXNzYWdlLXdvcmtlci5odG1sCmluZGV4IDRhMTY2NjZkZmIyNDY5YTU0YTY0ZWM2MTRlYmYx
NWQ1MTQ0MDE4MTIuLjVmOTEwMzdhYjFhOGY3NDg3MTY5NWU4MTdlNTdkNGRkZGU0NjY0ZjYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9lYy1wb3N0TWVzc2Fn
ZS13b3JrZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvZWMt
cG9zdE1lc3NhZ2Utd29ya2VyLmh0bWwKQEAgLTgxLDkgKzgxLDkgQEAgd29ya2VyLm9ubWVzc2Fn
ZSA9IGZ1bmN0aW9uKGV2dCkgewogCiBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgcHVi
bGljS2V5SlNPTiwgeyBuYW1lOiJFQ0RIIiwgbmFtZWRDdXJ2ZToiUC0yNTYiIH0sIHRydWUsIFsg
XSkudGhlbihmdW5jdGlvbihsb2NhbFB1YmxpY0tleSkgewogICAgIHdvcmtlci5wb3N0TWVzc2Fn
ZSh7IHB1YmxpY0tleTogbG9jYWxQdWJsaWNLZXkgfSk7Ci19KTsKLWNyeXB0by5zdWJ0bGUuaW1w
b3J0S2V5KCJqd2siLCBwcml2YXRlS2V5SlNPTiwgeyBuYW1lOiJFQ0RIIiwgbmFtZWRDdXJ2ZToi
UC0yNTYiIH0sIHRydWUsIFsnZGVyaXZlQml0cyddKS50aGVuKGZ1bmN0aW9uKGxvY2FsUHJpdmF0
ZUtleSkgewotICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7IHByaXZhdGVLZXk6IGxvY2FsUHJpdmF0
ZUtleSB9KTsKKyAgICBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgcHJpdmF0ZUtleUpT
T04sIHsgbmFtZToiRUNESCIsIG5hbWVkQ3VydmU6IlAtMjU2IiB9LCB0cnVlLCBbJ2Rlcml2ZUJp
dHMnXSkudGhlbihmdW5jdGlvbihsb2NhbFByaXZhdGVLZXkpIHsKKyAgICAgICAgd29ya2VyLnBv
c3RNZXNzYWdlKHsgcHJpdmF0ZUtleTogbG9jYWxQcml2YXRlS2V5IH0pOworICAgIH0pOwogfSk7
CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1
YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9j
cnlwdG8vd29ya2Vycy9zdWJ0bGUvaHJzYS1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0
CmluZGV4IDBlZDc0ZjlmZmY0Y2MxZmYyYjJhNTFlZjAyM2QyYWQwM2ZjYjY4NmYuLjZlMWQ2ZmU1
MzA4MjdkNDlmOGVjOWY2NmY2MTcxMjI0NzM0YTMyZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2NyeXB0by93b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdvcmtlci1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL2hyc2EtcG9zdE1lc3Nh
Z2Utd29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMywxNCArMyw2IEBAIFRlc3Qgc2VuZGluZyBoYXNo
ZWQgcnNhIGNyeXB0byBrZXlzIHZpYSBwb3N0TWVzc2FnZSB0byBhIHdvcmtlci4KIE9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIEFsbCBjaGVja3MgcGFzc2VkIGluIHdvcmtlciBm
b3IgcHJpdmF0ZSBrZXkKLVBBU1MgcHJpdmF0ZUtleS50eXBlIGlzICdwcml2YXRlJwotUEFTUyBw
cml2YXRlS2V5LmV4dHJhY3RhYmxlIGlzIGZhbHNlCi1QQVNTIHByaXZhdGVLZXkuYWxnb3JpdGht
Lm5hbWUgaXMgJ1JTQVNTQS1QS0NTMS12MV81JwotUEFTUyBwcml2YXRlS2V5LmFsZ29yaXRobS5t
b2R1bHVzTGVuZ3RoIGlzIDIwNDgKLVBBU1MgYnl0ZXNUb0hleFN0cmluZyhwcml2YXRlS2V5LmFs
Z29yaXRobS5wdWJsaWNFeHBvbmVudCkgaXMgJzAxMDAwMScKLVBBU1MgcHJpdmF0ZUtleS5hbGdv
cml0aG0uaGFzaC5uYW1lIGlzICdTSEEtMjU2JwotUEFTUyBwcml2YXRlS2V5LnVzYWdlcyBpcyBb
J3NpZ24nXQogUEFTUyBBbGwgY2hlY2tzIHBhc3NlZCBpbiB3b3JrZXIgZm9yIHB1YmxpYyBrZXkK
IFBBU1MgcHVibGljS2V5LnR5cGUgaXMgJ3B1YmxpYycKIFBBU1MgcHVibGljS2V5LmV4dHJhY3Rh
YmxlIGlzIHRydWUKQEAgLTE5LDYgKzExLDE0IEBAIFBBU1MgcHVibGljS2V5LmFsZ29yaXRobS5t
b2R1bHVzTGVuZ3RoIGlzIDIwNDgKIFBBU1MgYnl0ZXNUb0hleFN0cmluZyhwdWJsaWNLZXkuYWxn
b3JpdGhtLnB1YmxpY0V4cG9uZW50KSBpcyAnMDEwMDAxJwogUEFTUyBwdWJsaWNLZXkuYWxnb3Jp
dGhtLmhhc2gubmFtZSBpcyAnU0hBLTI1NicKIFBBU1MgcHVibGljS2V5LnVzYWdlcyBpcyBbJ3Zl
cmlmeSddCitQQVNTIEFsbCBjaGVja3MgcGFzc2VkIGluIHdvcmtlciBmb3IgcHJpdmF0ZSBrZXkK
K1BBU1MgcHJpdmF0ZUtleS50eXBlIGlzICdwcml2YXRlJworUEFTUyBwcml2YXRlS2V5LmV4dHJh
Y3RhYmxlIGlzIGZhbHNlCitQQVNTIHByaXZhdGVLZXkuYWxnb3JpdGhtLm5hbWUgaXMgJ1JTQVNT
QS1QS0NTMS12MV81JworUEFTUyBwcml2YXRlS2V5LmFsZ29yaXRobS5tb2R1bHVzTGVuZ3RoIGlz
IDIwNDgKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhwcml2YXRlS2V5LmFsZ29yaXRobS5wdWJsaWNF
eHBvbmVudCkgaXMgJzAxMDAwMScKK1BBU1MgcHJpdmF0ZUtleS5hbGdvcml0aG0uaGFzaC5uYW1l
IGlzICdTSEEtMjU2JworUEFTUyBwcml2YXRlS2V5LnVzYWdlcyBpcyBbJ3NpZ24nXQogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvaHJzYS1wb3N0TWVzc2FnZS13b3JrZXIu
aHRtbCBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdl
LXdvcmtlci5odG1sCmluZGV4IDdhNDM1ZmU1ZWUzNGY0OTM0MmQ5MjZkN2FiM2FiN2UxYzdjYmI5
OGQuLmU5ZWQ4YzkyZTAzMDdlMDgzZjljNDY3MThkYWI5YmJjZTVhNDQwZGUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdvcmtl
ci5odG1sCisrKyBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RN
ZXNzYWdlLXdvcmtlci5odG1sCkBAIC03NSw5ICs3NSw5IEBAIHdvcmtlci5vbm1lc3NhZ2UgPSBm
dW5jdGlvbihldnQpIHsKIAogY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIHB1YmxpY0tl
eUpTT04sIGFsZ29yaXRobUtleUdlbiwgdHJ1ZSwgWyd2ZXJpZnknXSkudGhlbihmdW5jdGlvbihs
b2NhbFB1YmxpY0tleSkgewogICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7IHB1YmxpY0tleTogbG9j
YWxQdWJsaWNLZXkgfSk7Ci19KTsKLWNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBwcml2
YXRlS2V5SlNPTiwgYWxnb3JpdGhtS2V5R2VuLCBmYWxzZSwgWydzaWduJ10pLnRoZW4oZnVuY3Rp
b24obG9jYWxQcml2YXRlS2V5KSB7Ci0gICAgd29ya2VyLnBvc3RNZXNzYWdlKHsgcHJpdmF0ZUtl
eTogbG9jYWxQcml2YXRlS2V5IH0pOworICAgIGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2si
LCBwcml2YXRlS2V5SlNPTiwgYWxnb3JpdGhtS2V5R2VuLCBmYWxzZSwgWydzaWduJ10pLnRoZW4o
ZnVuY3Rpb24obG9jYWxQcml2YXRlS2V5KSB7CisgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7
IHByaXZhdGVLZXk6IGxvY2FsUHJpdmF0ZUtleSB9KTsKKyAgICB9KTsKIH0pOwogPC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvcmVzb3Vy
Y2VzL2Flcy1pbmRleGVkZGIuanMgYi9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUv
cmVzb3VyY2VzL2Flcy1pbmRleGVkZGIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJkOGRjOWI4ODllMDgxZTgx
NmM1Y2FiMjhkOGFjNzQ2NTg3YmRhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Ny
eXB0by93b3JrZXJzL3N1YnRsZS9yZXNvdXJjZXMvYWVzLWluZGV4ZWRkYi5qcwpAQCAtMCwwICsx
LDUxIEBACitpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMnKTsKKworZGVzY3JpcHRpb24oIlRlc3QgZ2VuZXJhdGluZyBhbiBBRVMga2V5IHVzaW5nIEFF
Uy1DQkMgYWxnb3JpdGhtIGluIHdvcmtlcnMuIik7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
Y29uc3QgandrS2V5ID0geyBrdHk6ICJvY3QiLCBrOiAiWVdKalpHVm1aMmd4TWpNME5UWTNPQSIs
IGFsZzogIkExMjhDQkMiLCB1c2U6ICJlbmMiLCBrZXlfb3BzOiBbJ2RlY3J5cHQnLCAnZW5jcnlw
dCcsICd1bndyYXBLZXknLCAnd3JhcEtleSddLCBleHQ6IHRydWUgfTsKKworZGVidWcoIkltcG9y
dGluZyBhIGtleS4uLiIpOworY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIGp3a0tleSwg
ImFlcy1jYmMiLCB0cnVlLCBbImVuY3J5cHQiLCAiZGVjcnlwdCIsICJ3cmFwS2V5IiwgInVud3Jh
cEtleSJdKS50aGVuKGZ1bmN0aW9uKGtleSkgeworICAgIGNvbnN0IG9wZW5SZXF1ZXN0ID0gaW5k
ZXhlZERCLm9wZW4oImNyeXB0b19zdWJ0bGUiKTsKKyAgICBvcGVuUmVxdWVzdC5vbnVwZ3JhZGVu
ZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBldmVudC50YXJnZXQucmVzdWx0LmNy
ZWF0ZU9iamVjdFN0b3JlKCJhZXMtaW5kZXhlZGRiIik7CisgICAgfTsKKyAgICBvcGVuUmVxdWVz
dC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQg
bm90IG9wZW4gZGF0YWJhc2U6ICIgKyBldmVudC50YXJnZXQuZXJyb3IubmFtZSk7CisgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgIH07CisgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAg
ICBzdG9yZUtleSgpOworICAgIH07CisKKyAgICBmdW5jdGlvbiBzdG9yZUtleSgpIHsKKyAgICAg
ICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigiYWVzLWluZGV4ZWRkYiIsICJy
ZWFkd3JpdGUiKS5vYmplY3RTdG9yZSgiYWVzLWluZGV4ZWRkYiIpOworICAgICAgICBjb25zdCBy
ZXEgPSBvYmplY3RTdG9yZS5wdXQoa2V5LCAibXlLZXkiKTsKKyAgICAgICAgcmVxLm9uZXJyb3Ig
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IHB1
dCBhIGtleSBpbnRvIGRhdGFiYXNlOiAiICsgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUpOworICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHJlcS5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsgcmVhZEtleSgpOyB9CisgICAgfQorCisgICAgZnVuY3Rpb24gcmVh
ZEtleSgpIHsKKyAgICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigiYWVz
LWluZGV4ZWRkYiIpLm9iamVjdFN0b3JlKCJhZXMtaW5kZXhlZGRiIik7CisgICAgICAgIGNvbnN0
IHJlcSA9IG9iamVjdFN0b3JlLmdldCgibXlLZXkiKTsKKyAgICAgICAgcmVxLm9uZXJyb3IgPSBm
dW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGdldCBh
IGtleSBmcm9tIGRhdGFiYXNlOiAiICsgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUpOworICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHJlcS5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgcmV0cmlldmVkS2V5ID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsKKyAgICAgICAgICAgIHNob3VsZEJlKCJyZXRyaWV2ZWRLZXkudHlwZSIsICIn
c2VjcmV0JyIpOworICAgICAgICAgICAgc2hvdWxkQmUoInJldHJpZXZlZEtleS5leHRyYWN0YWJs
ZSIsICJ0cnVlIik7CisgICAgICAgICAgICBzaG91bGRCZSgicmV0cmlldmVkS2V5LmFsZ29yaXRo
bS5uYW1lIiwgIidBRVMtQ0JDJyIpOworICAgICAgICAgICAgc2hvdWxkQmUoInJldHJpZXZlZEtl
eS5hbGdvcml0aG0ubGVuZ3RoIiwgIjEyOCIpOworICAgICAgICAgICAgc2hvdWxkQmUoInJldHJp
ZXZlZEtleS51c2FnZXMiLCAiWydkZWNyeXB0JywgJ2VuY3J5cHQnLCAndW53cmFwS2V5JywgJ3dy
YXBLZXknXSIpOworCisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorICAg
IH0KK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL3Jz
YS1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3J5cHRvL3dv
cmtlcnMvc3VidGxlL3JzYS1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IDBj
Mzk3OTAwZmJlZTljOTMyOTk2ODZmZDAzNWQ0ZDdiNGI4NWM4OTguLjYxOTIxYzQyMTQ4MjIzMjJm
ODYzZGJiYjJiY2ZjM2NjYzcxMGRkMWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NyeXB0by93
b3JrZXJzL3N1YnRsZS9yc2EtcG9zdE1lc3NhZ2Utd29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvcnNhLXBvc3RNZXNzYWdlLXdvcmtlci1l
eHBlY3RlZC50eHQKQEAgLTMsNiArMywxNiBAQCBUZXN0IHNlbmRpbmcgcnNhIGNyeXB0byBrZXlz
IHZpYSBwb3N0TWVzc2FnZSB0byBhIHdvcmtlci4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
IAogCitQQVNTIEFsbCBjaGVja3MgcGFzc2VkIGluIHdvcmtlciBmb3IgcHVibGljIGtleQorUEFT
UyBwdWJsaWNLZXkudHlwZSBpcyAncHVibGljJworUEFTUyBwdWJsaWNLZXkuZXh0cmFjdGFibGUg
aXMgdHJ1ZQorUEFTUyBwdWJsaWNLZXkuYWxnb3JpdGhtLm5hbWUgaXMgJ1JTQUVTLVBLQ1MxLXYx
XzUnCitQQVNTIHB1YmxpY0tleS5hbGdvcml0aG0ubW9kdWx1c0xlbmd0aCBpcyAyMDQ4CitQQVNT
IGJ5dGVzVG9IZXhTdHJpbmcocHVibGljS2V5LmFsZ29yaXRobS5wdWJsaWNFeHBvbmVudCkgaXMg
JzAxMDAwMScKK1BBU1MgcHVibGljS2V5LmFsZ29yaXRobS5oYXNoIGlzIHVuZGVmaW5lZC4KK1BB
U1MgcHVibGljS2V5LnVzYWdlcyBpcyBbJ2VuY3J5cHQnXQorUEFTUyBleHBvcnRlZEtleS5uIGlz
IHB1YmxpY0tleUpTT04ubgorUEFTUyBleHBvcnRlZEtleS5lIGlzIHB1YmxpY0tleUpTT04uZQog
UEFTUyBBbGwgY2hlY2tzIHBhc3NlZCBpbiB3b3JrZXIgZm9yIHByaXZhdGUga2V5CiBQQVNTIHBy
aXZhdGVLZXkudHlwZSBpcyAncHJpdmF0ZScKIFBBU1MgcHJpdmF0ZUtleS5leHRyYWN0YWJsZSBp
cyB0cnVlCkBAIC0xOSwxNiArMjksNiBAQCBQQVNTIGV4cG9ydGVkS2V5LnEgaXMgcHJpdmF0ZUtl
eUpTT04ucQogUEFTUyBleHBvcnRlZEtleS5kcCBpcyBwcml2YXRlS2V5SlNPTi5kcAogUEFTUyBl
eHBvcnRlZEtleS5kcSBpcyBwcml2YXRlS2V5SlNPTi5kcQogUEFTUyBleHBvcnRlZEtleS5xaSBp
cyBwcml2YXRlS2V5SlNPTi5xaQotUEFTUyBBbGwgY2hlY2tzIHBhc3NlZCBpbiB3b3JrZXIgZm9y
IHB1YmxpYyBrZXkKLVBBU1MgcHVibGljS2V5LnR5cGUgaXMgJ3B1YmxpYycKLVBBU1MgcHVibGlj
S2V5LmV4dHJhY3RhYmxlIGlzIHRydWUKLVBBU1MgcHVibGljS2V5LmFsZ29yaXRobS5uYW1lIGlz
ICdSU0FFUy1QS0NTMS12MV81JwotUEFTUyBwdWJsaWNLZXkuYWxnb3JpdGhtLm1vZHVsdXNMZW5n
dGggaXMgMjA0OAotUEFTUyBieXRlc1RvSGV4U3RyaW5nKHB1YmxpY0tleS5hbGdvcml0aG0ucHVi
bGljRXhwb25lbnQpIGlzICcwMTAwMDEnCi1QQVNTIHB1YmxpY0tleS5hbGdvcml0aG0uaGFzaCBp
cyB1bmRlZmluZWQuCi1QQVNTIHB1YmxpY0tleS51c2FnZXMgaXMgWydlbmNyeXB0J10KLVBBU1Mg
ZXhwb3J0ZWRLZXkubiBpcyBwdWJsaWNLZXlKU09OLm4KLVBBU1MgZXhwb3J0ZWRLZXkuZSBpcyBw
dWJsaWNLZXlKU09OLmUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBD
T01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL3Jz
YS1wb3N0TWVzc2FnZS13b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1
YnRsZS9yc2EtcG9zdE1lc3NhZ2Utd29ya2VyLmh0bWwKaW5kZXggNGY1NTFlYTNhMWNhYjhkZTMz
ODk0YTFjYTgwZDdhZTEwNDZlZjI4Yy4uMjJiOWFkMDdiNWQyODYxYjE1NzQ4YTBjMGFiNjk2Y2E4
ZmE2MmZiMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL3Jz
YS1wb3N0TWVzc2FnZS13b3JrZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vy
cy9zdWJ0bGUvcnNhLXBvc3RNZXNzYWdlLXdvcmtlci5odG1sCkBAIC05OCw5ICs5OCw5IEBAIHdv
cmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKIAogY3J5cHRvLnN1YnRsZS5pbXBvcnRL
ZXkoImp3ayIsIHB1YmxpY0tleUpTT04sIGFsZ29yaXRobUtleUdlbiwgdHJ1ZSwgWydlbmNyeXB0
J10pLnRoZW4oZnVuY3Rpb24obG9jYWxQdWJsaWNLZXkpIHsKICAgICB3b3JrZXIucG9zdE1lc3Nh
Z2UoeyBwdWJsaWNLZXk6IGxvY2FsUHVibGljS2V5IH0pOwotfSk7Ci1jcnlwdG8uc3VidGxlLmlt
cG9ydEtleSgiandrIiwgcHJpdmF0ZUtleUpTT04sIGFsZ29yaXRobUtleUdlbiwgdHJ1ZSwgWydk
ZWNyeXB0J10pLnRoZW4oZnVuY3Rpb24obG9jYWxQcml2YXRlS2V5KSB7Ci0gICAgd29ya2VyLnBv
c3RNZXNzYWdlKHsgcHJpdmF0ZUtleTogbG9jYWxQcml2YXRlS2V5IH0pOworICAgIGNyeXB0by5z
dWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBwcml2YXRlS2V5SlNPTiwgYWxnb3JpdGhtS2V5R2VuLCB0
cnVlLCBbJ2RlY3J5cHQnXSkudGhlbihmdW5jdGlvbihsb2NhbFByaXZhdGVLZXkpIHsKKyAgICAg
ICAgd29ya2VyLnBvc3RNZXNzYWdlKHsgcHJpdmF0ZUtleTogbG9jYWxQcml2YXRlS2V5IH0pOwor
ICAgIH0pOwogfSk7CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380091</attachid>
            <date>2019-10-03 02:01:19 -0700</date>
            <delta_ts>2019-10-06 18:13:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202500-20191003020119.patch</filename>
            <type>text/plain</type>
            <size>64080</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjhkMTk3MGJhYWI3Yzli
NjQzMTRkYTMzYWYxZGMzYjA4YmQ4MjQ3Ni4uNTg1Yjc5ZDQ1NWFjMDEyMDJmMGJkZTMxMDI0YzQw
N2U3ZjYzYTlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE5LTEwLTAyICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgT25seSB3cmFwcGluZyBD
cnlwdG9LZXlzIGZvciBJREIgZHVyaW5nIHNlcmlhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjUwMAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTI0NDU5Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV3JhcHBpbmcgQ3J5cHRvS2V5cyBkdXJpbmcgSURCIHNlcmlhbGl6YXRpb24gaXMg
YSBsZWdhY3kgcmVxdWVzdCBmcm9tIE5ldGZsaXggd2hlbiBXZWJLaXQgd2FzIGFuCisgICAgICAg
IGVhcmx5IGFkb3B0ZXIuIEl0IGlzIG5vdCBuZWNlc3NhcnkgZm9yIG90aGVyIGtpbmRzIG9mIHNl
cmlhbGl6YXRpb24uIEhvd2V2ZXIsIGdpdmVuIGV4aXN0aW5nIGtleXMKKyAgICAgICAgc3RvcmVk
IGluIHVzZXJzJyBpZGIgYXJlIHdyYXBwZWQsIHRoZSB3cmFwcGluZy91bndyYXBwaW5nIG1lY2hh
bmlzbSBjYW5ub3QgYmUgZWFzaWx5IGRpc2NhcmRlZC4KKyAgICAgICAgVGhlcmVmb3JlLCB0aGlz
IHBhdGNoIHJlc3RyaWN0cyB0aGUgd3JhcHBpbmcvdW53cmFwcGluZyBtZWNoYW5pc20gdG8gaWRi
IG9ubHkuCisKKyAgICAgICAgVG8gZG8gc28sIGEgaXNXcmFwcGluZ1JlcXVpcmVkIGZsYWcgaXMg
YWRkZWQgdG8gQ3J5cHRvS2V5IHN1Y2ggdGhhdCB3aGVuZXZlciBpZGIgc2VlcyBhIENyeXB0b0tl
eSwKKyAgICAgICAgaXQgY2FuIHNldCBpdC4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIHdpbGwgdGhl
biBvbmx5IHdyYXAgYSBDcnlwdG9LZXkgd2hlbiB0aGlzIGZsYWcgaXMgc2V0LiBPdGhlcndpc2Us
CisgICAgICAgIGEgbmV3IHRhZyBVbndyYXBwZWRDcnlwdG9LZXlUYWcgaXMgdXNlZCB0byBzdG9y
ZSB1bndyYXBwZWQgQ3J5cHRvS2V5cyBpbiBvcmRlciB0byBrZWVwIHRoZSBvbGQgQ3J5cHRvS2V5
VGFnCisgICAgICAgIGJpbmFyaWVzIGludGFjdC4gRm9yIGRlc2VyaWFsaXphdGlvbiwgZWFjaCB0
eXBlIHdpbGwgYmUgZGVzZXJpYWxpemVkIGRpZmZlcmVudGx5LgorCisgICAgICAgIEJlc2lkZXMg
dGhlIGFib3ZlLCB0aGlzIHBhdGNoIGFsc28gaGFyZGVucyBXb3JrZXJHbG9iYWxTY29wZTo6d3Jh
cENyeXB0b0tleS91bndyYXBDcnlwdG9LZXkgZm9yCisgICAgICAgIGFueSBwb3RlbnRpYWwgcmFj
eSBpc3N1ZXMuIENyeXB0b0Jvb2xlYW5Db250YWluZXIgaXMgaW50cm9kdWNlZCB0byBjYXB0dXJl
IGJvb2xlYW4gaW4gdGhlIGxhbWJkYS4KKyAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUgaXMgcmVw
bGFjZWQgd2l0aCB3b3JrZXJNZXNzYWdpbmdQcm94eS4gTm93LCBldmVyeSB2YXJpYWJsZXMgY2Fw
dHVyZWQgaW4gdGhlIGxhbWJkYXMKKyAgICAgICAgc2hvdWxkIGJlIGVpdGhlciBhIGNvcHkgb3Ig
YSB0aHJlYWQgc2FmZSByZWYgb2YgdGhlIG9yaWdpbmFsIG9iamVjdC4KKworICAgICAgICBUZXN0
OiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvYWVzLWluZGV4ZWRkYi5odG1sCisKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0M6OnNldElzV3JhcHBpbmdSZXF1aXJlZEZvckNyeXB0b0tleSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZTo6cHV0T3JBZGQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6
OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpy
ZWFkVGVybWluYWwpOgorICAgICAgICAqIGNyeXB0by9DcnlwdG9LZXkuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0tleTo6aXNXcmFwcGluZ1JlcXVpcmVkIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0tleTo6c2V0SXNXcmFwcGluZ1JlcXVpcmVkKToKKyAgICAgICAgKiBkb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQm9vbGVhbkNvbnRhaW5lcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Jvb2xlYW5Db250YWluZXI6OmJvb2xlYW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQm9vbGVhbkNvbnRhaW5lcjo6c2V0Qm9v
bGVhbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6d3JhcENyeXB0b0tl
eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6dW53cmFwQ3J5cHRvS2V5
KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTG9hZGVy
UHJveHk6OmlzV29ya2VyTWVzc2FnaW5nUHJveHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyTWVzc2FnaW5nUHJveHkuaDoKKyAgICAgICAgKGlzVHlwZSk6CisKIDIwMTktMTAtMDIg
IEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtDU1MgU2hhZG93
IFBhcnRzXSBTdXBwb3J0IG11bHRpcGxlIGFyZ3VtZW50cyBmb3IgOjpwYXJ0KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRl
eCBhNTk3YWMxOWI2M2I4ODhjMTIyZjkyODNhN2RjYTJlZjk3NGZlZTIwLi4yODc4Nzc3OTJkNjA2
ZjEzNjY2ZmJkMzhmYWIwN2U5ZWVlMWMxOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAj
aW5jbHVkZSAiSURCUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5j
bHVkZSAiSW5kZXhlZERCLmgiCisjaW5jbHVkZSAiSlNDcnlwdG9LZXkuaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKQEAgLTU0LDYgKzU1LDE3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCituYW1lc3BhY2Ugeworc3RhdGljIGlubGluZSB2b2lkIHNldElzV3Jh
cHBpbmdSZXF1aXJlZEZvckNyeXB0b0tleShWTSYgdm0sIGNvbnN0IEpTVmFsdWUmIHZhbHVlKQor
eworICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8q
IG9iaiA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICBpZiAoYXV0byoga2V5ID0gSlNDcnlwdG9LZXk6
OnRvV3JhcHBlZCh2bSwgb2JqKSkKKyAgICAgICAga2V5LT5zZXRJc1dyYXBwaW5nUmVxdWlyZWQo
KTsKK30KK30KKwogSURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgSURCVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQog
ICAgICwgbV9pbmZvKGluZm8pCkBAIC0zMzksNiArMzUxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6cHV0T3JBZGQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNW
YWx1ZQogICAgIGlmIChtX3RyYW5zYWN0aW9uLmlzUmVhZE9ubHkoKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFJlYWRvbmx5RXJyb3IsICJGYWlsZWQgdG8gc3RvcmUgcmVjb3JkIGluIGFu
IElEQk9iamVjdFN0b3JlOiBUaGUgdHJhbnNhY3Rpb24gaXMgcmVhZC1vbmx5LiJfcyB9OwogCisg
ICAgc2V0SXNXcmFwcGluZ1JlcXVpcmVkRm9yQ3J5cHRvS2V5KHZtLCB2YWx1ZSk7CiAgICAgYXV0
byBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwg
dmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBEYXRhQ2xvbmVFcnJvciwgIkZhaWxlZCB0byBzdG9yZSByZWNvcmQg
aW4gYW4gSURCT2JqZWN0U3RvcmU6IEFuIG9iamVjdCBjb3VsZCBub3QgYmUgY2xvbmVkLiJfcyB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKaW5kZXggNzhlZjFmZWNiYTE0M2EwYWYyZjc1YmVmYjM4Yjk2NDQ5ZjBkNDUzYS4u
MWM5YTE5ZWU0NjUwZDA5NmZkYTIwMTljYmIwY2ZiMTU0MjZjZDk3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0x
NjUsNiArMTY1LDkgQEAgZW51bSBTZXJpYWxpemF0aW9uVGFnIHsKICAgICBJbWFnZUJpdG1hcFRy
YW5zZmVyVGFnID0gNDMsCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgUlRDQ2VydGlmaWNhdGVU
YWcgPSA0NCwKKyNlbmRpZgorI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQorICAgIFVud3JhcHBlZENy
eXB0b0tleVRhZyA9IDQ1LAogI2VuZGlmCiAgICAgRXJyb3JUYWcgPSAyNTUKIH07CkBAIC0zNDgs
NiArMzUxLDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmluZ0RhdGFJczhCaXRGbGFnID0g
MHg4MDAwMDAwMDsKICAqICAgIHwgRE9NUXVhZAogICogICAgfCBJbWFnZUJpdG1hcFRyYW5zZmVy
VGFnIDx2YWx1ZTp1aW50MzJfdD4KICAqICAgIHwgUlRDQ2VydGlmaWNhdGVUYWcKKyAqICAgIHwg
VW53cmFwcGVkQ3J5cHRvS2V5VGFnIDx1bndyYXBwZWRLZXlMZW5ndGg6dWludDMyX3Q+IDxmYWN0
b3I6Ynl0ZXt1bndyYXBwZWRLZXlMZW5ndGh9PgogICoKICAqIEluc2lkZSBjZXJ0aWZpY2F0ZSwg
ZGF0YSBpcyBzZXJpYWxpemVkIGluIHRoaXMgZm9ybWF0IGFzIHBlciBzcGVjOgogICoKQEAgLTEw
NTQsNyArMTA1OCwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogI2lmIEVOQUJMRShXRUJf
Q1JZUFRPKQogICAgICAgICAgICAgaWYgKGF1dG8qIGtleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBw
ZWQodm0sIG9iaikpIHsKLSAgICAgICAgICAgICAgICB3cml0ZShDcnlwdG9LZXlUYWcpOworICAg
ICAgICAgICAgICAgIGlmIChrZXktPmlzV3JhcHBpbmdSZXF1aXJlZCgpKQorICAgICAgICAgICAg
ICAgICAgICB3cml0ZShDcnlwdG9LZXlUYWcpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgd3JpdGUoVW53cmFwcGVkQ3J5cHRvS2V5VGFnKTsKICAgICAgICAgICAg
ICAgICBWZWN0b3I8dWludDhfdD4gc2VyaWFsaXplZEtleTsKICAgICAgICAgICAgICAgICBWZWN0
b3I8U3RyaW5nPiBkdW1teUJsb2JVUkxzOwogICAgICAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8
TWVzc2FnZVBvcnQ+PiBkdW1teU1lc3NhZ2VQb3J0czsKQEAgLTEwNjksMTAgKzEwNzYsMTQgQEAg
cHJpdmF0ZToKICNlbmRpZgogICAgICAgICAgICAgICAgICAgICBkdW1teUJsb2JVUkxzLCBzZXJp
YWxpemVkS2V5LCBTZXJpYWxpemF0aW9uQ29udGV4dDo6RGVmYXVsdCwgZHVtbXlTaGFyZWRCdWZm
ZXJzKTsKICAgICAgICAgICAgICAgICByYXdLZXlTZXJpYWxpemVyLndyaXRlKGtleSk7Ci0gICAg
ICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHdyYXBwZWRLZXk7Ci0gICAgICAgICAgICAgICAg
aWYgKCF3cmFwQ3J5cHRvS2V5KG1fZXhlYywgc2VyaWFsaXplZEtleSwgd3JhcHBlZEtleSkpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB3cml0ZSh3
cmFwcGVkS2V5KTsKKyAgICAgICAgICAgICAgICBpZiAoa2V5LT5pc1dyYXBwaW5nUmVxdWlyZWQo
KSkgeworICAgICAgICAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gd3JhcHBlZEtleTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCF3cmFwQ3J5cHRvS2V5KG1fZXhlYywgc2VyaWFsaXplZEtl
eSwgd3JhcHBlZEtleSkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgIHdyaXRlKHdyYXBwZWRLZXkpOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgd3JpdGUo
c2VyaWFsaXplZEtleSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAg
ICB9CiAjZW5kaWYKQEAgLTMwMjksNiArMzA0MCwyOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IFJUQ0NlcnRpZmljYXRlVGFnOgogICAgICAgICAgICAgcmV0dXJuIHJlYWRSVENDZXJ0aWZpY2F0
ZSgpOwogCisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykKKyAgICAgICAgY2FzZSBVbndy
YXBwZWRDcnlwdG9LZXlUYWc6IHsKKyAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBzZXJpYWxp
emVkS2V5OworICAgICAgICAgICAgaWYgKCFyZWFkKHNlcmlhbGl6ZWRLZXkpKSB7CisgICAgICAg
ICAgICAgICAgZmFpbCgpOworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBKU1ZhbHVlIGNyeXB0b0tleTsKKyAgICAgICAgICAgIFZl
Y3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBkdW1teU1lc3NhZ2VQb3J0czsKKyAgICAgICAgICAg
IENsb25lRGVzZXJpYWxpemVyIHJhd0tleURlc2VyaWFsaXplcihtX2V4ZWMsIG1fZ2xvYmFsT2Jq
ZWN0LCBkdW1teU1lc3NhZ2VQb3J0cywgbnVsbHB0ciwgeyB9LAorI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKKyAgICAgICAgICAgICAgICBudWxscHRyLAorI2VuZGlmCisgICAgICAgICAgICAgICAg
c2VyaWFsaXplZEtleSk7CisgICAgICAgICAgICBpZiAoIXJhd0tleURlc2VyaWFsaXplci5yZWFk
Q3J5cHRvS2V5KGNyeXB0b0tleSkpIHsKKyAgICAgICAgICAgICAgICBmYWlsKCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1f
Z2NCdWZmZXIuYXBwZW5kV2l0aENyYXNoT25PdmVyZmxvdyhjcnlwdG9LZXkpOworICAgICAgICAg
ICAgcmV0dXJuIGNyeXB0b0tleTsKKyAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBtX3B0ci0tOyAvLyBQdXNoIHRoZSB0YWcgYmFjawpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L0NyeXB0b0tleS5oCmluZGV4IDBlYmM1NzIwNDRmOTJmMDk5YmEwNWMzNDJlOWRlNzExNjI4MTEx
MDYuLjM4NjVkMjkwZTM1Mjk3Yzc3NzhlYThmYzE5NTE3MDU2YjVlYmQwMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vQ3J5cHRvS2V5LmgKQEAgLTcyLDYgKzcyLDggQEAgcHVibGljOgogICAgIENyeXB0b0tl
eVVzYWdlQml0bWFwIHVzYWdlc0JpdG1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2VzOyB9CiAg
ICAgdm9pZCBzZXRVc2FnZXNCaXRtYXAoQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2UpIHsgbV91
c2FnZXMgPSB1c2FnZTsgfTsKICAgICBib29sIGFsbG93cyhDcnlwdG9LZXlVc2FnZUJpdG1hcCB1
c2FnZSkgY29uc3QgeyByZXR1cm4gdXNhZ2UgPT0gKG1fdXNhZ2VzICYgdXNhZ2UpOyB9CisgICAg
Ym9vbCBpc1dyYXBwaW5nUmVxdWlyZWQoKSBjb25zdCB7IHJldHVybiBtX2lzV3JhcHBpbmdSZXF1
aXJlZDsgfQorICAgIHZvaWQgc2V0SXNXcmFwcGluZ1JlcXVpcmVkKCkgeyBtX2lzV3JhcHBpbmdS
ZXF1aXJlZCA9IHRydWU7IH0KIAogICAgIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gcmFuZG9tRGF0
YShzaXplX3QpOwogCkBAIC04MCw2ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgVHlwZSBtX3R5cGU7
CiAgICAgYm9vbCBtX2V4dHJhY3RhYmxlOwogICAgIENyeXB0b0tleVVzYWdlQml0bWFwIG1fdXNh
Z2VzOworICAgIGJvb2wgbV9pc1dyYXBwaW5nUmVxdWlyZWQgeyBmYWxzZSB9OwogfTsKIAogaW5s
aW5lIGF1dG8gQ3J5cHRvS2V5Ojp0eXBlKCkgY29uc3QgLT4gVHlwZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggZjBlNjU0YjczMGI5ZGUyYTY1MGNj
ZTUyNDI4NDI2ZTA2YzljMTIyZS4uMTI3ZTBhNDQwOTZmMDYyYTMzYWE2NWRmMDVmNGY5MmIzZjNi
ZTcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBA
IC0yMjAsNiArMjIwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RGF0YWJhc2VDb250ZXh0KERh
dGFiYXNlQ29udGV4dCopOwogCiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCisgICAgLy8gVGhlc2Ug
dHdvIG1ldGhvZHMgYXJlIHVzZWQgd2hlbiBDcnlwdG9LZXlzIGFyZSBzZXJpYWxpemVkIGludG8g
SW5kZXhlZERCLgogICAgIHZpcnR1YWwgYm9vbCB3cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYga2V5LCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXkpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgdW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtl
eSwgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkpID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCAxZThmYzA2YmQzZTEzOTU3ZDBhYjJm
YmY2MmU2MTlmZDY0NThjMjc3Li5iNWEzYmU3MjAzNTc4NzQyMDM1MTEyMWI1NmMwOWJlZjZmZjYx
ZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApA
QCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckxvY2F0aW9u
LmgiCisjaW5jbHVkZSAiV29ya2VyTWVzc2FnaW5nUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJO
YXZpZ2F0b3IuaCIKICNpbmNsdWRlICJXb3JrZXJSZXBvcnRpbmdQcm94eS5oIgogI2luY2x1ZGUg
IldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5oIgpAQCAtMzk4LDQ4ICszOTksNTggQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8dWludDhfdD4gbV9idWZmZXI7CiB9OwogCitjbGFzcyBDcnlwdG9Cb29s
ZWFuQ29udGFpbmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENyeXB0b0Jvb2xlYW5D
b250YWluZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPENyeXB0b0Jvb2xlYW5Db250YWlu
ZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3J5cHRvQm9vbGVhbkNvbnRhaW5l
cik7IH0KKyAgICBib29sIGJvb2xlYW4oKSBjb25zdCB7IHJldHVybiBtX2Jvb2xlYW47IH0KKyAg
ICB2b2lkIHNldEJvb2xlYW4oYm9vbCBib29sZWFuKSB7IG1fYm9vbGVhbiA9IGJvb2xlYW47IH0K
KworcHJpdmF0ZToKKyAgICBzdGQ6OmF0b21pYzxib29sPiBtX2Jvb2xlYW4geyBmYWxzZSB9Owor
fTsKKwogYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8
dWludDhfdD4mIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5KQogewotICAgIGJvb2wg
cmVzdWx0ID0gZmFsc2U7Ci0gICAgc3RkOjphdG9taWM8Ym9vbD4gZG9uZSA9IGZhbHNlOwotICAg
IGF1dG8gY29udGFpbmVyID0gQ3J5cHRvQnVmZmVyQ29udGFpbmVyOjpjcmVhdGUoKTsKLSAgICBt
X3RocmVhZC53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2FkZXIoWyZyZXN1bHQsIGtl
eSwgY29udGFpbmVyUmVmID0gY29udGFpbmVyLmNvcHlSZWYoKSwgJmRvbmUsIHdvcmtlckdsb2Jh
bFNjb3BlID0gdGhpc10oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAg
ICByZXN1bHQgPSBjb250ZXh0LndyYXBDcnlwdG9LZXkoa2V5LCBjb250YWluZXJSZWYtPmJ1ZmZl
cigpKTsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5w
b3N0VGFzayhbXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgYXV0byBy
ZXN1bHRDb250YWluZXIgPSBDcnlwdG9Cb29sZWFuQ29udGFpbmVyOjpjcmVhdGUoKTsKKyAgICBh
dXRvIGRvbmVDb250YWluZXIgPSBDcnlwdG9Cb29sZWFuQ29udGFpbmVyOjpjcmVhdGUoKTsKKyAg
ICBhdXRvIHdyYXBwZWRLZXlDb250YWluZXIgPSBDcnlwdG9CdWZmZXJDb250YWluZXI6OmNyZWF0
ZSgpOworICAgIG1fdGhyZWFkLndvcmtlckxvYWRlclByb3h5KCkucG9zdFRhc2tUb0xvYWRlcihb
cmVzdWx0Q29udGFpbmVyID0gcmVzdWx0Q29udGFpbmVyLmNvcHlSZWYoKSwga2V5LCB3cmFwcGVk
S2V5Q29udGFpbmVyID0gd3JhcHBlZEtleUNvbnRhaW5lci5jb3B5UmVmKCksIGRvbmVDb250YWlu
ZXIgPSBkb25lQ29udGFpbmVyLmNvcHlSZWYoKSwgd29ya2VyTWVzc2FnaW5nUHJveHkgPSBSZWY8
V29ya2VyTWVzc2FnaW5nUHJveHk+KGRvd25jYXN0PFdvcmtlck1lc3NhZ2luZ1Byb3h5PihtX3Ro
cmVhZC53b3JrZXJMb2FkZXJQcm94eSgpKSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIHsKKyAgICAgICAgcmVzdWx0Q29udGFpbmVyLT5zZXRCb29sZWFuKGNvbnRleHQud3JhcENy
eXB0b0tleShrZXksIHdyYXBwZWRLZXlDb250YWluZXItPmJ1ZmZlcigpKSk7CisgICAgICAgIGRv
bmVDb250YWluZXItPnNldEJvb2xlYW4odHJ1ZSk7CisgICAgICAgICgoV29ya2VyTG9hZGVyUHJv
eHkmKXdvcmtlck1lc3NhZ2luZ1Byb3h5LmdldCgpKS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckds
b2JhbFNjb3BlKFtdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAg
ICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkp
OwotICAgICAgICB9KTsKKyAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7
CiAgICAgfSk7CiAKICAgICBhdXRvIHdhaXRSZXN1bHQgPSBNZXNzYWdlUXVldWVNZXNzYWdlUmVj
ZWl2ZWQ7Ci0gICAgd2hpbGUgKCFkb25lICYmIHdhaXRSZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVy
bWluYXRlZCkKKyAgICB3aGlsZSAoIWRvbmVDb250YWluZXItPmJvb2xlYW4oKSAmJiB3YWl0UmVz
dWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpCiAgICAgICAgIHdhaXRSZXN1bHQgPSBtX3Ro
cmVhZC5ydW5Mb29wKCkucnVuSW5Nb2RlKHRoaXMsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2Rl
KCkpOwogCi0gICAgaWYgKGRvbmUpCi0gICAgICAgIHdyYXBwZWRLZXkuc3dhcChjb250YWluZXIt
PmJ1ZmZlcigpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIGlmIChkb25lQ29udGFpbmVyLT5i
b29sZWFuKCkpCisgICAgICAgIHdyYXBwZWRLZXkuc3dhcCh3cmFwcGVkS2V5Q29udGFpbmVyLT5i
dWZmZXIoKSk7CisgICAgcmV0dXJuIHJlc3VsdENvbnRhaW5lci0+Ym9vbGVhbigpOwogfQogCiBi
b29sIFdvcmtlckdsb2JhbFNjb3BlOjp1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiB3cmFwcGVkS2V5LCBWZWN0b3I8dWludDhfdD4mIGtleSkKIHsKLSAgICBib29sIHJlc3Vs
dCA9IGZhbHNlOwotICAgIHN0ZDo6YXRvbWljPGJvb2w+IGRvbmUgPSBmYWxzZTsKLSAgICBhdXRv
IGNvbnRhaW5lciA9IENyeXB0b0J1ZmZlckNvbnRhaW5lcjo6Y3JlYXRlKCk7Ci0gICAgbV90aHJl
YWQud29ya2VyTG9hZGVyUHJveHkoKS5wb3N0VGFza1RvTG9hZGVyKFsmcmVzdWx0LCB3cmFwcGVk
S2V5LCBjb250YWluZXJSZWYgPSBjb250YWluZXIuY29weVJlZigpLCAmZG9uZSwgd29ya2VyR2xv
YmFsU2NvcGUgPSB0aGlzXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAg
ICAgIHJlc3VsdCA9IGNvbnRleHQudW53cmFwQ3J5cHRvS2V5KHdyYXBwZWRLZXksIGNvbnRhaW5l
clJlZi0+YnVmZmVyKCkpOwotICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICAgICAgd29ya2VyR2xv
YmFsU2NvcGUtPnBvc3RUYXNrKFtdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICBhdXRvIHJlc3VsdENvbnRhaW5lciA9IENyeXB0b0Jvb2xlYW5Db250YWluZXI6OmNyZWF0
ZSgpOworICAgIGF1dG8gZG9uZUNvbnRhaW5lciA9IENyeXB0b0Jvb2xlYW5Db250YWluZXI6OmNy
ZWF0ZSgpOworICAgIGF1dG8ga2V5Q29udGFpbmVyID0gQ3J5cHRvQnVmZmVyQ29udGFpbmVyOjpj
cmVhdGUoKTsKKyAgICBtX3RocmVhZC53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2Fk
ZXIoW3Jlc3VsdENvbnRhaW5lciA9IHJlc3VsdENvbnRhaW5lci5jb3B5UmVmKCksIHdyYXBwZWRL
ZXksIGtleUNvbnRhaW5lciA9IGtleUNvbnRhaW5lci5jb3B5UmVmKCksIGRvbmVDb250YWluZXIg
PSBkb25lQ29udGFpbmVyLmNvcHlSZWYoKSwgd29ya2VyTWVzc2FnaW5nUHJveHkgPSBSZWY8V29y
a2VyTWVzc2FnaW5nUHJveHk+KGRvd25jYXN0PFdvcmtlck1lc3NhZ2luZ1Byb3h5PihtX3RocmVh
ZC53b3JrZXJMb2FkZXJQcm94eSgpKSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IHsKKyAgICAgICAgcmVzdWx0Q29udGFpbmVyLT5zZXRCb29sZWFuKGNvbnRleHQudW53cmFwQ3J5
cHRvS2V5KHdyYXBwZWRLZXksIGtleUNvbnRhaW5lci0+YnVmZmVyKCkpKTsKKyAgICAgICAgZG9u
ZUNvbnRhaW5lci0+c2V0Qm9vbGVhbih0cnVlKTsKKyAgICAgICAgKChXb3JrZXJMb2FkZXJQcm94
eSYpd29ya2VyTWVzc2FnaW5nUHJveHkuZ2V0KCkpLnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xv
YmFsU2NvcGUoW10oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICAg
ICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7
Ci0gICAgICAgIH0pOworICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsK
ICAgICB9KTsKIAogICAgIGF1dG8gd2FpdFJlc3VsdCA9IE1lc3NhZ2VRdWV1ZU1lc3NhZ2VSZWNl
aXZlZDsKLSAgICB3aGlsZSAoIWRvbmUgJiYgd2FpdFJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJt
aW5hdGVkKQorICAgIHdoaWxlICghZG9uZUNvbnRhaW5lci0+Ym9vbGVhbigpICYmIHdhaXRSZXN1
bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCkKICAgICAgICAgd2FpdFJlc3VsdCA9IG1fdGhy
ZWFkLnJ1bkxvb3AoKS5ydW5Jbk1vZGUodGhpcywgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUo
KSk7CiAKLSAgICBpZiAoZG9uZSkKLSAgICAgICAga2V5LnN3YXAoY29udGFpbmVyLT5idWZmZXIo
KSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAoZG9uZUNvbnRhaW5lci0+Ym9vbGVhbigp
KQorICAgICAgICBrZXkuc3dhcChrZXlDb250YWluZXItPmJ1ZmZlcigpKTsKKyAgICByZXR1cm4g
cmVzdWx0Q29udGFpbmVyLT5ib29sZWFuKCk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0NS
WVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCBi
YzcxYjU2NjZjMWMyZWM0ZTZlZDc3OTI0ZGRhYWNkMzI5MWU3OTg3Li4zOWI4ZmM1MWIwN2ZkYTg1
NjQ0NWY2ODE4ODNkMGNiNzBhMjU5MTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5oCkBAIC0xNjcsMTMgKzE2Nyw2IEBAIHByaXZhdGU6CiAgICAgU2VjdXJp
dHlPcmlnaW4mIHRvcE9yaWdpbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdG9wT3JpZ2luLmdl
dCgpOyB9CiAKICNpZiBFTkFCTEUoV0VCX0NSWVBUTykKLSAgICAvLyBUaGUgZm9sbG93aW5nIHR3
byBmdW5jdGlvbnMgYXJlIHNpZGUgZWZmZWN0cyBvZiBwcm92aWRpbmcgZXh0cmEgcHJvdGVjdGlv
biB0byBzZXJpYWxpemVkCi0gICAgLy8gQ3J5cHRvS2V5IGRhdGEgdGhhdCB3ZW50IHRocm91Z2gg
dGhlIHN0cnVjdHVyZWQgY2xvbmUgYWxnb3JpdGhtIHRvIGxvY2FsIHN0b3JhZ2Ugc3VjaCBhcwot
ICAgIC8vIEluZGV4ZWREQi4gVGhleSBkb24ndCBwcm92aWRlIGFueSBwcm9jdGVjdGlvbiBhZ2Fp
bnN0IGNvbW11bmljYXRpb25zIGJldHdlZW4gbWFpblRocmVhZAotICAgIC8vIGFuZCB3b3JrZXJU
aHJlYWRzLiBJbiBmYWN0LCB0aGV5IGNhdXNlIGV4dHJhIGV4cGVuc2UgYXMgd29ya2VyVGhyZWFk
cyBjYW5ub3QgdGFsayB0byBjbGllbnRzCi0gICAgLy8gdG8gdW53cmFwL3dyYXAgY3J5cHRvIGtl
eXMuIEhlbmNlLCB3b3JrZXJUaHJlYWRzIG11c3QgYWx3YXlzIGFzayBtYWluVGhyZWFkIHRvIHVu
d3JhcC93cmFwCi0gICAgLy8ga2V5cywgd2hpY2ggcmVzdWx0cyBpbiBhIHNlY29uZCBjb21tdW5p
Y2F0aW9uIGFuZCBwbGFpbiBrZXlzIGJlaW5nIHRyYW5zZmVycmVkIGJldHdlZW4KLSAgICAvLyB3
b3JrZXJUaHJlYWRzIGFuZCB0aGUgbWFpblRocmVhZC4KICAgICBib29sIHdyYXBDcnlwdG9LZXko
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSkg
ZmluYWw7CiAgICAgYm9vbCB1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3
cmFwcGVkS2V5LCBWZWN0b3I8dWludDhfdD4mIGtleSkgZmluYWw7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaAppbmRleCA0YTYzMzc5MmMyMjlhYmFj
ZDM3YjU2YWIxZWI4MzFjYzk4NjIwMTIzLi42MTUzMWVkNDA4NjRiMzhhY2I5OWNjMDY3NTdiZmMx
MTEyM2Q4ZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvYWRl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5o
CkBAIC00NSw2ICs0NSw4IEBAIGNsYXNzIFdvcmtlckxvYWRlclByb3h5IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5Xb3JrZXJMb2FkZXJQcm94eSgpID0gZGVmYXVsdDsKIAorICAgIHZpcnR1YWwg
Ym9vbCBpc1dvcmtlck1lc3NhZ2luZ1Byb3h5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwog
ICAgIC8vIENyZWF0ZXMgYSBjYWNoZSBzdG9yYWdlIGNvbm5lY3Rpb24gdG8gYmUgdXNlZCBvbiB0
aGUgbWFpbiB0aHJlYWQuIE1ldGhvZCBtdXN0IGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQu
CiAgICAgdmlydHVhbCBSZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbigpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJN
ZXNzYWdpbmdQcm94eS5oCmluZGV4IDVjNzgzMzJlY2EyOTNlZDM0NmY0MjJjMTA1ODRhODNlOTc0
NThjMWMuLjA4MGNjMDFlMGFjZTEzYjkyYzk3ZDViMjEyYWY0NTA1YTJkN2QwNjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKQEAgLTcwLDYgKzcw
LDcgQEAgcHJpdmF0ZToKICAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBXb3JrZXJMb2FkZXJQcm94
eS4KICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBvbiBkaWZmZXJlbnQgdGhyZWFk
cyB0byBzY2hlZHVsZSBsb2FkaW5nCiAgICAgLy8gcmVxdWVzdHMgYW5kIHRvIHNlbmQgY2FsbGJh
Y2tzIGJhY2sgdG8gV29ya2VyR2xvYmFsU2NvcGUuCisgICAgYm9vbCBpc1dvcmtlck1lc3NhZ2lu
Z1Byb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgcG9zdFRhc2tU
b0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYpIGZpbmFsOwogICAgIGJvb2wg
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CiAgICAgUmVmPENhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24+IGNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSBmaW5hbDsKQEAgLTk4
LDMgKzk5LDcgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eSkK
KyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V29ya2VyTG9hZGVyUHJveHkm
IHByb3h5KSB7IHJldHVybiBwcm94eS5pc1dvcmtlck1lc3NhZ2luZ1Byb3h5KCk7IH0KK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBjN2ExMzViODU5NzQwYTFlZGU1NTE4ZWUxYzQ1ZDRhNDZmNjdk
ZDMxLi45M2UxOWYzNWE3Nzg4NzAzZWJkZWY4ZTEwMTQzMDllMzA3YWU4ZDVjIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTktMTAtMDIgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAg
ICBPbmx5IHdyYXBwaW5nIENyeXB0b0tleXMgZm9yIElEQiBkdXJpbmcgc2VyaWFsaXphdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTAwCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MjQ0NTkyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb2RpZmllcyBJbmRleGVkREIuU3RydWN0dXJlZENs
b25lQmFja3dhcmRDb21wYXRpYmlsaXR5IHRlc3QgdG8gaW5jbHVkZSBDcnlwdG9LZXlzLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1
cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkubW06CisgICAgICAgICgtW1N0cnVjdHVyZWRD
bG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eU5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViQ3J5cHRvTWFz
dGVyS2V5Rm9yV2ViVmlldzpdKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRD
b21wYXRpYmlsaXR5LnNxbGl0ZTM6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3Fs
aXRlMy1zaG06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRl
eGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3FsaXRlMy13YWw6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1
cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHlSZWFkLmh0bWw6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2Fy
ZENvbXBhdGliaWxpdHlXcml0ZS5odG1sOgorCiAyMDE5LTEwLTAzICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBNYWtlIFBTT04gb3B0
aW9uYWwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVC
YWNrd2FyZENvbXBhdGliaWxpdHkubW0KaW5kZXggZjFlNDIxNmFhMmY2YTlhNjUxMTRkZDA5ZmMw
YTQ4MTQxNGQ1OGJmZS4uYWY4MWFhM2I4MDUxMzA0YjM4YWU1YTcxN2IzNWY5MTA0N2M1YzcyMSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVk
REJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNr
d2FyZENvbXBhdGliaWxpdHkubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNTMsNiArNTMsMTggQEAgLSAodm9pZCl1c2VyQ29udGVudENv
bnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250cm9sbGVy
IGQKIAogQGVuZAogCitAaW50ZXJmYWNlIFN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJp
bGl0eU5hdmlnYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4K
K0BlbmQKKworQGltcGxlbWVudGF0aW9uIFN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJp
bGl0eU5hdmlnYXRpb25EZWxlZ2F0ZQorCistIChOU0RhdGEgKilfd2ViQ3J5cHRvTWFzdGVyS2V5
Rm9yV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldworeworICAgIHJldHVybiBbTlNEYXRhIGRh
dGFXaXRoQnl0ZXM6KGNvbnN0IHVpbnQ4X3QqKSJceDAwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2
XHgwN1x4MDhceDA5XHgwYVx4MGJceDBjXHgwZFx4MGVceDBmIiBsZW5ndGg6MTZdOworfQorCitA
ZW5kCisKIHN0YXRpYyBXS1NjcmlwdE1lc3NhZ2UgKmdldE5leHRNZXNzYWdlKCkKIHsKICAgICBp
ZiAoc2NyaXB0TWVzc2FnZXMuaXNFbXB0eSgpKSB7CkBAIC05Miw2ICsxMDQsOCBAQCBURVNUKElu
ZGV4ZWREQiwgU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5KQogCiAgICAgLy8g
UnVuIHRoZSB0ZXN0CiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHlOYXZpZ2F0
aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVs
ZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAIkluZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVJlYWQi
IHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291
cmNlcyJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1
cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3FsaXRlMyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21w
YXRpYmlsaXR5LnNxbGl0ZTMKaW5kZXggMzQyMGNkODA4Zjg5NmRiZTU4ZDZhMzdhZjk2MjU1M2Q4
MjUxNGZhOC4uODZiYmVhN2U4NDI5MzBiMDQ0YmRmNzI3YWUwZWRlMGYwODI1ODM0ZCAxMDA2NDQK
R0lUIGJpbmFyeSBwYXRjaApkZWx0YSAyMgpjY21ab3JYaSU3dCM5XllxJUshdWQ4dz5tU0NtT0g9
MDZvaEVHeW5ocQoKZGVsdGEgMjIKY2NtWm9yWGklN3QjM0FzVG1qTVVfSFd2MnRQYyZjJDA3dDA+
PmlfQCUKCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzLXNo
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3RydWN0
dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5LnNxbGl0ZTMtc2htCmluZGV4IGU3ODE1OGQz
M2U1Njk3ZDI2YmIyOWIyNGE4N2IzNTFhYjFmYzRlNjkuLmI0ZWM3MzQwZTFjYTMzMDc0Y2M4YTNh
NTdhZmU1NzhlMzdhM2Q0YmEgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMTk3CnpjbVpv
QFV9fFYhcytWfUElSyFxeEsrTVIlQW05ZTFXcV4zd3RBTGp9eWxTUmY3XyUhYmhENz00elZsK01L
WEx5VQp6c3BeNDdmZFI8ZXw0MEJUJSo1Y2Z2NX11fmF8NUdgIXsjZkZkaENxT248cH0hVz9YI0Vp
PDhqfSRXJihCezMreXsKWTZyJjR9e2dyOSp5Jj9gcVMxQHopb2wrR3AwSzQhJW4qYWErCgpkZWx0
YSAxOTMKemNtWm9AVX18ViFzK1Z9QSVLIXBHSytNUiVBbTlYfldxX0QoeUYlUGo/aXI3RzUmfTFG
O1FYPylfcCNIcFlUTH4hCnpxXmJ1UjFxTjA/QDs/JVEzTnRZPFk7NUZiK2BORiUjOXtJVk11RSom
OVFEe1lGSmU1eXhjSG5HQ3k9NFN4Y083YQpWSHpeP044YEk9X01JMnpwPH55WS1UbVM7RktyO1hV
CgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRl
eGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3FsaXRlMy13YWwgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRD
bG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzLXdhbAppbmRleCBjNzVhZjU3ZWViOWNl
NmEyY2ZhOWRjM2IwZjYzMDlkZjQwYmNjZWZkLi5mM2Q1ZWQ0NDZiMDVmNTkyY2UyNDQ3NTE2NTQx
ZDZlYTIzODNlZWNiIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDY3NDAKemNtZF5EY3tv
KTQrZHAmOEYhbVlDT2sqcWk3VElQKG8yQWtzVFM3Xjh2VHFAakNRKHd6UiNRbmxMYHJyVXI3U0hm
CnokPGsmaU1XbksxaCpGQipjU2JheD4qQEZRS0w1U2ZkIy1FRko/QjI+YjEkRiF7QChMRik2JDQ1
ZSNFYj5NUFdZIwp6c2t8WFY1RHNELTx0VlN2KUA/UT4jI188JUVLPTIxMH5MeEBLWGA4PGVBQDx4
QngoeWtZRHRweVQ5X25KYV8jfmEKekg7MjJ2MX1qNzZFRitiZjtXJSpmK1FWKX57ZiRWRSRWXm05
ajA2SyMpK2xpUyVSaChuJj0kRXR2KD48R202X3UoCnp6a3M5LUEwOGFiUVI8IXIoKTVfWD98TGlf
eUVYRTRZeG5IaHlVXmpaWEdgNDFxVTcqZCsmYyMqUFQ3JmdWYlAxcAp6JXFDS3crVFI/UzRSJkFU
eTtfK3czdFNZKjFsbVRqSTg/N2sjOXQ2cnZAQ1IzPCteT2x0TkZYbEVOO1ZKT2tDVncKekVJOUpn
Tzs3dHVrREhoMm0ybHdaXlMpUEtVZmtyclJGZT9+ajNhT1l0fnV2OEBlU0YjPCFnJG9ffUBhKklB
TnxpCnpAaiNiJSo0NCF4cm1MWUk3RlRCeSFtckk3LXlkMypJbStWZCVPTipUO3BQfEJlPjBiK00l
MiEyNyFZRVphe19ndAp6a3B4Z0l3bDtgOEY3PHR6PF95d0JhQ2x6VVVSZCVLVmkhQ1hhSS09SyNw
MCZPSnYrU0dTSDAkTVp1QTZxaz44N2EKenUlb0pOb3BxRENtRFNDO0h6Ti08RChZMWh2TVRpPzVT
TWZ8O3lUcUthMjh9NjRRRjhTJXZQT2FZME9TXmcrUkdgCno8Wk9XYUFpI05ZPEohSGReSlIyM1he
RmBvIXVmN3xtNmY3dmFsJXhJbVkybjwjPDF0NFgqUzc+KFB+UnMpIytuZwp6cnQtY0RkdVoqcVNr
KWc0MVhxb3pVK1NSSUFHNH0ySih1fTVZKnZ5QDxMRzVvdWRVODY1R3llSU5SIy0pcygjfG4KejYm
a2l6S2JOTUJ6JF5oOFpucXVxezF6VFhHWlNRMEE4U2xNIShEUWpNc3RAMllLYmBsMWxhMVVrZm9m
RmpNfHwyCnpNaj5uc0hVZ2B+SChLVjE+KjM+SGhoflNDZ203ez0yWnMzdmA1QyF9UUh8RVpXR2Mt
N1prQExmUjNtX2leNHtwagp6I2p0PUtmVXdgT3BSc2k4MEk8LUJyTTUpRD1vTSUqOC1oWTEyOyZV
SDIqU3plUjZnKlRwQk5iOSYpaGJpTntYe2EKejl6KXAyKmh5P1JfOUhOSTNya0lPaFM2Tn1GYHlh
TzNpSk1scUU/MDdlV21aZiVtRGlWIWNKaSl1cGAoSDBOUjFvCnpNV1ljRTJSTU48ZmAtOHZkPU8z
ITtDZXheY0A/X0p5VFU+KnwyXyNBamI8YzZvTnQ2PE88NyNyeVBKKWVEflktJgp6OGZHamQ4dEFi
TCp1YF9+M1k5MiF3T0l6PFYqfnpCKmVPUUZWJVJBVjg2N0prJTRrR3twXytUel9fcGFiIS1MWnUK
ekc9JlNTbUQ2fEBrdktsXyhUQXAyNHlSK0tVQzZGRkUqZnErRGtMQDY8dGlqNmIhYDxWTyY0dHls
QUVAVTdIUFJBCnppQSp8bTJOcXdjdUElMHR6RmJxcU5saW1qZyt5e0RzV0ByNUlJRjFaczVfQjAk
WkE/N1hBUiZSIXh9KjQ3eUloVwp6c15lYT8/UlZoaEtrYEs3ZUZ7dEl8QTh5QFdscjlIUFFWJDFg
dVU4eyo2a2FYezJGbjk9S21Cdnw3US0+YChVdkAKeiUjRzF5XlJCcGh4MTFgbClLc00lP1BEYyhC
RUxtJGYxQHVxRXByXkdoMn1+emBJU2FeLVBFKVE3IWFhNDF8dV9BCnp5YiFDa15nTj41KUJGbFNU
OGp8RTA9djRXajxFaSVZN0thbEBEb08wZz5CcyhFcis3WnpvO095cThkOH1QTFlqbAp6PGlWNH5w
RDZIP2BZVXZjakowbWpAZGVIX0hBYDA1TS1SYk1eQEJDMDs3TzY2RmNEVW1XSiRsPTdGQ0NRI3l1
RmYKejFgPWh4M0Q8VWhTJGNrZW8zVXpla1JebXwhZSlTIyZrNmckb1R4WGJ0MCpjZTBBKyR3aGkw
SU1QJUxEYjspcWtCCnpgbFB+PUM9QiZQRHkkRGdZYnZZPmd3R0t+OWYqdTBoJTZBaFBRcWU5Z3I5
XkpmWiZje0QlRTJVZDJscyk1fCNwRAp6ZSsoaUdMfW07a3t3S3skP1QkZ3pQIzdCalE2IVhTUTZR
Un5RISNRUTFVYUJWPGM1JDM8UEV0KHoqO0lJVyV+engKekk2WDVuISlXQDBaaG41dGY8bDkhI0V0
ZCs/STh2ZDJwZ3hPKyl1T1hBVig7T1ZIVVhIaDgmbnJQeiRxUjVmSFplCnpOa2tiNHlPVzYyezN3
dD10WlpCJUxFbGVISmM7MTM7Qk17KEw8QCpsN1o1VEtMT0JTN3NFcyt5c3s9V1IkVUlXfQp6KT80
P0tPJmpjSmN7IWw4XkR+Vm5heDhYNER4OC1XSXt7fHU4XiVsbjZBaytZT3BlRGBMcERDZjlPWXNp
WjZIdX4KekZpbHVTK2tFNWE/clZzKzV6KUh4X29HY3whRj1aWElpSk9WT3xpTjQ1V0doRkB7eVAh
Xk5hTG4ycGBDMHY9PD0mCnohT0A0djBpb0s1RUMjfSk0PFEmYklPRCpKdSVSUmc1RFpDeER7dSh1
RzFNNW1ASXAwP3NiJmBAMGA9bHdQamwjRAp6c0YoVz81aXRlYGpWQ013KFJDU1dnbklBLXYkeWAz
PmIzVnIoPS18ZklBfFJHdFcqfnR7WHNLY3dQUTZlYzRVcmYKektzMHZ6QUUqWHkqJnNIND0xPHVf
UXE1TThxR19EPGRnXzBzbnhGWW9fPldYfm9rdnxCKn1QR1pXPTIzKUBpT0BvCnojWS18ZEs8NDtf
bjhYUj1CXkloQHNVaE4qRU0hYXVAY0RuSVYya0VARjE1aSNgeVBeLXoraDg+JERmTXJON25RMwp6
K35xMGYkPnZHc2lSQUdJQl9pXjs7bXt+YTZuYyZzcU1wSitnXi1eN0xJcUF3WmxRdWhQajthSyh2
dy1KcHpCSzAKelVYMzlkJG92QWBlX1RCNj07bnVxZEJLTGA9Sz0qaWdCQFBiSEhffE1UTGp0IyZI
bXJJMjh0VEwkNDM5TF9WLTwqCnpqJFh2dks+ZTRsYEN2OXNMNitsSFgzVFJVKnJIaHooNlQle3Q9
eDU3X01FWXAwKzxYVWArPWV5M3N6dTlOdUp5Vwp6dUBKXnNQTGV5cDdSQVptK2hiM1ZuJVl3b2pH
KT1yRiZ3dDh6Ulg+aHN8KG9yKzNYRTteIUVvfSpCZTtgSXF0UiYKemFTaHojO3BjMTBrRk5FeWBB
fWNSeDV5Xlp1bDRZPT1YR2ooKUNwRCtKP3MtXnkqYCo5dkt6SyppOG55VFMtakRFCnpEWCFJK3Iw
SFolallwfi1tSSlkQmE3bVl6aXx+UCNva0xOKiR7TVl5aXk8PkU+amJrMCQ/SiVHP3M1OU0hR31H
Jgp6Q2FNRz88KSpzeVkrQ1heZXBLSGVvMT9NOGN2WkJIVnF9fSF3fUdiRGR3MSYpWnR8cytDUkVs
NEhCfk1Uey1CMXwKeiQ8RjdCeTd5YElMeXZYJlFDfVBgaTRWMkVvRFFnJVRJNTNVTT05WT5gOTNy
JCgkRTtiOCE+VlM8PXxITSE+SjV6CnpOZnl7dHpXLXtUbkEhRz9kPFErTi1Gci0wWm99M29sKD14
Um9EZk8wa2R8VjwjUnBzTVNHQXBjJHFTditQeEJTbgp6Q3JPdXojdCNkP21pY3VSJDd+OFBYYkpi
NF5NJGImYzZiK3JwVFMtNEFLMTlRK2FkUmdoJGJLQndZeHZZdT1ya24Kek82QExYQGs+I2ZiVChn
a2xDKjRsbVBTRSt6UXg8PyNGJXNxQGhBbnNKbW13bXRASk1gMFY9VmI+IVh6KlBSZHpnCnpXWGtG
ZE5tMGs1dG9Ka3w9V29NWE4xYmdGXmp4XytseUA8fFZXc1VyPThXI25BK013dV92eklrIXBxaTdh
ZHtaUQp6aVJPRldsMTdUKDRDZEhsaWY8MXJOXnFhRik1QXpfYEFEJlA9dCQ+V15PfiNub2tITTVn
WSVCM0szOzFvUHY0X3cKenZSfD8oeGkyM1RDXjNBb2N3fjFjYEEpVkpANz1SbW4lfXApWHxKKnBy
IzY0PGB9RUdAaVFRWXgjYHhUJmNTfCplCnp0WmlmMGU+fSokVj5IWnViPzF0NjJ8YHVibSpPaGdh
PGBNTWwjWlN0QChGTHRLRz5vRCpQVUB5KWNmfmFITT4qLQp6S0EyTUUpUmRteSsqK0h5Q1dvIW0+
Q0JwPG1KQkAzezhfY01NI2hUZSg0PVI0ITRXUUxgMztpOClFd0BuaShmcUgKeio+fFNnVFh+TWxk
KWoraVpFVFV7JWpiKHlZfTAlakE+fnd2dC1uN05QSGZhNHpuKHQkbk8wfnApeDViVV5NVn1WCnpg
RWtQTzlrdClBQyU0NChfZ2shM2ApPXVaTUlGLTN6TmdsbWIoQXhTPz9TI19HO3xLXzZ8RUdxZG02
YVVrOGZ7Sgp6NllsZkZMeWVoVGBreGRmX1ZwO3llTXk9Rno4I0poSkdoSXstSkxSNTRtc2Z6PkZ7
ezk7Tz99I19GSXh9VDRRMlAKekcyI2hCV1Y1NHBAc3Ihci1CeHh6RElMMTxhPlQ1KkhHVTswSDV9
JmZ1Nl43eFFUfi1zdXAlVUtea3ozKmtuP1VzCnpSU0ZNZj0xdHc9dWRkU31OQjdrJWM/KkAmTmpJ
azhoLXE/VFUyTG1APylDdnVuVXtzPmBfIXRRTWB7SGhlOzJBKwp6QkdzMkB5cnB+ZDdIV0R7dmdT
WlQ9NGdxYlZFRX50anshKFEpX2RKRS0td0g/LWIraUo0fmtuRUohPER4VlUwRV4KeiZ3TnBhPm9o
Qz15cHJQbUlIS20le21VZnIrbnpKWWY4OHtRcmNrYEUoWXJmYVojWkpkOTtXMmtvMEdte3JVfDN0
CnpeJkx4c0hgZiMmekl3KjN5ey02YDtuSWZ7bVYjP1ZVdzdRUjlhRUBHcmFYVWhtYDYjeHZeKGNB
LT98RWMmeHM+RAp6VGVoaj4kTyhWYio+dGtub1h7U21gdGsmbCo9VnRSeUkhKmdtNTx1JUMka0ZP
e216a2x6dCl3VkYhN1RpdVdYamoKemszSEhkbHQ7QlEwbUdsdUBBcXUzQDt8OU9eeGFGe1dKVWp+
aGhFdmpaJDs5LXlpQkBMY0RYWGBSRk5ea3dhdVZqCnplQG96dEVPVWoyVFBAbUdORWAzVj0tbkZa
TTJIYjtKZXElSlM2LX5nU3JlPGhTRntia0omNkJRWFctSVNicytVPwp6ZzxPUDxAMyVKTCNaQS14
PWUmLW5sK3liSUdKWShSSStETENRck10eWxIeSlBWXphWDtoVT9WR1ReRF5ATXM0THUKemAwbShP
S1NYX3NeRkd3Izk4N1Y8ak1MaDdmeyhXdmEwWjFEbGBpIzA1PjsrQmFBMHt9bkJzN3VDKDJYI0k9
bG19CnpidGskU0R7QllnUH5kZmpBNmc3NExNamoke2dxOUtPJiR6V2FLT3l9eX0lZGRJfHgoN0k4
aClyI2kkK2ZVPEFqQQp6e1RqaXV5Q2NhT2ZjY2pyNyR1fEwrQ1QxJDFTSVhoS2lLeWR5R2JhKSR9
S2ZHe3cycWM9Km1VPjgxdjJ0SCE7YFkKekU9cXJMTH4mYiY9JlFsIUBBUz55eTVRTUAqLWI/UDRv
WVhlbWIkO31HLXZUeWw2O0xtY2FuZE1RPURTTTRORD8tCnplMGppTlRLQWMqM1p1PiFxbHpuY19y
SmUrdC03cGViellkUVExSWEpQGcrTFImJHsxOSlfTEZLMnxNPzdxZlZ8aQp6YEw9cm4mKG5CNGVi
SUEqMTYrNlglKUhEZiM7Zi1DVWxlWEJyKng9aClCM0xPTTlSYENGUDBSJGBeJjJoPl5YIT8Kei1v
NVgjcW9ZIX0oTD8waHBrZFBHYnNzblBBKjtuM0xmQH05S1hKKjMheT0oa2RWYEUmeTsrYDRtbFk9
bD95RENICno2SFFNU0BUMT8qX1lHTVd4WTtwLWR0eHZTKlgpeSE2TFV+R3YkSDk3eFRzfWpnPVh5
bW4+Vy1eOWk+Z1RyTz14UAp6czFnKVYtfH18JFh4YjZrQl9xQE9TTU5JUV5DSWpUWURhSk05dUg5
OHolQzkjdmJWfFVUXnNZKDFoTVVDVVJZbiQKekU+dE0kXy1ya0lRKHApYkE4OD42JHtVNklSbz5a
TXVILWRGe3JfRWthU0N5VUNkNXdLJmYjM3xzfkpWVGJUTykhCnpBWXh2PmxsfVFCM3liSDZEIUEq
VUhJMUU/Xi1ZNU94SCk/NlU5ayRrKjt0VGZwUiliK19YaW9wM2I+YU1FZy0qZgp6aWpeSUlOQDxA
ZCRHK25DaHc9KU9hM35KYCNmbUNxaGtYZ05kNz1LZlp5X2wwa2k5SSg+IylNRnl1ZGFjZkYjJWQK
ekZXUSF9YU87NH1TM0RpdmpLOU9+azNWLWFSRFMze2tvJEwyMWZOa29tfUl4UypsKVMrejEtVS12
VExHPWAoSjtXCnpZOXE2WVUyUyVHSyQwekx1KHYtTEZAP15yNSlMWD53VDhGbHBQNCU0clA8dHtk
KkMrUllORmRKcWl2fX1pbGM0egp6WkpBY01SP2p6dVgzfXEpJkx2IUFPOT80YF40OyoqWFBhWGQ9
aVg4MmJ0KSZkVD9CbUN7ZnkyeDgkTHA/ezB7bjIKej91RjhFazJjLWp3ITZ8Ym9OWiFubmdIR1lR
RE5AITkpJTNSdCFjPUZFSWpiRl8oZUc4dkN5JmBVTDYtS2JLa3EpCnpzUlB7TmpqIWxFTlJvQVJG
P282VnpObDI/IXJwOztwPWxJOVNwU1VVeDZMRFhoKnQpWDlGNmAoXjZYQXVAKUxtbAp6JWllTGFI
TlZPZ1pKITtZJTl+OXdpKyZzQlRYKFkzTntmQX1CJT0zQns0KX4hQzI2X3o0aE1yUD56ME5NcXYy
UlYKempYfVBJKz56aypPe2xGKEt+d3Zsbj8mZ3pzQ3BMUCtOTzNpe0dkeHsrT3puJD4tdFclRTZ0
bkorUFF9JWg0WWR2CnowWDRnQyl0dnFtUjtmSEA1b2g1Uk1DNl9ISzRJcW1BPCtwP2xaZG5BRU05
VnF1PSp1c0ZsbmU7K2kwJXMmUilJRwp6Qm4wfHgrY2lYNU47OCZ8JkBWPTJVdmVhP3t0WTcoPTho
R29XVXt0Tj1ITF82M0N6OyFVSip8Tl8yOHhEMXAmMWUKeiN8bmcwIWBpfUg/UkZvK3crVzhkQ3JP
aClYNmd4blVFWSoqbklAeF9RKDt9dGJwa21pVzNKfD81a098bjIxbHg9CnpIdHtfUl9nTHtHSGgk
PlZUdytjVWlUe3xHXlFATH1QUjJfdWUwaUgpUFg5ayVeI21Ee2dUVk0jbHpIRzg9bD1qPQpDME5Z
O3gKCmRlbHRhIDM0MjQKemNtZUhKY35CRXE3PU9EajM1aFloMShSP15NWUlhbUQxbjN8cDc5dVRs
cXpiaU5ZeWFgdGs7TXxAVHdMUzFnZkAwCno0JWV3eCFHY2hhUUg7NztOOXpyRXY/XipuTWdAJlp0
cTNTNnR5S0RVTCptQSU5ajU8dnJhUUN5JjNebFMtfHpjPQp6QEEhN2wxJkBwOERUNiopdj1YVEFj
Pl9RSl9HJitFWXs/ITshPVdAb095PyV+dXRlLTRgMk5GVjl6K018d2w+ZmcKekomNFpoQ0pyVTNT
MCRTWTVhcXpfXn1NckljRylgTDhjQiZNcis0YmY/PEBDSlR7XzAwdmVXJXBuRHhBVzByR0kqCnpe
YShRVXcjRSRpY0dqXyErWiRsUmByYDdhb3kyJU1rVEckPFcpcUspS0VKSldmTlprSm05V0JFcWdy
SEI8PVN6Tgp6cmc2QWxXKiVZbDJIRnNxYW5TODghb2ZMbk85eT0jOWNUeDd0PkEhQFNNVWduJndI
TGU3WlNiT21HRS0lYG1KUzgKeiZJIz9mO3JTZUhaOVdnVGFBVTtVSiRIK210Zm1xJTwqZUg/cU5I
eGNIPUVDfVheQG1zZzArQDdHfDk+REQoYCpjCnpNI05od1FreHAhQ3VRYWxjQi1OKGpfT0dqazE5
Ull4VVEkTWYyfXBJbz0wYD12RkZVOUAwIWVTZyVqUCNARTt7Pgp6JXgxJGBAVnFjdVBsNlpnbmFa
P3ZfV3BVamFrLUZFJG9Pa1A1dDtCPnBMfD8hQWNXeDJnYiUjKSN7fkR5MzIpSXoKej9AayZKYXBB
Ni00anlOeCRyO0N8PXtHIzttaU5LdDN8Q2JAU2dpP012aD47fGRSbEBWRyZ6O3JmKXcwUmIqT1lH
CnpHVmJRZ298fWYqNlpGNmRJPmp7IUs3TSVDZWRSYk5HWWU8dlQjYnV8bWQzWk5kOGxCRHhBTlVC
OWpZdChSJVlFYAp6al91e1UlYiV2QVdaa1RBPUsyWX5gXndVbSlTQkQ3TWxmfWtgRUU7RCZkN1hR
UXp1NHpwWU9nN00reDZnbk9uJkMKektqKnV6T18/ODZjZHF5ZyNzRW9QZj9ENjJhWElecjRgQ3Va
QFpHVVFsO25gI3BjQmxEdUdybmxBOzlyOU0teGtACnpecH4tNzFDYnR9QUpIPFR4MDxPU0xeRElr
T0M2bTkxIWMjfGBxWm8xYVJjaUJZRE87KmxiO0xreD9BVF8wd1BRWgp6Mj85ZClOczxzcyp2MDZN
Wnw5KmZ7emJxNTtUV21iOS10RFNDUkItQFZ5NFQ4JldzQGdvaGQhNHpXUjAxdSEoIUAKekRiKWg+
M05AbHlKZ15GZDJfUGlJUChiMSp6TSh7bjMwIThhdkV8dD5yNW9xbmVeOzlII1QzJXBJaG8+eDJi
diEoCno+P2hgUzFNUVZjdmZGe2Q+IWJofjlFQ3NiSU57Rik1NlVNQUYlXk1jdV9kVytOKi1ocT18
TWF1anUyYWojbCVPMQp6ayNHWVFVPiVyfVpLaWJlZztsVCVBKTskbiFOSiZRKHFKZXlhY05NNDRW
P3p4IXskZ0RSQUY7NzRGK05aKD5aNVEKeklfIWJwIy1fc25ZIWNJOVNEXj9LQjA0VnpgZ0dOV1lC
YnVJUF8wXlAoWntLXlgxentyMipJIUI+M1hCbDc7Q2whCnokSSNjKVZLNTxMQnBHbH5kI19tbmt0
QXFeMGYxPSY5Mz5wZzFhbStmNVlaY1FVX2lWdldWJUhrdDVOSFdNalROYQp6NlE7ST09cSYyYyp5
KDAlYTlDSnFzM3I3dU9HXnVJMTdQe3xgMXN6NWl4VH56UCFpTz1IUVg+QDI4bkRxOTlqeUYKek1W
eXBoUGEye29nJVMtKiRhPT5CM3omc1IjTmNzUWc8Uk1SN2QxNShEcGRnWnZISzk+K3FwbzNWKEQo
RGR0X3haCnpmZCV9OXRHRzV9VUVkJkMxIUxNcmV2OF9vIVRNOFYkOWA/NzRzK3ckLVh1Xm5GbUFW
dj96NVlUSXo/dStpSFZrNwp6QXAtYHRmbEFaY0dBR2BHeCE0OGt0aG41Rl5wT2lTSi09aztUX0hF
T2paa0FGUmMpK3wtR05UM1Ffbkw7S1ZQRjwKeiYxQmc0OyE1YD9oRyQ2Ky1EQzBedXZfan1eT1J9
Vj1Jb2JnKEt2dmRGKDwobXE+JUhZOWchenBgKDVnbHorOTk9Cno5P1VRUClaRj88QyR7NkUlMnQ/
PzVBIS1CZGJsJkMmJm1UaktCYGBCSUNeT2VUN3BNPHgxI1ZMI2hjWDY/NnxlUwp6Wk52Z2tDVV5v
TCoxKE1aTn1DYVI3TFc5OGg1N1BmVTg+eURzKUNhUCpsIzI/NWN1JndqdGBkSi1WIUgkJCh9SjMK
em07JXNHWGJWMzB7QD5MOWVwM2ZIUGdUK29AfG50PEhHfDJfZyRqaFh7SSZ3OSRMM0F9KUx8bnA8
VzlwOGgxfWNjCnpoMHhjRHs1aWJoPSpUP0pjMSY/MG9AIUBENyhTJS1jS2lLI1Zpe2AwT3skdmgy
KF9waGNaOGQwZktiTUVvT2JyYwp6Zk0tKUFhY0s8QjRYfn1Hc3dPZmY/emVYfWhDcDhibEN9MFBk
YHRuQVZeMGo5OTZqNC0ofTlDVWJ5dU1+RX5FWkYKelJBTTh4IVMyfWZ2QjZIKmpKODIjSUQ3UG82
fjAyRWl4UUIpQUhVJkNaZXJiVDNMalREI2tvYTMtcV92ZyYxa1ZuCnpMfnBsMlVsamB5RDNxP0N4
PFJaUCgjczNEcnFPMTNxY2BYKHl+fU8kOFN6OER5dXFgZyY7MHRzaGRYNGIpKil7LQp6WUgqUGso
K1J+d2lmaSV3elUhMVhDMzlLeWpOK3R+fDEyLVh7VH0/U3lpQCVkX2o/PHBnLW9QVWE5R0FePSU/
dHkKcCllUmpRMCF9TytnfTx4WUV7Q19HdiNVem91IWpHRU4kU0FQcklQKS07NFRJR3swbGpnM2Bf
dDMKCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
ZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVJlYWQuaHRtbCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3RydWN0dXJlZENs
b25lQmFja3dhcmRDb21wYXRpYmlsaXR5UmVhZC5odG1sCmluZGV4IDBmNDc2MTliNWY2NTM0MWUy
NTlhZDQyYWVkNDc5MzVmZGVkOGI4MGMuLmMwOGIyOTI2ZjQ1ZGNhMTg4OTljZjY1NDQ2Zjg4M2Fl
OTEzZmIyNjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5UmVhZC5odG1s
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3Ry
dWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5UmVhZC5odG1sCkBAIC0xLDIxICsxLDIx
IEBACiA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIGxvZyhtc2cpCiAgICAgewotLy8gICAgICAgIGFs
ZXJ0KG1zZyk7CisgICAgICAgIC8vIGFsZXJ0KG1zZyk7CiAgICAgICAgIHdpbmRvdy53ZWJraXQu
bWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKG1zZyk7CiAgICAgfQogCiAg
ICAgZnVuY3Rpb24gc2hvdWxkQmVUeXBlKF9hLCBfdHlwZSkKICAgICB7Ci0gICAgICAgIHZhciBl
eGNlcHRpb247Ci0gICAgICAgIHZhciBfYXY7CisgICAgICAgIGxldCBleGNlcHRpb247CisgICAg
ICAgIGxldCBfYXY7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBfYXYgPSBldmFsKF9hKTsK
ICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgZXhjZXB0aW9uID0gZTsKICAgICAg
ICAgfQogCi0gICAgICAgIHZhciBfdHlwZXYgPSBldmFsKF90eXBlKTsKKyAgICAgICAgY29uc3Qg
X3R5cGV2ID0gZXZhbChfdHlwZSk7CiAgICAgICAgIGlmIChfYXYgaW5zdGFuY2VvZiBfdHlwZXYp
IHsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9IGVsc2UgewpAQCAtMjMsOCAr
MjMsMjEgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIGZ1bmN0aW9uIHNob3VsZEJlQ3J5cHRv
S2V5KF9hLCBfa2V5KQorICAgIHsKKyAgICAgICAgaWYgKCEoSlNPTi5zdHJpbmdpZnkoX2tleS5r
ZXlfb3BzKSA9PSBKU09OLnN0cmluZ2lmeShfYS5rZXlfb3BzKSkgfHwgIShfa2V5LmV4dCA9PSBf
YS5leHQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoX2tleS5rdHkg
ID09ICJvY3QiICYmIF9hLmt0eSA9PSAib2N0IikKKyAgICAgICAgICAgIHJldHVybiAoX2tleS5r
ID09IF9hLmspICYmIChfa2V5LmFsZyA9PSBfYS5hbGcpOworICAgICAgICBpZiAoX2tleS5rdHkg
ID09ICJFQyIgJiYgX2Eua3R5ID09ICJFQyIpCisgICAgICAgICAgICByZXR1cm4gKF9rZXkuayA9
PSBfYS5rKSAmJiAoX2tleS5jcnYgPT0gX2EuY3J2KSAmJiAoX2tleS54ID09IF9hLngpICYmIChf
a2V5LnkgPT0gX2EueSkgJiYgKF9rZXkuZCA9PSBfYS5kKTsKKyAgICAgICAgaWYgKF9rZXkua3R5
ICA9PSAiUlNBIiAmJiBfYS5rdHkgPT0gIlJTQSIpCisgICAgICAgICAgICByZXR1cm4gKF9rZXku
YWxnID09IF9hLmFsZykgJiYgKF9rZXkubiA9PSBfYS5uKSAmJiAoX2tleS5lID09IF9hLmUpICYm
IChfa2V5LmQgPT0gX2EuZCkgJiYgKF9rZXkucCA9PSBfYS5wKSAmJiAoX2tleS5xID09IF9hLnEp
ICYmIChfa2V5LmRwID09IF9hLmRwKSAmJiAoX2tleS5kcSA9PSBfYS5kcSkgJiYgKF9rZXkucWkg
PT0gX2EucWkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgLy8gVmFsdWVz
IHRoYXQgYXJlIHVzZWQgdG8gaW5mZXIgdGhlIHR5cGUgb2YgYSBnaXZlbiBwcmltaXRpdmUgdHlw
ZS4KLSAgICB2YXIgdGVzdFZhbHVlcyA9IFsKKyAgICBjb25zdCB0ZXN0VmFsdWVzID0gWwogICAg
ICAgICB1bmRlZmluZWQsCiAgICAgICAgIG51bGwsCiAgICAgICAgIDUsIC8vIEludApAQCAtMzgs
MjUgKzUxLDM1IEBACiAgICAgXTsKIAogICAgIC8vIFZhbHVlcyB0aGF0IGFyZSB1c2VkIHRvIGlu
ZmVyIHRoZSB0eXBlIG9mIGEgZ2l2ZW4gQm9vbGVhbi9TdHJpbmcgdHlwZS4KLSAgICB2YXIgdGVz
dFR5cGVWYWx1ZXMgPSBbCisgICAgY29uc3QgdGVzdFR5cGVWYWx1ZXMgPSBbCiAgICAgICAgIHsg
aXRlbTogbmV3IEJvb2xlYW4odHJ1ZSksIHR5cGU6ICJCb29sZWFuIiwgdmFsdWU6IHRydWUgfSwK
ICAgICAgICAgeyBpdGVtOiBuZXcgQm9vbGVhbihmYWxzZSksIHR5cGU6ICJCb29sZWFuIiwgdmFs
dWU6IGZhbHNlIH0sCiAgICAgICAgIHsgaXRlbTogbmV3IFN0cmluZygpLCB0eXBlOiAiU3RyaW5n
IiwgdmFsdWU6ICIiIH0KICAgICBdOwogCi0gICAgdmFyIG9wZW5SZXF1ZXN0ID0gaW5kZXhlZERC
Lm9wZW4oImJhY2t3YXJkX2NvbXBhdGliaWxpdHkiKTsKKyAgICAvLyBWYWx1ZXMgYXJlIGluIEpX
SyBmb3JtYXRzLgorICAgIGNvbnN0IHRlc3RDcnlwdG9LZXlWYWx1ZXMgPSBbCisgICAgICAgIHsg
a3R5OiAib2N0IiwgazogIllXSmpaR1ZtWjJneE1qTTBOVFkzT0EiLCBhbGc6ICJBMTI4Q0JDIiwg
dXNlOiAiZW5jIiwga2V5X29wczogWydkZWNyeXB0JywgJ2VuY3J5cHQnLCAndW53cmFwS2V5Jywg
J3dyYXBLZXknXSwgZXh0OiB0cnVlIH0sCisgICAgICAgIHsga3R5OiAiRUMiLCB1c2U6ICJzaWci
LCBleHQ6IHRydWUsIGNydjogIlAtMjU2IiwgeDogIjFGU1ZXaWVUdmlrRmtHMU5PeWhrVUNhTWJk
UWh4d0g2YUN1NEV6LXNSdEEiLCB5OiAiOWptTlRMcU00Y2pCaGRBbkhjTkk5WVFWM084TEZtby1F
ZFpXazhudEFhSSIsIGtleV9vcHM6IFsndmVyaWZ5J10gfSwKKyAgICAgICAgeyBrdHk6ICJFQyIs
IHVzZTogInNpZyIsIGV4dDogdHJ1ZSwga2V5X29wczogWyJzaWduIl0sIGNydjogIlAtMjU2Iiwg
eDogIjFGU1ZXaWVUdmlrRmtHMU5PeWhrVUNhTWJkUWh4d0g2YUN1NEV6LXNSdEEiLCB5OiAiOWpt
TlRMcU00Y2pCaGRBbkhjTkk5WVFWM084TEZtby1FZFpXazhudEFhSSIsIGQ6ICJwcHhCU292M044
X0FVY2lzQXV2bUxWNHlFOGVfTF9CTEU4YlpiOVoxWGpnIiB9LAorICAgICAgICB7IGt0eTogIm9j
dCIsIGs6ICJZV0pqWkdWbVoyZ3hNak0wTlRZM09BIiwgYWxnOiAiSFMyNTYiLCB1c2U6ICJzaWci
LCBrZXlfb3BzOiBbInNpZ24iLCAidmVyaWZ5Il0sIGV4dDogdHJ1ZSwgfSwKKyAgICAgICAgeyBr
dHk6ICJSU0EiLCBhbGc6ICJQUzI1NiIsIHVzZTogInNpZyIsIGtleV9vcHM6IFsidmVyaWZ5Il0s
IGV4dDogdHJ1ZSwgbjogInJjQ1VDdjdPYzFIVmFtMURJaEN6cWtuVGhXYXdPcDhRTGs4Wml5MnAx
MEJ5alFGQ2Fqb0ZpeXVBV2wtUjFXWFphZjR4aXRMUnJhY1Q5YWdwekl6Yy1NYkxTSElHZ1dRR08y
MWxHaUlteTVmdFotRDhiSEFxUnoyeTE1cHpENGM0Q0VvdTdYU1NMRG9SblIwUUc1TXNEaEQ2czJn
Vjltd0hrcnRrQ3h0TVdkQmktNzdhczh3R21sTlJsZGNPU2daRExLOFVuQ1NnQTFPZ3VaOTg5YkZ5
Yzh0T09FSWIweFVTZlBTejNMUFNDbnlZejY4YURqbUtWZU5ILWlnODU3T1NjeVdiR3lFeTNCaXc2
NHF1bjNqdVVsTldzSjN6bmdrT2R0ZVlXeXR4NVFyNFhLTnM2Ui1NeXlxNzJLVXAwMm1KRFppaXlp
Z2x4TUxfaTMtX0NlZWNDdyIsIGU6ICJBUUFCIiB9LAorICAgICAgICB7IGt0eTogIlJTQSIsIGFs
ZzogIlBTMSIsIHVzZTogInNpZyIsIGtleV9vcHM6IFsic2lnbiJdLCBleHQ6IHRydWUsIG46ICJy
Y0NVQ3Y3T2MxSFZhbTFESWhDenFrblRoV2F3T3A4UUxrOFppeTJwMTBCeWpRRkNham9GaXl1QVds
LVIxV1haYWY0eGl0TFJyYWNUOWFncHpJemMtTWJMU0hJR2dXUUdPMjFsR2lJbXk1ZnRaLUQ4YkhB
cVJ6MnkxNXB6RDRjNENFb3U3WFNTTERvUm5SMFFHNU1zRGhENnMyZ1Y5bXdIa3J0a0N4dE1XZEJp
LTc3YXM4d0dtbE5SbGRjT1NnWkRMSzhVbkNTZ0ExT2d1Wjk4OWJGeWM4dE9PRUliMHhVU2ZQU3oz
TFBTQ255WXo2OGFEam1LVmVOSC1pZzg1N09TY3lXYkd5RXkzQml3NjRxdW4zanVVbE5Xc0ozem5n
a09kdGVZV3l0eDVRcjRYS05zNlItTXl5cTcyS1VwMDJtSkRaaWl5aWdseE1MX2kzLV9DZWVjQ3ci
LCBlOiAiQVFBQiIsIGQ6ICJlTkxTMzdhQ3o3UlhTTlBEX0R0TEJKNmo1VDhjU3hkelJCQ2pQYUk2
V2NHcUpwMTZscTNVVHd1b0RMQXFsQTlvR1ltMjM4ZHNJV3B1dWNQX2xRdGJXZS03U3B4b0k2X3Zt
WUdmN1lWVUh2MS1ERjlxaU9tU3JNbWR4TW5WT3pZWFk4UmFUNnRoUGpuX0o1Y2ZMVjJ4SV9Md3Ny
TXRtcGRTeU5sZ1gwelRVaHd0dWFoZ0FLTUVDaFlqSDJFbmpIZEh3NnNZMi13QXBkY1FJN1VMRTBv
bzVSemJRWnBtdWhjTjloaUJjMEwzaGhGMHFvNTBtYmwwMl82NV9HUTdEcFZrWEJ4TmdSQkx6bFBh
Ym16ekcyb0FoZmVmTGdZbVNDMW9wYUNrWEU2dlJXUU5XTkw0NVJaTlpGWU0zdW9KZ2hPTXFHZW9j
TTBCcGpkQ2hIclBPbEZ2U1EiLCBwOiAiNG1pVHVBaktNZUg1dUo1S0IzOTdRVXdoYmtZRWdTYmNB
Mm1pZm1Ta3ZFMjAxOGdiNTVxa0JISzFlVnJ5ZjFfbTQzTE5sYzZPX2FrNmdmemRaSVp2UzVOQ0dq
UGwwcTA5cGxVcHU4cUZPU3NwQndBNjdxR0g3NmxGbFpMbl9kNHlnbFM3d2ZMcnU0XzVZczhxTExz
LURxVkx2aXdwb3NPbnl5V3F3TTVBWHAwIiwgcTogInhIWXJ6a2l2dG1uel9zR2NobldHYzBxLXBE
T2tLaWNwdFJwdjJwTUZJSVh4bkZYNWFNZUVYSVpqVnVqWHR3VXkxVWxGSU4yR1pKU3Z5NUtKNzlt
dV9YeU5uRkhNemVkSC1BM2VlM3U4aDFVVXJaRi12VXUxX2U0VV94NjdOTjFkZWR6VVNLeW5ON3BG
bDNPa3VTaE1CV0dWLWN3ek9QZGNWQWZWdVpseFVNYyIsIGRwOiAiZkJ6RHpZRFVCbUJRR29wN0hu
MGR2Zl9UMjdWNlJxcGN0V28wNzRDUVpjRmJQMmF0RlZ0S1NqM3ZpV1QzeGlkMlZIemNnaURIZGZw
TTNuRVZsRU8xd3dJb25HQ1N2ZGpHRU9aaWlGVk9qclpBT1Z4QThndU9qeXlGdnFiWGtlMDZWd1BJ
SVZ2ZktlU1UyenVoYlBfXzF0dDZGX2Z4b3c0S2IyeG9uR1QwR0drIiwgZHE6ICJqbUUyRGlJUGRo
d0RnTFhBUXBJYUJxUTgxYk8zWGZWVF9MUlVMQXd3d3dsUHVRVjE0OEgwNHpsaDlUSjZZMkdaSFlv
a1YxVTBlT0JwSnhma2I3ZExZdHBKcHVpQmpSZjR5SVVFb0dsa2tJX1FsSm5GU0ZyLVlqR1JkZk5I
cVdCa3hsU01aTDc3MFI5bUlBVG5kR2tIN3o1eC1yOUt3QlpGQzRGQ0cyaGdfekUiLCBxaTogIllD
WF9wTHdiTUJBMVRoVkgwV2N3bW55dHFOY3JNQ0V3VG03QnlBMmVVNm5XYlFyVUx2ZjdtOV9remZM
VWNqc25wQVZsQlFHNUpNWE15MFNxNHB0d2J5d3NhNS1HOEtBT09PUjJMM3Y0aEMtRXlzOWZ0Z0ZN
XzNpMG80MGVlUUg0YjNoYVBibnRySWVNZzhJemxPdVZZS2Y5LTJRdUtEb1dlUmRkN05zZHhUayIg
fQorICAgIF07CisKKyAgICBjb25zdCBvcGVuUmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCJiYWNr
d2FyZF9jb21wYXRpYmlsaXR5Iik7CiAgICAgb3BlblJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9u
KGV2ZW50KSB7CiAgICAgICAgIGxvZygiRXJyb3I6ICIgKyBldmVudC50YXJnZXQuZXJyb3IubmFt
ZSk7Ci0gICAgfQorICAgIH07CiAgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
ZXZlbnQpIHsKICAgICAgICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OwogICAgICAgICByZWFk
VHlwZSgpOwotICAgIH0KKyAgICB9OwogCi0gICAgdmFyIHJlc3VsdCA9IHRydWU7CisgICAgbGV0
IHJlc3VsdCA9IHRydWU7CiAgICAgZnVuY3Rpb24gcmVhZFR5cGUoKQogICAgIHsKLSAgICAgICAg
dmFyIG9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oInR5cGUiKS5vYmplY3RTdG9yZSgidHlw
ZSIpOworICAgICAgICBjb25zdCBvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCJ0eXBlIiku
b2JqZWN0U3RvcmUoInR5cGUiKTsKICAgICAgICAgb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpLm9u
c3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgICAgICBjdXJzb3IgPSBldmVudC50
YXJnZXQucmVzdWx0OwogICAgICAgICAgICAgaWYgKGN1cnNvcikgewpAQCAtNjksNyArOTIsNyBA
QAogCiAgICAgZnVuY3Rpb24gcmVhZFZhbHVlKCkKICAgICB7Ci0gICAgICAgIHZhciBvYmplY3RT
dG9yZSA9IGRiLnRyYW5zYWN0aW9uKCJ2YWx1ZSIpLm9iamVjdFN0b3JlKCJ2YWx1ZSIpOworICAg
ICAgICBjb25zdCBvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCJ2YWx1ZSIpLm9iamVjdFN0
b3JlKCJ2YWx1ZSIpOwogICAgICAgICBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkub25zdWNjZXNz
ID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7CiAgICAgICAgICAgICBpZiAoY3Vyc29yKSB7CkBAIC04MiwxMiArMTA1LDI3IEBACiAK
ICAgICBmdW5jdGlvbiByZWFkVHlwZVZhbHVlKCkKICAgICB7Ci0gICAgICAgIHZhciBvYmplY3RT
dG9yZSA9IGRiLnRyYW5zYWN0aW9uKCJ0eXBlVmFsdWUiKS5vYmplY3RTdG9yZSgidHlwZVZhbHVl
Iik7CisgICAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oInR5cGVWYWx1
ZSIpLm9iamVjdFN0b3JlKCJ0eXBlVmFsdWUiKTsKICAgICAgICAgb2JqZWN0U3RvcmUub3BlbkN1
cnNvcigpLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgICAgICBjdXJzb3Ig
PSBldmVudC50YXJnZXQucmVzdWx0OwogICAgICAgICAgICAgaWYgKGN1cnNvcikgewogICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAmJiBzaG91bGRCZVR5cGUoImN1cnNvci52YWx1ZSIs
IHRlc3RUeXBlVmFsdWVzW2N1cnNvci5rZXkgLSAxXS50eXBlKSAmJiAoY3Vyc29yLnZhbHVlID09
IHRlc3RUeXBlVmFsdWVzW2N1cnNvci5rZXkgLSAxXS52YWx1ZSk7CiAgICAgICAgICAgICAgICAg
Y3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IHJlYWRDcnlwdG9LZXkoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKKyAg
ICBhc3luYyBmdW5jdGlvbiByZWFkQ3J5cHRvS2V5KCkKKyAgICB7CisgICAgICAgIGNvbnN0IG9i
amVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oImNyeXB0b0tleSIpLm9iamVjdFN0b3JlKCJjcnlw
dG9LZXkiKTsKKyAgICAgICAgb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpLm9uc3VjY2VzcyA9IGFz
eW5jIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBjdXJzb3IgPSBldmVudC50YXJnZXQu
cmVzdWx0OworICAgICAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgICAgIGNvbnN0
IGp3a0tleSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZXhwb3J0S2V5KCJqd2siLCBjdXJzb3IudmFs
dWUpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAmJiBzaG91bGRCZUNyeXB0b0tl
eShqd2tLZXksIHRlc3RDcnlwdG9LZXlWYWx1ZXNbY3Vyc29yLmtleSAtIDFdKTsKKyAgICAgICAg
ICAgICAgICBjdXJzb3IuY29udGludWUoKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgICAgICAgICAgbG9nKCJQYXNzIik7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWRE
QlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVdyaXRlLmh0bWwgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJh
Y2t3YXJkQ29tcGF0aWJpbGl0eVdyaXRlLmh0bWwKaW5kZXggYjI2NmVjYzRlYWFiMTljZmE1ZmUx
OWI3YWI5MzMzY2EzMDQxNTM0Ny4uMGUwOGQ0M2ZkYzY2MDg3NjYyZTc4YTQ2OGJlZGQwYTczZmI5
OGQ2YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHlXcml0ZS5odG1sCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3RydWN0
dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5V3JpdGUuaHRtbApAQCAtMSwyMSArMSwyMSBA
QAogPHNjcmlwdD4KICAgICBmdW5jdGlvbiBsb2cobXNnKQogICAgIHsKLS8vICAgICAgICBhbGVy
dChtc2cpOworICAgICAgICAvLyBhbGVydChtc2cpOwogICAgICAgICB3aW5kb3cud2Via2l0Lm1l
c3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShtc2cpOwogICAgIH0KIAogICAg
IGZ1bmN0aW9uIHNob3VsZEJlVHlwZShfYSwgX3R5cGUpCiAgICAgewotICAgICAgICB2YXIgZXhj
ZXB0aW9uOwotICAgICAgICB2YXIgX2F2OworICAgICAgICBsZXQgZXhjZXB0aW9uOworICAgICAg
ICBsZXQgX2F2OwogICAgICAgICB0cnkgewogICAgICAgICAgICAgX2F2ID0gZXZhbChfYSk7CiAg
ICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IGU7CiAgICAgICAg
IH0KIAotICAgICAgICB2YXIgX3R5cGV2ID0gZXZhbChfdHlwZSk7CisgICAgICAgIGNvbnN0IF90
eXBldiA9IGV2YWwoX3R5cGUpOwogICAgICAgICBpZiAoX2F2IGluc3RhbmNlb2YgX3R5cGV2KSB7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTIzLDggKzIz
LDIxIEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBmdW5jdGlvbiBzaG91bGRCZUNyeXB0b0tl
eShfYSwgX2tleSkKKyAgICB7CisgICAgICAgIGlmICghKEpTT04uc3RyaW5naWZ5KF9rZXkua2V5
X29wcykgPT0gSlNPTi5zdHJpbmdpZnkoX2Eua2V5X29wcykpIHx8ICEoX2tleS5leHQgPT0gX2Eu
ZXh0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKF9rZXkua3R5ICA9
PSAib2N0IiAmJiBfYS5rdHkgPT0gIm9jdCIpCisgICAgICAgICAgICByZXR1cm4gKF9rZXkuayA9
PSBfYS5rKSAmJiAoX2tleS5hbGcgPT0gX2EuYWxnKTsKKyAgICAgICAgaWYgKF9rZXkua3R5ICA9
PSAiRUMiICYmIF9hLmt0eSA9PSAiRUMiKQorICAgICAgICAgICAgcmV0dXJuIChfa2V5LmsgPT0g
X2EuaykgJiYgKF9rZXkuY3J2ID09IF9hLmNydikgJiYgKF9rZXkueCA9PSBfYS54KSAmJiAoX2tl
eS55ID09IF9hLnkpICYmIChfa2V5LmQgPT0gX2EuZCk7CisgICAgICAgIGlmIChfa2V5Lmt0eSAg
PT0gIlJTQSIgJiYgX2Eua3R5ID09ICJSU0EiKQorICAgICAgICAgICAgcmV0dXJuIChfa2V5LmFs
ZyA9PSBfYS5hbGcpICYmIChfa2V5Lm4gPT0gX2EubikgJiYgKF9rZXkuZSA9PSBfYS5lKSAmJiAo
X2tleS5kID09IF9hLmQpICYmIChfa2V5LnAgPT0gX2EucCkgJiYgKF9rZXkucSA9PSBfYS5xKSAm
JiAoX2tleS5kcCA9PSBfYS5kcCkgJiYgKF9rZXkuZHEgPT0gX2EuZHEpICYmIChfa2V5LnFpID09
IF9hLnFpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIC8vIFZhbHVlcyB0
aGF0IGFyZSB1c2VkIHRvIGluZmVyIHRoZSB0eXBlIG9mIGEgZ2l2ZW4gcHJpbWl0aXZlIHR5cGUu
Ci0gICAgdmFyIHRlc3RWYWx1ZXMgPSBbCisgICAgY29uc3QgdGVzdFZhbHVlcyA9IFsKICAgICAg
ICAgdW5kZWZpbmVkLAogICAgICAgICBudWxsLAogICAgICAgICA1LCAvLyBJbnQKQEAgLTM4LDM5
ICs1MSw1MSBAQAogICAgIF07CiAKICAgICAvLyBWYWx1ZXMgdGhhdCBhcmUgdXNlZCB0byBpbmZl
ciB0aGUgdHlwZSBvZiBhIGdpdmVuIEJvb2xlYW4vU3RyaW5nIHR5cGUuCi0gICAgdmFyIHRlc3RU
eXBlVmFsdWVzID0gWworICAgIGNvbnN0IHRlc3RUeXBlVmFsdWVzID0gWwogICAgICAgICB7IGl0
ZW06IG5ldyBCb29sZWFuKHRydWUpLCB0eXBlOiAiQm9vbGVhbiIsIHZhbHVlOiB0cnVlIH0sCiAg
ICAgICAgIHsgaXRlbTogbmV3IEJvb2xlYW4oZmFsc2UpLCB0eXBlOiAiQm9vbGVhbiIsIHZhbHVl
OiBmYWxzZSB9LAogICAgICAgICB7IGl0ZW06IG5ldyBTdHJpbmcoKSwgdHlwZTogIlN0cmluZyIs
IHZhbHVlOiAiIiB9CiAgICAgXTsKIAorICAgIC8vIFZhbHVlcyBhcmUgaW4gSldLIGZvcm1hdHMu
CisgICAgY29uc3QgdGVzdENyeXB0b0tleVZhbHVlcyA9IFsKKyAgICAgICAgeyBrdHk6ICJvY3Qi
LCBrOiAiWVdKalpHVm1aMmd4TWpNME5UWTNPQSIsIGFsZzogIkExMjhDQkMiLCB1c2U6ICJlbmMi
LCBrZXlfb3BzOiBbJ2RlY3J5cHQnLCAnZW5jcnlwdCcsICd1bndyYXBLZXknLCAnd3JhcEtleSdd
LCBleHQ6IHRydWUgfSwKKyAgICAgICAgeyBrdHk6ICJFQyIsIHVzZTogInNpZyIsIGV4dDogdHJ1
ZSwgY3J2OiAiUC0yNTYiLCB4OiAiMUZTVldpZVR2aWtGa0cxTk95aGtVQ2FNYmRRaHh3SDZhQ3U0
RXotc1J0QSIsIHk6ICI5am1OVExxTTRjakJoZEFuSGNOSTlZUVYzTzhMRm1vLUVkWldrOG50QWFJ
Iiwga2V5X29wczogWyd2ZXJpZnknXSB9LAorICAgICAgICB7IGt0eTogIkVDIiwgdXNlOiAic2ln
IiwgZXh0OiB0cnVlLCBrZXlfb3BzOiBbInNpZ24iXSwgY3J2OiAiUC0yNTYiLCB4OiAiMUZTVldp
ZVR2aWtGa0cxTk95aGtVQ2FNYmRRaHh3SDZhQ3U0RXotc1J0QSIsIHk6ICI5am1OVExxTTRjakJo
ZEFuSGNOSTlZUVYzTzhMRm1vLUVkWldrOG50QWFJIiwgZDogInBweEJTb3YzTjhfQVVjaXNBdXZt
TFY0eUU4ZV9MX0JMRThiWmI5WjFYamciIH0sCisgICAgICAgIHsga3R5OiAib2N0IiwgazogIllX
SmpaR1ZtWjJneE1qTTBOVFkzT0EiLCBhbGc6ICJIUzI1NiIsIHVzZTogInNpZyIsIGtleV9vcHM6
IFsic2lnbiIsICJ2ZXJpZnkiXSwgZXh0OiB0cnVlLCB9LAorICAgICAgICB7IGt0eTogIlJTQSIs
IGFsZzogIlBTMjU2IiwgdXNlOiAic2lnIiwga2V5X29wczogWyJ2ZXJpZnkiXSwgZXh0OiB0cnVl
LCBuOiAicmNDVUN2N09jMUhWYW0xREloQ3pxa25UaFdhd09wOFFMazhaaXkycDEwQnlqUUZDYWpv
Rml5dUFXbC1SMVdYWmFmNHhpdExScmFjVDlhZ3B6SXpjLU1iTFNISUdnV1FHTzIxbEdpSW15NWZ0
Wi1EOGJIQXFSejJ5MTVwekQ0YzRDRW91N1hTU0xEb1JuUjBRRzVNc0RoRDZzMmdWOW13SGtydGtD
eHRNV2RCaS03N2FzOHdHbWxOUmxkY09TZ1pETEs4VW5DU2dBMU9ndVo5ODliRnljOHRPT0VJYjB4
VVNmUFN6M0xQU0NueVl6NjhhRGptS1ZlTkgtaWc4NTdPU2N5V2JHeUV5M0JpdzY0cXVuM2p1VWxO
V3NKM3puZ2tPZHRlWVd5dHg1UXI0WEtOczZSLU15eXE3MktVcDAybUpEWmlpeWlnbHhNTF9pMy1f
Q2VlY0N3IiwgZTogIkFRQUIiIH0sCisgICAgICAgIHsga3R5OiAiUlNBIiwgYWxnOiAiUFMxIiwg
dXNlOiAic2lnIiwga2V5X29wczogWyJzaWduIl0sIGV4dDogdHJ1ZSwgbjogInJjQ1VDdjdPYzFI
VmFtMURJaEN6cWtuVGhXYXdPcDhRTGs4Wml5MnAxMEJ5alFGQ2Fqb0ZpeXVBV2wtUjFXWFphZjR4
aXRMUnJhY1Q5YWdwekl6Yy1NYkxTSElHZ1dRR08yMWxHaUlteTVmdFotRDhiSEFxUnoyeTE1cHpE
NGM0Q0VvdTdYU1NMRG9SblIwUUc1TXNEaEQ2czJnVjltd0hrcnRrQ3h0TVdkQmktNzdhczh3R21s
TlJsZGNPU2daRExLOFVuQ1NnQTFPZ3VaOTg5YkZ5Yzh0T09FSWIweFVTZlBTejNMUFNDbnlZejY4
YURqbUtWZU5ILWlnODU3T1NjeVdiR3lFeTNCaXc2NHF1bjNqdVVsTldzSjN6bmdrT2R0ZVlXeXR4
NVFyNFhLTnM2Ui1NeXlxNzJLVXAwMm1KRFppaXlpZ2x4TUxfaTMtX0NlZWNDdyIsIGU6ICJBUUFC
IiwgZDogImVOTFMzN2FDejdSWFNOUERfRHRMQko2ajVUOGNTeGR6UkJDalBhSTZXY0dxSnAxNmxx
M1VUd3VvRExBcWxBOW9HWW0yMzhkc0lXcHV1Y1BfbFF0YldlLTdTcHhvSTZfdm1ZR2Y3WVZVSHYx
LURGOXFpT21Tck1tZHhNblZPellYWThSYVQ2dGhQam5fSjVjZkxWMnhJX0x3c3JNdG1wZFN5Tmxn
WDB6VFVod3R1YWhnQUtNRUNoWWpIMkVuakhkSHc2c1kyLXdBcGRjUUk3VUxFMG9vNVJ6YlFacG11
aGNOOWhpQmMwTDNoaEYwcW81MG1ibDAyXzY1X0dRN0RwVmtYQnhOZ1JCTHpsUGFibXp6RzJvQWhm
ZWZMZ1ltU0Mxb3BhQ2tYRTZ2UldRTldOTDQ1UlpOWkZZTTN1b0pnaE9NcUdlb2NNMEJwamRDaEhy
UE9sRnZTUSIsIHA6ICI0bWlUdUFqS01lSDV1SjVLQjM5N1FVd2hia1lFZ1NiY0EybWlmbVNrdkUy
MDE4Z2I1NXFrQkhLMWVWcnlmMV9tNDNMTmxjNk9fYWs2Z2Z6ZFpJWnZTNU5DR2pQbDBxMDlwbFVw
dThxRk9Tc3BCd0E2N3FHSDc2bEZsWkxuX2Q0eWdsUzd3ZkxydTRfNVlzOHFMTHMtRHFWTHZpd3Bv
c09ueXlXcXdNNUFYcDAiLCBxOiAieEhZcnpraXZ0bW56X3NHY2huV0djMHEtcERPa0tpY3B0UnB2
MnBNRklJWHhuRlg1YU1lRVhJWmpWdWpYdHdVeTFVbEZJTjJHWkpTdnk1S0o3OW11X1h5Tm5GSE16
ZWRILUEzZWUzdThoMVVVclpGLXZVdTFfZTRVX3g2N05OMWRlZHpVU0t5bk43cEZsM09rdVNoTUJX
R1YtY3d6T1BkY1ZBZlZ1Wmx4VU1jIiwgZHA6ICJmQnpEellEVUJtQlFHb3A3SG4wZHZmX1QyN1Y2
UnFwY3RXbzA3NENRWmNGYlAyYXRGVnRLU2ozdmlXVDN4aWQyVkh6Y2dpREhkZnBNM25FVmxFTzF3
d0lvbkdDU3ZkakdFT1ppaUZWT2pyWkFPVnhBOGd1T2p5eUZ2cWJYa2UwNlZ3UElJVnZmS2VTVTJ6
dWhiUF9fMXR0NkZfZnhvdzRLYjJ4b25HVDBHR2siLCBkcTogImptRTJEaUlQZGh3RGdMWEFRcElh
QnFRODFiTzNYZlZUX0xSVUxBd3d3d2xQdVFWMTQ4SDA0emxoOVRKNlkyR1pIWW9rVjFVMGVPQnBK
eGZrYjdkTFl0cEpwdWlCalJmNHlJVUVvR2xra0lfUWxKbkZTRnItWWpHUmRmTkhxV0JreGxTTVpM
NzcwUjltSUFUbmRHa0g3ejV4LXI5S3dCWkZDNEZDRzJoZ196RSIsIHFpOiAiWUNYX3BMd2JNQkEx
VGhWSDBXY3dtbnl0cU5jck1DRXdUbTdCeUEyZVU2bldiUXJVTHZmN205X2t6ZkxVY2pzbnBBVmxC
UUc1Sk1YTXkwU3E0cHR3Ynl3c2E1LUc4S0FPT09SMkwzdjRoQy1FeXM5ZnRnRk1fM2kwbzQwZWVR
SDRiM2hhUGJudHJJZU1nOEl6bE91VllLZjktMlF1S0RvV2VSZGQ3TnNkeFRrIiB9CisgICAgXTsK
KwogICAgIGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgiYmFja3dhcmRfY29tcGF0aWJpbGl0eSIp
OwotICAgIHZhciBvcGVuUmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCJiYWNrd2FyZF9jb21wYXRp
YmlsaXR5Iik7CisgICAgY29uc3Qgb3BlblJlcXVlc3QgPSBpbmRleGVkREIub3BlbigiYmFja3dh
cmRfY29tcGF0aWJpbGl0eSIpOwogICAgIG9wZW5SZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1
bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIC8vIFRoaXMgb2JqZWN0U3RvcmUgc3RvcmVzIGVsZW1l
bnRzIHRoYXQgd2Ugb25seSBuZWVkIHRvIGNoZWNrIGl0cyB0eXBlIHRvIGRldGVybWluZSBpdHMg
c2VyaWFsaXphdGlvbiB0YWcuCi0gICAgICAgIHZhciBvYmplY3RTdG9yZSA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQuY3JlYXRlT2JqZWN0U3RvcmUoInR5cGUiKTsKKyAgICAgICAgZXZlbnQudGFyZ2V0
LnJlc3VsdC5jcmVhdGVPYmplY3RTdG9yZSgidHlwZSIpOwogICAgICAgICAvLyBUaGlzIG9iamVj
dFN0b3JlIHN0b3JlcyBlbGVtZW50cyB0aGF0IHdlIG5lZWQgdG8gY2hlY2sgaXRzIHZhbHVlIHRv
IGRldGVybWluZSBpdHMgc2VyaWFsaXphdGlvbiB0YWcuCi0gICAgICAgIHZhciBvYmplY3RTdG9y
ZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQuY3JlYXRlT2JqZWN0U3RvcmUoInZhbHVlIiwgeyBhdXRv
SW5jcmVtZW50IDogdHJ1ZSB9KTsKKyAgICAgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5jcmVhdGVP
YmplY3RTdG9yZSgidmFsdWUiLCB7IGF1dG9JbmNyZW1lbnQgOiB0cnVlIH0pOwogICAgICAgICAv
LyBUaGlzIG9iamVjdFN0b3JlIHN0b3JlcyBlbGVtZW50cyB0aGF0IHdlIG5lZWQgdG8gY2hlY2sg
Ym90aCBpdHMgdHlwZSBhbmQgaXRzIHZhbHVlIHRvIGRldGVybWluZSBpdHMgc2VyaWFsaXphdGlv
biB0YWcuCi0gICAgICAgIHZhciBvYmplY3RTdG9yZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQuY3Jl
YXRlT2JqZWN0U3RvcmUoInR5cGVWYWx1ZSIsIHsgYXV0b0luY3JlbWVudCA6IHRydWUgfSk7Ci0g
ICAgfQorICAgICAgICBldmVudC50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3JlKCJ0eXBl
VmFsdWUiLCB7IGF1dG9JbmNyZW1lbnQgOiB0cnVlIH0pOworICAgICAgICAvLyBUaGlzIG9iamVj
dFN0b3JlIHN0b3JlcyBjcnlwdG8ga2V5cy4KKyAgICAgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5j
cmVhdGVPYmplY3RTdG9yZSgiY3J5cHRvS2V5IiwgeyBhdXRvSW5jcmVtZW50IDogdHJ1ZSB9KTsK
KyAgICB9OwogICAgIG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewogICAg
ICAgICBsb2coIkVycm9yOiAiICsgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUpOwotICAgIH0KKyAg
ICB9OwogICAgIG9wZW5SZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAg
ICAgIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAgICAgICAgc3RvcmVUeXBlKCk7Ci0gICAg
fQorICAgIH07CiAKICAgICBmdW5jdGlvbiBzdG9yZVR5cGUoKQogICAgIHsKLSAgICAgICAgdmFy
IHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oInR5cGUiLCAicmVhZHdyaXRlIik7CisgICAg
ICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oInR5cGUiLCAicmVhZHdyaXRl
Iik7CiAgICAgICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewogICAg
ICAgICAgICAgbG9nKCJFcnJvcjogIiArIGV2ZW50LnRhcmdldC5lcnJvci5uYW1lKTsKLSAgICAg
ICAgfQotICAgICAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsg
c3RvcmVWYWx1ZSgpOyB9CisgICAgICAgIH07CisgICAgICAgIHRyYW5zYWN0aW9uLm9uY29tcGxl
dGUgPSBmdW5jdGlvbihldmVudCkgeyBzdG9yZVZhbHVlKCk7IH07CiAKLSAgICAgICAgdmFyIG9i
amVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoInR5cGUiKTsKKyAgICAgICAgY29u
c3Qgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgidHlwZSIpOwogICAgICAg
ICAvLyBUaGUga2V5IG9mIGFuIGl0ZW0gaXMgdGhlIHR5cGUgb2YgaXRzIHZhbHVlLCBoZW5jZSB3
ZSBjb3VsZCBkZXRlcm1pbmUgdHlwZSBtaXNtYXRjaCwgaS5lLiBzZXJpYWxpemF0aW9uIHRhZyBy
ZW9yZGVyCiAgICAgICAgIC8vIHNpbXBseSBieSB1c2luZyBhbiBpdGVtJ3Mga2V5IGFuZCB2YWx1
ZS4KICAgICAgICAgb2JqZWN0U3RvcmUuYWRkKFsxLCAyXSwgIkFycmF5Iik7CkBAIC05OSwzNiAr
MTI0LDYwIEBACiAKICAgICBmdW5jdGlvbiBzdG9yZVZhbHVlKCkKICAgICB7Ci0gICAgICAgIHZh
ciB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCJ2YWx1ZSIsICJyZWFkd3JpdGUiKTsKKyAg
ICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbigidmFsdWUiLCAicmVhZHdy
aXRlIik7CiAgICAgICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewog
ICAgICAgICAgICAgbG9nKCJFcnJvcjogIiArIGV2ZW50LnRhcmdldC5lcnJvci5uYW1lKTsKLSAg
ICAgICAgfQotICAgICAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQp
IHsgc3RvcmVUeXBlVmFsdWUoKTsgfQorICAgICAgICB9OworICAgICAgICB0cmFuc2FjdGlvbi5v
bmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsgc3RvcmVUeXBlVmFsdWUoKTsgfTsKIAotICAg
ICAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgidmFsdWUiKTsK
KyAgICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgidmFs
dWUiKTsKICAgICAgICAgLy8gSGVyZSB3ZSBzdG9yZSB2YWx1ZXMgaW4gdGhlIHRlc3QgbWF0cml4
IGluIG9yZGVyIGFuZCByZWFkIHRoZW0gaW4gb3JkZXIgdG8gc2VlIGlmIGFueSBtaXNtYXRjaCBo
YXBwZW5zLgotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RWYWx1ZXMubGVuZ3RoOyBp
KyspCisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGVzdFZhbHVlcy5sZW5ndGg7IGkrKykK
ICAgICAgICAgICAgIG9iamVjdFN0b3JlLmFkZCh0ZXN0VmFsdWVzW2ldKTsKICAgICB9CiAKICAg
ICBmdW5jdGlvbiBzdG9yZVR5cGVWYWx1ZSgpCiAgICAgewotICAgICAgICB2YXIgdHJhbnNhY3Rp
b24gPSBkYi50cmFuc2FjdGlvbigidHlwZVZhbHVlIiwgInJlYWR3cml0ZSIpOworICAgICAgICBj
b25zdCB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCJ0eXBlVmFsdWUiLCAicmVhZHdyaXRl
Iik7CiAgICAgICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewogICAg
ICAgICAgICAgbG9nKCJFcnJvcjogIiArIGV2ZW50LnRhcmdldC5lcnJvci5uYW1lKTsKLSAgICAg
ICAgfQotICAgICAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsg
cmVhZFR5cGUoKTsgfQorICAgICAgICB9OworICAgICAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRl
ID0gZnVuY3Rpb24oZXZlbnQpIHsgc3RvcmVDcnlwdG9LZXkoKTsgfTsKIAotICAgICAgICB2YXIg
b2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgidHlwZVZhbHVlIik7CisgICAg
ICAgIGNvbnN0IG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoInR5cGVWYWx1
ZSIpOwogICAgICAgICAvLyBIZXJlIHdlIHN0b3JlIGl0ZW1zIGluIHRoZSB0ZXN0IG1hdHJpeCBp
biBvcmRlciBhbmQgcmVhZCB0aGVtIGluIG9yZGVyIHRvIHNlZSBpZiBhbnkgbWlzbWF0Y2hlcyBp
dHMgdHlwZSBhbmQgdmFsdWUuCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdFR5cGVW
YWx1ZXMubGVuZ3RoOyBpKyspCisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGVzdFR5cGVW
YWx1ZXMubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICBvYmplY3RTdG9yZS5hZGQodGVzdFR5cGVW
YWx1ZXNbaV0uaXRlbSk7CiAgICAgfQogCi0gICAgdmFyIHJlc3VsdCA9IHRydWU7CisgICAgYXN5
bmMgZnVuY3Rpb24gc3RvcmVDcnlwdG9LZXkoKQorICAgIHsKKyAgICAgICAgY29uc3QgdHJhbnNh
Y3Rpb24gPSBkYi50cmFuc2FjdGlvbigiY3J5cHRvS2V5IiwgInJlYWR3cml0ZSIpOworICAgICAg
ICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGxv
ZygiRXJyb3I6ICIgKyBldmVudC50YXJnZXQuZXJyb3IubmFtZSk7CisgICAgICAgIH07CisgICAg
ICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeyByZWFkVHlwZSgp
OyB9OworCisgICAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3Rv
cmUoImNyeXB0b0tleSIpOworICAgICAgICAvLyBIZXJlIHdlIHN0b3JlIGl0ZW1zIGluIHRoZSB0
ZXN0IG1hdHJpeCBpbiBvcmRlciBhbmQgcmVhZCB0aGVtIGluIG9yZGVyIHRvIHNlZSBpZiBhbnkg
bWlzbWF0Y2hlcyBpdHMgdHlwZSBhbmQgdmFsdWUuCisgICAgICAgIGxldCBjcnlwdG9LZXkgPSBh
d2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgdGVzdENyeXB0b0tleVZhbHVlc1sw
XSwgImFlcy1jYmMiLCB0cnVlLCBbImVuY3J5cHQiLCAiZGVjcnlwdCIsICJ3cmFwS2V5IiwgInVu
d3JhcEtleSJdKTsKKyAgICAgICAgb2JqZWN0U3RvcmUuYWRkKGNyeXB0b0tleSk7CisgICAgICAg
IGNyeXB0b0tleSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCB0ZXN0Q3J5
cHRvS2V5VmFsdWVzWzFdLCB7IG5hbWU6ICJFQ0RTQSIsIG5hbWVkQ3VydmU6ICJQLTI1NiIgfSwg
dHJ1ZSwgWyd2ZXJpZnknXSk7CisgICAgICAgIG9iamVjdFN0b3JlLmFkZChjcnlwdG9LZXkpOwor
ICAgICAgICBjcnlwdG9LZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwg
dGVzdENyeXB0b0tleVZhbHVlc1syXSwgeyBuYW1lOiAiRUNEU0EiLCBuYW1lZEN1cnZlOiAiUC0y
NTYiIH0sIHRydWUsIFsic2lnbiJdKTsKKyAgICAgICAgb2JqZWN0U3RvcmUuYWRkKGNyeXB0b0tl
eSk7CisgICAgICAgIGNyeXB0b0tleSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJq
d2siLCB0ZXN0Q3J5cHRvS2V5VmFsdWVzWzNdLCB7bmFtZTogImhtYWMiLCBoYXNoOiAic2hhLTI1
NiJ9LCB0cnVlLCBbInNpZ24iLCAidmVyaWZ5Il0pOworICAgICAgICBvYmplY3RTdG9yZS5hZGQo
Y3J5cHRvS2V5KTsKKyAgICAgICAgY3J5cHRvS2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBv
cnRLZXkoImp3ayIsIHRlc3RDcnlwdG9LZXlWYWx1ZXNbNF0sIHtuYW1lOiAiUlNBLVBTUyIsIGhh
c2g6ICJTSEEtMjU2In0sIHRydWUsIFsidmVyaWZ5Il0pOworICAgICAgICBvYmplY3RTdG9yZS5h
ZGQoY3J5cHRvS2V5KTsKKyAgICAgICAgY3J5cHRvS2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5p
bXBvcnRLZXkoImp3ayIsIHRlc3RDcnlwdG9LZXlWYWx1ZXNbNV0sIHtuYW1lOiAiUlNBLVBTUyIs
IGhhc2g6ICJTSEEtMSJ9LCB0cnVlLCBbInNpZ24iXSk7CisgICAgICAgIG9iamVjdFN0b3JlLmFk
ZChjcnlwdG9LZXkpOworICAgIH0KKworICAgIGxldCByZXN1bHQgPSB0cnVlOwogICAgIGZ1bmN0
aW9uIHJlYWRUeXBlKCkKICAgICB7Ci0gICAgICAgIHZhciBvYmplY3RTdG9yZSA9IGRiLnRyYW5z
YWN0aW9uKCJ0eXBlIikub2JqZWN0U3RvcmUoInR5cGUiKTsKKyAgICAgICAgY29uc3Qgb2JqZWN0
U3RvcmUgPSBkYi50cmFuc2FjdGlvbigidHlwZSIpLm9iamVjdFN0b3JlKCJ0eXBlIik7CiAgICAg
ICAgIG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkg
ewogICAgICAgICAgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAgICAgICAgICAg
IGlmIChjdXJzb3IpIHsKQEAgLTE0MSw3ICsxOTAsNyBAQAogCiAgICAgZnVuY3Rpb24gcmVhZFZh
bHVlKCkKICAgICB7Ci0gICAgICAgIHZhciBvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCJ2
YWx1ZSIpLm9iamVjdFN0b3JlKCJ2YWx1ZSIpOworICAgICAgICBjb25zdCBvYmplY3RTdG9yZSA9
IGRiLnRyYW5zYWN0aW9uKCJ2YWx1ZSIpLm9iamVjdFN0b3JlKCJ2YWx1ZSIpOwogICAgICAgICBv
YmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKICAg
ICAgICAgICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CiAgICAgICAgICAgICBpZiAo
Y3Vyc29yKSB7CkBAIC0xNTQsMTIgKzIwMywyNyBAQAogCiAgICAgZnVuY3Rpb24gcmVhZFR5cGVW
YWx1ZSgpCiAgICAgewotICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigi
dHlwZVZhbHVlIikub2JqZWN0U3RvcmUoInR5cGVWYWx1ZSIpOworICAgICAgICBjb25zdCBvYmpl
Y3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCJ0eXBlVmFsdWUiKS5vYmplY3RTdG9yZSgidHlwZVZh
bHVlIik7CiAgICAgICAgIG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKS5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbihldmVudCkgewogICAgICAgICAgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsK
ICAgICAgICAgICAgIGlmIChjdXJzb3IpIHsKICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1
bHQgJiYgc2hvdWxkQmVUeXBlKCJjdXJzb3IudmFsdWUiLCB0ZXN0VHlwZVZhbHVlc1tjdXJzb3Iu
a2V5IC0gMV0udHlwZSkgJiYgKGN1cnNvci52YWx1ZSA9PSB0ZXN0VHlwZVZhbHVlc1tjdXJzb3Iu
a2V5IC0gMV0udmFsdWUpOwogICAgICAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZWFkQ3J5cHRvS2V5KCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgYXN5bmMgZnVuY3Rpb24gcmVhZENy
eXB0b0tleSgpCisgICAgeworICAgICAgICBjb25zdCBvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0
aW9uKCJjcnlwdG9LZXkiKS5vYmplY3RTdG9yZSgiY3J5cHRvS2V5Iik7CisgICAgICAgIG9iamVj
dFN0b3JlLm9wZW5DdXJzb3IoKS5vbnN1Y2Nlc3MgPSBhc3luYyBmdW5jdGlvbihldmVudCkgewor
ICAgICAgICAgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgIGlm
IChjdXJzb3IpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBqd2tLZXkgPSBhd2FpdCBjcnlwdG8u
c3VidGxlLmV4cG9ydEtleSgiandrIiwgY3Vyc29yLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQgPSByZXN1bHQgJiYgc2hvdWxkQmVDcnlwdG9LZXkoandrS2V5LCB0ZXN0Q3J5cHRvS2V5
VmFsdWVzW2N1cnNvci5rZXkgLSAxXSk7CisgICAgICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVl
KCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAg
ICAgICAgICAgICAgICAgICAgIGxvZygiUGFzcyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI4OWRkMGE3YWRjMjY5ZDZl
YTU4YzJiNWI4ZTk3YzRlNDNlNTAwZDIuLmEwNGM1MTllMjAxZDc4MzFiYWM0ZDkxMTYwNmQxZjY1
NGUwNmU4NjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxOS0xMC0wMiAgSmlld2VuIFRhbiAg
PGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIE9ubHkgd3JhcHBpbmcgQ3J5cHRvS2V5
cyBmb3IgSURCIGR1cmluZyBzZXJpYWxpemF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1MDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUy
NDQ1OTI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZHMgYSBuZXcgdGVzdCBhZXMtaW5kZXhlZGRiLmh0bWwgdG8gZG8gaWRiIGluIHdvcmtlcnMg
YW5kIG1ha2VzCisgICAgICAgIG90aGVyIHRlc3RzIG1vcmUgZGV0ZXJtaW5pc3RpYy4KKworICAg
ICAgICAqIGNyeXB0by93b3JrZXJzL3N1YnRsZS9hZXMtaW5kZXhlZGRiLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogY3J5cHRvL3dvcmtlcnMvc3VidGxlL2Flcy1pbmRleGVkZGIuaHRt
bDogQWRkZWQuCisgICAgICAgICogY3J5cHRvL3dvcmtlcnMvc3VidGxlL2VjLXBvc3RNZXNzYWdl
LXdvcmtlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogY3J5cHRvL3dvcmtlcnMvc3VidGxlL2Vj
LXBvc3RNZXNzYWdlLXdvcmtlci5odG1sOgorICAgICAgICAqIGNyeXB0by93b3JrZXJzL3N1YnRs
ZS9ocnNhLXBvc3RNZXNzYWdlLXdvcmtlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogY3J5cHRv
L3dvcmtlcnMvc3VidGxlL2hyc2EtcG9zdE1lc3NhZ2Utd29ya2VyLmh0bWw6CisgICAgICAgICog
Y3J5cHRvL3dvcmtlcnMvc3VidGxlL3Jlc291cmNlcy9hZXMtaW5kZXhlZGRiLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvcnNhLXBvc3RNZXNzYWdlLXdvcmtlci1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogY3J5cHRvL3dvcmtlcnMvc3VidGxlL3JzYS1wb3N0TWVz
c2FnZS13b3JrZXIuaHRtbDoKKwogMjAxOS0xMC0wMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNDU2NzIpOiA8c2VsZWN0
PiBkcm9wZG93biB3aXRoIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHkgZnJlZXpl
cyBTYWZhcmkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9h
ZXMtaW5kZXhlZGRiLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1
YnRsZS9hZXMtaW5kZXhlZGRiLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZmIyMTYwMjdiZTAx
YzYyM2IyNDQ2OGM4ZjU4YTg0ZTdiYjVhN2ViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL2Flcy1pbmRleGVkZGItZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTYgQEAKK1tXb3JrZXJdIFRlc3QgZ2VuZXJhdGluZyBhbiBBRVMga2V5IHVzaW5nIEFF
Uy1DQkMgYWxnb3JpdGhtIGluIHdvcmtlcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitTdGFydGluZyB3b3JrZXI6IHJlc291cmNlcy9hZXMtaW5kZXhlZGRiLmpzCitbV29ya2Vy
XSBJbXBvcnRpbmcgYSBrZXkuLi4KK1BBU1MgW1dvcmtlcl0gcmV0cmlldmVkS2V5LnR5cGUgaXMg
J3NlY3JldCcKK1BBU1MgW1dvcmtlcl0gcmV0cmlldmVkS2V5LmV4dHJhY3RhYmxlIGlzIHRydWUK
K1BBU1MgW1dvcmtlcl0gcmV0cmlldmVkS2V5LmFsZ29yaXRobS5uYW1lIGlzICdBRVMtQ0JDJwor
UEFTUyBbV29ya2VyXSByZXRyaWV2ZWRLZXkuYWxnb3JpdGhtLmxlbmd0aCBpcyAxMjgKK1BBU1Mg
W1dvcmtlcl0gcmV0cmlldmVkS2V5LnVzYWdlcyBpcyBbJ2RlY3J5cHQnLCAnZW5jcnlwdCcsICd1
bndyYXBLZXknLCAnd3JhcEtleSddCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMv
c3VidGxlL2Flcy1pbmRleGVkZGIuaHRtbCBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1
YnRsZS9hZXMtaW5kZXhlZGRiLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTc4MmU3NGRiMGFmMTMyZDE4NDIy
YzFiY2Q3M2U5MmYzNGNkMmQwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NyeXB0
by93b3JrZXJzL3N1YnRsZS9hZXMtaW5kZXhlZGRiLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0PgorICAgIHdvcmtlciA9IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvYWVzLWluZGV4ZWRkYi5q
cycpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvZWMtcG9zdE1lc3NhZ2Utd29ya2VyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9lYy1wb3N0TWVzc2FnZS13
b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IDc1YmM3OWVlN2FlMzBmN2JhNWY5OTU3NDcwMDJiYjgw
YWZiOWI0NmMuLjJmOWIzYTA2ZmUzMzEzZWFmZDQwZjdiYzQ1NDRkMGNiNTAxMDc4ZDAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9lYy1wb3N0TWVzc2FnZS13
b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRs
ZS9lYy1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0zLDYgKzMsMTQgQEAgVGVz
dCBzZW5kaW5nIGVjIGNyeXB0byBrZXlzIHZpYSBwb3N0TWVzc2FnZSB0byBhIHdvcmtlci4KIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitQQVNTIEFsbCBjaGVja3MgcGFzc2VkIGluIHdv
cmtlciBmb3IgcHVibGljIGtleQorUEFTUyBwdWJsaWNLZXkudHlwZSBpcyAncHVibGljJworUEFT
UyBwdWJsaWNLZXkuZXh0cmFjdGFibGUgaXMgdHJ1ZQorUEFTUyBwdWJsaWNLZXkuYWxnb3JpdGht
Lm5hbWUgaXMgJ0VDREgnCitQQVNTIHB1YmxpY0tleS5hbGdvcml0aG0ubmFtZWRDdXJ2ZSBpcyAn
UC0yNTYnCitQQVNTIHB1YmxpY0tleS51c2FnZXMgaXMgWyBdCitQQVNTIGV4cG9ydGVkS2V5Lngg
aXMgcHVibGljS2V5SlNPTi54CitQQVNTIGV4cG9ydGVkS2V5LnkgaXMgcHVibGljS2V5SlNPTi55
CiBQQVNTIEFsbCBjaGVja3MgcGFzc2VkIGluIHdvcmtlciBmb3IgcHJpdmF0ZSBrZXkKIFBBU1Mg
cHJpdmF0ZUtleS50eXBlIGlzICdwcml2YXRlJwogUEFTUyBwcml2YXRlS2V5LmV4dHJhY3RhYmxl
IGlzIHRydWUKQEAgLTEyLDE0ICsyMCw2IEBAIFBBU1MgcHJpdmF0ZUtleS51c2FnZXMgaXMgWydk
ZXJpdmVCaXRzJ10KIFBBU1MgZXhwb3J0ZWRLZXkueCBpcyBwcml2YXRlS2V5SlNPTi54CiBQQVNT
IGV4cG9ydGVkS2V5LnkgaXMgcHJpdmF0ZUtleUpTT04ueQogUEFTUyBleHBvcnRlZEtleS5kIGlz
IHByaXZhdGVLZXlKU09OLmQKLVBBU1MgQWxsIGNoZWNrcyBwYXNzZWQgaW4gd29ya2VyIGZvciBw
dWJsaWMga2V5Ci1QQVNTIHB1YmxpY0tleS50eXBlIGlzICdwdWJsaWMnCi1QQVNTIHB1YmxpY0tl
eS5leHRyYWN0YWJsZSBpcyB0cnVlCi1QQVNTIHB1YmxpY0tleS5hbGdvcml0aG0ubmFtZSBpcyAn
RUNESCcKLVBBU1MgcHVibGljS2V5LmFsZ29yaXRobS5uYW1lZEN1cnZlIGlzICdQLTI1NicKLVBB
U1MgcHVibGljS2V5LnVzYWdlcyBpcyBbIF0KLVBBU1MgZXhwb3J0ZWRLZXkueCBpcyBwdWJsaWNL
ZXlKU09OLngKLVBBU1MgZXhwb3J0ZWRLZXkueSBpcyBwdWJsaWNLZXlKU09OLnkKIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL2VjLXBvc3RNZXNzYWdlLXdvcmtlci5odG1s
IGIvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL2VjLXBvc3RNZXNzYWdlLXdvcmtl
ci5odG1sCmluZGV4IDRhMTY2NjZkZmIyNDY5YTU0YTY0ZWM2MTRlYmYxNWQ1MTQ0MDE4MTIuLjVm
OTEwMzdhYjFhOGY3NDg3MTY5NWU4MTdlNTdkNGRkZGU0NjY0ZjYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9lYy1wb3N0TWVzc2FnZS13b3JrZXIuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvZWMtcG9zdE1lc3NhZ2Utd29y
a2VyLmh0bWwKQEAgLTgxLDkgKzgxLDkgQEAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2
dCkgewogCiBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgcHVibGljS2V5SlNPTiwgeyBu
YW1lOiJFQ0RIIiwgbmFtZWRDdXJ2ZToiUC0yNTYiIH0sIHRydWUsIFsgXSkudGhlbihmdW5jdGlv
bihsb2NhbFB1YmxpY0tleSkgewogICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7IHB1YmxpY0tleTog
bG9jYWxQdWJsaWNLZXkgfSk7Ci19KTsKLWNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBw
cml2YXRlS2V5SlNPTiwgeyBuYW1lOiJFQ0RIIiwgbmFtZWRDdXJ2ZToiUC0yNTYiIH0sIHRydWUs
IFsnZGVyaXZlQml0cyddKS50aGVuKGZ1bmN0aW9uKGxvY2FsUHJpdmF0ZUtleSkgewotICAgIHdv
cmtlci5wb3N0TWVzc2FnZSh7IHByaXZhdGVLZXk6IGxvY2FsUHJpdmF0ZUtleSB9KTsKKyAgICBj
cnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgcHJpdmF0ZUtleUpTT04sIHsgbmFtZToiRUNE
SCIsIG5hbWVkQ3VydmU6IlAtMjU2IiB9LCB0cnVlLCBbJ2Rlcml2ZUJpdHMnXSkudGhlbihmdW5j
dGlvbihsb2NhbFByaXZhdGVLZXkpIHsKKyAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsgcHJp
dmF0ZUtleTogbG9jYWxQcml2YXRlS2V5IH0pOworICAgIH0pOwogfSk7CiA8L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RN
ZXNzYWdlLXdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9z
dWJ0bGUvaHJzYS1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IDBlZDc0Zjlm
ZmY0Y2MxZmYyYjJhNTFlZjAyM2QyYWQwM2ZjYjY4NmYuLjZlMWQ2ZmU1MzA4MjdkNDlmOGVjOWY2
NmY2MTcxMjI0NzM0YTMyZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJz
L3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL2hyc2EtcG9zdE1lc3NhZ2Utd29ya2VyLWV4cGVj
dGVkLnR4dApAQCAtMywxNCArMyw2IEBAIFRlc3Qgc2VuZGluZyBoYXNoZWQgcnNhIGNyeXB0byBr
ZXlzIHZpYSBwb3N0TWVzc2FnZSB0byBhIHdvcmtlci4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KIAogCi1QQVNTIEFsbCBjaGVja3MgcGFzc2VkIGluIHdvcmtlciBmb3IgcHJpdmF0ZSBrZXkK
LVBBU1MgcHJpdmF0ZUtleS50eXBlIGlzICdwcml2YXRlJwotUEFTUyBwcml2YXRlS2V5LmV4dHJh
Y3RhYmxlIGlzIGZhbHNlCi1QQVNTIHByaXZhdGVLZXkuYWxnb3JpdGhtLm5hbWUgaXMgJ1JTQVNT
QS1QS0NTMS12MV81JwotUEFTUyBwcml2YXRlS2V5LmFsZ29yaXRobS5tb2R1bHVzTGVuZ3RoIGlz
IDIwNDgKLVBBU1MgYnl0ZXNUb0hleFN0cmluZyhwcml2YXRlS2V5LmFsZ29yaXRobS5wdWJsaWNF
eHBvbmVudCkgaXMgJzAxMDAwMScKLVBBU1MgcHJpdmF0ZUtleS5hbGdvcml0aG0uaGFzaC5uYW1l
IGlzICdTSEEtMjU2JwotUEFTUyBwcml2YXRlS2V5LnVzYWdlcyBpcyBbJ3NpZ24nXQogUEFTUyBB
bGwgY2hlY2tzIHBhc3NlZCBpbiB3b3JrZXIgZm9yIHB1YmxpYyBrZXkKIFBBU1MgcHVibGljS2V5
LnR5cGUgaXMgJ3B1YmxpYycKIFBBU1MgcHVibGljS2V5LmV4dHJhY3RhYmxlIGlzIHRydWUKQEAg
LTE5LDYgKzExLDE0IEBAIFBBU1MgcHVibGljS2V5LmFsZ29yaXRobS5tb2R1bHVzTGVuZ3RoIGlz
IDIwNDgKIFBBU1MgYnl0ZXNUb0hleFN0cmluZyhwdWJsaWNLZXkuYWxnb3JpdGhtLnB1YmxpY0V4
cG9uZW50KSBpcyAnMDEwMDAxJwogUEFTUyBwdWJsaWNLZXkuYWxnb3JpdGhtLmhhc2gubmFtZSBp
cyAnU0hBLTI1NicKIFBBU1MgcHVibGljS2V5LnVzYWdlcyBpcyBbJ3ZlcmlmeSddCitQQVNTIEFs
bCBjaGVja3MgcGFzc2VkIGluIHdvcmtlciBmb3IgcHJpdmF0ZSBrZXkKK1BBU1MgcHJpdmF0ZUtl
eS50eXBlIGlzICdwcml2YXRlJworUEFTUyBwcml2YXRlS2V5LmV4dHJhY3RhYmxlIGlzIGZhbHNl
CitQQVNTIHByaXZhdGVLZXkuYWxnb3JpdGhtLm5hbWUgaXMgJ1JTQVNTQS1QS0NTMS12MV81Jwor
UEFTUyBwcml2YXRlS2V5LmFsZ29yaXRobS5tb2R1bHVzTGVuZ3RoIGlzIDIwNDgKK1BBU1MgYnl0
ZXNUb0hleFN0cmluZyhwcml2YXRlS2V5LmFsZ29yaXRobS5wdWJsaWNFeHBvbmVudCkgaXMgJzAx
MDAwMScKK1BBU1MgcHJpdmF0ZUtleS5hbGdvcml0aG0uaGFzaC5uYW1lIGlzICdTSEEtMjU2Jwor
UEFTUyBwcml2YXRlS2V5LnVzYWdlcyBpcyBbJ3NpZ24nXQogUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jcnlw
dG8vd29ya2Vycy9zdWJ0bGUvaHJzYS1wb3N0TWVzc2FnZS13b3JrZXIuaHRtbCBiL0xheW91dFRl
c3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdvcmtlci5odG1sCmlu
ZGV4IDdhNDM1ZmU1ZWUzNGY0OTM0MmQ5MjZkN2FiM2FiN2UxYzdjYmI5OGQuLmU5ZWQ4YzkyZTAz
MDdlMDgzZjljNDY3MThkYWI5YmJjZTVhNDQwZGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Ny
eXB0by93b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdvcmtlci5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdvcmtlci5o
dG1sCkBAIC03NSw5ICs3NSw5IEBAIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsK
IAogY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIHB1YmxpY0tleUpTT04sIGFsZ29yaXRo
bUtleUdlbiwgdHJ1ZSwgWyd2ZXJpZnknXSkudGhlbihmdW5jdGlvbihsb2NhbFB1YmxpY0tleSkg
ewogICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7IHB1YmxpY0tleTogbG9jYWxQdWJsaWNLZXkgfSk7
Ci19KTsKLWNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBwcml2YXRlS2V5SlNPTiwgYWxn
b3JpdGhtS2V5R2VuLCBmYWxzZSwgWydzaWduJ10pLnRoZW4oZnVuY3Rpb24obG9jYWxQcml2YXRl
S2V5KSB7Ci0gICAgd29ya2VyLnBvc3RNZXNzYWdlKHsgcHJpdmF0ZUtleTogbG9jYWxQcml2YXRl
S2V5IH0pOworICAgIGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBwcml2YXRlS2V5SlNP
TiwgYWxnb3JpdGhtS2V5R2VuLCBmYWxzZSwgWydzaWduJ10pLnRoZW4oZnVuY3Rpb24obG9jYWxQ
cml2YXRlS2V5KSB7CisgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7IHByaXZhdGVLZXk6IGxv
Y2FsUHJpdmF0ZUtleSB9KTsKKyAgICB9KTsKIH0pOwogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvcmVzb3VyY2VzL2Flcy1pbmRleGVk
ZGIuanMgYi9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvcmVzb3VyY2VzL2Flcy1p
bmRleGVkZGIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJkOGRjOWI4ODllMDgxZTgxNmM1Y2FiMjhkOGFjNzQ2
NTg3YmRhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1
YnRsZS9yZXNvdXJjZXMvYWVzLWluZGV4ZWRkYi5qcwpAQCAtMCwwICsxLDUxIEBACitpbXBvcnRT
Y3JpcHRzKCcuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKworZGVzY3Jp
cHRpb24oIlRlc3QgZ2VuZXJhdGluZyBhbiBBRVMga2V5IHVzaW5nIEFFUy1DQkMgYWxnb3JpdGht
IGluIHdvcmtlcnMuIik7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworY29uc3QgandrS2V5ID0g
eyBrdHk6ICJvY3QiLCBrOiAiWVdKalpHVm1aMmd4TWpNME5UWTNPQSIsIGFsZzogIkExMjhDQkMi
LCB1c2U6ICJlbmMiLCBrZXlfb3BzOiBbJ2RlY3J5cHQnLCAnZW5jcnlwdCcsICd1bndyYXBLZXkn
LCAnd3JhcEtleSddLCBleHQ6IHRydWUgfTsKKworZGVidWcoIkltcG9ydGluZyBhIGtleS4uLiIp
OworY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIGp3a0tleSwgImFlcy1jYmMiLCB0cnVl
LCBbImVuY3J5cHQiLCAiZGVjcnlwdCIsICJ3cmFwS2V5IiwgInVud3JhcEtleSJdKS50aGVuKGZ1
bmN0aW9uKGtleSkgeworICAgIGNvbnN0IG9wZW5SZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oImNy
eXB0b19zdWJ0bGUiKTsKKyAgICBvcGVuUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlv
bihldmVudCkgeworICAgICAgICBldmVudC50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3Jl
KCJhZXMtaW5kZXhlZGRiIik7CisgICAgfTsKKyAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IG9wZW4gZGF0YWJh
c2U6ICIgKyBldmVudC50YXJnZXQuZXJyb3IubmFtZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgIH07CisgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICAgICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICBzdG9yZUtleSgpOwor
ICAgIH07CisKKyAgICBmdW5jdGlvbiBzdG9yZUtleSgpIHsKKyAgICAgICAgY29uc3Qgb2JqZWN0
U3RvcmUgPSBkYi50cmFuc2FjdGlvbigiYWVzLWluZGV4ZWRkYiIsICJyZWFkd3JpdGUiKS5vYmpl
Y3RTdG9yZSgiYWVzLWluZGV4ZWRkYiIpOworICAgICAgICBjb25zdCByZXEgPSBvYmplY3RTdG9y
ZS5wdXQoa2V5LCAibXlLZXkiKTsKKyAgICAgICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IHB1dCBhIGtleSBpbnRvIGRh
dGFiYXNlOiAiICsgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUpOworICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsgcmVhZEtleSgpOyB9CisgICAgfQorCisgICAgZnVuY3Rpb24gcmVhZEtleSgpIHsKKyAgICAg
ICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigiYWVzLWluZGV4ZWRkYiIpLm9i
amVjdFN0b3JlKCJhZXMtaW5kZXhlZGRiIik7CisgICAgICAgIGNvbnN0IHJlcSA9IG9iamVjdFN0
b3JlLmdldCgibXlLZXkiKTsKKyAgICAgICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkg
eworICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGdldCBhIGtleSBmcm9tIGRhdGFi
YXNlOiAiICsgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUpOworICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICAgICAgcmV0cmlldmVkS2V5ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJyZXRyaWV2ZWRLZXkudHlwZSIsICInc2VjcmV0JyIpOworICAg
ICAgICAgICAgc2hvdWxkQmUoInJldHJpZXZlZEtleS5leHRyYWN0YWJsZSIsICJ0cnVlIik7Cisg
ICAgICAgICAgICBzaG91bGRCZSgicmV0cmlldmVkS2V5LmFsZ29yaXRobS5uYW1lIiwgIidBRVMt
Q0JDJyIpOworICAgICAgICAgICAgc2hvdWxkQmUoInJldHJpZXZlZEtleS5hbGdvcml0aG0ubGVu
Z3RoIiwgIjEyOCIpOworICAgICAgICAgICAgc2hvdWxkQmUoInJldHJpZXZlZEtleS51c2FnZXMi
LCAiWydkZWNyeXB0JywgJ2VuY3J5cHQnLCAndW53cmFwS2V5JywgJ3dyYXBLZXknXSIpOworCisg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorICAgIH0KK30pOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL3JzYS1wb3N0TWVzc2FnZS13
b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL3Jz
YS1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IDBjMzk3OTAwZmJlZTljOTMy
OTk2ODZmZDAzNWQ0ZDdiNGI4NWM4OTguLjYxOTIxYzQyMTQ4MjIzMjJmODYzZGJiYjJiY2ZjM2Nj
YzcxMGRkMWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9y
c2EtcG9zdE1lc3NhZ2Utd29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9jcnlw
dG8vd29ya2Vycy9zdWJ0bGUvcnNhLXBvc3RNZXNzYWdlLXdvcmtlci1leHBlY3RlZC50eHQKQEAg
LTMsNiArMywxNiBAQCBUZXN0IHNlbmRpbmcgcnNhIGNyeXB0byBrZXlzIHZpYSBwb3N0TWVzc2Fn
ZSB0byBhIHdvcmtlci4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitQQVNTIEFsbCBj
aGVja3MgcGFzc2VkIGluIHdvcmtlciBmb3IgcHVibGljIGtleQorUEFTUyBwdWJsaWNLZXkudHlw
ZSBpcyAncHVibGljJworUEFTUyBwdWJsaWNLZXkuZXh0cmFjdGFibGUgaXMgdHJ1ZQorUEFTUyBw
dWJsaWNLZXkuYWxnb3JpdGhtLm5hbWUgaXMgJ1JTQUVTLVBLQ1MxLXYxXzUnCitQQVNTIHB1Ymxp
Y0tleS5hbGdvcml0aG0ubW9kdWx1c0xlbmd0aCBpcyAyMDQ4CitQQVNTIGJ5dGVzVG9IZXhTdHJp
bmcocHVibGljS2V5LmFsZ29yaXRobS5wdWJsaWNFeHBvbmVudCkgaXMgJzAxMDAwMScKK1BBU1Mg
cHVibGljS2V5LmFsZ29yaXRobS5oYXNoIGlzIHVuZGVmaW5lZC4KK1BBU1MgcHVibGljS2V5LnVz
YWdlcyBpcyBbJ2VuY3J5cHQnXQorUEFTUyBleHBvcnRlZEtleS5uIGlzIHB1YmxpY0tleUpTT04u
bgorUEFTUyBleHBvcnRlZEtleS5lIGlzIHB1YmxpY0tleUpTT04uZQogUEFTUyBBbGwgY2hlY2tz
IHBhc3NlZCBpbiB3b3JrZXIgZm9yIHByaXZhdGUga2V5CiBQQVNTIHByaXZhdGVLZXkudHlwZSBp
cyAncHJpdmF0ZScKIFBBU1MgcHJpdmF0ZUtleS5leHRyYWN0YWJsZSBpcyB0cnVlCkBAIC0xOSwx
NiArMjksNiBAQCBQQVNTIGV4cG9ydGVkS2V5LnEgaXMgcHJpdmF0ZUtleUpTT04ucQogUEFTUyBl
eHBvcnRlZEtleS5kcCBpcyBwcml2YXRlS2V5SlNPTi5kcAogUEFTUyBleHBvcnRlZEtleS5kcSBp
cyBwcml2YXRlS2V5SlNPTi5kcQogUEFTUyBleHBvcnRlZEtleS5xaSBpcyBwcml2YXRlS2V5SlNP
Ti5xaQotUEFTUyBBbGwgY2hlY2tzIHBhc3NlZCBpbiB3b3JrZXIgZm9yIHB1YmxpYyBrZXkKLVBB
U1MgcHVibGljS2V5LnR5cGUgaXMgJ3B1YmxpYycKLVBBU1MgcHVibGljS2V5LmV4dHJhY3RhYmxl
IGlzIHRydWUKLVBBU1MgcHVibGljS2V5LmFsZ29yaXRobS5uYW1lIGlzICdSU0FFUy1QS0NTMS12
MV81JwotUEFTUyBwdWJsaWNLZXkuYWxnb3JpdGhtLm1vZHVsdXNMZW5ndGggaXMgMjA0OAotUEFT
UyBieXRlc1RvSGV4U3RyaW5nKHB1YmxpY0tleS5hbGdvcml0aG0ucHVibGljRXhwb25lbnQpIGlz
ICcwMTAwMDEnCi1QQVNTIHB1YmxpY0tleS5hbGdvcml0aG0uaGFzaCBpcyB1bmRlZmluZWQuCi1Q
QVNTIHB1YmxpY0tleS51c2FnZXMgaXMgWydlbmNyeXB0J10KLVBBU1MgZXhwb3J0ZWRLZXkubiBp
cyBwdWJsaWNLZXlKU09OLm4KLVBBU1MgZXhwb3J0ZWRLZXkuZSBpcyBwdWJsaWNLZXlKU09OLmUK
IFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL3JzYS1wb3N0TWVzc2FnZS13
b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9yc2EtcG9zdE1l
c3NhZ2Utd29ya2VyLmh0bWwKaW5kZXggNGY1NTFlYTNhMWNhYjhkZTMzODk0YTFjYTgwZDdhZTEw
NDZlZjI4Yy4uMjJiOWFkMDdiNWQyODYxYjE1NzQ4YTBjMGFiNjk2Y2E4ZmE2MmZiMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL3JzYS1wb3N0TWVzc2FnZS13
b3JrZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvcnNhLXBv
c3RNZXNzYWdlLXdvcmtlci5odG1sCkBAIC05OCw5ICs5OCw5IEBAIHdvcmtlci5vbm1lc3NhZ2Ug
PSBmdW5jdGlvbihldnQpIHsKIAogY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIHB1Ymxp
Y0tleUpTT04sIGFsZ29yaXRobUtleUdlbiwgdHJ1ZSwgWydlbmNyeXB0J10pLnRoZW4oZnVuY3Rp
b24obG9jYWxQdWJsaWNLZXkpIHsKICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoeyBwdWJsaWNLZXk6
IGxvY2FsUHVibGljS2V5IH0pOwotfSk7Ci1jcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwg
cHJpdmF0ZUtleUpTT04sIGFsZ29yaXRobUtleUdlbiwgdHJ1ZSwgWydkZWNyeXB0J10pLnRoZW4o
ZnVuY3Rpb24obG9jYWxQcml2YXRlS2V5KSB7Ci0gICAgd29ya2VyLnBvc3RNZXNzYWdlKHsgcHJp
dmF0ZUtleTogbG9jYWxQcml2YXRlS2V5IH0pOworICAgIGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5
KCJqd2siLCBwcml2YXRlS2V5SlNPTiwgYWxnb3JpdGhtS2V5R2VuLCB0cnVlLCBbJ2RlY3J5cHQn
XSkudGhlbihmdW5jdGlvbihsb2NhbFByaXZhdGVLZXkpIHsKKyAgICAgICAgd29ya2VyLnBvc3RN
ZXNzYWdlKHsgcHJpdmF0ZUtleTogbG9jYWxQcml2YXRlS2V5IH0pOworICAgIH0pOwogfSk7CiA8
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380305</attachid>
            <date>2019-10-06 18:13:59 -0700</date>
            <delta_ts>2019-10-07 12:54:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202500-20191006181358.patch</filename>
            <type>text/plain</type>
            <size>64365</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODYzMWQwN2UxZjAyODk1
ZmZiZDY4MjdiNThjNzMzZjVhOTk0ODAzZC4uYzBmZTMzNzViOGFkZTc4Y2FmYjc1YzA4YTcwNDU3
NzE1NjU1YTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE5LTEwLTAyICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgT25seSB3cmFwcGluZyBD
cnlwdG9LZXlzIGZvciBJREIgZHVyaW5nIHNlcmlhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjUwMAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTI0NDU5Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV3JhcHBpbmcgQ3J5cHRvS2V5cyBkdXJpbmcgSURCIHNlcmlhbGl6YXRpb24gaXMg
YSBsZWdhY3kgcmVxdWVzdCBmcm9tIE5ldGZsaXggd2hlbiBXZWJLaXQgd2FzIGFuCisgICAgICAg
IGVhcmx5IGFkb3B0ZXIuIEl0IGlzIG5vdCBuZWNlc3NhcnkgZm9yIG90aGVyIGtpbmRzIG9mIHNl
cmlhbGl6YXRpb24uIEhvd2V2ZXIsIGdpdmVuIGV4aXN0aW5nIGtleXMKKyAgICAgICAgc3RvcmVk
IGluIHVzZXJzJyBpZGIgYXJlIHdyYXBwZWQsIHRoZSB3cmFwcGluZy91bndyYXBwaW5nIG1lY2hh
bmlzbSBjYW5ub3QgYmUgZWFzaWx5IGRpc2NhcmRlZC4KKyAgICAgICAgVGhlcmVmb3JlLCB0aGlz
IHBhdGNoIHJlc3RyaWN0cyB0aGUgd3JhcHBpbmcvdW53cmFwcGluZyBtZWNoYW5pc20gdG8gaWRi
IG9ubHkuCisKKyAgICAgICAgVG8gZG8gc28sIGEgaXNXcmFwcGluZ1JlcXVpcmVkIGZsYWcgaXMg
YWRkZWQgdG8gQ3J5cHRvS2V5IHN1Y2ggdGhhdCB3aGVuZXZlciBpZGIgc2VlcyBhIENyeXB0b0tl
eSwKKyAgICAgICAgaXQgY2FuIHNldCBpdC4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIHdpbGwgdGhl
biBvbmx5IHdyYXAgYSBDcnlwdG9LZXkgd2hlbiB0aGlzIGZsYWcgaXMgc2V0LiBPdGhlcndpc2Us
CisgICAgICAgIGEgbmV3IHRhZyBVbndyYXBwZWRDcnlwdG9LZXlUYWcgaXMgdXNlZCB0byBzdG9y
ZSB1bndyYXBwZWQgQ3J5cHRvS2V5cyBpbiBvcmRlciB0byBrZWVwIHRoZSBvbGQgQ3J5cHRvS2V5
VGFnCisgICAgICAgIGJpbmFyaWVzIGludGFjdC4gRm9yIGRlc2VyaWFsaXphdGlvbiwgZWFjaCB0
eXBlIHdpbGwgYmUgZGVzZXJpYWxpemVkIGRpZmZlcmVudGx5LgorCisgICAgICAgIEJlc2lkZXMg
dGhlIGFib3ZlLCB0aGlzIHBhdGNoIGFsc28gaGFyZGVucyBXb3JrZXJHbG9iYWxTY29wZTo6d3Jh
cENyeXB0b0tleS91bndyYXBDcnlwdG9LZXkgZm9yCisgICAgICAgIGFueSBwb3RlbnRpYWwgcmFj
eSBpc3N1ZXMuIENyeXB0b0Jvb2xlYW5Db250YWluZXIgaXMgaW50cm9kdWNlZCB0byBjYXB0dXJl
IGJvb2xlYW4gaW4gdGhlIGxhbWJkYS4KKyAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUgaXMgcmVw
bGFjZWQgd2l0aCB3b3JrZXJNZXNzYWdpbmdQcm94eS4gTm93LCBldmVyeSB2YXJpYWJsZXMgY2Fw
dHVyZWQgaW4gdGhlIGxhbWJkYXMKKyAgICAgICAgc2hvdWxkIGJlIGVpdGhlciBhIGNvcHkgb3Ig
YSB0aHJlYWQgc2FmZSByZWYgb2YgdGhlIG9yaWdpbmFsIG9iamVjdC4KKworICAgICAgICBUZXN0
OiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvYWVzLWluZGV4ZWRkYi5odG1sCisKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0M6OnNldElzV3JhcHBpbmdSZXF1aXJlZEZvckNyeXB0b0tleSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZTo6cHV0T3JBZGQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6
OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpy
ZWFkVGVybWluYWwpOgorICAgICAgICAqIGNyeXB0by9DcnlwdG9LZXkuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0tleTo6aXNXcmFwcGluZ1JlcXVpcmVkIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0tleTo6c2V0SXNXcmFwcGluZ1JlcXVpcmVkKToKKyAgICAgICAgKiBkb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQm9vbGVhbkNvbnRhaW5lcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Jvb2xlYW5Db250YWluZXI6OmJvb2xlYW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQm9vbGVhbkNvbnRhaW5lcjo6c2V0Qm9v
bGVhbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6d3JhcENyeXB0b0tl
eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6dW53cmFwQ3J5cHRvS2V5
KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTG9hZGVy
UHJveHk6OmlzV29ya2VyTWVzc2FnaW5nUHJveHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyTWVzc2FnaW5nUHJveHkuaDoKKyAgICAgICAgKGlzVHlwZSk6CisKIDIwMTktMTAtMDQg
IEhlaWtvIEJlY2tlciAgPGhlaXJlY2thQGV4aGVyYm8ub3JnPgogCiAgICAgICAgIEZpeCBidWls
ZCB3aXRoIGljdSA2NS4xCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggYTU5N2FjMTliNjNiODg4YzEyMmY5MjgzYTdkY2Ey
ZWY5NzRmZWUyMC4uMGJkZGVmNWI5ODE4ZDcwM2M0ZGE4M2VhNWY4OTU0ZjJiNzZkYTJjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmNwcApAQCAtNTEsOSArNTEsMjYgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1Zh
bHVlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KIAorI2lmIEVOQUJMRShXRUJf
Q1JZUFRPKQorI2luY2x1ZGUgIkpTQ3J5cHRvS2V5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAorI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQor
bmFtZXNwYWNlIHsKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRJc1dyYXBwaW5nUmVxdWlyZWRGb3JD
cnlwdG9LZXkoVk0mIHZtLCBjb25zdCBKU1ZhbHVlJiB2YWx1ZSkKK3sKKyAgICBpZiAoIXZhbHVl
LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvKiBvYmogPSBhc09iamVjdCh2
YWx1ZSk7CisgICAgaWYgKGF1dG8qIGtleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQodm0sIG9i
aikpCisgICAgICAgIGtleS0+c2V0SXNXcmFwcGluZ1JlcXVpcmVkKCk7Cit9Cit9CisjZW5kaWYK
KwogSURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgSURCVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV9p
bmZvKGluZm8pCkBAIC0zMzksNiArMzU2LDkgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBJREJPYmplY3RTdG9yZTo6cHV0T3JBZGQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZQogICAg
IGlmIChtX3RyYW5zYWN0aW9uLmlzUmVhZE9ubHkoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFJlYWRvbmx5RXJyb3IsICJGYWlsZWQgdG8gc3RvcmUgcmVjb3JkIGluIGFuIElEQk9iamVj
dFN0b3JlOiBUaGUgdHJhbnNhY3Rpb24gaXMgcmVhZC1vbmx5LiJfcyB9OwogCisjaWYgRU5BQkxF
KFdFQl9DUllQVE8pCisgICAgc2V0SXNXcmFwcGluZ1JlcXVpcmVkRm9yQ3J5cHRvS2V5KHZtLCB2
YWx1ZSk7CisjZW5kaWYKICAgICBhdXRvIHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IERhdGFDbG9uZUVycm9yLCAi
RmFpbGVkIHRvIHN0b3JlIHJlY29yZCBpbiBhbiBJREJPYmplY3RTdG9yZTogQW4gb2JqZWN0IGNv
dWxkIG5vdCBiZSBjbG9uZWQuIl9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCAzYjAwMGI4ODEwMDNkMmI0OTE1
YjA4NDc4ZmJhYzk5MzIzMGY1YTI1Li5lMGY3NmIzNGE5MWU1M2FjODYwNDRkOTgyOTk3ZTJhNzcx
ZWVhMjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTE2Nyw2ICsxNjcsOSBAQCBlbnVtIFNlcmlhbGl6YXRpb25U
YWcgewogICAgIFJUQ0NlcnRpZmljYXRlVGFnID0gNDQsCiAjZW5kaWYKICAgICBJbWFnZUJpdG1h
cFRhZyA9IDQ1LAorI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQorICAgIFVud3JhcHBlZENyeXB0b0tl
eVRhZyA9IDQ2LAorI2VuZGlmCiAgICAgRXJyb3JUYWcgPSAyNTUKIH07CiAKQEAgLTM0OSw3ICsz
NTIsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RyaW5nRGF0YUlzOEJpdEZsYWcgPSAweDgw
MDAwMDAwOwogICogICAgfCBET01RdWFkCiAgKiAgICB8IEltYWdlQml0bWFwVHJhbnNmZXJUYWcg
PHZhbHVlOnVpbnQzMl90PgogICogICAgfCBSVENDZXJ0aWZpY2F0ZVRhZwotICogICAgfCBJbWFn
ZUJpdG1hcFRhZyA8b3JpZ2luQ2xlYW46dWludDhfdD4gPGxvZ2ljYWxXaWR0aDppbnQzMl90PiA8
bG9naWNhbEhlaWdodDppbnQzMl90PiA8cmVzb2x1dGlvblNjYWxlOmRvdWJsZT4gPGJ5dGVMZW5n
dGg6dWludDMyX3Q+KDxpbWFnZUJ5dGVEYXRhOnVpbnQ4X3Q+KQorICogICAgfCBVbndyYXBwZWRD
cnlwdG9LZXlUYWcgPHVud3JhcHBlZEtleUxlbmd0aDp1aW50MzJfdD4gPGZhY3RvcjpieXRle3Vu
d3JhcHBlZEtleUxlbmd0aH0+CiAgKgogICogSW5zaWRlIGNlcnRpZmljYXRlLCBkYXRhIGlzIHNl
cmlhbGl6ZWQgaW4gdGhpcyBmb3JtYXQgYXMgcGVyIHNwZWM6CiAgKgpAQCAtMTA4Myw3ICsxMDg2
LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCiAg
ICAgICAgICAgICBpZiAoYXV0byoga2V5ID0gSlNDcnlwdG9LZXk6OnRvV3JhcHBlZCh2bSwgb2Jq
KSkgewotICAgICAgICAgICAgICAgIHdyaXRlKENyeXB0b0tleVRhZyk7CisgICAgICAgICAgICAg
ICAgaWYgKGtleS0+aXNXcmFwcGluZ1JlcXVpcmVkKCkpCisgICAgICAgICAgICAgICAgICAgIHdy
aXRlKENyeXB0b0tleVRhZyk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICB3cml0ZShVbndyYXBwZWRDcnlwdG9LZXlUYWcpOwogICAgICAgICAgICAgICAgIFZlY3Rv
cjx1aW50OF90PiBzZXJpYWxpemVkS2V5OwogICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+
IGR1bW15QmxvYlVSTHM7CiAgICAgICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+IGR1bW15TWVzc2FnZVBvcnRzOwpAQCAtMTA5OCwxMCArMTEwNCwxNCBAQCBwcml2YXRlOgog
I2VuZGlmCiAgICAgICAgICAgICAgICAgICAgIGR1bW15QmxvYlVSTHMsIHNlcmlhbGl6ZWRLZXks
IFNlcmlhbGl6YXRpb25Db250ZXh0OjpEZWZhdWx0LCBkdW1teVNoYXJlZEJ1ZmZlcnMpOwogICAg
ICAgICAgICAgICAgIHJhd0tleVNlcmlhbGl6ZXIud3JpdGUoa2V5KTsKLSAgICAgICAgICAgICAg
ICBWZWN0b3I8dWludDhfdD4gd3JhcHBlZEtleTsKLSAgICAgICAgICAgICAgICBpZiAoIXdyYXBD
cnlwdG9LZXkobV9leGVjLCBzZXJpYWxpemVkS2V5LCB3cmFwcGVkS2V5KSkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIHdyaXRlKHdyYXBwZWRLZXkp
OworICAgICAgICAgICAgICAgIGlmIChrZXktPmlzV3JhcHBpbmdSZXF1aXJlZCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB3cmFwcGVkS2V5OworICAgICAgICAgICAg
ICAgICAgICBpZiAoIXdyYXBDcnlwdG9LZXkobV9leGVjLCBzZXJpYWxpemVkS2V5LCB3cmFwcGVk
S2V5KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgd3JpdGUod3JhcHBlZEtleSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3cml0ZShzZXJpYWxpemVk
S2V5KTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICNlbmRp
ZgpAQCAtMzA5MCw4ICszMTAwLDI4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gcmVh
ZFJUQ0NlcnRpZmljYXRlKCk7CiAKICNlbmRpZgotICAgICAgICBjYXNlIEltYWdlQml0bWFwVGFn
OgotICAgICAgICAgICAgcmV0dXJuIHJlYWRJbWFnZUJpdG1hcCgpOworI2lmIEVOQUJMRShXRUJf
Q1JZUFRPKQorICAgICAgICBjYXNlIFVud3JhcHBlZENyeXB0b0tleVRhZzogeworICAgICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHNlcmlhbGl6ZWRLZXk7CisgICAgICAgICAgICBpZiAoIXJlYWQo
c2VyaWFsaXplZEtleSkpIHsKKyAgICAgICAgICAgICAgICBmYWlsKCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEpTVmFsdWUg
Y3J5cHRvS2V5OworICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IGR1bW15
TWVzc2FnZVBvcnRzOworICAgICAgICAgICAgQ2xvbmVEZXNlcmlhbGl6ZXIgcmF3S2V5RGVzZXJp
YWxpemVyKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIGR1bW15TWVzc2FnZVBvcnRzLCBudWxscHRy
LCB7IH0sCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgICAgICAgICAgICAgIG51bGxwdHIs
CisjZW5kaWYKKyAgICAgICAgICAgICAgICBzZXJpYWxpemVkS2V5KTsKKyAgICAgICAgICAgIGlm
ICghcmF3S2V5RGVzZXJpYWxpemVyLnJlYWRDcnlwdG9LZXkoY3J5cHRvS2V5KSkgeworICAgICAg
ICAgICAgICAgIGZhaWwoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJm
bG93KGNyeXB0b0tleSk7CisgICAgICAgICAgICByZXR1cm4gY3J5cHRvS2V5OworICAgICAgICB9
CisjZW5kaWYKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIG1fcHRyLS07IC8vIFB1c2gg
dGhlIHRhZyBiYWNrCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L0NyeXB0b0tleS5oCmluZGV4IDBlYmM1NzIwNDRmOTJmMDk5YmEwNWMzNDJlOWRlNzExNjI4MTEx
MDYuLjM4NjVkMjkwZTM1Mjk3Yzc3NzhlYThmYzE5NTE3MDU2YjVlYmQwMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vQ3J5cHRvS2V5LmgKQEAgLTcyLDYgKzcyLDggQEAgcHVibGljOgogICAgIENyeXB0b0tl
eVVzYWdlQml0bWFwIHVzYWdlc0JpdG1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2VzOyB9CiAg
ICAgdm9pZCBzZXRVc2FnZXNCaXRtYXAoQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2UpIHsgbV91
c2FnZXMgPSB1c2FnZTsgfTsKICAgICBib29sIGFsbG93cyhDcnlwdG9LZXlVc2FnZUJpdG1hcCB1
c2FnZSkgY29uc3QgeyByZXR1cm4gdXNhZ2UgPT0gKG1fdXNhZ2VzICYgdXNhZ2UpOyB9CisgICAg
Ym9vbCBpc1dyYXBwaW5nUmVxdWlyZWQoKSBjb25zdCB7IHJldHVybiBtX2lzV3JhcHBpbmdSZXF1
aXJlZDsgfQorICAgIHZvaWQgc2V0SXNXcmFwcGluZ1JlcXVpcmVkKCkgeyBtX2lzV3JhcHBpbmdS
ZXF1aXJlZCA9IHRydWU7IH0KIAogICAgIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gcmFuZG9tRGF0
YShzaXplX3QpOwogCkBAIC04MCw2ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgVHlwZSBtX3R5cGU7
CiAgICAgYm9vbCBtX2V4dHJhY3RhYmxlOwogICAgIENyeXB0b0tleVVzYWdlQml0bWFwIG1fdXNh
Z2VzOworICAgIGJvb2wgbV9pc1dyYXBwaW5nUmVxdWlyZWQgeyBmYWxzZSB9OwogfTsKIAogaW5s
aW5lIGF1dG8gQ3J5cHRvS2V5Ojp0eXBlKCkgY29uc3QgLT4gVHlwZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggZjBlNjU0YjczMGI5ZGUyYTY1MGNj
ZTUyNDI4NDI2ZTA2YzljMTIyZS4uMTI3ZTBhNDQwOTZmMDYyYTMzYWE2NWRmMDVmNGY5MmIzZjNi
ZTcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBA
IC0yMjAsNiArMjIwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RGF0YWJhc2VDb250ZXh0KERh
dGFiYXNlQ29udGV4dCopOwogCiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCisgICAgLy8gVGhlc2Ug
dHdvIG1ldGhvZHMgYXJlIHVzZWQgd2hlbiBDcnlwdG9LZXlzIGFyZSBzZXJpYWxpemVkIGludG8g
SW5kZXhlZERCLgogICAgIHZpcnR1YWwgYm9vbCB3cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYga2V5LCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXkpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgdW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtl
eSwgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkpID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCAxZThmYzA2YmQzZTEzOTU3ZDBhYjJm
YmY2MmU2MTlmZDY0NThjMjc3Li4zYjQ1OGZjOGI4ZWQ3MDFiNGY1N2EyMDY1ODk1MDIwNGU0ZjU1
OTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApA
QCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckxvY2F0aW9u
LmgiCisjaW5jbHVkZSAiV29ya2VyTWVzc2FnaW5nUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJO
YXZpZ2F0b3IuaCIKICNpbmNsdWRlICJXb3JrZXJSZXBvcnRpbmdQcm94eS5oIgogI2luY2x1ZGUg
IldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5oIgpAQCAtMzk4LDQ4ICszOTksNjAgQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8dWludDhfdD4gbV9idWZmZXI7CiB9OwogCitjbGFzcyBDcnlwdG9Cb29s
ZWFuQ29udGFpbmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENyeXB0b0Jvb2xlYW5D
b250YWluZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPENyeXB0b0Jvb2xlYW5Db250YWlu
ZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3J5cHRvQm9vbGVhbkNvbnRhaW5l
cik7IH0KKyAgICBib29sIGJvb2xlYW4oKSBjb25zdCB7IHJldHVybiBtX2Jvb2xlYW47IH0KKyAg
ICB2b2lkIHNldEJvb2xlYW4oYm9vbCBib29sZWFuKSB7IG1fYm9vbGVhbiA9IGJvb2xlYW47IH0K
KworcHJpdmF0ZToKKyAgICBzdGQ6OmF0b21pYzxib29sPiBtX2Jvb2xlYW4geyBmYWxzZSB9Owor
fTsKKwogYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8
dWludDhfdD4mIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5KQogewotICAgIGJvb2wg
cmVzdWx0ID0gZmFsc2U7Ci0gICAgc3RkOjphdG9taWM8Ym9vbD4gZG9uZSA9IGZhbHNlOwotICAg
IGF1dG8gY29udGFpbmVyID0gQ3J5cHRvQnVmZmVyQ29udGFpbmVyOjpjcmVhdGUoKTsKLSAgICBt
X3RocmVhZC53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2FkZXIoWyZyZXN1bHQsIGtl
eSwgY29udGFpbmVyUmVmID0gY29udGFpbmVyLmNvcHlSZWYoKSwgJmRvbmUsIHdvcmtlckdsb2Jh
bFNjb3BlID0gdGhpc10oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAg
ICByZXN1bHQgPSBjb250ZXh0LndyYXBDcnlwdG9LZXkoa2V5LCBjb250YWluZXJSZWYtPmJ1ZmZl
cigpKTsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5w
b3N0VGFzayhbXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgUmVmPFdv
cmtlckdsb2JhbFNjb3BlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKKyAgICBhdXRvIHJlc3VsdENv
bnRhaW5lciA9IENyeXB0b0Jvb2xlYW5Db250YWluZXI6OmNyZWF0ZSgpOworICAgIGF1dG8gZG9u
ZUNvbnRhaW5lciA9IENyeXB0b0Jvb2xlYW5Db250YWluZXI6OmNyZWF0ZSgpOworICAgIGF1dG8g
d3JhcHBlZEtleUNvbnRhaW5lciA9IENyeXB0b0J1ZmZlckNvbnRhaW5lcjo6Y3JlYXRlKCk7Cisg
ICAgbV90aHJlYWQud29ya2VyTG9hZGVyUHJveHkoKS5wb3N0VGFza1RvTG9hZGVyKFtyZXN1bHRD
b250YWluZXIgPSByZXN1bHRDb250YWluZXIuY29weVJlZigpLCBrZXksIHdyYXBwZWRLZXlDb250
YWluZXIgPSB3cmFwcGVkS2V5Q29udGFpbmVyLmNvcHlSZWYoKSwgZG9uZUNvbnRhaW5lciA9IGRv
bmVDb250YWluZXIuY29weVJlZigpLCB3b3JrZXJNZXNzYWdpbmdQcm94eSA9IFJlZjxXb3JrZXJN
ZXNzYWdpbmdQcm94eT4oZG93bmNhc3Q8V29ya2VyTWVzc2FnaW5nUHJveHk+KG1fdGhyZWFkLndv
cmtlckxvYWRlclByb3h5KCkpKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICByZXN1bHRDb250YWluZXItPnNldEJvb2xlYW4oY29udGV4dC53cmFwQ3J5cHRvS2V5
KGtleSwgd3JhcHBlZEtleUNvbnRhaW5lci0+YnVmZmVyKCkpKTsKKyAgICAgICAgZG9uZUNvbnRh
aW5lci0+c2V0Qm9vbGVhbih0cnVlKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8V29ya2VyTG9hZGVy
UHJveHkmPih3b3JrZXJNZXNzYWdpbmdQcm94eS5nZXQoKSkucG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJHbG9iYWxTY29wZShbXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29w
ZSgpKTsKLSAgICAgICAgfSk7CisgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2Rl
KCkpOwogICAgIH0pOwogCiAgICAgYXV0byB3YWl0UmVzdWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2Fn
ZVJlY2VpdmVkOwotICAgIHdoaWxlICghZG9uZSAmJiB3YWl0UmVzdWx0ICE9IE1lc3NhZ2VRdWV1
ZVRlcm1pbmF0ZWQpCisgICAgd2hpbGUgKCFkb25lQ29udGFpbmVyLT5ib29sZWFuKCkgJiYgd2Fp
dFJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKQogICAgICAgICB3YWl0UmVzdWx0ID0g
bV90aHJlYWQucnVuTG9vcCgpLnJ1bkluTW9kZSh0aGlzLCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0
TW9kZSgpKTsKIAotICAgIGlmIChkb25lKQotICAgICAgICB3cmFwcGVkS2V5LnN3YXAoY29udGFp
bmVyLT5idWZmZXIoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAoZG9uZUNvbnRhaW5l
ci0+Ym9vbGVhbigpKQorICAgICAgICB3cmFwcGVkS2V5LnN3YXAod3JhcHBlZEtleUNvbnRhaW5l
ci0+YnVmZmVyKCkpOworICAgIHJldHVybiByZXN1bHRDb250YWluZXItPmJvb2xlYW4oKTsKIH0K
IAogYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgd3JhcHBlZEtleSwgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkpCiB7Ci0gICAgYm9vbCBy
ZXN1bHQgPSBmYWxzZTsKLSAgICBzdGQ6OmF0b21pYzxib29sPiBkb25lID0gZmFsc2U7Ci0gICAg
YXV0byBjb250YWluZXIgPSBDcnlwdG9CdWZmZXJDb250YWluZXI6OmNyZWF0ZSgpOwotICAgIG1f
dGhyZWFkLndvcmtlckxvYWRlclByb3h5KCkucG9zdFRhc2tUb0xvYWRlcihbJnJlc3VsdCwgd3Jh
cHBlZEtleSwgY29udGFpbmVyUmVmID0gY29udGFpbmVyLmNvcHlSZWYoKSwgJmRvbmUsIHdvcmtl
ckdsb2JhbFNjb3BlID0gdGhpc10oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewot
ICAgICAgICByZXN1bHQgPSBjb250ZXh0LnVud3JhcENyeXB0b0tleSh3cmFwcGVkS2V5LCBjb250
YWluZXJSZWYtPmJ1ZmZlcigpKTsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgICAgIHdvcmtl
ckdsb2JhbFNjb3BlLT5wb3N0VGFzayhbXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7CisgICAgUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKKyAg
ICBhdXRvIHJlc3VsdENvbnRhaW5lciA9IENyeXB0b0Jvb2xlYW5Db250YWluZXI6OmNyZWF0ZSgp
OworICAgIGF1dG8gZG9uZUNvbnRhaW5lciA9IENyeXB0b0Jvb2xlYW5Db250YWluZXI6OmNyZWF0
ZSgpOworICAgIGF1dG8ga2V5Q29udGFpbmVyID0gQ3J5cHRvQnVmZmVyQ29udGFpbmVyOjpjcmVh
dGUoKTsKKyAgICBtX3RocmVhZC53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2FkZXIo
W3Jlc3VsdENvbnRhaW5lciA9IHJlc3VsdENvbnRhaW5lci5jb3B5UmVmKCksIHdyYXBwZWRLZXks
IGtleUNvbnRhaW5lciA9IGtleUNvbnRhaW5lci5jb3B5UmVmKCksIGRvbmVDb250YWluZXIgPSBk
b25lQ29udGFpbmVyLmNvcHlSZWYoKSwgd29ya2VyTWVzc2FnaW5nUHJveHkgPSBSZWY8V29ya2Vy
TWVzc2FnaW5nUHJveHk+KGRvd25jYXN0PFdvcmtlck1lc3NhZ2luZ1Byb3h5PihtX3RocmVhZC53
b3JrZXJMb2FkZXJQcm94eSgpKSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICAgICAgcmVzdWx0Q29udGFpbmVyLT5zZXRCb29sZWFuKGNvbnRleHQudW53cmFwQ3J5cHRv
S2V5KHdyYXBwZWRLZXksIGtleUNvbnRhaW5lci0+YnVmZmVyKCkpKTsKKyAgICAgICAgZG9uZUNv
bnRhaW5lci0+c2V0Qm9vbGVhbih0cnVlKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8V29ya2VyTG9h
ZGVyUHJveHkmPih3b3JrZXJNZXNzYWdpbmdQcm94eS5nZXQoKSkucG9zdFRhc2tGb3JNb2RlVG9X
b3JrZXJHbG9iYWxTY29wZShbXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAg
ICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxT
Y29wZSgpKTsKLSAgICAgICAgfSk7CisgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRN
b2RlKCkpOwogICAgIH0pOwogCiAgICAgYXV0byB3YWl0UmVzdWx0ID0gTWVzc2FnZVF1ZXVlTWVz
c2FnZVJlY2VpdmVkOwotICAgIHdoaWxlICghZG9uZSAmJiB3YWl0UmVzdWx0ICE9IE1lc3NhZ2VR
dWV1ZVRlcm1pbmF0ZWQpCisgICAgd2hpbGUgKCFkb25lQ29udGFpbmVyLT5ib29sZWFuKCkgJiYg
d2FpdFJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKQogICAgICAgICB3YWl0UmVzdWx0
ID0gbV90aHJlYWQucnVuTG9vcCgpLnJ1bkluTW9kZSh0aGlzLCBXb3JrZXJSdW5Mb29wOjpkZWZh
dWx0TW9kZSgpKTsKIAotICAgIGlmIChkb25lKQotICAgICAgICBrZXkuc3dhcChjb250YWluZXIt
PmJ1ZmZlcigpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIGlmIChkb25lQ29udGFpbmVyLT5i
b29sZWFuKCkpCisgICAgICAgIGtleS5zd2FwKGtleUNvbnRhaW5lci0+YnVmZmVyKCkpOworICAg
IHJldHVybiByZXN1bHRDb250YWluZXItPmJvb2xlYW4oKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5o
CmluZGV4IGJjNzFiNTY2NmMxYzJlYzRlNmVkNzc5MjRkZGFhY2QzMjkxZTc5ODcuLjM5YjhmYzUx
YjA3ZmRhODU2NDQ1ZjY4MTg4M2QwY2I3MGEyNTkxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTE2NywxMyArMTY3LDYgQEAgcHJpdmF0ZToKICAg
ICBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90b3BP
cmlnaW4uZ2V0KCk7IH0KIAogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQotICAgIC8vIFRoZSBmb2xs
b3dpbmcgdHdvIGZ1bmN0aW9ucyBhcmUgc2lkZSBlZmZlY3RzIG9mIHByb3ZpZGluZyBleHRyYSBw
cm90ZWN0aW9uIHRvIHNlcmlhbGl6ZWQKLSAgICAvLyBDcnlwdG9LZXkgZGF0YSB0aGF0IHdlbnQg
dGhyb3VnaCB0aGUgc3RydWN0dXJlZCBjbG9uZSBhbGdvcml0aG0gdG8gbG9jYWwgc3RvcmFnZSBz
dWNoIGFzCi0gICAgLy8gSW5kZXhlZERCLiBUaGV5IGRvbid0IHByb3ZpZGUgYW55IHByb2N0ZWN0
aW9uIGFnYWluc3QgY29tbXVuaWNhdGlvbnMgYmV0d2VlbiBtYWluVGhyZWFkCi0gICAgLy8gYW5k
IHdvcmtlclRocmVhZHMuIEluIGZhY3QsIHRoZXkgY2F1c2UgZXh0cmEgZXhwZW5zZSBhcyB3b3Jr
ZXJUaHJlYWRzIGNhbm5vdCB0YWxrIHRvIGNsaWVudHMKLSAgICAvLyB0byB1bndyYXAvd3JhcCBj
cnlwdG8ga2V5cy4gSGVuY2UsIHdvcmtlclRocmVhZHMgbXVzdCBhbHdheXMgYXNrIG1haW5UaHJl
YWQgdG8gdW53cmFwL3dyYXAKLSAgICAvLyBrZXlzLCB3aGljaCByZXN1bHRzIGluIGEgc2Vjb25k
IGNvbW11bmljYXRpb24gYW5kIHBsYWluIGtleXMgYmVpbmcgdHJhbnNmZXJyZWQgYmV0d2Vlbgot
ICAgIC8vIHdvcmtlclRocmVhZHMgYW5kIHRoZSBtYWluVGhyZWFkLgogICAgIGJvb2wgd3JhcENy
eXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFw
cGVkS2V5KSBmaW5hbDsKICAgICBib29sIHVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIHdyYXBwZWRLZXksIFZlY3Rvcjx1aW50OF90PiYga2V5KSBmaW5hbDsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oCmluZGV4IDRhNjMzNzky
YzIyOWFiYWNkMzdiNTZhYjFlYjgzMWNjOTg2MjAxMjMuLjYxNTMxZWQ0MDg2NGIzOGFjYjk5Y2Mw
Njc1N2JmYzExMTIzZDhkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyTG9hZGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvYWRl
clByb3h5LmgKQEAgLTQ1LDYgKzQ1LDggQEAgY2xhc3MgV29ya2VyTG9hZGVyUHJveHkgewogcHVi
bGljOgogICAgIHZpcnR1YWwgfldvcmtlckxvYWRlclByb3h5KCkgPSBkZWZhdWx0OwogCisgICAg
dmlydHVhbCBib29sIGlzV29ya2VyTWVzc2FnaW5nUHJveHkoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorCiAgICAgLy8gQ3JlYXRlcyBhIGNhY2hlIHN0b3JhZ2UgY29ubmVjdGlvbiB0byBiZSB1
c2VkIG9uIHRoZSBtYWluIHRocmVhZC4gTWV0aG9kIG11c3QgYmUgY2FsbGVkIG9uIHRoZSBtYWlu
IHRocmVhZC4KICAgICB2aXJ0dWFsIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGVD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKaW5kZXggNWM3ODMzMmVjYTI5M2VkMzQ2ZjQyMmMxMDU4
NGE4M2U5NzQ1OGMxYy4uMDgwY2MwMWUwYWNlMTNiOTJjOTdkNWIyMTJhZjQ1MDVhMmQ3ZDA2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaApAQCAt
NzAsNiArNzAsNyBAQCBwcml2YXRlOgogICAgIC8vIEltcGxlbWVudGF0aW9uIG9mIFdvcmtlckxv
YWRlclByb3h5LgogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIG9uIGRpZmZlcmVu
dCB0aHJlYWRzIHRvIHNjaGVkdWxlIGxvYWRpbmcKICAgICAvLyByZXF1ZXN0cyBhbmQgdG8gc2Vu
ZCBjYWxsYmFja3MgYmFjayB0byBXb3JrZXJHbG9iYWxTY29wZS4KKyAgICBib29sIGlzV29ya2Vy
TWVzc2FnaW5nUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBw
b3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJikgZmluYWw7CiAg
ICAgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2smJiwgY29uc3QgU3RyaW5nJiBtb2RlKSBmaW5hbDsKICAgICBSZWY8Q2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpIGZpbmFs
OwpAQCAtOTgsMyArOTksNyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2lu
Z1Byb3h5KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXb3JrZXJMb2Fk
ZXJQcm94eSYgcHJveHkpIHsgcmV0dXJuIHByb3h5LmlzV29ya2VyTWVzc2FnaW5nUHJveHkoKTsg
fQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDMxZTM1MzA3ZmQ3ZGZhN2QzYzQwZWUwOWQ1MWU4
MDVlYTY1Zjk1NzIuLjk3OWRiMGZhYTBmNTJjYjk1MTAyNjg3MzEwODlmYjE2NWMwODZiOWUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMiBAQAorMjAxOS0xMC0wMiAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgor
CisgICAgICAgIE9ubHkgd3JhcHBpbmcgQ3J5cHRvS2V5cyBmb3IgSURCIGR1cmluZyBzZXJpYWxp
emF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDI1MDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUyNDQ1OTI3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vZGlmaWVzIEluZGV4ZWREQi5TdHJ1
Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkgdGVzdCB0byBpbmNsdWRlIENyeXB0b0tl
eXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWRE
QlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5tbToKKyAgICAgICAgKC1bU3Ry
dWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5TmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJD
cnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3Ol0pOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVC
YWNrd2FyZENvbXBhdGliaWxpdHkuc3FsaXRlMzoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJp
bGl0eS5zcWxpdGUzLXNobToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUz
LXdhbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWRE
QlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVJlYWQuaHRtbDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9u
ZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVdyaXRlLmh0bWw6CisKIDIwMTktMTAtMDQgIFNhYW0gQmFy
YXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgT1NSIGV4aXQgdG8gdGhl
IExMSW50CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3RydWN0dXJlZENsb25l
QmFja3dhcmRDb21wYXRpYmlsaXR5Lm1tCmluZGV4IGYxZTQyMTZhYTJmNmE5YTY1MTE0ZGQwOWZj
MGE0ODE0MTRkNThiZmUuLmFmODFhYTNiODA1MTMwNGIzOGFlNWE3MTdiMzVmOTEwNDdjNWM3MjEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhl
ZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5Lm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFj
a3dhcmRDb21wYXRpYmlsaXR5Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTUzLDYgKzUzLDE4IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRD
b250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxl
ciBkCiAKIEBlbmQKIAorQGludGVyZmFjZSBTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGli
aWxpdHlOYXZpZ2F0aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+
CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGli
aWxpdHlOYXZpZ2F0aW9uRGVsZWdhdGUKKworLSAoTlNEYXRhICopX3dlYkNyeXB0b01hc3Rlcktl
eUZvcldlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICByZXR1cm4gW05TRGF0YSBk
YXRhV2l0aEJ5dGVzOihjb25zdCB1aW50OF90KikiXHgwMFx4MDFceDAyXHgwM1x4MDRceDA1XHgw
Nlx4MDdceDA4XHgwOVx4MGFceDBiXHgwY1x4MGRceDBlXHgwZiIgbGVuZ3RoOjE2XTsKK30KKwor
QGVuZAorCiBzdGF0aWMgV0tTY3JpcHRNZXNzYWdlICpnZXROZXh0TWVzc2FnZSgpCiB7CiAgICAg
aWYgKHNjcmlwdE1lc3NhZ2VzLmlzRW1wdHkoKSkgewpAQCAtOTIsNiArMTA0LDggQEAgVEVTVChJ
bmRleGVkREIsIFN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eSkKIAogICAgIC8v
IFJ1biB0aGUgdGVzdAogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtbU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5TmF2aWdh
dGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRl
bGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVz
b3VyY2U6QCJJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHlSZWFk
IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3RydWN0
dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5LnNxbGl0ZTMgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29t
cGF0aWJpbGl0eS5zcWxpdGUzCmluZGV4IDM0MjBjZDgwOGY4OTZkYmU1OGQ2YTM3YWY5NjI1NTNk
ODI1MTRmYTguLjg2YmJlYTdlODQyOTMwYjA0NGJkZjcyN2FlMGVkZTBmMDgyNTgzNGQgMTAwNjQ0
CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMjIKY2NtWm9yWGklN3QjOV5ZcSVLIXVkOHc+bVNDbU9I
PTA2b2hFR3luaHEKCmRlbHRhIDIyCmNjbVpvclhpJTd0IzNBc1Rtak1VX0hXdjJ0UGMmYyQwN3Qw
Pj5pX0AlCgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3FsaXRlMy1z
aG0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVj
dHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzLXNobQppbmRleCBlNzgxNThk
MzNlNTY5N2QyNmJiMjliMjRhODdiMzUxYWIxZmM0ZTY5Li5iNGVjNzM0MGUxY2EzMzA3NGNjOGEz
YTU3YWZlNTc4ZTM3YTNkNGJhIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDE5Nwp6Y21a
b0BVfXxWIXMrVn1BJUshcXhLK01SJUFtOWUxV3FeM3d0QUxqfXlsU1JmN18lIWJoRDc9NHpWbCtN
S1hMeVUKenNwXjQ3ZmRSPGV8NDBCVCUqNWNmdjV9dX5hfDVHYCF7I2ZGZGhDcU9uPHB9IVc/WCNF
aTw4an0kVyYoQnszK3l7Clk2ciY0fXtncjkqeSY/YHFTMUB6KW9sK0dwMEs0ISVuKmFhKwoKZGVs
dGEgMTkzCnpjbVpvQFV9fFYhcytWfUElSyFwR0srTVIlQW05WH5XcV9EKHlGJVBqP2lyN0c1Jn0x
RjtRWD8pX3AjSHBZVEx+IQp6cV5idVIxcU4wP0A7PyVRM050WTxZOzVGYitgTkYlIzl7SVZNdUUq
JjlRRHtZRkplNXl4Y0huR0N5PTRTeGNPN2EKVkh6Xj9OOGBJPV9NSTJ6cDx+eVktVG1TO0ZLcjtY
VQoKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5k
ZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5LnNxbGl0ZTMtd2FsIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVk
Q2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3FsaXRlMy13YWwKaW5kZXggYzc1YWY1N2VlYjlj
ZTZhMmNmYTlkYzNiMGY2MzA5ZGY0MGJjY2VmZC4uZjNkNWVkNDQ2YjA1ZjU5MmNlMjQ0NzUxNjU0
MWQ2ZWEyMzgzZWVjYiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA2NzQwCnpjbWReRGN7
byk0K2RwJjhGIW1ZQ09rKnFpN1RJUChvMkFrc1RTN144dlRxQGpDUSh3elIjUW5sTGByclVyN1NI
Zgp6JDxrJmlNV25LMWgqRkIqY1NiYXg+KkBGUUtMNVNmZCMtRUZKP0IyPmIxJEYhe0AoTEYpNiQ0
NWUjRWI+TVBXWSMKenNrfFhWNURzRC08dFZTdilAP1E+IyNfPCVFSz0yMTB+THhAS1hgODxlQUA8
eEJ4KHlrWUR0cHlUOV9uSmFfI35hCnpIOzIydjF9ajc2RUYrYmY7VyUqZitRVil+e2YkVkUkVl5t
OWowNksjKStsaVMlUmgobiY9JEV0dig+PEdtNl91KAp6emtzOS1BMDhhYlFSPCFyKCk1X1g/fExp
X3lFWEU0WXhuSGh5VV5qWlhHYDQxcVU3KmQrJmMjKlBUNyZnVmJQMXAKeiVxQ0t3K1RSP1M0UiZB
VHk7Xyt3M3RTWSoxbG1Uakk4PzdrIzl0NnJ2QENSMzwrXk9sdE5GWGxFTjtWSk9rQ1Z3CnpFSTlK
Z087N3R1a0RIaDJtMmx3Wl5TKVBLVWZrcnJSRmU/fmozYU9ZdH51djhAZVNGIzwhZyRvX31AYSpJ
QU58aQp6QGojYiUqNDQheHJtTFlJN0ZUQnkhbXJJNy15ZDMqSW0rVmQlT04qVDtwUHxCZT4wYitN
JTIhMjchWUVaYXtfZ3QKemtweGdJd2w7YDhGNzx0ejxfeXdCYUNselVVUmQlS1ZpIUNYYUktPUsj
cDAmT0p2K1NHU0gwJE1adUE2cWs+ODdhCnp1JW9KTm9wcURDbURTQztIek4tPEQoWTFodk1UaT81
U01mfDt5VHFLYTI4fTY0UUY4UyV2UE9hWTBPU15nK1JHYAp6PFpPV2FBaSNOWTxKIUhkXkpSMjNY
XkZgbyF1Zjd8bTZmN3ZhbCV4SW1ZMm48IzwxdDRYKlM3PihQflJzKSMrbmcKenJ0LWNEZHVaKnFT
aylnNDFYcW96VStTUklBRzR9MkoodX01WSp2eUA8TEc1b3VkVTg2NUd5ZUlOUiMtKXMoI3xuCno2
JmtpektiTk1CeiReaDhabnF1cXsxelRYR1pTUTBBOFNsTSEoRFFqTXN0QDJZS2JgbDFsYTFVa2Zv
ZkZqTXx8Mgp6TWo+bnNIVWdgfkgoS1YxPiozPkhoaH5TQ2dtN3s9MlpzM3ZgNUMhfVFIfEVaV0dj
LTdaa0BMZlIzbV9pXjR7cGoKeiNqdD1LZlV3YE9wUnNpODBJPC1Cck01KUQ9b00lKjgtaFkxMjsm
VUgyKlN6ZVI2ZypUcEJOYjkmKWhiaU57WHthCno5eilwMipoeT9SXzlITkkzcmtJT2hTNk59RmB5
YU8zaUpNbHFFPzA3ZVdtWmYlbURpViFjSmkpdXBgKEgwTlIxbwp6TVdZY0UyUk1OPGZgLTh2ZD1P
MyE7Q2V4XmNAP19KeVRVPip8Ml8jQWpiPGM2b050NjxPPDcjcnlQSillRH5ZLSYKejhmR2pkOHRB
YkwqdWBffjNZOTIhd09JejxWKn56QiplT1FGViVSQVY4NjdKayU0a0d7cF8rVHpfX3BhYiEtTFp1
CnpHPSZTU21ENnxAa3ZLbF8oVEFwMjR5UitLVUM2RkZFKmZxK0RrTEA2PHRpajZiIWA8Vk8mNHR5
bEFFQFU3SFBSQQp6aUEqfG0yTnF3Y3VBJTB0ekZicXFObGltamcreXtEc1dAcjVJSUYxWnM1X0Iw
JFpBPzdYQVImUiF4fSo0N3lJaFcKenNeZWE/P1JWaGhLa2BLN2VGe3RJfEE4eUBXbHI5SFBRViQx
YHVVOHsqNmthWHsyRm45PUttQnZ8N1EtPmAoVXZACnolI0cxeV5SQnBoeDExYGwpS3NNJT9QRGMo
QkVMbSRmMUB1cUVwcl5HaDJ9fnpgSVNhXi1QRSlRNyFhYTQxfHVfQQp6eWIhQ2teZ04+NSlCRmxT
VDhqfEUwPXY0V2o8RWklWTdLYWxARG9PMGc+QnMoRXIrN1p6bztPeXE4ZDh9UExZamwKejxpVjR+
cEQ2SD9gWVV2Y2pKMG1qQGRlSF9IQWAwNU0tUmJNXkBCQzA7N082NkZjRFVtV0okbD03RkNDUSN5
dUZmCnoxYD1oeDNEPFVoUyRja2VvM1V6ZWtSXm18IWUpUyMmazZnJG9UeFhidDAqY2UwQSskd2hp
MElNUCVMRGI7KXFrQgp6YGxQfj1DPUImUER5JERnWWJ2WT5nd0dLfjlmKnUwaCU2QWhQUXFlOWdy
OV5KZlomY3tEJUUyVWQybHMpNXwjcEQKemUrKGlHTH1tO2t7d0t7JD9UJGd6UCM3QmpRNiFYU1E2
UVJ+USEjUVExVWFCVjxjNSQzPFBFdCh6KjtJSVclfnp4CnpJNlg1biEpV0AwWmhuNXRmPGw5ISNF
dGQrP0k4dmQycGd4TyspdU9YQVYoO09WSFVYSGg4Jm5yUHokcVI1ZkhaZQp6TmtrYjR5T1c2Mnsz
d3Q9dFpaQiVMRWxlSEpjOzEzO0JNeyhMPEAqbDdaNVRLTE9CUzdzRXMreXN7PVdSJFVJV30Keik/
ND9LTyZqY0pjeyFsOF5EflZuYXg4WDREeDgtV0l7e3x1OF4lbG42QWsrWU9wZURgTHBEQ2Y5T1lz
aVo2SHV+CnpGaWx1UytrRTVhP3JWcys1eilIeF9vR2N8IUY9WlhJaUpPVk98aU40NVdHaEZAe3lQ
IV5OYUxuMnBgQzB2PTw9Jgp6IU9ANHYwaW9LNUVDI30pNDxRJmJJT0QqSnUlUlJnNURaQ3hEe3Uo
dUcxTTVtQElwMD9zYiZgQDBgPWx3UGpsI0QKenNGKFc/NWl0ZWBqVkNNdyhSQ1NXZ25JQS12JHlg
Mz5iM1ZyKD0tfGZJQXxSR3RXKn50e1hzS2N3UFE2ZWM0VXJmCnpLczB2ekFFKlh5KiZzSDQ9MTx1
X1FxNU04cUdfRDxkZ18wc254RllvXz5XWH5va3Z8Qip9UEdaVz0yMylAaU9Abwp6I1ktfGRLPDQ7
X244WFI9Ql5JaEBzVWhOKkVNIWF1QGNEbklWMmtFQEYxNWkjYHlQXi16K2g4PiREZk1yTjduUTMK
eit+cTBmJD52R3NpUkFHSUJfaV47O217fmE2bmMmc3FNcEorZ14tXjdMSXFBd1psUXVoUGo7YUso
dnctSnB6QkswCnpVWDM5ZCRvdkFgZV9UQjY9O251cWRCS0xgPUs9KmlnQkBQYkhIX3xNVExqdCMm
SG1ySTI4dFRMJDQzOUxfVi08Kgp6aiRYdnZLPmU0bGBDdjlzTDYrbEhYM1RSVSpySGh6KDZUJXt0
PXg1N19NRVlwMCs8WFVgKz1leTNzenU5TnVKeVcKenVASl5zUExleXA3UkFabStoYjNWbiVZd29q
Ryk9ckYmd3Q4elJYPmhzfChvciszWEU7XiFFb30qQmU7YElxdFImCnphU2h6IztwYzEwa0ZORXlg
QX1jUng1eV5adWw0WT09WEdqKClDcEQrSj9zLV55KmAqOXZLeksqaThueVRTLWpERQp6RFghSSty
MEhaJWpZcH4tbUkpZEJhN21Zeml8flAjb2tMTioke01ZeWl5PD5FPmpiazAkP0olRz9zNTlNIUd9
RyYKekNhTUc/PCkqc3lZK0NYXmVwS0hlbzE/TThjdlpCSFZxfX0hd31HYkRkdzEmKVp0fHMrQ1JF
bDRIQn5NVHstQjF8CnokPEY3Qnk3eWBJTHl2WCZRQ31QYGk0VjJFb0RRZyVUSTUzVU09OVk+YDkz
ciQoJEU7YjghPlZTPD18SE0hPko1egp6TmZ5e3R6Vy17VG5BIUc/ZDxRK04tRnItMFpvfTNvbCg9
eFJvRGZPMGtkfFY8I1Jwc01TR0FwYyRxU3YrUHhCU24KekNyT3V6I3QjZD9taWN1UiQ3fjhQWGJK
YjReTSRiJmM2YitycFRTLTRBSzE5USthZFJnaCRiS0J3WXh2WXU9cmtuCnpPNkBMWEBrPiNmYlQo
Z2tsQyo0bG1QU0UrelF4PD8jRiVzcUBoQW5zSm1td210QEpNYDBWPVZiPiFYeipQUmR6Zwp6V1hr
RmRObTBrNXRvSmt8PVdvTVhOMWJnRl5qeF8rbHlAPHxWV3NVcj04VyNuQStNd3VfdnpJayFwcWk3
YWR7WlEKemlST0ZXbDE3VCg0Q2RIbGlmPDFyTl5xYUYpNUF6X2BBRCZQPXQkPldeT34jbm9rSE01
Z1klQjNLMzsxb1B2NF93Cnp2Unw/KHhpMjNUQ14zQW9jd34xY2BBKVZKQDc9Um1uJX1wKVh8Sipw
ciM2NDxgfUVHQGlRUVl4I2B4VCZjU3wqZQp6dFppZjBlPn0qJFY+SFp1Yj8xdDYyfGB1Ym0qT2hn
YTxgTU1sI1pTdEAoRkx0S0c+b0QqUFVAeSljZn5hSE0+Ki0KektBMk1FKVJkbXkrKitIeUNXbyFt
PkNCcDxtSkJAM3s4X2NNTSNoVGUoND1SNCE0V1FMYDM7aTgpRXdAbmkoZnFICnoqPnxTZ1RYfk1s
ZClqK2laRVRVeyVqYih5WX0wJWpBPn53dnQtbjdOUEhmYTR6bih0JG5PMH5wKXg1YlVeTVZ9Vgp6
YEVrUE85a3QpQUMlNDQoX2drITNgKT11Wk1JRi0zek5nbG1iKEF4Uz8/UyNfRzt8S182fEVHcWRt
NmFVazhme0oKejZZbGZGTHllaFRga3hkZl9WcDt5ZU15PUZ6OCNKaEpHaEl7LUpMUjU0bXNmej5G
e3s5O08/fSNfRkl4fVQ0UTJQCnpHMiNoQldWNTRwQHNyIXItQnh4ekRJTDE8YT5UNSpIR1U7MEg1
fSZmdTZeN3hRVH4tc3VwJVVLXmt6Myprbj9Vcwp6UlNGTWY9MXR3PXVkZFN9TkI3ayVjPypAJk5q
SWs4aC1xP1RVMkxtQD8pQ3Z1blV7cz5gXyF0UU1ge0hoZTsyQSsKekJHczJAeXJwfmQ3SFdEe3Zn
U1pUPTRncWJWRUV+dGp7IShRKV9kSkUtLXdIPy1iK2lKNH5rbkVKITxEeFZVMEVeCnomd05wYT5v
aEM9eXByUG1JSEttJXttVWZyK256SllmODh7UXJja2BFKFlyZmFaI1pKZDk7VzJrbzBHbXtyVXwz
dAp6XiZMeHNIYGYjJnpJdyozeXstNmA7bklme21WIz9WVXc3UVI5YUVAR3JhWFVobWA2I3h2Xihj
QS0/fEVjJnhzPkQKelRlaGo+JE8oVmIqPnRrbm9Ye1NtYHRrJmwqPVZ0UnlJISpnbTU8dSVDJGtG
T3ttemtsenQpd1ZGITdUaXVXWGpqCnprM0hIZGx0O0JRMG1HbHVAQXF1M0A7fDlPXnhhRntXSlVq
fmhoRXZqWiQ7OS15aUJATGNEWFhgUkZOXmt3YXVWagp6ZUBvenRFT1VqMlRQQG1HTkVgM1Y9LW5G
Wk0ySGI7SmVxJUpTNi1+Z1NyZTxoU0Z7YmtKJjZCUVhXLUlTYnMrVT8Kemc8T1A8QDMlSkwjWkEt
eD1lJi1ubCt5YklHSlkoUkkrRExDUXJNdHlsSHkpQVl6YVg7aFU/VkdUXkReQE1zNEx1CnpgMG0o
T0tTWF9zXkZHdyM5ODdWPGpNTGg3ZnsoV3ZhMFoxRGxgaSMwNT47K0JhQTB7fW5Cczd1QygyWCNJ
PWxtfQp6YnRrJFNEe0JZZ1B+ZGZqQTZnNzRMTWpqJHtncTlLTyYkeldhS095fXl9JWRkSXx4KDdJ
OGgpciNpJCtmVTxBakEKentUaml1eUNjYU9mY2NqcjckdXxMK0NUMSQxU0lYaEtpS3lkeUdiYSkk
fUtmR3t3MnFjPSptVT44MXYydEghO2BZCnpFPXFyTEx+JmImPSZRbCFAQVM+eXk1UU1AKi1iP1A0
b1lYZW1iJDt9Ry12VHlsNjtMbWNhbmRNUT1EU000TkQ/LQp6ZTBqaU5US0FjKjNadT4hcWx6bmNf
ckplK3QtN3BlYnpZZFFRMUlhKUBnK0xSJiR7MTkpX0xGSzJ8TT83cWZWfGkKemBMPXJuJihuQjRl
YklBKjE2KzZYJSlIRGYjO2YtQ1VsZVhCcip4PWgpQjNMT005UmBDRlAwUiRgXiYyaD5eWCE/Cnot
bzVYI3FvWSF9KEw/MGhwa2RQR2Jzc25QQSo7bjNMZkB9OUtYSiozIXk9KGtkVmBFJnk7K2A0bWxZ
PWw/eURDSAp6NkhRTVNAVDE/Kl9ZR01XeFk7cC1kdHh2UypYKXkhNkxVfkd2JEg5N3hUc31qZz1Y
eW1uPlctXjlpPmdUck89eFAKenMxZylWLXx9fCRYeGI2a0JfcUBPU01OSVFeQ0lqVFlEYUpNOXVI
OTh6JUM5I3ZiVnxVVF5zWSgxaE1VQ1VSWW4kCnpFPnRNJF8tcmtJUShwKWJBODg+NiR7VTZJUm8+
Wk11SC1kRntyX0VrYVNDeVVDZDV3SyZmIzN8c35KVlRiVE8pIQp6QVl4dj5sbH1RQjN5Ykg2RCFB
KlVISTFFP14tWTVPeEgpPzZVOWskayo7dFRmcFIpYitfWGlvcDNiPmFNRWctKmYKemlqXklJTkA8
QGQkRytuQ2h3PSlPYTN+SmAjZm1DcWhrWGdOZDc9S2ZaeV9sMGtpOUkoPiMpTUZ5dWRhY2ZGIyVk
CnpGV1EhfWFPOzR9UzNEaXZqSzlPfmszVi1hUkRTM3trbyRMMjFmTmtvbX1JeFMqbClTK3oxLVUt
dlRMRz1gKEo7Vwp6WTlxNllVMlMlR0skMHpMdSh2LUxGQD9ecjUpTFg+d1Q4RmxwUDQlNHJQPHR7
ZCpDK1JZTkZkSnFpdn19aWxjNHoKelpKQWNNUj9qenVYM31xKSZMdiFBTzk/NGBeNDsqKlhQYVhk
PWlYODJidCkmZFQ/Qm1De2Z5Mng4JExwP3swe24yCno/dUY4RWsyYy1qdyE2fGJvTlohbm5nSEdZ
UUROQCE5KSUzUnQhYz1GRUlqYkZfKGVHOHZDeSZgVUw2LUtiS2txKQp6c1JQe05qaiFsRU5Sb0FS
Rj9vNlZ6TmwyPyFycDs7cD1sSTlTcFNVVXg2TERYaCp0KVg5RjZgKF42WEF1QClMbWwKeiVpZUxh
SE5WT2daSiE7WSU5fjl3aSsmc0JUWChZM057ZkF9QiU9M0J7NCl+IUMyNl96NGhNclA+ejBOTXF2
MlJWCnpqWH1QSSs+emsqT3tsRihLfnd2bG4/Jmd6c0NwTFArTk8zaXtHZHh7K096biQ+LXRXJUU2
dG5KK1BRfSVoNFlkdgp6MFg0Z0MpdHZxbVI7ZkhANW9oNVJNQzZfSEs0SXFtQTwrcD9sWmRuQUVN
OVZxdT0qdXNGbG5lOytpMCVzJlIpSUcKekJuMHx4K2NpWDVOOzgmfCZAVj0yVXZlYT97dFk3KD04
aEdvV1V7dE49SExfNjNDejshVUoqfE5fMjh4RDFwJjFlCnojfG5nMCFgaX1IP1JGbyt3K1c4ZENy
T2gpWDZneG5VRVkqKm5JQHhfUSg7fXRicGttaVczSnw/NWtPfG4yMWx4PQp6SHR7X1JfZ0x7R0ho
JD5WVHcrY1VpVHt8R15RQEx9UFIyX3VlMGlIKVBYOWslXiNtRHtnVFZNI2x6SEc4PWw9aj0KQzBO
WTt4CgpkZWx0YSAzNDI0CnpjbWVISmN+QkVxNz1PRGozNWhZaDEoUj9eTVlJYW1EMW4zfHA3OXVU
bHF6YmlOWXlhYHRrO018QFR3TFMxZ2ZAMAp6NCVld3ghR2NoYVFIOzc7Tjl6ckV2P14qbk1nQCZa
dHEzUzZ0eUtEVUwqbUElOWo1PHZyYVFDeSYzXmxTLXx6Yz0KekBBITdsMSZAcDhEVDYqKXY9WFRB
Yz5fUUpfRyYrRVl7PyE7IT1XQG9PeT8lfnV0ZS00YDJORlY5eitNfHdsPmZnCnpKJjRaaENKclUz
UzAkU1k1YXF6X159TXJJY0cpYEw4Y0ImTXIrNGJmPzxAQ0pUe18wMHZlVyVwbkR4QVcwckdJKgp6
XmEoUVV3I0UkaWNHal8hK1okbFJgcmA3YW95MiVNa1RHJDxXKXFLKUtFSkpXZk5aa0ptOVdCRXFn
ckhCPD1Tek4KenJnNkFsVyolWWwySEZzcWFuUzg4IW9mTG5POXk9IzljVHg3dD5BIUBTTVVnbiZ3
SExlN1pTYk9tR0UtJWBtSlM4CnomSSM/ZjtyU2VIWjlXZ1RhQVU7VUokSCttdGZtcSU8KmVIP3FO
SHhjSD1FQ31YXkBtc2cwK0A3R3w5PkREKGAqYwp6TSNOaHdRa3hwIUN1UWFsY0ItTihqX09Hamsx
OVJZeFVRJE1mMn1wSW89MGA9dkZGVTlAMCFlU2clalAjQEU7ez4KeiV4MSRgQFZxY3VQbDZaZ25h
Wj92X1dwVWphay1GRSRvT2tQNXQ7Qj5wTHw/IUFjV3gyZ2IlIykje35EeTMyKUl6Cno/QGsmSmFw
QTYtNGp5TngkcjtDfD17RyM7bWlOS3QzfENiQFNnaT9Ndmg+O3xkUmxAVkcmejtyZil3MFJiKk9Z
Rwp6R1ZiUWdvfH1mKjZaRjZkST5qeyFLN00lQ2VkUmJOR1llPHZUI2J1fG1kM1pOZDhsQkR4QU5V
QjlqWXQoUiVZRWAKempfdXtVJWIldkFXWmtUQT1LMll+YF53VW0pU0JEN01sZn1rYEVFO0QmZDdY
UVF6dTR6cFlPZzdNK3g2Z25PbiZDCnpLaip1ek9fPzg2Y2RxeWcjc0VvUGY/RDYyYVhJXnI0YEN1
WkBaR1VRbDtuYCNwY0JsRHVHcm5sQTs5cjlNLXhrQAp6XnB+LTcxQ2J0fUFKSDxUeDA8T1NMXkRJ
a09DNm05MSFjI3xgcVpvMWFSY2lCWURPOypsYjtMa3g/QVRfMHdQUVoKejI/OWQpTnM8c3MqdjA2
TVp8OSpme3picTU7VFdtYjktdERTQ1JCLUBWeTRUOCZXc0Bnb2hkITR6V1IwMXUhKCFACnpEYilo
PjNOQGx5SmdeRmQyX1BpSVAoYjEqek0oe24zMCE4YXZFfHQ+cjVvcW5lXjs5SCNUMyVwSWhvPngy
YnYhKAp6Pj9oYFMxTVFWY3ZmRntkPiFiaH45RUNzYklOe0YpNTZVTUFGJV5NY3VfZFcrTiotaHE9
fE1hdWp1MmFqI2wlTzEKemsjR1lRVT4lcn1aS2liZWc7bFQlQSk7JG4hTkomUShxSmV5YWNOTTQ0
Vj96eCF7JGdEUkFGOzc0RitOWig+WjVRCnpJXyFicCMtX3NuWSFjSTlTRF4/S0IwNFZ6YGdHTldZ
QmJ1SVBfMF5QKFp7S15YMXp7cjIqSSFCPjNYQmw3O0NsIQp6JEkjYylWSzU8TEJwR2x+ZCNfbW5r
dEFxXjBmMT0mOTM+cGcxYW0rZjVZWmNRVV9pVnZXViVIa3Q1TkhXTWpUTmEKejZRO0k9PXEmMmMq
eSgwJWE5Q0pxczNyN3VPR151STE3UHt8YDFzejVpeFR+elAhaU89SFFYPkAyOG5EcTk5anlGCnpN
VnlwaFBhMntvZyVTLSokYT0+QjN6JnNSI05jc1FnPFJNUjdkMTUoRHBkZ1p2SEs5PitxcG8zVihE
KERkdF94Wgp6ZmQlfTl0R0c1fVVFZCZDMSFMTXJldjhfbyFUTThWJDlgPzc0cyt3JC1YdV5uRm1B
VnY/ejVZVEl6P3UraUhWazcKekFwLWB0ZmxBWmNHQUdgR3ghNDhrdGhuNUZecE9pU0otPWs7VF9I
RU9qWmtBRlJjKSt8LUdOVDNRX25MO0tWUEY8CnomMUJnNDshNWA/aEckNistREMwXnV2X2p9Xk9S
fVY9SW9iZyhLdnZkRig8KG1xPiVIWTlnIXpwYCg1Z2x6Kzk5PQp6OT9VUVApWkY/PEMkezZFJTJ0
Pz81QSEtQmRibCZDJiZtVGpLQmBgQklDXk9lVDdwTTx4MSNWTCNoY1g2PzZ8ZVMKelpOdmdrQ1Ve
b0wqMShNWk59Q2FSN0xXOThoNTdQZlU4PnlEcylDYVAqbCMyPzVjdSZ3anRgZEotViFIJCQofUoz
CnptOyVzR1hiVjMwe0A+TDllcDNmSFBnVCtvQHxudDxIR3wyX2ckamhYe0kmdzkkTDNBfSlMfG5w
PFc5cDhoMX1jYwp6aDB4Y0R7NWliaD0qVD9KYzEmPzBvQCFARDcoUyUtY0tpSyNWaXtgME97JHZo
MihfcGhjWjhkMGZLYk1Fb09icmMKemZNLSlBYWNLPEI0WH59R3N3T2ZmP3plWH1oQ3A4YmxDfTBQ
ZGB0bkFWXjBqOTk2ajQtKH05Q1VieXVNfkV+RVpGCnpSQU04eCFTMn1mdkI2SCpqSjgyI0lEN1Bv
Nn4wMkVpeFFCKUFIVSZDWmVyYlQzTGpURCNrb2EzLXFfdmcmMWtWbgp6TH5wbDJVbGpgeUQzcT9D
eDxSWlAoI3MzRHJxTzEzcWNgWCh5fn1PJDhTejhEeXVxYGcmOzB0c2hkWDRiKSopey0KellIKlBr
KCtSfndpZmkld3pVITFYQzM5S3lqTit0fnwxMi1Ye1R9P1N5aUAlZF9qPzxwZy1vUFVhOUdBXj0l
P3R5CnApZVJqUTAhfU8rZ308eFlFe0NfR3YjVXpvdSFqR0VOJFNBUHJJUCktOzRUSUd7MGxqZzNg
X3QzCgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHlSZWFkLmh0bWwgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRD
bG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVJlYWQuaHRtbAppbmRleCAwZjQ3NjE5YjVmNjUzNDFl
MjU5YWQ0MmFlZDQ3OTM1ZmRlZDhiODBjLi5jMDhiMjkyNmY0NWRjYTE4ODk5Y2Y2NTQ0NmY4ODNh
ZTkxM2ZiMjY1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVJlYWQuaHRt
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0
cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVJlYWQuaHRtbApAQCAtMSwyMSArMSwy
MSBAQAogPHNjcmlwdD4KICAgICBmdW5jdGlvbiBsb2cobXNnKQogICAgIHsKLS8vICAgICAgICBh
bGVydChtc2cpOworICAgICAgICAvLyBhbGVydChtc2cpOwogICAgICAgICB3aW5kb3cud2Via2l0
Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShtc2cpOwogICAgIH0KIAog
ICAgIGZ1bmN0aW9uIHNob3VsZEJlVHlwZShfYSwgX3R5cGUpCiAgICAgewotICAgICAgICB2YXIg
ZXhjZXB0aW9uOwotICAgICAgICB2YXIgX2F2OworICAgICAgICBsZXQgZXhjZXB0aW9uOworICAg
ICAgICBsZXQgX2F2OwogICAgICAgICB0cnkgewogICAgICAgICAgICAgX2F2ID0gZXZhbChfYSk7
CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IGU7CiAgICAg
ICAgIH0KIAotICAgICAgICB2YXIgX3R5cGV2ID0gZXZhbChfdHlwZSk7CisgICAgICAgIGNvbnN0
IF90eXBldiA9IGV2YWwoX3R5cGUpOwogICAgICAgICBpZiAoX2F2IGluc3RhbmNlb2YgX3R5cGV2
KSB7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTIzLDgg
KzIzLDIxIEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBmdW5jdGlvbiBzaG91bGRCZUNyeXB0
b0tleShfYSwgX2tleSkKKyAgICB7CisgICAgICAgIGlmICghKEpTT04uc3RyaW5naWZ5KF9rZXku
a2V5X29wcykgPT0gSlNPTi5zdHJpbmdpZnkoX2Eua2V5X29wcykpIHx8ICEoX2tleS5leHQgPT0g
X2EuZXh0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKF9rZXkua3R5
ICA9PSAib2N0IiAmJiBfYS5rdHkgPT0gIm9jdCIpCisgICAgICAgICAgICByZXR1cm4gKF9rZXku
ayA9PSBfYS5rKSAmJiAoX2tleS5hbGcgPT0gX2EuYWxnKTsKKyAgICAgICAgaWYgKF9rZXkua3R5
ICA9PSAiRUMiICYmIF9hLmt0eSA9PSAiRUMiKQorICAgICAgICAgICAgcmV0dXJuIChfa2V5Lmsg
PT0gX2EuaykgJiYgKF9rZXkuY3J2ID09IF9hLmNydikgJiYgKF9rZXkueCA9PSBfYS54KSAmJiAo
X2tleS55ID09IF9hLnkpICYmIChfa2V5LmQgPT0gX2EuZCk7CisgICAgICAgIGlmIChfa2V5Lmt0
eSAgPT0gIlJTQSIgJiYgX2Eua3R5ID09ICJSU0EiKQorICAgICAgICAgICAgcmV0dXJuIChfa2V5
LmFsZyA9PSBfYS5hbGcpICYmIChfa2V5Lm4gPT0gX2EubikgJiYgKF9rZXkuZSA9PSBfYS5lKSAm
JiAoX2tleS5kID09IF9hLmQpICYmIChfa2V5LnAgPT0gX2EucCkgJiYgKF9rZXkucSA9PSBfYS5x
KSAmJiAoX2tleS5kcCA9PSBfYS5kcCkgJiYgKF9rZXkuZHEgPT0gX2EuZHEpICYmIChfa2V5LnFp
ID09IF9hLnFpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIC8vIFZhbHVl
cyB0aGF0IGFyZSB1c2VkIHRvIGluZmVyIHRoZSB0eXBlIG9mIGEgZ2l2ZW4gcHJpbWl0aXZlIHR5
cGUuCi0gICAgdmFyIHRlc3RWYWx1ZXMgPSBbCisgICAgY29uc3QgdGVzdFZhbHVlcyA9IFsKICAg
ICAgICAgdW5kZWZpbmVkLAogICAgICAgICBudWxsLAogICAgICAgICA1LCAvLyBJbnQKQEAgLTM4
LDI1ICs1MSwzNSBAQAogICAgIF07CiAKICAgICAvLyBWYWx1ZXMgdGhhdCBhcmUgdXNlZCB0byBp
bmZlciB0aGUgdHlwZSBvZiBhIGdpdmVuIEJvb2xlYW4vU3RyaW5nIHR5cGUuCi0gICAgdmFyIHRl
c3RUeXBlVmFsdWVzID0gWworICAgIGNvbnN0IHRlc3RUeXBlVmFsdWVzID0gWwogICAgICAgICB7
IGl0ZW06IG5ldyBCb29sZWFuKHRydWUpLCB0eXBlOiAiQm9vbGVhbiIsIHZhbHVlOiB0cnVlIH0s
CiAgICAgICAgIHsgaXRlbTogbmV3IEJvb2xlYW4oZmFsc2UpLCB0eXBlOiAiQm9vbGVhbiIsIHZh
bHVlOiBmYWxzZSB9LAogICAgICAgICB7IGl0ZW06IG5ldyBTdHJpbmcoKSwgdHlwZTogIlN0cmlu
ZyIsIHZhbHVlOiAiIiB9CiAgICAgXTsKIAotICAgIHZhciBvcGVuUmVxdWVzdCA9IGluZGV4ZWRE
Qi5vcGVuKCJiYWNrd2FyZF9jb21wYXRpYmlsaXR5Iik7CisgICAgLy8gVmFsdWVzIGFyZSBpbiBK
V0sgZm9ybWF0cy4KKyAgICBjb25zdCB0ZXN0Q3J5cHRvS2V5VmFsdWVzID0gWworICAgICAgICB7
IGt0eTogIm9jdCIsIGs6ICJZV0pqWkdWbVoyZ3hNak0wTlRZM09BIiwgYWxnOiAiQTEyOENCQyIs
IHVzZTogImVuYyIsIGtleV9vcHM6IFsnZGVjcnlwdCcsICdlbmNyeXB0JywgJ3Vud3JhcEtleScs
ICd3cmFwS2V5J10sIGV4dDogdHJ1ZSB9LAorICAgICAgICB7IGt0eTogIkVDIiwgdXNlOiAic2ln
IiwgZXh0OiB0cnVlLCBjcnY6ICJQLTI1NiIsIHg6ICIxRlNWV2llVHZpa0ZrRzFOT3loa1VDYU1i
ZFFoeHdINmFDdTRFei1zUnRBIiwgeTogIjlqbU5UTHFNNGNqQmhkQW5IY05JOVlRVjNPOExGbW8t
RWRaV2s4bnRBYUkiLCBrZXlfb3BzOiBbJ3ZlcmlmeSddIH0sCisgICAgICAgIHsga3R5OiAiRUMi
LCB1c2U6ICJzaWciLCBleHQ6IHRydWUsIGtleV9vcHM6IFsic2lnbiJdLCBjcnY6ICJQLTI1NiIs
IHg6ICIxRlNWV2llVHZpa0ZrRzFOT3loa1VDYU1iZFFoeHdINmFDdTRFei1zUnRBIiwgeTogIjlq
bU5UTHFNNGNqQmhkQW5IY05JOVlRVjNPOExGbW8tRWRaV2s4bnRBYUkiLCBkOiAicHB4QlNvdjNO
OF9BVWNpc0F1dm1MVjR5RThlX0xfQkxFOGJaYjlaMVhqZyIgfSwKKyAgICAgICAgeyBrdHk6ICJv
Y3QiLCBrOiAiWVdKalpHVm1aMmd4TWpNME5UWTNPQSIsIGFsZzogIkhTMjU2IiwgdXNlOiAic2ln
Iiwga2V5X29wczogWyJzaWduIiwgInZlcmlmeSJdLCBleHQ6IHRydWUsIH0sCisgICAgICAgIHsg
a3R5OiAiUlNBIiwgYWxnOiAiUFMyNTYiLCB1c2U6ICJzaWciLCBrZXlfb3BzOiBbInZlcmlmeSJd
LCBleHQ6IHRydWUsIG46ICJyY0NVQ3Y3T2MxSFZhbTFESWhDenFrblRoV2F3T3A4UUxrOFppeTJw
MTBCeWpRRkNham9GaXl1QVdsLVIxV1haYWY0eGl0TFJyYWNUOWFncHpJemMtTWJMU0hJR2dXUUdP
MjFsR2lJbXk1ZnRaLUQ4YkhBcVJ6MnkxNXB6RDRjNENFb3U3WFNTTERvUm5SMFFHNU1zRGhENnMy
Z1Y5bXdIa3J0a0N4dE1XZEJpLTc3YXM4d0dtbE5SbGRjT1NnWkRMSzhVbkNTZ0ExT2d1Wjk4OWJG
eWM4dE9PRUliMHhVU2ZQU3ozTFBTQ255WXo2OGFEam1LVmVOSC1pZzg1N09TY3lXYkd5RXkzQml3
NjRxdW4zanVVbE5Xc0ozem5na09kdGVZV3l0eDVRcjRYS05zNlItTXl5cTcyS1VwMDJtSkRaaWl5
aWdseE1MX2kzLV9DZWVjQ3ciLCBlOiAiQVFBQiIgfSwKKyAgICAgICAgeyBrdHk6ICJSU0EiLCBh
bGc6ICJQUzEiLCB1c2U6ICJzaWciLCBrZXlfb3BzOiBbInNpZ24iXSwgZXh0OiB0cnVlLCBuOiAi
cmNDVUN2N09jMUhWYW0xREloQ3pxa25UaFdhd09wOFFMazhaaXkycDEwQnlqUUZDYWpvRml5dUFX
bC1SMVdYWmFmNHhpdExScmFjVDlhZ3B6SXpjLU1iTFNISUdnV1FHTzIxbEdpSW15NWZ0Wi1EOGJI
QXFSejJ5MTVwekQ0YzRDRW91N1hTU0xEb1JuUjBRRzVNc0RoRDZzMmdWOW13SGtydGtDeHRNV2RC
aS03N2FzOHdHbWxOUmxkY09TZ1pETEs4VW5DU2dBMU9ndVo5ODliRnljOHRPT0VJYjB4VVNmUFN6
M0xQU0NueVl6NjhhRGptS1ZlTkgtaWc4NTdPU2N5V2JHeUV5M0JpdzY0cXVuM2p1VWxOV3NKM3pu
Z2tPZHRlWVd5dHg1UXI0WEtOczZSLU15eXE3MktVcDAybUpEWmlpeWlnbHhNTF9pMy1fQ2VlY0N3
IiwgZTogIkFRQUIiLCBkOiAiZU5MUzM3YUN6N1JYU05QRF9EdExCSjZqNVQ4Y1N4ZHpSQkNqUGFJ
NldjR3FKcDE2bHEzVVR3dW9ETEFxbEE5b0dZbTIzOGRzSVdwdXVjUF9sUXRiV2UtN1NweG9JNl92
bVlHZjdZVlVIdjEtREY5cWlPbVNyTW1keE1uVk96WVhZOFJhVDZ0aFBqbl9KNWNmTFYyeElfTHdz
ck10bXBkU3lObGdYMHpUVWh3dHVhaGdBS01FQ2hZakgyRW5qSGRIdzZzWTItd0FwZGNRSTdVTEUw
b281UnpiUVpwbXVoY045aGlCYzBMM2hoRjBxbzUwbWJsMDJfNjVfR1E3RHBWa1hCeE5nUkJMemxQ
YWJtenpHMm9BaGZlZkxnWW1TQzFvcGFDa1hFNnZSV1FOV05MNDVSWk5aRllNM3VvSmdoT01xR2Vv
Y00wQnBqZENoSHJQT2xGdlNRIiwgcDogIjRtaVR1QWpLTWVINXVKNUtCMzk3UVV3aGJrWUVnU2Jj
QTJtaWZtU2t2RTIwMThnYjU1cWtCSEsxZVZyeWYxX200M0xObGM2T19hazZnZnpkWkladlM1TkNH
alBsMHEwOXBsVXB1OHFGT1NzcEJ3QTY3cUdINzZsRmxaTG5fZDR5Z2xTN3dmTHJ1NF81WXM4cUxM
cy1EcVZMdml3cG9zT255eVdxd001QVhwMCIsIHE6ICJ4SFlyemtpdnRtbnpfc0djaG5XR2MwcS1w
RE9rS2ljcHRScHYycE1GSUlYeG5GWDVhTWVFWElaalZ1alh0d1V5MVVsRklOMkdaSlN2eTVLSjc5
bXVfWHlObkZITXplZEgtQTNlZTN1OGgxVVVyWkYtdlV1MV9lNFVfeDY3Tk4xZGVkelVTS3luTjdw
RmwzT2t1U2hNQldHVi1jd3pPUGRjVkFmVnVabHhVTWMiLCBkcDogImZCekR6WURVQm1CUUdvcDdI
bjBkdmZfVDI3VjZScXBjdFdvMDc0Q1FaY0ZiUDJhdEZWdEtTajN2aVdUM3hpZDJWSHpjZ2lESGRm
cE0zbkVWbEVPMXd3SW9uR0NTdmRqR0VPWmlpRlZPanJaQU9WeEE4Z3VPanl5RnZxYlhrZTA2VndQ
SUlWdmZLZVNVMnp1aGJQX18xdHQ2Rl9meG93NEtiMnhvbkdUMEdHayIsIGRxOiAiam1FMkRpSVBk
aHdEZ0xYQVFwSWFCcVE4MWJPM1hmVlRfTFJVTEF3d3d3bFB1UVYxNDhIMDR6bGg5VEo2WTJHWkhZ
b2tWMVUwZU9CcEp4ZmtiN2RMWXRwSnB1aUJqUmY0eUlVRW9HbGtrSV9RbEpuRlNGci1ZakdSZGZO
SHFXQmt4bFNNWkw3NzBSOW1JQVRuZEdrSDd6NXgtcjlLd0JaRkM0RkNHMmhnX3pFIiwgcWk6ICJZ
Q1hfcEx3Yk1CQTFUaFZIMFdjd21ueXRxTmNyTUNFd1RtN0J5QTJlVTZuV2JRclVMdmY3bTlfa3pm
TFVjanNucEFWbEJRRzVKTVhNeTBTcTRwdHdieXdzYTUtRzhLQU9PT1IyTDN2NGhDLUV5czlmdGdG
TV8zaTBvNDBlZVFINGIzaGFQYm50ckllTWc4SXpsT3VWWUtmOS0yUXVLRG9XZVJkZDdOc2R4VGsi
IH0KKyAgICBdOworCisgICAgY29uc3Qgb3BlblJlcXVlc3QgPSBpbmRleGVkREIub3BlbigiYmFj
a3dhcmRfY29tcGF0aWJpbGl0eSIpOwogICAgIG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlv
bihldmVudCkgewogICAgICAgICBsb2coIkVycm9yOiAiICsgZXZlbnQudGFyZ2V0LmVycm9yLm5h
bWUpOwotICAgIH0KKyAgICB9OwogICAgIG9wZW5SZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KGV2ZW50KSB7CiAgICAgICAgIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAgICAgICAgcmVh
ZFR5cGUoKTsKLSAgICB9CisgICAgfTsKIAotICAgIHZhciByZXN1bHQgPSB0cnVlOworICAgIGxl
dCByZXN1bHQgPSB0cnVlOwogICAgIGZ1bmN0aW9uIHJlYWRUeXBlKCkKICAgICB7Ci0gICAgICAg
IHZhciBvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCJ0eXBlIikub2JqZWN0U3RvcmUoInR5
cGUiKTsKKyAgICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigidHlwZSIp
Lm9iamVjdFN0b3JlKCJ0eXBlIik7CiAgICAgICAgIG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKS5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewogICAgICAgICAgICAgY3Vyc29yID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsKICAgICAgICAgICAgIGlmIChjdXJzb3IpIHsKQEAgLTY5LDcgKzkyLDcg
QEAKIAogICAgIGZ1bmN0aW9uIHJlYWRWYWx1ZSgpCiAgICAgewotICAgICAgICB2YXIgb2JqZWN0
U3RvcmUgPSBkYi50cmFuc2FjdGlvbigidmFsdWUiKS5vYmplY3RTdG9yZSgidmFsdWUiKTsKKyAg
ICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigidmFsdWUiKS5vYmplY3RT
dG9yZSgidmFsdWUiKTsKICAgICAgICAgb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpLm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgICAgICBjdXJzb3IgPSBldmVudC50YXJnZXQu
cmVzdWx0OwogICAgICAgICAgICAgaWYgKGN1cnNvcikgewpAQCAtODIsMTIgKzEwNSwyNyBAQAog
CiAgICAgZnVuY3Rpb24gcmVhZFR5cGVWYWx1ZSgpCiAgICAgewotICAgICAgICB2YXIgb2JqZWN0
U3RvcmUgPSBkYi50cmFuc2FjdGlvbigidHlwZVZhbHVlIikub2JqZWN0U3RvcmUoInR5cGVWYWx1
ZSIpOworICAgICAgICBjb25zdCBvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCJ0eXBlVmFs
dWUiKS5vYmplY3RTdG9yZSgidHlwZVZhbHVlIik7CiAgICAgICAgIG9iamVjdFN0b3JlLm9wZW5D
dXJzb3IoKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewogICAgICAgICAgICAgY3Vyc29y
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAgICAgICAgICAgIGlmIChjdXJzb3IpIHsKICAgICAg
ICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgJiYgc2hvdWxkQmVUeXBlKCJjdXJzb3IudmFsdWUi
LCB0ZXN0VHlwZVZhbHVlc1tjdXJzb3Iua2V5IC0gMV0udHlwZSkgJiYgKGN1cnNvci52YWx1ZSA9
PSB0ZXN0VHlwZVZhbHVlc1tjdXJzb3Iua2V5IC0gMV0udmFsdWUpOwogICAgICAgICAgICAgICAg
IGN1cnNvci5jb250aW51ZSgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICByZWFkQ3J5cHRvS2V5KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCisg
ICAgYXN5bmMgZnVuY3Rpb24gcmVhZENyeXB0b0tleSgpCisgICAgeworICAgICAgICBjb25zdCBv
YmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCJjcnlwdG9LZXkiKS5vYmplY3RTdG9yZSgiY3J5
cHRvS2V5Iik7CisgICAgICAgIG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKS5vbnN1Y2Nlc3MgPSBh
c3luYyBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsKKyAgICAgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgICAgICBjb25z
dCBqd2tLZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmV4cG9ydEtleSgiandrIiwgY3Vyc29yLnZh
bHVlKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgJiYgc2hvdWxkQmVDcnlwdG9L
ZXkoandrS2V5LCB0ZXN0Q3J5cHRvS2V5VmFsdWVzW2N1cnNvci5rZXkgLSAxXSk7CisgICAgICAg
ICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICAgICAgICAgIGxvZygiUGFzcyIpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVk
REJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHlXcml0ZS5odG1sIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVC
YWNrd2FyZENvbXBhdGliaWxpdHlXcml0ZS5odG1sCmluZGV4IGIyNjZlY2M0ZWFhYjE5Y2ZhNWZl
MTliN2FiOTMzM2NhMzA0MTUzNDcuLjBlMDhkNDNmZGM2NjA4NzY2MmU3OGE0NjhiZWRkMGE3M2Zi
OThkNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5V3JpdGUuaHRtbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVj
dHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVdyaXRlLmh0bWwKQEAgLTEsMjEgKzEsMjEg
QEAKIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gbG9nKG1zZykKICAgICB7Ci0vLyAgICAgICAgYWxl
cnQobXNnKTsKKyAgICAgICAgLy8gYWxlcnQobXNnKTsKICAgICAgICAgd2luZG93LndlYmtpdC5t
ZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UobXNnKTsKICAgICB9CiAKICAg
ICBmdW5jdGlvbiBzaG91bGRCZVR5cGUoX2EsIF90eXBlKQogICAgIHsKLSAgICAgICAgdmFyIGV4
Y2VwdGlvbjsKLSAgICAgICAgdmFyIF9hdjsKKyAgICAgICAgbGV0IGV4Y2VwdGlvbjsKKyAgICAg
ICAgbGV0IF9hdjsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIF9hdiA9IGV2YWwoX2EpOwog
ICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICBleGNlcHRpb24gPSBlOwogICAgICAg
ICB9CiAKLSAgICAgICAgdmFyIF90eXBldiA9IGV2YWwoX3R5cGUpOworICAgICAgICBjb25zdCBf
dHlwZXYgPSBldmFsKF90eXBlKTsKICAgICAgICAgaWYgKF9hdiBpbnN0YW5jZW9mIF90eXBldikg
ewogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0yMyw4ICsy
MywyMSBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgZnVuY3Rpb24gc2hvdWxkQmVDcnlwdG9L
ZXkoX2EsIF9rZXkpCisgICAgeworICAgICAgICBpZiAoIShKU09OLnN0cmluZ2lmeShfa2V5Lmtl
eV9vcHMpID09IEpTT04uc3RyaW5naWZ5KF9hLmtleV9vcHMpKSB8fCAhKF9rZXkuZXh0ID09IF9h
LmV4dCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChfa2V5Lmt0eSAg
PT0gIm9jdCIgJiYgX2Eua3R5ID09ICJvY3QiKQorICAgICAgICAgICAgcmV0dXJuIChfa2V5Lmsg
PT0gX2EuaykgJiYgKF9rZXkuYWxnID09IF9hLmFsZyk7CisgICAgICAgIGlmIChfa2V5Lmt0eSAg
PT0gIkVDIiAmJiBfYS5rdHkgPT0gIkVDIikKKyAgICAgICAgICAgIHJldHVybiAoX2tleS5rID09
IF9hLmspICYmIChfa2V5LmNydiA9PSBfYS5jcnYpICYmIChfa2V5LnggPT0gX2EueCkgJiYgKF9r
ZXkueSA9PSBfYS55KSAmJiAoX2tleS5kID09IF9hLmQpOworICAgICAgICBpZiAoX2tleS5rdHkg
ID09ICJSU0EiICYmIF9hLmt0eSA9PSAiUlNBIikKKyAgICAgICAgICAgIHJldHVybiAoX2tleS5h
bGcgPT0gX2EuYWxnKSAmJiAoX2tleS5uID09IF9hLm4pICYmIChfa2V5LmUgPT0gX2EuZSkgJiYg
KF9rZXkuZCA9PSBfYS5kKSAmJiAoX2tleS5wID09IF9hLnApICYmIChfa2V5LnEgPT0gX2EucSkg
JiYgKF9rZXkuZHAgPT0gX2EuZHApICYmIChfa2V5LmRxID09IF9hLmRxKSAmJiAoX2tleS5xaSA9
PSBfYS5xaSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICAvLyBWYWx1ZXMg
dGhhdCBhcmUgdXNlZCB0byBpbmZlciB0aGUgdHlwZSBvZiBhIGdpdmVuIHByaW1pdGl2ZSB0eXBl
LgotICAgIHZhciB0ZXN0VmFsdWVzID0gWworICAgIGNvbnN0IHRlc3RWYWx1ZXMgPSBbCiAgICAg
ICAgIHVuZGVmaW5lZCwKICAgICAgICAgbnVsbCwKICAgICAgICAgNSwgLy8gSW50CkBAIC0zOCwz
OSArNTEsNTEgQEAKICAgICBdOwogCiAgICAgLy8gVmFsdWVzIHRoYXQgYXJlIHVzZWQgdG8gaW5m
ZXIgdGhlIHR5cGUgb2YgYSBnaXZlbiBCb29sZWFuL1N0cmluZyB0eXBlLgotICAgIHZhciB0ZXN0
VHlwZVZhbHVlcyA9IFsKKyAgICBjb25zdCB0ZXN0VHlwZVZhbHVlcyA9IFsKICAgICAgICAgeyBp
dGVtOiBuZXcgQm9vbGVhbih0cnVlKSwgdHlwZTogIkJvb2xlYW4iLCB2YWx1ZTogdHJ1ZSB9LAog
ICAgICAgICB7IGl0ZW06IG5ldyBCb29sZWFuKGZhbHNlKSwgdHlwZTogIkJvb2xlYW4iLCB2YWx1
ZTogZmFsc2UgfSwKICAgICAgICAgeyBpdGVtOiBuZXcgU3RyaW5nKCksIHR5cGU6ICJTdHJpbmci
LCB2YWx1ZTogIiIgfQogICAgIF07CiAKKyAgICAvLyBWYWx1ZXMgYXJlIGluIEpXSyBmb3JtYXRz
LgorICAgIGNvbnN0IHRlc3RDcnlwdG9LZXlWYWx1ZXMgPSBbCisgICAgICAgIHsga3R5OiAib2N0
IiwgazogIllXSmpaR1ZtWjJneE1qTTBOVFkzT0EiLCBhbGc6ICJBMTI4Q0JDIiwgdXNlOiAiZW5j
Iiwga2V5X29wczogWydkZWNyeXB0JywgJ2VuY3J5cHQnLCAndW53cmFwS2V5JywgJ3dyYXBLZXkn
XSwgZXh0OiB0cnVlIH0sCisgICAgICAgIHsga3R5OiAiRUMiLCB1c2U6ICJzaWciLCBleHQ6IHRy
dWUsIGNydjogIlAtMjU2IiwgeDogIjFGU1ZXaWVUdmlrRmtHMU5PeWhrVUNhTWJkUWh4d0g2YUN1
NEV6LXNSdEEiLCB5OiAiOWptTlRMcU00Y2pCaGRBbkhjTkk5WVFWM084TEZtby1FZFpXazhudEFh
SSIsIGtleV9vcHM6IFsndmVyaWZ5J10gfSwKKyAgICAgICAgeyBrdHk6ICJFQyIsIHVzZTogInNp
ZyIsIGV4dDogdHJ1ZSwga2V5X29wczogWyJzaWduIl0sIGNydjogIlAtMjU2IiwgeDogIjFGU1ZX
aWVUdmlrRmtHMU5PeWhrVUNhTWJkUWh4d0g2YUN1NEV6LXNSdEEiLCB5OiAiOWptTlRMcU00Y2pC
aGRBbkhjTkk5WVFWM084TEZtby1FZFpXazhudEFhSSIsIGQ6ICJwcHhCU292M044X0FVY2lzQXV2
bUxWNHlFOGVfTF9CTEU4YlpiOVoxWGpnIiB9LAorICAgICAgICB7IGt0eTogIm9jdCIsIGs6ICJZ
V0pqWkdWbVoyZ3hNak0wTlRZM09BIiwgYWxnOiAiSFMyNTYiLCB1c2U6ICJzaWciLCBrZXlfb3Bz
OiBbInNpZ24iLCAidmVyaWZ5Il0sIGV4dDogdHJ1ZSwgfSwKKyAgICAgICAgeyBrdHk6ICJSU0Ei
LCBhbGc6ICJQUzI1NiIsIHVzZTogInNpZyIsIGtleV9vcHM6IFsidmVyaWZ5Il0sIGV4dDogdHJ1
ZSwgbjogInJjQ1VDdjdPYzFIVmFtMURJaEN6cWtuVGhXYXdPcDhRTGs4Wml5MnAxMEJ5alFGQ2Fq
b0ZpeXVBV2wtUjFXWFphZjR4aXRMUnJhY1Q5YWdwekl6Yy1NYkxTSElHZ1dRR08yMWxHaUlteTVm
dFotRDhiSEFxUnoyeTE1cHpENGM0Q0VvdTdYU1NMRG9SblIwUUc1TXNEaEQ2czJnVjltd0hrcnRr
Q3h0TVdkQmktNzdhczh3R21sTlJsZGNPU2daRExLOFVuQ1NnQTFPZ3VaOTg5YkZ5Yzh0T09FSWIw
eFVTZlBTejNMUFNDbnlZejY4YURqbUtWZU5ILWlnODU3T1NjeVdiR3lFeTNCaXc2NHF1bjNqdVVs
TldzSjN6bmdrT2R0ZVlXeXR4NVFyNFhLTnM2Ui1NeXlxNzJLVXAwMm1KRFppaXlpZ2x4TUxfaTMt
X0NlZWNDdyIsIGU6ICJBUUFCIiB9LAorICAgICAgICB7IGt0eTogIlJTQSIsIGFsZzogIlBTMSIs
IHVzZTogInNpZyIsIGtleV9vcHM6IFsic2lnbiJdLCBleHQ6IHRydWUsIG46ICJyY0NVQ3Y3T2Mx
SFZhbTFESWhDenFrblRoV2F3T3A4UUxrOFppeTJwMTBCeWpRRkNham9GaXl1QVdsLVIxV1haYWY0
eGl0TFJyYWNUOWFncHpJemMtTWJMU0hJR2dXUUdPMjFsR2lJbXk1ZnRaLUQ4YkhBcVJ6MnkxNXB6
RDRjNENFb3U3WFNTTERvUm5SMFFHNU1zRGhENnMyZ1Y5bXdIa3J0a0N4dE1XZEJpLTc3YXM4d0dt
bE5SbGRjT1NnWkRMSzhVbkNTZ0ExT2d1Wjk4OWJGeWM4dE9PRUliMHhVU2ZQU3ozTFBTQ255WXo2
OGFEam1LVmVOSC1pZzg1N09TY3lXYkd5RXkzQml3NjRxdW4zanVVbE5Xc0ozem5na09kdGVZV3l0
eDVRcjRYS05zNlItTXl5cTcyS1VwMDJtSkRaaWl5aWdseE1MX2kzLV9DZWVjQ3ciLCBlOiAiQVFB
QiIsIGQ6ICJlTkxTMzdhQ3o3UlhTTlBEX0R0TEJKNmo1VDhjU3hkelJCQ2pQYUk2V2NHcUpwMTZs
cTNVVHd1b0RMQXFsQTlvR1ltMjM4ZHNJV3B1dWNQX2xRdGJXZS03U3B4b0k2X3ZtWUdmN1lWVUh2
MS1ERjlxaU9tU3JNbWR4TW5WT3pZWFk4UmFUNnRoUGpuX0o1Y2ZMVjJ4SV9Md3NyTXRtcGRTeU5s
Z1gwelRVaHd0dWFoZ0FLTUVDaFlqSDJFbmpIZEh3NnNZMi13QXBkY1FJN1VMRTBvbzVSemJRWnBt
dWhjTjloaUJjMEwzaGhGMHFvNTBtYmwwMl82NV9HUTdEcFZrWEJ4TmdSQkx6bFBhYm16ekcyb0Fo
ZmVmTGdZbVNDMW9wYUNrWEU2dlJXUU5XTkw0NVJaTlpGWU0zdW9KZ2hPTXFHZW9jTTBCcGpkQ2hI
clBPbEZ2U1EiLCBwOiAiNG1pVHVBaktNZUg1dUo1S0IzOTdRVXdoYmtZRWdTYmNBMm1pZm1Ta3ZF
MjAxOGdiNTVxa0JISzFlVnJ5ZjFfbTQzTE5sYzZPX2FrNmdmemRaSVp2UzVOQ0dqUGwwcTA5cGxV
cHU4cUZPU3NwQndBNjdxR0g3NmxGbFpMbl9kNHlnbFM3d2ZMcnU0XzVZczhxTExzLURxVkx2aXdw
b3NPbnl5V3F3TTVBWHAwIiwgcTogInhIWXJ6a2l2dG1uel9zR2NobldHYzBxLXBET2tLaWNwdFJw
djJwTUZJSVh4bkZYNWFNZUVYSVpqVnVqWHR3VXkxVWxGSU4yR1pKU3Z5NUtKNzltdV9YeU5uRkhN
emVkSC1BM2VlM3U4aDFVVXJaRi12VXUxX2U0VV94NjdOTjFkZWR6VVNLeW5ON3BGbDNPa3VTaE1C
V0dWLWN3ek9QZGNWQWZWdVpseFVNYyIsIGRwOiAiZkJ6RHpZRFVCbUJRR29wN0huMGR2Zl9UMjdW
NlJxcGN0V28wNzRDUVpjRmJQMmF0RlZ0S1NqM3ZpV1QzeGlkMlZIemNnaURIZGZwTTNuRVZsRU8x
d3dJb25HQ1N2ZGpHRU9aaWlGVk9qclpBT1Z4QThndU9qeXlGdnFiWGtlMDZWd1BJSVZ2ZktlU1Uy
enVoYlBfXzF0dDZGX2Z4b3c0S2IyeG9uR1QwR0drIiwgZHE6ICJqbUUyRGlJUGRod0RnTFhBUXBJ
YUJxUTgxYk8zWGZWVF9MUlVMQXd3d3dsUHVRVjE0OEgwNHpsaDlUSjZZMkdaSFlva1YxVTBlT0Jw
Snhma2I3ZExZdHBKcHVpQmpSZjR5SVVFb0dsa2tJX1FsSm5GU0ZyLVlqR1JkZk5IcVdCa3hsU01a
TDc3MFI5bUlBVG5kR2tIN3o1eC1yOUt3QlpGQzRGQ0cyaGdfekUiLCBxaTogIllDWF9wTHdiTUJB
MVRoVkgwV2N3bW55dHFOY3JNQ0V3VG03QnlBMmVVNm5XYlFyVUx2ZjdtOV9remZMVWNqc25wQVZs
QlFHNUpNWE15MFNxNHB0d2J5d3NhNS1HOEtBT09PUjJMM3Y0aEMtRXlzOWZ0Z0ZNXzNpMG80MGVl
UUg0YjNoYVBibnRySWVNZzhJemxPdVZZS2Y5LTJRdUtEb1dlUmRkN05zZHhUayIgfQorICAgIF07
CisKICAgICBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoImJhY2t3YXJkX2NvbXBhdGliaWxpdHki
KTsKLSAgICB2YXIgb3BlblJlcXVlc3QgPSBpbmRleGVkREIub3BlbigiYmFja3dhcmRfY29tcGF0
aWJpbGl0eSIpOworICAgIGNvbnN0IG9wZW5SZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oImJhY2t3
YXJkX2NvbXBhdGliaWxpdHkiKTsKICAgICBvcGVuUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBm
dW5jdGlvbihldmVudCkgewogICAgICAgICAvLyBUaGlzIG9iamVjdFN0b3JlIHN0b3JlcyBlbGVt
ZW50cyB0aGF0IHdlIG9ubHkgbmVlZCB0byBjaGVjayBpdHMgdHlwZSB0byBkZXRlcm1pbmUgaXRz
IHNlcmlhbGl6YXRpb24gdGFnLgotICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmVudC50YXJn
ZXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3JlKCJ0eXBlIik7CisgICAgICAgIGV2ZW50LnRhcmdl
dC5yZXN1bHQuY3JlYXRlT2JqZWN0U3RvcmUoInR5cGUiKTsKICAgICAgICAgLy8gVGhpcyBvYmpl
Y3RTdG9yZSBzdG9yZXMgZWxlbWVudHMgdGhhdCB3ZSBuZWVkIHRvIGNoZWNrIGl0cyB2YWx1ZSB0
byBkZXRlcm1pbmUgaXRzIHNlcmlhbGl6YXRpb24gdGFnLgotICAgICAgICB2YXIgb2JqZWN0U3Rv
cmUgPSBldmVudC50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3JlKCJ2YWx1ZSIsIHsgYXV0
b0luY3JlbWVudCA6IHRydWUgfSk7CisgICAgICAgIGV2ZW50LnRhcmdldC5yZXN1bHQuY3JlYXRl
T2JqZWN0U3RvcmUoInZhbHVlIiwgeyBhdXRvSW5jcmVtZW50IDogdHJ1ZSB9KTsKICAgICAgICAg
Ly8gVGhpcyBvYmplY3RTdG9yZSBzdG9yZXMgZWxlbWVudHMgdGhhdCB3ZSBuZWVkIHRvIGNoZWNr
IGJvdGggaXRzIHR5cGUgYW5kIGl0cyB2YWx1ZSB0byBkZXRlcm1pbmUgaXRzIHNlcmlhbGl6YXRp
b24gdGFnLgotICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmVudC50YXJnZXQucmVzdWx0LmNy
ZWF0ZU9iamVjdFN0b3JlKCJ0eXBlVmFsdWUiLCB7IGF1dG9JbmNyZW1lbnQgOiB0cnVlIH0pOwot
ICAgIH0KKyAgICAgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5jcmVhdGVPYmplY3RTdG9yZSgidHlw
ZVZhbHVlIiwgeyBhdXRvSW5jcmVtZW50IDogdHJ1ZSB9KTsKKyAgICAgICAgLy8gVGhpcyBvYmpl
Y3RTdG9yZSBzdG9yZXMgY3J5cHRvIGtleXMuCisgICAgICAgIGV2ZW50LnRhcmdldC5yZXN1bHQu
Y3JlYXRlT2JqZWN0U3RvcmUoImNyeXB0b0tleSIsIHsgYXV0b0luY3JlbWVudCA6IHRydWUgfSk7
CisgICAgfTsKICAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKICAg
ICAgICAgbG9nKCJFcnJvcjogIiArIGV2ZW50LnRhcmdldC5lcnJvci5uYW1lKTsKLSAgICB9Cisg
ICAgfTsKICAgICBvcGVuUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewogICAg
ICAgICBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CiAgICAgICAgIHN0b3JlVHlwZSgpOwotICAg
IH0KKyAgICB9OwogCiAgICAgZnVuY3Rpb24gc3RvcmVUeXBlKCkKICAgICB7Ci0gICAgICAgIHZh
ciB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCJ0eXBlIiwgInJlYWR3cml0ZSIpOworICAg
ICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCJ0eXBlIiwgInJlYWR3cml0
ZSIpOwogICAgICAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKICAg
ICAgICAgICAgIGxvZygiRXJyb3I6ICIgKyBldmVudC50YXJnZXQuZXJyb3IubmFtZSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7
IHN0b3JlVmFsdWUoKTsgfQorICAgICAgICB9OworICAgICAgICB0cmFuc2FjdGlvbi5vbmNvbXBs
ZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsgc3RvcmVWYWx1ZSgpOyB9OwogCi0gICAgICAgIHZhciBv
YmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJ0eXBlIik7CisgICAgICAgIGNv
bnN0IG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoInR5cGUiKTsKICAgICAg
ICAgLy8gVGhlIGtleSBvZiBhbiBpdGVtIGlzIHRoZSB0eXBlIG9mIGl0cyB2YWx1ZSwgaGVuY2Ug
d2UgY291bGQgZGV0ZXJtaW5lIHR5cGUgbWlzbWF0Y2gsIGkuZS4gc2VyaWFsaXphdGlvbiB0YWcg
cmVvcmRlcgogICAgICAgICAvLyBzaW1wbHkgYnkgdXNpbmcgYW4gaXRlbSdzIGtleSBhbmQgdmFs
dWUuCiAgICAgICAgIG9iamVjdFN0b3JlLmFkZChbMSwgMl0sICJBcnJheSIpOwpAQCAtOTksMzYg
KzEyNCw2MCBAQAogCiAgICAgZnVuY3Rpb24gc3RvcmVWYWx1ZSgpCiAgICAgewotICAgICAgICB2
YXIgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbigidmFsdWUiLCAicmVhZHdyaXRlIik7Cisg
ICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oInZhbHVlIiwgInJlYWR3
cml0ZSIpOwogICAgICAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsK
ICAgICAgICAgICAgIGxvZygiRXJyb3I6ICIgKyBldmVudC50YXJnZXQuZXJyb3IubmFtZSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50
KSB7IHN0b3JlVHlwZVZhbHVlKCk7IH0KKyAgICAgICAgfTsKKyAgICAgICAgdHJhbnNhY3Rpb24u
b25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7IHN0b3JlVHlwZVZhbHVlKCk7IH07CiAKLSAg
ICAgICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoInZhbHVlIik7
CisgICAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoInZh
bHVlIik7CiAgICAgICAgIC8vIEhlcmUgd2Ugc3RvcmUgdmFsdWVzIGluIHRoZSB0ZXN0IG1hdHJp
eCBpbiBvcmRlciBhbmQgcmVhZCB0aGVtIGluIG9yZGVyIHRvIHNlZSBpZiBhbnkgbWlzbWF0Y2gg
aGFwcGVucy4KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0VmFsdWVzLmxlbmd0aDsg
aSsrKQorICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRlc3RWYWx1ZXMubGVuZ3RoOyBpKysp
CiAgICAgICAgICAgICBvYmplY3RTdG9yZS5hZGQodGVzdFZhbHVlc1tpXSk7CiAgICAgfQogCiAg
ICAgZnVuY3Rpb24gc3RvcmVUeXBlVmFsdWUoKQogICAgIHsKLSAgICAgICAgdmFyIHRyYW5zYWN0
aW9uID0gZGIudHJhbnNhY3Rpb24oInR5cGVWYWx1ZSIsICJyZWFkd3JpdGUiKTsKKyAgICAgICAg
Y29uc3QgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbigidHlwZVZhbHVlIiwgInJlYWR3cml0
ZSIpOwogICAgICAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKICAg
ICAgICAgICAgIGxvZygiRXJyb3I6ICIgKyBldmVudC50YXJnZXQuZXJyb3IubmFtZSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7
IHJlYWRUeXBlKCk7IH0KKyAgICAgICAgfTsKKyAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7IHN0b3JlQ3J5cHRvS2V5KCk7IH07CiAKLSAgICAgICAgdmFy
IG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoInR5cGVWYWx1ZSIpOworICAg
ICAgICBjb25zdCBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJ0eXBlVmFs
dWUiKTsKICAgICAgICAgLy8gSGVyZSB3ZSBzdG9yZSBpdGVtcyBpbiB0aGUgdGVzdCBtYXRyaXgg
aW4gb3JkZXIgYW5kIHJlYWQgdGhlbSBpbiBvcmRlciB0byBzZWUgaWYgYW55IG1pc21hdGNoZXMg
aXRzIHR5cGUgYW5kIHZhbHVlLgotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RUeXBl
VmFsdWVzLmxlbmd0aDsgaSsrKQorICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRlc3RUeXBl
VmFsdWVzLmxlbmd0aDsgaSsrKQogICAgICAgICAgICAgb2JqZWN0U3RvcmUuYWRkKHRlc3RUeXBl
VmFsdWVzW2ldLml0ZW0pOwogICAgIH0KIAotICAgIHZhciByZXN1bHQgPSB0cnVlOworICAgIGFz
eW5jIGZ1bmN0aW9uIHN0b3JlQ3J5cHRvS2V5KCkKKyAgICB7CisgICAgICAgIGNvbnN0IHRyYW5z
YWN0aW9uID0gZGIudHJhbnNhY3Rpb24oImNyeXB0b0tleSIsICJyZWFkd3JpdGUiKTsKKyAgICAg
ICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBs
b2coIkVycm9yOiAiICsgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUpOworICAgICAgICB9OworICAg
ICAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsgcmVhZFR5cGUo
KTsgfTsKKworICAgICAgICBjb25zdCBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0
b3JlKCJjcnlwdG9LZXkiKTsKKyAgICAgICAgLy8gSGVyZSB3ZSBzdG9yZSBpdGVtcyBpbiB0aGUg
dGVzdCBtYXRyaXggaW4gb3JkZXIgYW5kIHJlYWQgdGhlbSBpbiBvcmRlciB0byBzZWUgaWYgYW55
IG1pc21hdGNoZXMgaXRzIHR5cGUgYW5kIHZhbHVlLgorICAgICAgICBsZXQgY3J5cHRvS2V5ID0g
YXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIHRlc3RDcnlwdG9LZXlWYWx1ZXNb
MF0sICJhZXMtY2JjIiwgdHJ1ZSwgWyJlbmNyeXB0IiwgImRlY3J5cHQiLCAid3JhcEtleSIsICJ1
bndyYXBLZXkiXSk7CisgICAgICAgIG9iamVjdFN0b3JlLmFkZChjcnlwdG9LZXkpOworICAgICAg
ICBjcnlwdG9LZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgdGVzdENy
eXB0b0tleVZhbHVlc1sxXSwgeyBuYW1lOiAiRUNEU0EiLCBuYW1lZEN1cnZlOiAiUC0yNTYiIH0s
IHRydWUsIFsndmVyaWZ5J10pOworICAgICAgICBvYmplY3RTdG9yZS5hZGQoY3J5cHRvS2V5KTsK
KyAgICAgICAgY3J5cHRvS2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIs
IHRlc3RDcnlwdG9LZXlWYWx1ZXNbMl0sIHsgbmFtZTogIkVDRFNBIiwgbmFtZWRDdXJ2ZTogIlAt
MjU2IiB9LCB0cnVlLCBbInNpZ24iXSk7CisgICAgICAgIG9iamVjdFN0b3JlLmFkZChjcnlwdG9L
ZXkpOworICAgICAgICBjcnlwdG9LZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgi
andrIiwgdGVzdENyeXB0b0tleVZhbHVlc1szXSwge25hbWU6ICJobWFjIiwgaGFzaDogInNoYS0y
NTYifSwgdHJ1ZSwgWyJzaWduIiwgInZlcmlmeSJdKTsKKyAgICAgICAgb2JqZWN0U3RvcmUuYWRk
KGNyeXB0b0tleSk7CisgICAgICAgIGNyeXB0b0tleSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuaW1w
b3J0S2V5KCJqd2siLCB0ZXN0Q3J5cHRvS2V5VmFsdWVzWzRdLCB7bmFtZTogIlJTQS1QU1MiLCBo
YXNoOiAiU0hBLTI1NiJ9LCB0cnVlLCBbInZlcmlmeSJdKTsKKyAgICAgICAgb2JqZWN0U3RvcmUu
YWRkKGNyeXB0b0tleSk7CisgICAgICAgIGNyeXB0b0tleSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUu
aW1wb3J0S2V5KCJqd2siLCB0ZXN0Q3J5cHRvS2V5VmFsdWVzWzVdLCB7bmFtZTogIlJTQS1QU1Mi
LCBoYXNoOiAiU0hBLTEifSwgdHJ1ZSwgWyJzaWduIl0pOworICAgICAgICBvYmplY3RTdG9yZS5h
ZGQoY3J5cHRvS2V5KTsKKyAgICB9CisKKyAgICBsZXQgcmVzdWx0ID0gdHJ1ZTsKICAgICBmdW5j
dGlvbiByZWFkVHlwZSgpCiAgICAgewotICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYi50cmFu
c2FjdGlvbigidHlwZSIpLm9iamVjdFN0b3JlKCJ0eXBlIik7CisgICAgICAgIGNvbnN0IG9iamVj
dFN0b3JlID0gZGIudHJhbnNhY3Rpb24oInR5cGUiKS5vYmplY3RTdG9yZSgidHlwZSIpOwogICAg
ICAgICBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQp
IHsKICAgICAgICAgICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CiAgICAgICAgICAg
ICBpZiAoY3Vyc29yKSB7CkBAIC0xNDEsNyArMTkwLDcgQEAKIAogICAgIGZ1bmN0aW9uIHJlYWRW
YWx1ZSgpCiAgICAgewotICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigi
dmFsdWUiKS5vYmplY3RTdG9yZSgidmFsdWUiKTsKKyAgICAgICAgY29uc3Qgb2JqZWN0U3RvcmUg
PSBkYi50cmFuc2FjdGlvbigidmFsdWUiKS5vYmplY3RTdG9yZSgidmFsdWUiKTsKICAgICAgICAg
b2JqZWN0U3RvcmUub3BlbkN1cnNvcigpLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAg
ICAgICAgICAgICBjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OwogICAgICAgICAgICAgaWYg
KGN1cnNvcikgewpAQCAtMTU0LDEyICsyMDMsMjcgQEAKIAogICAgIGZ1bmN0aW9uIHJlYWRUeXBl
VmFsdWUoKQogICAgIHsKLSAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24o
InR5cGVWYWx1ZSIpLm9iamVjdFN0b3JlKCJ0eXBlVmFsdWUiKTsKKyAgICAgICAgY29uc3Qgb2Jq
ZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigidHlwZVZhbHVlIikub2JqZWN0U3RvcmUoInR5cGVW
YWx1ZSIpOwogICAgICAgICBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkub25zdWNjZXNzID0gZnVu
Y3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
CiAgICAgICAgICAgICBpZiAoY3Vyc29yKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVz
dWx0ICYmIHNob3VsZEJlVHlwZSgiY3Vyc29yLnZhbHVlIiwgdGVzdFR5cGVWYWx1ZXNbY3Vyc29y
LmtleSAtIDFdLnR5cGUpICYmIChjdXJzb3IudmFsdWUgPT0gdGVzdFR5cGVWYWx1ZXNbY3Vyc29y
LmtleSAtIDFdLnZhbHVlKTsKICAgICAgICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmVhZENyeXB0b0tleSgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKworICAgIGFzeW5jIGZ1bmN0aW9uIHJlYWRD
cnlwdG9LZXkoKQorICAgIHsKKyAgICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2Fj
dGlvbigiY3J5cHRvS2V5Iikub2JqZWN0U3RvcmUoImNyeXB0b0tleSIpOworICAgICAgICBvYmpl
Y3RTdG9yZS5vcGVuQ3Vyc29yKCkub25zdWNjZXNzID0gYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICAgICAgICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICBp
ZiAoY3Vyc29yKSB7CisgICAgICAgICAgICAgICAgY29uc3QgandrS2V5ID0gYXdhaXQgY3J5cHRv
LnN1YnRsZS5leHBvcnRLZXkoImp3ayIsIGN1cnNvci52YWx1ZSk7CisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gcmVzdWx0ICYmIHNob3VsZEJlQ3J5cHRvS2V5KGp3a0tleSwgdGVzdENyeXB0b0tl
eVZhbHVlc1tjdXJzb3Iua2V5IC0gMV0pOworICAgICAgICAgICAgICAgIGN1cnNvci5jb250aW51
ZSgpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KQog
ICAgICAgICAgICAgICAgICAgICBsb2coIlBhc3MiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MDJkZDY1ZmY3MjFlNGI2
MjViOWQ3MWE5MTdiYTZiZTQ0MGNmYTUyLi5hZDljMTNhMTdhYzAyYzI3Y2MxZDQ1MDMxOTNiODUz
MmRkNTJlNGQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTktMTAtMDIgIEppZXdlbiBUYW4g
IDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBPbmx5IHdyYXBwaW5nIENyeXB0b0tl
eXMgZm9yIElEQiBkdXJpbmcgc2VyaWFsaXphdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTAwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81
MjQ0NTkyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRzIGEgbmV3IHRlc3QgYWVzLWluZGV4ZWRkYi5odG1sIHRvIGRvIGlkYiBpbiB3b3JrZXJz
IGFuZCBtYWtlcworICAgICAgICBvdGhlciB0ZXN0cyBtb3JlIGRldGVybWluaXN0aWMuCisKKyAg
ICAgICAgKiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvYWVzLWluZGV4ZWRkYi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGNyeXB0by93b3JrZXJzL3N1YnRsZS9hZXMtaW5kZXhlZGRiLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGNyeXB0by93b3JrZXJzL3N1YnRsZS9lYy1wb3N0TWVzc2Fn
ZS13b3JrZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGNyeXB0by93b3JrZXJzL3N1YnRsZS9l
Yy1wb3N0TWVzc2FnZS13b3JrZXIuaHRtbDoKKyAgICAgICAgKiBjcnlwdG8vd29ya2Vycy9zdWJ0
bGUvaHJzYS1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGNyeXB0
by93b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdvcmtlci5odG1sOgorICAgICAgICAq
IGNyeXB0by93b3JrZXJzL3N1YnRsZS9yZXNvdXJjZXMvYWVzLWluZGV4ZWRkYi5qczogQWRkZWQu
CisgICAgICAgICogY3J5cHRvL3dvcmtlcnMvc3VidGxlL3JzYS1wb3N0TWVzc2FnZS13b3JrZXIt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGNyeXB0by93b3JrZXJzL3N1YnRsZS9yc2EtcG9zdE1l
c3NhZ2Utd29ya2VyLmh0bWw6CisKIDIwMTktMTAtMDQgIFRydWl0dCBTYXZlbGwgIDx0c2F2ZWxs
QGFwcGxlLmNvbT4KIAogICAgICAgICBMYXlvdXQgVGVzdCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzLzJkY29udGV4dC9saW5lLXN0eWxlcy8yZC5saW5lLmNhcC5yb3VuZC5odG1sIGlz
IGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9h
ZXMtaW5kZXhlZGRiLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1
YnRsZS9hZXMtaW5kZXhlZGRiLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZmIyMTYwMjdiZTAx
YzYyM2IyNDQ2OGM4ZjU4YTg0ZTdiYjVhN2ViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL2Flcy1pbmRleGVkZGItZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTYgQEAKK1tXb3JrZXJdIFRlc3QgZ2VuZXJhdGluZyBhbiBBRVMga2V5IHVzaW5nIEFF
Uy1DQkMgYWxnb3JpdGhtIGluIHdvcmtlcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitTdGFydGluZyB3b3JrZXI6IHJlc291cmNlcy9hZXMtaW5kZXhlZGRiLmpzCitbV29ya2Vy
XSBJbXBvcnRpbmcgYSBrZXkuLi4KK1BBU1MgW1dvcmtlcl0gcmV0cmlldmVkS2V5LnR5cGUgaXMg
J3NlY3JldCcKK1BBU1MgW1dvcmtlcl0gcmV0cmlldmVkS2V5LmV4dHJhY3RhYmxlIGlzIHRydWUK
K1BBU1MgW1dvcmtlcl0gcmV0cmlldmVkS2V5LmFsZ29yaXRobS5uYW1lIGlzICdBRVMtQ0JDJwor
UEFTUyBbV29ya2VyXSByZXRyaWV2ZWRLZXkuYWxnb3JpdGhtLmxlbmd0aCBpcyAxMjgKK1BBU1Mg
W1dvcmtlcl0gcmV0cmlldmVkS2V5LnVzYWdlcyBpcyBbJ2RlY3J5cHQnLCAnZW5jcnlwdCcsICd1
bndyYXBLZXknLCAnd3JhcEtleSddCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMv
c3VidGxlL2Flcy1pbmRleGVkZGIuaHRtbCBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1
YnRsZS9hZXMtaW5kZXhlZGRiLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTc4MmU3NGRiMGFmMTMyZDE4NDIy
YzFiY2Q3M2U5MmYzNGNkMmQwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NyeXB0
by93b3JrZXJzL3N1YnRsZS9hZXMtaW5kZXhlZGRiLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0PgorICAgIHdvcmtlciA9IHN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvYWVzLWluZGV4ZWRkYi5q
cycpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvZWMtcG9zdE1lc3NhZ2Utd29ya2VyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9lYy1wb3N0TWVzc2FnZS13
b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IDc1YmM3OWVlN2FlMzBmN2JhNWY5OTU3NDcwMDJiYjgw
YWZiOWI0NmMuLjJmOWIzYTA2ZmUzMzEzZWFmZDQwZjdiYzQ1NDRkMGNiNTAxMDc4ZDAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9lYy1wb3N0TWVzc2FnZS13
b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRs
ZS9lYy1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0zLDYgKzMsMTQgQEAgVGVz
dCBzZW5kaW5nIGVjIGNyeXB0byBrZXlzIHZpYSBwb3N0TWVzc2FnZSB0byBhIHdvcmtlci4KIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitQQVNTIEFsbCBjaGVja3MgcGFzc2VkIGluIHdv
cmtlciBmb3IgcHVibGljIGtleQorUEFTUyBwdWJsaWNLZXkudHlwZSBpcyAncHVibGljJworUEFT
UyBwdWJsaWNLZXkuZXh0cmFjdGFibGUgaXMgdHJ1ZQorUEFTUyBwdWJsaWNLZXkuYWxnb3JpdGht
Lm5hbWUgaXMgJ0VDREgnCitQQVNTIHB1YmxpY0tleS5hbGdvcml0aG0ubmFtZWRDdXJ2ZSBpcyAn
UC0yNTYnCitQQVNTIHB1YmxpY0tleS51c2FnZXMgaXMgWyBdCitQQVNTIGV4cG9ydGVkS2V5Lngg
aXMgcHVibGljS2V5SlNPTi54CitQQVNTIGV4cG9ydGVkS2V5LnkgaXMgcHVibGljS2V5SlNPTi55
CiBQQVNTIEFsbCBjaGVja3MgcGFzc2VkIGluIHdvcmtlciBmb3IgcHJpdmF0ZSBrZXkKIFBBU1Mg
cHJpdmF0ZUtleS50eXBlIGlzICdwcml2YXRlJwogUEFTUyBwcml2YXRlS2V5LmV4dHJhY3RhYmxl
IGlzIHRydWUKQEAgLTEyLDE0ICsyMCw2IEBAIFBBU1MgcHJpdmF0ZUtleS51c2FnZXMgaXMgWydk
ZXJpdmVCaXRzJ10KIFBBU1MgZXhwb3J0ZWRLZXkueCBpcyBwcml2YXRlS2V5SlNPTi54CiBQQVNT
IGV4cG9ydGVkS2V5LnkgaXMgcHJpdmF0ZUtleUpTT04ueQogUEFTUyBleHBvcnRlZEtleS5kIGlz
IHByaXZhdGVLZXlKU09OLmQKLVBBU1MgQWxsIGNoZWNrcyBwYXNzZWQgaW4gd29ya2VyIGZvciBw
dWJsaWMga2V5Ci1QQVNTIHB1YmxpY0tleS50eXBlIGlzICdwdWJsaWMnCi1QQVNTIHB1YmxpY0tl
eS5leHRyYWN0YWJsZSBpcyB0cnVlCi1QQVNTIHB1YmxpY0tleS5hbGdvcml0aG0ubmFtZSBpcyAn
RUNESCcKLVBBU1MgcHVibGljS2V5LmFsZ29yaXRobS5uYW1lZEN1cnZlIGlzICdQLTI1NicKLVBB
U1MgcHVibGljS2V5LnVzYWdlcyBpcyBbIF0KLVBBU1MgZXhwb3J0ZWRLZXkueCBpcyBwdWJsaWNL
ZXlKU09OLngKLVBBU1MgZXhwb3J0ZWRLZXkueSBpcyBwdWJsaWNLZXlKU09OLnkKIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL2VjLXBvc3RNZXNzYWdlLXdvcmtlci5odG1s
IGIvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL2VjLXBvc3RNZXNzYWdlLXdvcmtl
ci5odG1sCmluZGV4IDRhMTY2NjZkZmIyNDY5YTU0YTY0ZWM2MTRlYmYxNWQ1MTQ0MDE4MTIuLjVm
OTEwMzdhYjFhOGY3NDg3MTY5NWU4MTdlNTdkNGRkZGU0NjY0ZjYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9lYy1wb3N0TWVzc2FnZS13b3JrZXIuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvZWMtcG9zdE1lc3NhZ2Utd29y
a2VyLmh0bWwKQEAgLTgxLDkgKzgxLDkgQEAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2
dCkgewogCiBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgcHVibGljS2V5SlNPTiwgeyBu
YW1lOiJFQ0RIIiwgbmFtZWRDdXJ2ZToiUC0yNTYiIH0sIHRydWUsIFsgXSkudGhlbihmdW5jdGlv
bihsb2NhbFB1YmxpY0tleSkgewogICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7IHB1YmxpY0tleTog
bG9jYWxQdWJsaWNLZXkgfSk7Ci19KTsKLWNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBw
cml2YXRlS2V5SlNPTiwgeyBuYW1lOiJFQ0RIIiwgbmFtZWRDdXJ2ZToiUC0yNTYiIH0sIHRydWUs
IFsnZGVyaXZlQml0cyddKS50aGVuKGZ1bmN0aW9uKGxvY2FsUHJpdmF0ZUtleSkgewotICAgIHdv
cmtlci5wb3N0TWVzc2FnZSh7IHByaXZhdGVLZXk6IGxvY2FsUHJpdmF0ZUtleSB9KTsKKyAgICBj
cnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgcHJpdmF0ZUtleUpTT04sIHsgbmFtZToiRUNE
SCIsIG5hbWVkQ3VydmU6IlAtMjU2IiB9LCB0cnVlLCBbJ2Rlcml2ZUJpdHMnXSkudGhlbihmdW5j
dGlvbihsb2NhbFByaXZhdGVLZXkpIHsKKyAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsgcHJp
dmF0ZUtleTogbG9jYWxQcml2YXRlS2V5IH0pOworICAgIH0pOwogfSk7CiA8L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RN
ZXNzYWdlLXdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9z
dWJ0bGUvaHJzYS1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IDBlZDc0Zjlm
ZmY0Y2MxZmYyYjJhNTFlZjAyM2QyYWQwM2ZjYjY4NmYuLjZlMWQ2ZmU1MzA4MjdkNDlmOGVjOWY2
NmY2MTcxMjI0NzM0YTMyZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJz
L3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL2hyc2EtcG9zdE1lc3NhZ2Utd29ya2VyLWV4cGVj
dGVkLnR4dApAQCAtMywxNCArMyw2IEBAIFRlc3Qgc2VuZGluZyBoYXNoZWQgcnNhIGNyeXB0byBr
ZXlzIHZpYSBwb3N0TWVzc2FnZSB0byBhIHdvcmtlci4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KIAogCi1QQVNTIEFsbCBjaGVja3MgcGFzc2VkIGluIHdvcmtlciBmb3IgcHJpdmF0ZSBrZXkK
LVBBU1MgcHJpdmF0ZUtleS50eXBlIGlzICdwcml2YXRlJwotUEFTUyBwcml2YXRlS2V5LmV4dHJh
Y3RhYmxlIGlzIGZhbHNlCi1QQVNTIHByaXZhdGVLZXkuYWxnb3JpdGhtLm5hbWUgaXMgJ1JTQVNT
QS1QS0NTMS12MV81JwotUEFTUyBwcml2YXRlS2V5LmFsZ29yaXRobS5tb2R1bHVzTGVuZ3RoIGlz
IDIwNDgKLVBBU1MgYnl0ZXNUb0hleFN0cmluZyhwcml2YXRlS2V5LmFsZ29yaXRobS5wdWJsaWNF
eHBvbmVudCkgaXMgJzAxMDAwMScKLVBBU1MgcHJpdmF0ZUtleS5hbGdvcml0aG0uaGFzaC5uYW1l
IGlzICdTSEEtMjU2JwotUEFTUyBwcml2YXRlS2V5LnVzYWdlcyBpcyBbJ3NpZ24nXQogUEFTUyBB
bGwgY2hlY2tzIHBhc3NlZCBpbiB3b3JrZXIgZm9yIHB1YmxpYyBrZXkKIFBBU1MgcHVibGljS2V5
LnR5cGUgaXMgJ3B1YmxpYycKIFBBU1MgcHVibGljS2V5LmV4dHJhY3RhYmxlIGlzIHRydWUKQEAg
LTE5LDYgKzExLDE0IEBAIFBBU1MgcHVibGljS2V5LmFsZ29yaXRobS5tb2R1bHVzTGVuZ3RoIGlz
IDIwNDgKIFBBU1MgYnl0ZXNUb0hleFN0cmluZyhwdWJsaWNLZXkuYWxnb3JpdGhtLnB1YmxpY0V4
cG9uZW50KSBpcyAnMDEwMDAxJwogUEFTUyBwdWJsaWNLZXkuYWxnb3JpdGhtLmhhc2gubmFtZSBp
cyAnU0hBLTI1NicKIFBBU1MgcHVibGljS2V5LnVzYWdlcyBpcyBbJ3ZlcmlmeSddCitQQVNTIEFs
bCBjaGVja3MgcGFzc2VkIGluIHdvcmtlciBmb3IgcHJpdmF0ZSBrZXkKK1BBU1MgcHJpdmF0ZUtl
eS50eXBlIGlzICdwcml2YXRlJworUEFTUyBwcml2YXRlS2V5LmV4dHJhY3RhYmxlIGlzIGZhbHNl
CitQQVNTIHByaXZhdGVLZXkuYWxnb3JpdGhtLm5hbWUgaXMgJ1JTQVNTQS1QS0NTMS12MV81Jwor
UEFTUyBwcml2YXRlS2V5LmFsZ29yaXRobS5tb2R1bHVzTGVuZ3RoIGlzIDIwNDgKK1BBU1MgYnl0
ZXNUb0hleFN0cmluZyhwcml2YXRlS2V5LmFsZ29yaXRobS5wdWJsaWNFeHBvbmVudCkgaXMgJzAx
MDAwMScKK1BBU1MgcHJpdmF0ZUtleS5hbGdvcml0aG0uaGFzaC5uYW1lIGlzICdTSEEtMjU2Jwor
UEFTUyBwcml2YXRlS2V5LnVzYWdlcyBpcyBbJ3NpZ24nXQogUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jcnlw
dG8vd29ya2Vycy9zdWJ0bGUvaHJzYS1wb3N0TWVzc2FnZS13b3JrZXIuaHRtbCBiL0xheW91dFRl
c3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdvcmtlci5odG1sCmlu
ZGV4IDdhNDM1ZmU1ZWUzNGY0OTM0MmQ5MjZkN2FiM2FiN2UxYzdjYmI5OGQuLmU5ZWQ4YzkyZTAz
MDdlMDgzZjljNDY3MThkYWI5YmJjZTVhNDQwZGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Ny
eXB0by93b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdvcmtlci5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdvcmtlci5o
dG1sCkBAIC03NSw5ICs3NSw5IEBAIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsK
IAogY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIHB1YmxpY0tleUpTT04sIGFsZ29yaXRo
bUtleUdlbiwgdHJ1ZSwgWyd2ZXJpZnknXSkudGhlbihmdW5jdGlvbihsb2NhbFB1YmxpY0tleSkg
ewogICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7IHB1YmxpY0tleTogbG9jYWxQdWJsaWNLZXkgfSk7
Ci19KTsKLWNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBwcml2YXRlS2V5SlNPTiwgYWxn
b3JpdGhtS2V5R2VuLCBmYWxzZSwgWydzaWduJ10pLnRoZW4oZnVuY3Rpb24obG9jYWxQcml2YXRl
S2V5KSB7Ci0gICAgd29ya2VyLnBvc3RNZXNzYWdlKHsgcHJpdmF0ZUtleTogbG9jYWxQcml2YXRl
S2V5IH0pOworICAgIGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBwcml2YXRlS2V5SlNP
TiwgYWxnb3JpdGhtS2V5R2VuLCBmYWxzZSwgWydzaWduJ10pLnRoZW4oZnVuY3Rpb24obG9jYWxQ
cml2YXRlS2V5KSB7CisgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7IHByaXZhdGVLZXk6IGxv
Y2FsUHJpdmF0ZUtleSB9KTsKKyAgICB9KTsKIH0pOwogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvcmVzb3VyY2VzL2Flcy1pbmRleGVk
ZGIuanMgYi9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvcmVzb3VyY2VzL2Flcy1p
bmRleGVkZGIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJkOGRjOWI4ODllMDgxZTgxNmM1Y2FiMjhkOGFjNzQ2
NTg3YmRhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1
YnRsZS9yZXNvdXJjZXMvYWVzLWluZGV4ZWRkYi5qcwpAQCAtMCwwICsxLDUxIEBACitpbXBvcnRT
Y3JpcHRzKCcuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKworZGVzY3Jp
cHRpb24oIlRlc3QgZ2VuZXJhdGluZyBhbiBBRVMga2V5IHVzaW5nIEFFUy1DQkMgYWxnb3JpdGht
IGluIHdvcmtlcnMuIik7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworY29uc3QgandrS2V5ID0g
eyBrdHk6ICJvY3QiLCBrOiAiWVdKalpHVm1aMmd4TWpNME5UWTNPQSIsIGFsZzogIkExMjhDQkMi
LCB1c2U6ICJlbmMiLCBrZXlfb3BzOiBbJ2RlY3J5cHQnLCAnZW5jcnlwdCcsICd1bndyYXBLZXkn
LCAnd3JhcEtleSddLCBleHQ6IHRydWUgfTsKKworZGVidWcoIkltcG9ydGluZyBhIGtleS4uLiIp
OworY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIGp3a0tleSwgImFlcy1jYmMiLCB0cnVl
LCBbImVuY3J5cHQiLCAiZGVjcnlwdCIsICJ3cmFwS2V5IiwgInVud3JhcEtleSJdKS50aGVuKGZ1
bmN0aW9uKGtleSkgeworICAgIGNvbnN0IG9wZW5SZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oImNy
eXB0b19zdWJ0bGUiKTsKKyAgICBvcGVuUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlv
bihldmVudCkgeworICAgICAgICBldmVudC50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3Jl
KCJhZXMtaW5kZXhlZGRiIik7CisgICAgfTsKKyAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IG9wZW4gZGF0YWJh
c2U6ICIgKyBldmVudC50YXJnZXQuZXJyb3IubmFtZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgIH07CisgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICAgICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICBzdG9yZUtleSgpOwor
ICAgIH07CisKKyAgICBmdW5jdGlvbiBzdG9yZUtleSgpIHsKKyAgICAgICAgY29uc3Qgb2JqZWN0
U3RvcmUgPSBkYi50cmFuc2FjdGlvbigiYWVzLWluZGV4ZWRkYiIsICJyZWFkd3JpdGUiKS5vYmpl
Y3RTdG9yZSgiYWVzLWluZGV4ZWRkYiIpOworICAgICAgICBjb25zdCByZXEgPSBvYmplY3RTdG9y
ZS5wdXQoa2V5LCAibXlLZXkiKTsKKyAgICAgICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IHB1dCBhIGtleSBpbnRvIGRh
dGFiYXNlOiAiICsgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUpOworICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsgcmVhZEtleSgpOyB9CisgICAgfQorCisgICAgZnVuY3Rpb24gcmVhZEtleSgpIHsKKyAgICAg
ICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigiYWVzLWluZGV4ZWRkYiIpLm9i
amVjdFN0b3JlKCJhZXMtaW5kZXhlZGRiIik7CisgICAgICAgIGNvbnN0IHJlcSA9IG9iamVjdFN0
b3JlLmdldCgibXlLZXkiKTsKKyAgICAgICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkg
eworICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGdldCBhIGtleSBmcm9tIGRhdGFi
YXNlOiAiICsgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUpOworICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICAgICAgcmV0cmlldmVkS2V5ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJyZXRyaWV2ZWRLZXkudHlwZSIsICInc2VjcmV0JyIpOworICAg
ICAgICAgICAgc2hvdWxkQmUoInJldHJpZXZlZEtleS5leHRyYWN0YWJsZSIsICJ0cnVlIik7Cisg
ICAgICAgICAgICBzaG91bGRCZSgicmV0cmlldmVkS2V5LmFsZ29yaXRobS5uYW1lIiwgIidBRVMt
Q0JDJyIpOworICAgICAgICAgICAgc2hvdWxkQmUoInJldHJpZXZlZEtleS5hbGdvcml0aG0ubGVu
Z3RoIiwgIjEyOCIpOworICAgICAgICAgICAgc2hvdWxkQmUoInJldHJpZXZlZEtleS51c2FnZXMi
LCAiWydkZWNyeXB0JywgJ2VuY3J5cHQnLCAndW53cmFwS2V5JywgJ3dyYXBLZXknXSIpOworCisg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorICAgIH0KK30pOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL3JzYS1wb3N0TWVzc2FnZS13
b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL3Jz
YS1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IDBjMzk3OTAwZmJlZTljOTMy
OTk2ODZmZDAzNWQ0ZDdiNGI4NWM4OTguLjYxOTIxYzQyMTQ4MjIzMjJmODYzZGJiYjJiY2ZjM2Nj
YzcxMGRkMWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9y
c2EtcG9zdE1lc3NhZ2Utd29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9jcnlw
dG8vd29ya2Vycy9zdWJ0bGUvcnNhLXBvc3RNZXNzYWdlLXdvcmtlci1leHBlY3RlZC50eHQKQEAg
LTMsNiArMywxNiBAQCBUZXN0IHNlbmRpbmcgcnNhIGNyeXB0byBrZXlzIHZpYSBwb3N0TWVzc2Fn
ZSB0byBhIHdvcmtlci4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitQQVNTIEFsbCBj
aGVja3MgcGFzc2VkIGluIHdvcmtlciBmb3IgcHVibGljIGtleQorUEFTUyBwdWJsaWNLZXkudHlw
ZSBpcyAncHVibGljJworUEFTUyBwdWJsaWNLZXkuZXh0cmFjdGFibGUgaXMgdHJ1ZQorUEFTUyBw
dWJsaWNLZXkuYWxnb3JpdGhtLm5hbWUgaXMgJ1JTQUVTLVBLQ1MxLXYxXzUnCitQQVNTIHB1Ymxp
Y0tleS5hbGdvcml0aG0ubW9kdWx1c0xlbmd0aCBpcyAyMDQ4CitQQVNTIGJ5dGVzVG9IZXhTdHJp
bmcocHVibGljS2V5LmFsZ29yaXRobS5wdWJsaWNFeHBvbmVudCkgaXMgJzAxMDAwMScKK1BBU1Mg
cHVibGljS2V5LmFsZ29yaXRobS5oYXNoIGlzIHVuZGVmaW5lZC4KK1BBU1MgcHVibGljS2V5LnVz
YWdlcyBpcyBbJ2VuY3J5cHQnXQorUEFTUyBleHBvcnRlZEtleS5uIGlzIHB1YmxpY0tleUpTT04u
bgorUEFTUyBleHBvcnRlZEtleS5lIGlzIHB1YmxpY0tleUpTT04uZQogUEFTUyBBbGwgY2hlY2tz
IHBhc3NlZCBpbiB3b3JrZXIgZm9yIHByaXZhdGUga2V5CiBQQVNTIHByaXZhdGVLZXkudHlwZSBp
cyAncHJpdmF0ZScKIFBBU1MgcHJpdmF0ZUtleS5leHRyYWN0YWJsZSBpcyB0cnVlCkBAIC0xOSwx
NiArMjksNiBAQCBQQVNTIGV4cG9ydGVkS2V5LnEgaXMgcHJpdmF0ZUtleUpTT04ucQogUEFTUyBl
eHBvcnRlZEtleS5kcCBpcyBwcml2YXRlS2V5SlNPTi5kcAogUEFTUyBleHBvcnRlZEtleS5kcSBp
cyBwcml2YXRlS2V5SlNPTi5kcQogUEFTUyBleHBvcnRlZEtleS5xaSBpcyBwcml2YXRlS2V5SlNP
Ti5xaQotUEFTUyBBbGwgY2hlY2tzIHBhc3NlZCBpbiB3b3JrZXIgZm9yIHB1YmxpYyBrZXkKLVBB
U1MgcHVibGljS2V5LnR5cGUgaXMgJ3B1YmxpYycKLVBBU1MgcHVibGljS2V5LmV4dHJhY3RhYmxl
IGlzIHRydWUKLVBBU1MgcHVibGljS2V5LmFsZ29yaXRobS5uYW1lIGlzICdSU0FFUy1QS0NTMS12
MV81JwotUEFTUyBwdWJsaWNLZXkuYWxnb3JpdGhtLm1vZHVsdXNMZW5ndGggaXMgMjA0OAotUEFT
UyBieXRlc1RvSGV4U3RyaW5nKHB1YmxpY0tleS5hbGdvcml0aG0ucHVibGljRXhwb25lbnQpIGlz
ICcwMTAwMDEnCi1QQVNTIHB1YmxpY0tleS5hbGdvcml0aG0uaGFzaCBpcyB1bmRlZmluZWQuCi1Q
QVNTIHB1YmxpY0tleS51c2FnZXMgaXMgWydlbmNyeXB0J10KLVBBU1MgZXhwb3J0ZWRLZXkubiBp
cyBwdWJsaWNLZXlKU09OLm4KLVBBU1MgZXhwb3J0ZWRLZXkuZSBpcyBwdWJsaWNLZXlKU09OLmUK
IFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL3JzYS1wb3N0TWVzc2FnZS13
b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9yc2EtcG9zdE1l
c3NhZ2Utd29ya2VyLmh0bWwKaW5kZXggNGY1NTFlYTNhMWNhYjhkZTMzODk0YTFjYTgwZDdhZTEw
NDZlZjI4Yy4uMjJiOWFkMDdiNWQyODYxYjE1NzQ4YTBjMGFiNjk2Y2E4ZmE2MmZiMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL3JzYS1wb3N0TWVzc2FnZS13
b3JrZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvcnNhLXBv
c3RNZXNzYWdlLXdvcmtlci5odG1sCkBAIC05OCw5ICs5OCw5IEBAIHdvcmtlci5vbm1lc3NhZ2Ug
PSBmdW5jdGlvbihldnQpIHsKIAogY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIHB1Ymxp
Y0tleUpTT04sIGFsZ29yaXRobUtleUdlbiwgdHJ1ZSwgWydlbmNyeXB0J10pLnRoZW4oZnVuY3Rp
b24obG9jYWxQdWJsaWNLZXkpIHsKICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoeyBwdWJsaWNLZXk6
IGxvY2FsUHVibGljS2V5IH0pOwotfSk7Ci1jcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwg
cHJpdmF0ZUtleUpTT04sIGFsZ29yaXRobUtleUdlbiwgdHJ1ZSwgWydkZWNyeXB0J10pLnRoZW4o
ZnVuY3Rpb24obG9jYWxQcml2YXRlS2V5KSB7Ci0gICAgd29ya2VyLnBvc3RNZXNzYWdlKHsgcHJp
dmF0ZUtleTogbG9jYWxQcml2YXRlS2V5IH0pOworICAgIGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5
KCJqd2siLCBwcml2YXRlS2V5SlNPTiwgYWxnb3JpdGhtS2V5R2VuLCB0cnVlLCBbJ2RlY3J5cHQn
XSkudGhlbihmdW5jdGlvbihsb2NhbFByaXZhdGVLZXkpIHsKKyAgICAgICAgd29ya2VyLnBvc3RN
ZXNzYWdlKHsgcHJpdmF0ZUtleTogbG9jYWxQcml2YXRlS2V5IH0pOworICAgIH0pOwogfSk7CiA8
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380347</attachid>
            <date>2019-10-07 12:54:18 -0700</date>
            <delta_ts>2019-10-07 14:09:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202500-20191007125417.patch</filename>
            <type>text/plain</type>
            <size>64329</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODYzMWQwN2UxZjAyODk1
ZmZiZDY4MjdiNThjNzMzZjVhOTk0ODAzZC4uYzBmZTMzNzViOGFkZTc4Y2FmYjc1YzA4YTcwNDU3
NzE1NjU1YTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE5LTEwLTAyICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgT25seSB3cmFwcGluZyBD
cnlwdG9LZXlzIGZvciBJREIgZHVyaW5nIHNlcmlhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjUwMAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTI0NDU5Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV3JhcHBpbmcgQ3J5cHRvS2V5cyBkdXJpbmcgSURCIHNlcmlhbGl6YXRpb24gaXMg
YSBsZWdhY3kgcmVxdWVzdCBmcm9tIE5ldGZsaXggd2hlbiBXZWJLaXQgd2FzIGFuCisgICAgICAg
IGVhcmx5IGFkb3B0ZXIuIEl0IGlzIG5vdCBuZWNlc3NhcnkgZm9yIG90aGVyIGtpbmRzIG9mIHNl
cmlhbGl6YXRpb24uIEhvd2V2ZXIsIGdpdmVuIGV4aXN0aW5nIGtleXMKKyAgICAgICAgc3RvcmVk
IGluIHVzZXJzJyBpZGIgYXJlIHdyYXBwZWQsIHRoZSB3cmFwcGluZy91bndyYXBwaW5nIG1lY2hh
bmlzbSBjYW5ub3QgYmUgZWFzaWx5IGRpc2NhcmRlZC4KKyAgICAgICAgVGhlcmVmb3JlLCB0aGlz
IHBhdGNoIHJlc3RyaWN0cyB0aGUgd3JhcHBpbmcvdW53cmFwcGluZyBtZWNoYW5pc20gdG8gaWRi
IG9ubHkuCisKKyAgICAgICAgVG8gZG8gc28sIGEgaXNXcmFwcGluZ1JlcXVpcmVkIGZsYWcgaXMg
YWRkZWQgdG8gQ3J5cHRvS2V5IHN1Y2ggdGhhdCB3aGVuZXZlciBpZGIgc2VlcyBhIENyeXB0b0tl
eSwKKyAgICAgICAgaXQgY2FuIHNldCBpdC4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIHdpbGwgdGhl
biBvbmx5IHdyYXAgYSBDcnlwdG9LZXkgd2hlbiB0aGlzIGZsYWcgaXMgc2V0LiBPdGhlcndpc2Us
CisgICAgICAgIGEgbmV3IHRhZyBVbndyYXBwZWRDcnlwdG9LZXlUYWcgaXMgdXNlZCB0byBzdG9y
ZSB1bndyYXBwZWQgQ3J5cHRvS2V5cyBpbiBvcmRlciB0byBrZWVwIHRoZSBvbGQgQ3J5cHRvS2V5
VGFnCisgICAgICAgIGJpbmFyaWVzIGludGFjdC4gRm9yIGRlc2VyaWFsaXphdGlvbiwgZWFjaCB0
eXBlIHdpbGwgYmUgZGVzZXJpYWxpemVkIGRpZmZlcmVudGx5LgorCisgICAgICAgIEJlc2lkZXMg
dGhlIGFib3ZlLCB0aGlzIHBhdGNoIGFsc28gaGFyZGVucyBXb3JrZXJHbG9iYWxTY29wZTo6d3Jh
cENyeXB0b0tleS91bndyYXBDcnlwdG9LZXkgZm9yCisgICAgICAgIGFueSBwb3RlbnRpYWwgcmFj
eSBpc3N1ZXMuIENyeXB0b0Jvb2xlYW5Db250YWluZXIgaXMgaW50cm9kdWNlZCB0byBjYXB0dXJl
IGJvb2xlYW4gaW4gdGhlIGxhbWJkYS4KKyAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUgaXMgcmVw
bGFjZWQgd2l0aCB3b3JrZXJNZXNzYWdpbmdQcm94eS4gTm93LCBldmVyeSB2YXJpYWJsZXMgY2Fw
dHVyZWQgaW4gdGhlIGxhbWJkYXMKKyAgICAgICAgc2hvdWxkIGJlIGVpdGhlciBhIGNvcHkgb3Ig
YSB0aHJlYWQgc2FmZSByZWYgb2YgdGhlIG9yaWdpbmFsIG9iamVjdC4KKworICAgICAgICBUZXN0
OiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvYWVzLWluZGV4ZWRkYi5odG1sCisKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0M6OnNldElzV3JhcHBpbmdSZXF1aXJlZEZvckNyeXB0b0tleSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZTo6cHV0T3JBZGQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6
OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpy
ZWFkVGVybWluYWwpOgorICAgICAgICAqIGNyeXB0by9DcnlwdG9LZXkuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0tleTo6aXNXcmFwcGluZ1JlcXVpcmVkIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0tleTo6c2V0SXNXcmFwcGluZ1JlcXVpcmVkKToKKyAgICAgICAgKiBkb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQm9vbGVhbkNvbnRhaW5lcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Jvb2xlYW5Db250YWluZXI6OmJvb2xlYW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQm9vbGVhbkNvbnRhaW5lcjo6c2V0Qm9v
bGVhbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6d3JhcENyeXB0b0tl
eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6dW53cmFwQ3J5cHRvS2V5
KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTG9hZGVy
UHJveHk6OmlzV29ya2VyTWVzc2FnaW5nUHJveHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyTWVzc2FnaW5nUHJveHkuaDoKKyAgICAgICAgKGlzVHlwZSk6CisKIDIwMTktMTAtMDQg
IEhlaWtvIEJlY2tlciAgPGhlaXJlY2thQGV4aGVyYm8ub3JnPgogCiAgICAgICAgIEZpeCBidWls
ZCB3aXRoIGljdSA2NS4xCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggYTU5N2FjMTliNjNiODg4YzEyMmY5MjgzYTdkY2Ey
ZWY5NzRmZWUyMC4uMGJkZGVmNWI5ODE4ZDcwM2M0ZGE4M2VhNWY4OTU0ZjJiNzZkYTJjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmNwcApAQCAtNTEsOSArNTEsMjYgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1Zh
bHVlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KIAorI2lmIEVOQUJMRShXRUJf
Q1JZUFRPKQorI2luY2x1ZGUgIkpTQ3J5cHRvS2V5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAorI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQor
bmFtZXNwYWNlIHsKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRJc1dyYXBwaW5nUmVxdWlyZWRGb3JD
cnlwdG9LZXkoVk0mIHZtLCBjb25zdCBKU1ZhbHVlJiB2YWx1ZSkKK3sKKyAgICBpZiAoIXZhbHVl
LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvKiBvYmogPSBhc09iamVjdCh2
YWx1ZSk7CisgICAgaWYgKGF1dG8qIGtleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQodm0sIG9i
aikpCisgICAgICAgIGtleS0+c2V0SXNXcmFwcGluZ1JlcXVpcmVkKCk7Cit9Cit9CisjZW5kaWYK
KwogSURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgSURCVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV9p
bmZvKGluZm8pCkBAIC0zMzksNiArMzU2LDkgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBJREJPYmplY3RTdG9yZTo6cHV0T3JBZGQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZQogICAg
IGlmIChtX3RyYW5zYWN0aW9uLmlzUmVhZE9ubHkoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFJlYWRvbmx5RXJyb3IsICJGYWlsZWQgdG8gc3RvcmUgcmVjb3JkIGluIGFuIElEQk9iamVj
dFN0b3JlOiBUaGUgdHJhbnNhY3Rpb24gaXMgcmVhZC1vbmx5LiJfcyB9OwogCisjaWYgRU5BQkxF
KFdFQl9DUllQVE8pCisgICAgc2V0SXNXcmFwcGluZ1JlcXVpcmVkRm9yQ3J5cHRvS2V5KHZtLCB2
YWx1ZSk7CisjZW5kaWYKICAgICBhdXRvIHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IERhdGFDbG9uZUVycm9yLCAi
RmFpbGVkIHRvIHN0b3JlIHJlY29yZCBpbiBhbiBJREJPYmplY3RTdG9yZTogQW4gb2JqZWN0IGNv
dWxkIG5vdCBiZSBjbG9uZWQuIl9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCAzYjAwMGI4ODEwMDNkMmI0OTE1
YjA4NDc4ZmJhYzk5MzIzMGY1YTI1Li5lMGY3NmIzNGE5MWU1M2FjODYwNDRkOTgyOTk3ZTJhNzcx
ZWVhMjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTE2Nyw2ICsxNjcsOSBAQCBlbnVtIFNlcmlhbGl6YXRpb25U
YWcgewogICAgIFJUQ0NlcnRpZmljYXRlVGFnID0gNDQsCiAjZW5kaWYKICAgICBJbWFnZUJpdG1h
cFRhZyA9IDQ1LAorI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQorICAgIFVud3JhcHBlZENyeXB0b0tl
eVRhZyA9IDQ2LAorI2VuZGlmCiAgICAgRXJyb3JUYWcgPSAyNTUKIH07CiAKQEAgLTM0OSw3ICsz
NTIsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RyaW5nRGF0YUlzOEJpdEZsYWcgPSAweDgw
MDAwMDAwOwogICogICAgfCBET01RdWFkCiAgKiAgICB8IEltYWdlQml0bWFwVHJhbnNmZXJUYWcg
PHZhbHVlOnVpbnQzMl90PgogICogICAgfCBSVENDZXJ0aWZpY2F0ZVRhZwotICogICAgfCBJbWFn
ZUJpdG1hcFRhZyA8b3JpZ2luQ2xlYW46dWludDhfdD4gPGxvZ2ljYWxXaWR0aDppbnQzMl90PiA8
bG9naWNhbEhlaWdodDppbnQzMl90PiA8cmVzb2x1dGlvblNjYWxlOmRvdWJsZT4gPGJ5dGVMZW5n
dGg6dWludDMyX3Q+KDxpbWFnZUJ5dGVEYXRhOnVpbnQ4X3Q+KQorICogICAgfCBVbndyYXBwZWRD
cnlwdG9LZXlUYWcgPHVud3JhcHBlZEtleUxlbmd0aDp1aW50MzJfdD4gPGZhY3RvcjpieXRle3Vu
d3JhcHBlZEtleUxlbmd0aH0+CiAgKgogICogSW5zaWRlIGNlcnRpZmljYXRlLCBkYXRhIGlzIHNl
cmlhbGl6ZWQgaW4gdGhpcyBmb3JtYXQgYXMgcGVyIHNwZWM6CiAgKgpAQCAtMTA4Myw3ICsxMDg2
LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCiAg
ICAgICAgICAgICBpZiAoYXV0byoga2V5ID0gSlNDcnlwdG9LZXk6OnRvV3JhcHBlZCh2bSwgb2Jq
KSkgewotICAgICAgICAgICAgICAgIHdyaXRlKENyeXB0b0tleVRhZyk7CisgICAgICAgICAgICAg
ICAgaWYgKGtleS0+aXNXcmFwcGluZ1JlcXVpcmVkKCkpCisgICAgICAgICAgICAgICAgICAgIHdy
aXRlKENyeXB0b0tleVRhZyk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICB3cml0ZShVbndyYXBwZWRDcnlwdG9LZXlUYWcpOwogICAgICAgICAgICAgICAgIFZlY3Rv
cjx1aW50OF90PiBzZXJpYWxpemVkS2V5OwogICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+
IGR1bW15QmxvYlVSTHM7CiAgICAgICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+IGR1bW15TWVzc2FnZVBvcnRzOwpAQCAtMTA5OCwxMCArMTEwNCwxNCBAQCBwcml2YXRlOgog
I2VuZGlmCiAgICAgICAgICAgICAgICAgICAgIGR1bW15QmxvYlVSTHMsIHNlcmlhbGl6ZWRLZXks
IFNlcmlhbGl6YXRpb25Db250ZXh0OjpEZWZhdWx0LCBkdW1teVNoYXJlZEJ1ZmZlcnMpOwogICAg
ICAgICAgICAgICAgIHJhd0tleVNlcmlhbGl6ZXIud3JpdGUoa2V5KTsKLSAgICAgICAgICAgICAg
ICBWZWN0b3I8dWludDhfdD4gd3JhcHBlZEtleTsKLSAgICAgICAgICAgICAgICBpZiAoIXdyYXBD
cnlwdG9LZXkobV9leGVjLCBzZXJpYWxpemVkS2V5LCB3cmFwcGVkS2V5KSkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIHdyaXRlKHdyYXBwZWRLZXkp
OworICAgICAgICAgICAgICAgIGlmIChrZXktPmlzV3JhcHBpbmdSZXF1aXJlZCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB3cmFwcGVkS2V5OworICAgICAgICAgICAg
ICAgICAgICBpZiAoIXdyYXBDcnlwdG9LZXkobV9leGVjLCBzZXJpYWxpemVkS2V5LCB3cmFwcGVk
S2V5KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgd3JpdGUod3JhcHBlZEtleSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3cml0ZShzZXJpYWxpemVk
S2V5KTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICNlbmRp
ZgpAQCAtMzA5MCw4ICszMTAwLDI4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gcmVh
ZFJUQ0NlcnRpZmljYXRlKCk7CiAKICNlbmRpZgotICAgICAgICBjYXNlIEltYWdlQml0bWFwVGFn
OgotICAgICAgICAgICAgcmV0dXJuIHJlYWRJbWFnZUJpdG1hcCgpOworI2lmIEVOQUJMRShXRUJf
Q1JZUFRPKQorICAgICAgICBjYXNlIFVud3JhcHBlZENyeXB0b0tleVRhZzogeworICAgICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHNlcmlhbGl6ZWRLZXk7CisgICAgICAgICAgICBpZiAoIXJlYWQo
c2VyaWFsaXplZEtleSkpIHsKKyAgICAgICAgICAgICAgICBmYWlsKCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEpTVmFsdWUg
Y3J5cHRvS2V5OworICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IGR1bW15
TWVzc2FnZVBvcnRzOworICAgICAgICAgICAgQ2xvbmVEZXNlcmlhbGl6ZXIgcmF3S2V5RGVzZXJp
YWxpemVyKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIGR1bW15TWVzc2FnZVBvcnRzLCBudWxscHRy
LCB7IH0sCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgICAgICAgICAgICAgIG51bGxwdHIs
CisjZW5kaWYKKyAgICAgICAgICAgICAgICBzZXJpYWxpemVkS2V5KTsKKyAgICAgICAgICAgIGlm
ICghcmF3S2V5RGVzZXJpYWxpemVyLnJlYWRDcnlwdG9LZXkoY3J5cHRvS2V5KSkgeworICAgICAg
ICAgICAgICAgIGZhaWwoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJm
bG93KGNyeXB0b0tleSk7CisgICAgICAgICAgICByZXR1cm4gY3J5cHRvS2V5OworICAgICAgICB9
CisjZW5kaWYKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIG1fcHRyLS07IC8vIFB1c2gg
dGhlIHRhZyBiYWNrCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L0NyeXB0b0tleS5oCmluZGV4IDBlYmM1NzIwNDRmOTJmMDk5YmEwNWMzNDJlOWRlNzExNjI4MTEx
MDYuLjM4NjVkMjkwZTM1Mjk3Yzc3NzhlYThmYzE5NTE3MDU2YjVlYmQwMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vQ3J5cHRvS2V5LmgKQEAgLTcyLDYgKzcyLDggQEAgcHVibGljOgogICAgIENyeXB0b0tl
eVVzYWdlQml0bWFwIHVzYWdlc0JpdG1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2VzOyB9CiAg
ICAgdm9pZCBzZXRVc2FnZXNCaXRtYXAoQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2UpIHsgbV91
c2FnZXMgPSB1c2FnZTsgfTsKICAgICBib29sIGFsbG93cyhDcnlwdG9LZXlVc2FnZUJpdG1hcCB1
c2FnZSkgY29uc3QgeyByZXR1cm4gdXNhZ2UgPT0gKG1fdXNhZ2VzICYgdXNhZ2UpOyB9CisgICAg
Ym9vbCBpc1dyYXBwaW5nUmVxdWlyZWQoKSBjb25zdCB7IHJldHVybiBtX2lzV3JhcHBpbmdSZXF1
aXJlZDsgfQorICAgIHZvaWQgc2V0SXNXcmFwcGluZ1JlcXVpcmVkKCkgeyBtX2lzV3JhcHBpbmdS
ZXF1aXJlZCA9IHRydWU7IH0KIAogICAgIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gcmFuZG9tRGF0
YShzaXplX3QpOwogCkBAIC04MCw2ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgVHlwZSBtX3R5cGU7
CiAgICAgYm9vbCBtX2V4dHJhY3RhYmxlOwogICAgIENyeXB0b0tleVVzYWdlQml0bWFwIG1fdXNh
Z2VzOworICAgIGJvb2wgbV9pc1dyYXBwaW5nUmVxdWlyZWQgeyBmYWxzZSB9OwogfTsKIAogaW5s
aW5lIGF1dG8gQ3J5cHRvS2V5Ojp0eXBlKCkgY29uc3QgLT4gVHlwZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggZjBlNjU0YjczMGI5ZGUyYTY1MGNj
ZTUyNDI4NDI2ZTA2YzljMTIyZS4uMTI3ZTBhNDQwOTZmMDYyYTMzYWE2NWRmMDVmNGY5MmIzZjNi
ZTcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBA
IC0yMjAsNiArMjIwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RGF0YWJhc2VDb250ZXh0KERh
dGFiYXNlQ29udGV4dCopOwogCiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCisgICAgLy8gVGhlc2Ug
dHdvIG1ldGhvZHMgYXJlIHVzZWQgd2hlbiBDcnlwdG9LZXlzIGFyZSBzZXJpYWxpemVkIGludG8g
SW5kZXhlZERCLgogICAgIHZpcnR1YWwgYm9vbCB3cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYga2V5LCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXkpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgdW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtl
eSwgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkpID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCAxZThmYzA2YmQzZTEzOTU3ZDBhYjJm
YmY2MmU2MTlmZDY0NThjMjc3Li5kZGVjNWY1M2M4YjVlNDVkYTRkNTU4YTQ4Mjg4MjgwM2QxMzVk
OTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApA
QCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckxvY2F0aW9u
LmgiCisjaW5jbHVkZSAiV29ya2VyTWVzc2FnaW5nUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJO
YXZpZ2F0b3IuaCIKICNpbmNsdWRlICJXb3JrZXJSZXBvcnRpbmdQcm94eS5oIgogI2luY2x1ZGUg
IldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5oIgpAQCAtMzk4LDQ4ICszOTksNjAgQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8dWludDhfdD4gbV9idWZmZXI7CiB9OwogCitjbGFzcyBDcnlwdG9Cb29s
ZWFuQ29udGFpbmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENyeXB0b0Jvb2xlYW5D
b250YWluZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPENyeXB0b0Jvb2xlYW5Db250YWlu
ZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3J5cHRvQm9vbGVhbkNvbnRhaW5l
cik7IH0KKyAgICBib29sIGJvb2xlYW4oKSBjb25zdCB7IHJldHVybiBtX2Jvb2xlYW47IH0KKyAg
ICB2b2lkIHNldEJvb2xlYW4oYm9vbCBib29sZWFuKSB7IG1fYm9vbGVhbiA9IGJvb2xlYW47IH0K
KworcHJpdmF0ZToKKyAgICBzdGQ6OmF0b21pYzxib29sPiBtX2Jvb2xlYW4geyBmYWxzZSB9Owor
fTsKKwogYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8
dWludDhfdD4mIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5KQogewotICAgIGJvb2wg
cmVzdWx0ID0gZmFsc2U7Ci0gICAgc3RkOjphdG9taWM8Ym9vbD4gZG9uZSA9IGZhbHNlOwotICAg
IGF1dG8gY29udGFpbmVyID0gQ3J5cHRvQnVmZmVyQ29udGFpbmVyOjpjcmVhdGUoKTsKLSAgICBt
X3RocmVhZC53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2FkZXIoWyZyZXN1bHQsIGtl
eSwgY29udGFpbmVyUmVmID0gY29udGFpbmVyLmNvcHlSZWYoKSwgJmRvbmUsIHdvcmtlckdsb2Jh
bFNjb3BlID0gdGhpc10oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAg
ICByZXN1bHQgPSBjb250ZXh0LndyYXBDcnlwdG9LZXkoa2V5LCBjb250YWluZXJSZWYtPmJ1ZmZl
cigpKTsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5w
b3N0VGFzayhbXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgUmVmPFdv
cmtlckdsb2JhbFNjb3BlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKKyAgICBhdXRvIHJlc3VsdENv
bnRhaW5lciA9IENyeXB0b0Jvb2xlYW5Db250YWluZXI6OmNyZWF0ZSgpOworICAgIGF1dG8gZG9u
ZUNvbnRhaW5lciA9IENyeXB0b0Jvb2xlYW5Db250YWluZXI6OmNyZWF0ZSgpOworICAgIGF1dG8g
d3JhcHBlZEtleUNvbnRhaW5lciA9IENyeXB0b0J1ZmZlckNvbnRhaW5lcjo6Y3JlYXRlKCk7Cisg
ICAgbV90aHJlYWQud29ya2VyTG9hZGVyUHJveHkoKS5wb3N0VGFza1RvTG9hZGVyKFtyZXN1bHRD
b250YWluZXIgPSByZXN1bHRDb250YWluZXIuY29weVJlZigpLCBrZXksIHdyYXBwZWRLZXlDb250
YWluZXIgPSB3cmFwcGVkS2V5Q29udGFpbmVyLmNvcHlSZWYoKSwgZG9uZUNvbnRhaW5lciA9IGRv
bmVDb250YWluZXIuY29weVJlZigpLCB3b3JrZXJNZXNzYWdpbmdQcm94eSA9IG1ha2VSZWYoZG93
bmNhc3Q8V29ya2VyTWVzc2FnaW5nUHJveHk+KG1fdGhyZWFkLndvcmtlckxvYWRlclByb3h5KCkp
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICByZXN1bHRDb250
YWluZXItPnNldEJvb2xlYW4oY29udGV4dC53cmFwQ3J5cHRvS2V5KGtleSwgd3JhcHBlZEtleUNv
bnRhaW5lci0+YnVmZmVyKCkpKTsKKyAgICAgICAgZG9uZUNvbnRhaW5lci0+c2V0Qm9vbGVhbih0
cnVlKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8V29ya2VyTG9hZGVyUHJveHkmPih3b3JrZXJNZXNz
YWdpbmdQcm94eS5nZXQoKSkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBBU1NFUlRfVU5V
U0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgfSk7
CisgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogICAgIH0pOwogCiAg
ICAgYXV0byB3YWl0UmVzdWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2VpdmVkOwotICAgIHdo
aWxlICghZG9uZSAmJiB3YWl0UmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpCisgICAg
d2hpbGUgKCFkb25lQ29udGFpbmVyLT5ib29sZWFuKCkgJiYgd2FpdFJlc3VsdCAhPSBNZXNzYWdl
UXVldWVUZXJtaW5hdGVkKQogICAgICAgICB3YWl0UmVzdWx0ID0gbV90aHJlYWQucnVuTG9vcCgp
LnJ1bkluTW9kZSh0aGlzLCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIAotICAgIGlm
IChkb25lKQotICAgICAgICB3cmFwcGVkS2V5LnN3YXAoY29udGFpbmVyLT5idWZmZXIoKSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAoZG9uZUNvbnRhaW5lci0+Ym9vbGVhbigpKQorICAg
ICAgICB3cmFwcGVkS2V5LnN3YXAod3JhcHBlZEtleUNvbnRhaW5lci0+YnVmZmVyKCkpOworICAg
IHJldHVybiByZXN1bHRDb250YWluZXItPmJvb2xlYW4oKTsKIH0KIAogYm9vbCBXb3JrZXJHbG9i
YWxTY29wZTo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtl
eSwgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkpCiB7Ci0gICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAg
ICBzdGQ6OmF0b21pYzxib29sPiBkb25lID0gZmFsc2U7Ci0gICAgYXV0byBjb250YWluZXIgPSBD
cnlwdG9CdWZmZXJDb250YWluZXI6OmNyZWF0ZSgpOwotICAgIG1fdGhyZWFkLndvcmtlckxvYWRl
clByb3h5KCkucG9zdFRhc2tUb0xvYWRlcihbJnJlc3VsdCwgd3JhcHBlZEtleSwgY29udGFpbmVy
UmVmID0gY29udGFpbmVyLmNvcHlSZWYoKSwgJmRvbmUsIHdvcmtlckdsb2JhbFNjb3BlID0gdGhp
c10oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICByZXN1bHQgPSBj
b250ZXh0LnVud3JhcENyeXB0b0tleSh3cmFwcGVkS2V5LCBjb250YWluZXJSZWYtPmJ1ZmZlcigp
KTsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5wb3N0
VGFzayhbXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgUmVmPFdvcmtl
ckdsb2JhbFNjb3BlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKKyAgICBhdXRvIHJlc3VsdENvbnRh
aW5lciA9IENyeXB0b0Jvb2xlYW5Db250YWluZXI6OmNyZWF0ZSgpOworICAgIGF1dG8gZG9uZUNv
bnRhaW5lciA9IENyeXB0b0Jvb2xlYW5Db250YWluZXI6OmNyZWF0ZSgpOworICAgIGF1dG8ga2V5
Q29udGFpbmVyID0gQ3J5cHRvQnVmZmVyQ29udGFpbmVyOjpjcmVhdGUoKTsKKyAgICBtX3RocmVh
ZC53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2FkZXIoW3Jlc3VsdENvbnRhaW5lciA9
IHJlc3VsdENvbnRhaW5lci5jb3B5UmVmKCksIHdyYXBwZWRLZXksIGtleUNvbnRhaW5lciA9IGtl
eUNvbnRhaW5lci5jb3B5UmVmKCksIGRvbmVDb250YWluZXIgPSBkb25lQ29udGFpbmVyLmNvcHlS
ZWYoKSwgd29ya2VyTWVzc2FnaW5nUHJveHkgPSBtYWtlUmVmKGRvd25jYXN0PFdvcmtlck1lc3Nh
Z2luZ1Byb3h5PihtX3RocmVhZC53b3JrZXJMb2FkZXJQcm94eSgpKSldKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgcmVzdWx0Q29udGFpbmVyLT5zZXRCb29sZWFu
KGNvbnRleHQudW53cmFwQ3J5cHRvS2V5KHdyYXBwZWRLZXksIGtleUNvbnRhaW5lci0+YnVmZmVy
KCkpKTsKKyAgICAgICAgZG9uZUNvbnRhaW5lci0+c2V0Qm9vbGVhbih0cnVlKTsKKyAgICAgICAg
c3RhdGljX2Nhc3Q8V29ya2VyTG9hZGVyUHJveHkmPih3b3JrZXJNZXNzYWdpbmdQcm94eS5nZXQo
KSkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNv
bnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgfSk7CisgICAgICAgIH0sIFdv
cmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogICAgIH0pOwogCiAgICAgYXV0byB3YWl0UmVz
dWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2VpdmVkOwotICAgIHdoaWxlICghZG9uZSAmJiB3
YWl0UmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpCisgICAgd2hpbGUgKCFkb25lQ29u
dGFpbmVyLT5ib29sZWFuKCkgJiYgd2FpdFJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVk
KQogICAgICAgICB3YWl0UmVzdWx0ID0gbV90aHJlYWQucnVuTG9vcCgpLnJ1bkluTW9kZSh0aGlz
LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIAotICAgIGlmIChkb25lKQotICAgICAg
ICBrZXkuc3dhcChjb250YWluZXItPmJ1ZmZlcigpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IGlmIChkb25lQ29udGFpbmVyLT5ib29sZWFuKCkpCisgICAgICAgIGtleS5zd2FwKGtleUNvbnRh
aW5lci0+YnVmZmVyKCkpOworICAgIHJldHVybiByZXN1bHRDb250YWluZXItPmJvb2xlYW4oKTsK
IH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGJjNzFiNTY2NmMxYzJlYzRlNmVkNzc5MjRkZGFh
Y2QzMjkxZTc5ODcuLjM5YjhmYzUxYjA3ZmRhODU2NDQ1ZjY4MTg4M2QwY2I3MGEyNTkxMDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTE2NywxMyAr
MTY3LDYgQEAgcHJpdmF0ZToKICAgICBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV90b3BPcmlnaW4uZ2V0KCk7IH0KIAogI2lmIEVOQUJMRShXRUJfQ1JZ
UFRPKQotICAgIC8vIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBhcmUgc2lkZSBlZmZlY3Rz
IG9mIHByb3ZpZGluZyBleHRyYSBwcm90ZWN0aW9uIHRvIHNlcmlhbGl6ZWQKLSAgICAvLyBDcnlw
dG9LZXkgZGF0YSB0aGF0IHdlbnQgdGhyb3VnaCB0aGUgc3RydWN0dXJlZCBjbG9uZSBhbGdvcml0
aG0gdG8gbG9jYWwgc3RvcmFnZSBzdWNoIGFzCi0gICAgLy8gSW5kZXhlZERCLiBUaGV5IGRvbid0
IHByb3ZpZGUgYW55IHByb2N0ZWN0aW9uIGFnYWluc3QgY29tbXVuaWNhdGlvbnMgYmV0d2VlbiBt
YWluVGhyZWFkCi0gICAgLy8gYW5kIHdvcmtlclRocmVhZHMuIEluIGZhY3QsIHRoZXkgY2F1c2Ug
ZXh0cmEgZXhwZW5zZSBhcyB3b3JrZXJUaHJlYWRzIGNhbm5vdCB0YWxrIHRvIGNsaWVudHMKLSAg
ICAvLyB0byB1bndyYXAvd3JhcCBjcnlwdG8ga2V5cy4gSGVuY2UsIHdvcmtlclRocmVhZHMgbXVz
dCBhbHdheXMgYXNrIG1haW5UaHJlYWQgdG8gdW53cmFwL3dyYXAKLSAgICAvLyBrZXlzLCB3aGlj
aCByZXN1bHRzIGluIGEgc2Vjb25kIGNvbW11bmljYXRpb24gYW5kIHBsYWluIGtleXMgYmVpbmcg
dHJhbnNmZXJyZWQgYmV0d2VlbgotICAgIC8vIHdvcmtlclRocmVhZHMgYW5kIHRoZSBtYWluVGhy
ZWFkLgogICAgIGJvb2wgd3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwg
VmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5KSBmaW5hbDsKICAgICBib29sIHVud3JhcENyeXB0
b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3Rvcjx1aW50OF90PiYg
a2V5KSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJMb2FkZXJQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2FkZXJQ
cm94eS5oCmluZGV4IDRhNjMzNzkyYzIyOWFiYWNkMzdiNTZhYjFlYjgzMWNjOTg2MjAxMjMuLjYx
NTMxZWQ0MDg2NGIzOGFjYjk5Y2MwNjc1N2JmYzExMTIzZDhkODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgKQEAgLTQ1LDYgKzQ1LDggQEAgY2xhc3MgV29y
a2VyTG9hZGVyUHJveHkgewogcHVibGljOgogICAgIHZpcnR1YWwgfldvcmtlckxvYWRlclByb3h5
KCkgPSBkZWZhdWx0OwogCisgICAgdmlydHVhbCBib29sIGlzV29ya2VyTWVzc2FnaW5nUHJveHko
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgLy8gQ3JlYXRlcyBhIGNhY2hlIHN0b3Jh
Z2UgY29ubmVjdGlvbiB0byBiZSB1c2VkIG9uIHRoZSBtYWluIHRocmVhZC4gTWV0aG9kIG11c3Qg
YmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KICAgICB2aXJ0dWFsIFJlZjxDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uPiBjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgPSAwOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKaW5kZXggNWM3ODMz
MmVjYTI5M2VkMzQ2ZjQyMmMxMDU4NGE4M2U5NzQ1OGMxYy4uMDgwY2MwMWUwYWNlMTNiOTJjOTdk
NWIyMTJhZjQ1MDVhMmQ3ZDA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
TWVzc2FnaW5nUHJveHkuaApAQCAtNzAsNiArNzAsNyBAQCBwcml2YXRlOgogICAgIC8vIEltcGxl
bWVudGF0aW9uIG9mIFdvcmtlckxvYWRlclByb3h5LgogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBh
cmUgY2FsbGVkIG9uIGRpZmZlcmVudCB0aHJlYWRzIHRvIHNjaGVkdWxlIGxvYWRpbmcKICAgICAv
LyByZXF1ZXN0cyBhbmQgdG8gc2VuZCBjYWxsYmFja3MgYmFjayB0byBXb3JrZXJHbG9iYWxTY29w
ZS4KKyAgICBib29sIGlzV29ya2VyTWVzc2FnaW5nUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAgICAgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2smJikgZmluYWw7CiAgICAgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2Jh
bFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3QgU3RyaW5nJiBtb2Rl
KSBmaW5hbDsKICAgICBSZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbigpIGZpbmFsOwpAQCAtOTgsMyArOTksNyBAQCBwcml2YXRlOgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25z
dCBXZWJDb3JlOjpXb3JrZXJMb2FkZXJQcm94eSYgcHJveHkpIHsgcmV0dXJuIHByb3h5LmlzV29y
a2VyTWVzc2FnaW5nUHJveHkoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDMxZTM1MzA3
ZmQ3ZGZhN2QzYzQwZWUwOWQ1MWU4MDVlYTY1Zjk1NzIuLjk3OWRiMGZhYTBmNTJjYjk1MTAyNjg3
MzEwODlmYjE2NWMwODZiOWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOS0xMC0wMiAgSmlld2VuIFRhbiAgPGpp
ZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIE9ubHkgd3JhcHBpbmcgQ3J5cHRvS2V5cyBm
b3IgSURCIGR1cmluZyBzZXJpYWxpemF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1MDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUyNDQ1
OTI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1v
ZGlmaWVzIEluZGV4ZWREQi5TdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkgdGVz
dCB0byBpbmNsdWRlIENyeXB0b0tleXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0
eS5tbToKKyAgICAgICAgKC1bU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5TmF2
aWdhdGlvbkRlbGVnYXRlIF93ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3Ol0pOgorICAgICAg
ICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRl
eGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3FsaXRlMzoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRD
bG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzLXNobToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJk
Q29tcGF0aWJpbGl0eS5zcWxpdGUzLXdhbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0
eVJlYWQuaHRtbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
ZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVdyaXRlLmh0bWw6CisK
IDIwMTktMTAtMDQgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
QWxsb3cgT1NSIGV4aXQgdG8gdGhlIExMSW50CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29t
cGF0aWJpbGl0eS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5k
ZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5Lm1tCmluZGV4IGYxZTQy
MTZhYTJmNmE5YTY1MTE0ZGQwOWZjMGE0ODE0MTRkNThiZmUuLmFmODFhYTNiODA1MTMwNGIzOGFl
NWE3MTdiMzVmOTEwNDdjNWM3MjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmls
aXR5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhl
ZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5Lm1tCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUzLDYgKzUzLDE4IEBA
IC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAq
KXVzZXJDb250ZW50Q29udHJvbGxlciBkCiAKIEBlbmQKIAorQGludGVyZmFjZSBTdHJ1Y3R1cmVk
Q2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHlOYXZpZ2F0aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8
V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBTdHJ1Y3R1cmVk
Q2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHlOYXZpZ2F0aW9uRGVsZWdhdGUKKworLSAoTlNEYXRh
ICopX3dlYkNyeXB0b01hc3RlcktleUZvcldlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sK
KyAgICByZXR1cm4gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOihjb25zdCB1aW50OF90KikiXHgwMFx4
MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdceDA4XHgwOVx4MGFceDBiXHgwY1x4MGRceDBlXHgw
ZiIgbGVuZ3RoOjE2XTsKK30KKworQGVuZAorCiBzdGF0aWMgV0tTY3JpcHRNZXNzYWdlICpnZXRO
ZXh0TWVzc2FnZSgpCiB7CiAgICAgaWYgKHNjcmlwdE1lc3NhZ2VzLmlzRW1wdHkoKSkgewpAQCAt
OTIsNiArMTA0LDggQEAgVEVTVChJbmRleGVkREIsIFN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29t
cGF0aWJpbGl0eSkKIAogICAgIC8vIFJ1biB0aGUgdGVzdAogICAgIFJldGFpblB0cjxXS1dlYlZp
ZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KV0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbU3RydWN0dXJlZENsb25lQmFja3dh
cmRDb21wYXRpYmlsaXR5TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dl
YlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICBOU1VSTFJl
cXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNr
d2FyZENvbXBhdGliaWxpdHlSZWFkIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5
OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
cmVxdWVzdF07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5LnNxbGl0
ZTMgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVj
dHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzCmluZGV4IDM0MjBjZDgwOGY4
OTZkYmU1OGQ2YTM3YWY5NjI1NTNkODI1MTRmYTguLjg2YmJlYTdlODQyOTMwYjA0NGJkZjcyN2Fl
MGVkZTBmMDgyNTgzNGQgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMjIKY2NtWm9yWGkl
N3QjOV5ZcSVLIXVkOHc+bVNDbU9IPTA2b2hFR3luaHEKCmRlbHRhIDIyCmNjbVpvclhpJTd0IzNB
c1Rtak1VX0hXdjJ0UGMmYyQwN3QwPj5pX0AlCgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENv
bXBhdGliaWxpdHkuc3FsaXRlMy1zaG0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxp
dGUzLXNobQppbmRleCBlNzgxNThkMzNlNTY5N2QyNmJiMjliMjRhODdiMzUxYWIxZmM0ZTY5Li5i
NGVjNzM0MGUxY2EzMzA3NGNjOGEzYTU3YWZlNTc4ZTM3YTNkNGJhIDEwMDY0NApHSVQgYmluYXJ5
IHBhdGNoCmRlbHRhIDE5Nwp6Y21ab0BVfXxWIXMrVn1BJUshcXhLK01SJUFtOWUxV3FeM3d0QUxq
fXlsU1JmN18lIWJoRDc9NHpWbCtNS1hMeVUKenNwXjQ3ZmRSPGV8NDBCVCUqNWNmdjV9dX5hfDVH
YCF7I2ZGZGhDcU9uPHB9IVc/WCNFaTw4an0kVyYoQnszK3l7Clk2ciY0fXtncjkqeSY/YHFTMUB6
KW9sK0dwMEs0ISVuKmFhKwoKZGVsdGEgMTkzCnpjbVpvQFV9fFYhcytWfUElSyFwR0srTVIlQW05
WH5XcV9EKHlGJVBqP2lyN0c1Jn0xRjtRWD8pX3AjSHBZVEx+IQp6cV5idVIxcU4wP0A7PyVRM050
WTxZOzVGYitgTkYlIzl7SVZNdUUqJjlRRHtZRkplNXl4Y0huR0N5PTRTeGNPN2EKVkh6Xj9OOGBJ
PV9NSTJ6cDx+eVktVG1TO0ZLcjtYVQoKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRp
YmlsaXR5LnNxbGl0ZTMtd2FsIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3FsaXRlMy13
YWwKaW5kZXggYzc1YWY1N2VlYjljZTZhMmNmYTlkYzNiMGY2MzA5ZGY0MGJjY2VmZC4uZjNkNWVk
NDQ2YjA1ZjU5MmNlMjQ0NzUxNjU0MWQ2ZWEyMzgzZWVjYiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRj
aApkZWx0YSA2NzQwCnpjbWReRGN7byk0K2RwJjhGIW1ZQ09rKnFpN1RJUChvMkFrc1RTN144dlRx
QGpDUSh3elIjUW5sTGByclVyN1NIZgp6JDxrJmlNV25LMWgqRkIqY1NiYXg+KkBGUUtMNVNmZCMt
RUZKP0IyPmIxJEYhe0AoTEYpNiQ0NWUjRWI+TVBXWSMKenNrfFhWNURzRC08dFZTdilAP1E+IyNf
PCVFSz0yMTB+THhAS1hgODxlQUA8eEJ4KHlrWUR0cHlUOV9uSmFfI35hCnpIOzIydjF9ajc2RUYr
YmY7VyUqZitRVil+e2YkVkUkVl5tOWowNksjKStsaVMlUmgobiY9JEV0dig+PEdtNl91KAp6emtz
OS1BMDhhYlFSPCFyKCk1X1g/fExpX3lFWEU0WXhuSGh5VV5qWlhHYDQxcVU3KmQrJmMjKlBUNyZn
VmJQMXAKeiVxQ0t3K1RSP1M0UiZBVHk7Xyt3M3RTWSoxbG1Uakk4PzdrIzl0NnJ2QENSMzwrXk9s
dE5GWGxFTjtWSk9rQ1Z3CnpFSTlKZ087N3R1a0RIaDJtMmx3Wl5TKVBLVWZrcnJSRmU/fmozYU9Z
dH51djhAZVNGIzwhZyRvX31AYSpJQU58aQp6QGojYiUqNDQheHJtTFlJN0ZUQnkhbXJJNy15ZDMq
SW0rVmQlT04qVDtwUHxCZT4wYitNJTIhMjchWUVaYXtfZ3QKemtweGdJd2w7YDhGNzx0ejxfeXdC
YUNselVVUmQlS1ZpIUNYYUktPUsjcDAmT0p2K1NHU0gwJE1adUE2cWs+ODdhCnp1JW9KTm9wcURD
bURTQztIek4tPEQoWTFodk1UaT81U01mfDt5VHFLYTI4fTY0UUY4UyV2UE9hWTBPU15nK1JHYAp6
PFpPV2FBaSNOWTxKIUhkXkpSMjNYXkZgbyF1Zjd8bTZmN3ZhbCV4SW1ZMm48IzwxdDRYKlM3PihQ
flJzKSMrbmcKenJ0LWNEZHVaKnFTaylnNDFYcW96VStTUklBRzR9MkoodX01WSp2eUA8TEc1b3Vk
VTg2NUd5ZUlOUiMtKXMoI3xuCno2JmtpektiTk1CeiReaDhabnF1cXsxelRYR1pTUTBBOFNsTSEo
RFFqTXN0QDJZS2JgbDFsYTFVa2ZvZkZqTXx8Mgp6TWo+bnNIVWdgfkgoS1YxPiozPkhoaH5TQ2dt
N3s9MlpzM3ZgNUMhfVFIfEVaV0djLTdaa0BMZlIzbV9pXjR7cGoKeiNqdD1LZlV3YE9wUnNpODBJ
PC1Cck01KUQ9b00lKjgtaFkxMjsmVUgyKlN6ZVI2ZypUcEJOYjkmKWhiaU57WHthCno5eilwMipo
eT9SXzlITkkzcmtJT2hTNk59RmB5YU8zaUpNbHFFPzA3ZVdtWmYlbURpViFjSmkpdXBgKEgwTlIx
bwp6TVdZY0UyUk1OPGZgLTh2ZD1PMyE7Q2V4XmNAP19KeVRVPip8Ml8jQWpiPGM2b050NjxPPDcj
cnlQSillRH5ZLSYKejhmR2pkOHRBYkwqdWBffjNZOTIhd09JejxWKn56QiplT1FGViVSQVY4NjdK
ayU0a0d7cF8rVHpfX3BhYiEtTFp1CnpHPSZTU21ENnxAa3ZLbF8oVEFwMjR5UitLVUM2RkZFKmZx
K0RrTEA2PHRpajZiIWA8Vk8mNHR5bEFFQFU3SFBSQQp6aUEqfG0yTnF3Y3VBJTB0ekZicXFObGlt
amcreXtEc1dAcjVJSUYxWnM1X0IwJFpBPzdYQVImUiF4fSo0N3lJaFcKenNeZWE/P1JWaGhLa2BL
N2VGe3RJfEE4eUBXbHI5SFBRViQxYHVVOHsqNmthWHsyRm45PUttQnZ8N1EtPmAoVXZACnolI0cx
eV5SQnBoeDExYGwpS3NNJT9QRGMoQkVMbSRmMUB1cUVwcl5HaDJ9fnpgSVNhXi1QRSlRNyFhYTQx
fHVfQQp6eWIhQ2teZ04+NSlCRmxTVDhqfEUwPXY0V2o8RWklWTdLYWxARG9PMGc+QnMoRXIrN1p6
bztPeXE4ZDh9UExZamwKejxpVjR+cEQ2SD9gWVV2Y2pKMG1qQGRlSF9IQWAwNU0tUmJNXkBCQzA7
N082NkZjRFVtV0okbD03RkNDUSN5dUZmCnoxYD1oeDNEPFVoUyRja2VvM1V6ZWtSXm18IWUpUyMm
azZnJG9UeFhidDAqY2UwQSskd2hpMElNUCVMRGI7KXFrQgp6YGxQfj1DPUImUER5JERnWWJ2WT5n
d0dLfjlmKnUwaCU2QWhQUXFlOWdyOV5KZlomY3tEJUUyVWQybHMpNXwjcEQKemUrKGlHTH1tO2t7
d0t7JD9UJGd6UCM3QmpRNiFYU1E2UVJ+USEjUVExVWFCVjxjNSQzPFBFdCh6KjtJSVclfnp4CnpJ
Nlg1biEpV0AwWmhuNXRmPGw5ISNFdGQrP0k4dmQycGd4TyspdU9YQVYoO09WSFVYSGg4Jm5yUHok
cVI1ZkhaZQp6TmtrYjR5T1c2Mnszd3Q9dFpaQiVMRWxlSEpjOzEzO0JNeyhMPEAqbDdaNVRLTE9C
UzdzRXMreXN7PVdSJFVJV30Keik/ND9LTyZqY0pjeyFsOF5EflZuYXg4WDREeDgtV0l7e3x1OF4l
bG42QWsrWU9wZURgTHBEQ2Y5T1lzaVo2SHV+CnpGaWx1UytrRTVhP3JWcys1eilIeF9vR2N8IUY9
WlhJaUpPVk98aU40NVdHaEZAe3lQIV5OYUxuMnBgQzB2PTw9Jgp6IU9ANHYwaW9LNUVDI30pNDxR
JmJJT0QqSnUlUlJnNURaQ3hEe3UodUcxTTVtQElwMD9zYiZgQDBgPWx3UGpsI0QKenNGKFc/NWl0
ZWBqVkNNdyhSQ1NXZ25JQS12JHlgMz5iM1ZyKD0tfGZJQXxSR3RXKn50e1hzS2N3UFE2ZWM0VXJm
CnpLczB2ekFFKlh5KiZzSDQ9MTx1X1FxNU04cUdfRDxkZ18wc254RllvXz5XWH5va3Z8Qip9UEda
Vz0yMylAaU9Abwp6I1ktfGRLPDQ7X244WFI9Ql5JaEBzVWhOKkVNIWF1QGNEbklWMmtFQEYxNWkj
YHlQXi16K2g4PiREZk1yTjduUTMKeit+cTBmJD52R3NpUkFHSUJfaV47O217fmE2bmMmc3FNcEor
Z14tXjdMSXFBd1psUXVoUGo7YUsodnctSnB6QkswCnpVWDM5ZCRvdkFgZV9UQjY9O251cWRCS0xg
PUs9KmlnQkBQYkhIX3xNVExqdCMmSG1ySTI4dFRMJDQzOUxfVi08Kgp6aiRYdnZLPmU0bGBDdjlz
TDYrbEhYM1RSVSpySGh6KDZUJXt0PXg1N19NRVlwMCs8WFVgKz1leTNzenU5TnVKeVcKenVASl5z
UExleXA3UkFabStoYjNWbiVZd29qRyk9ckYmd3Q4elJYPmhzfChvciszWEU7XiFFb30qQmU7YElx
dFImCnphU2h6IztwYzEwa0ZORXlgQX1jUng1eV5adWw0WT09WEdqKClDcEQrSj9zLV55KmAqOXZL
eksqaThueVRTLWpERQp6RFghSStyMEhaJWpZcH4tbUkpZEJhN21Zeml8flAjb2tMTioke01ZeWl5
PD5FPmpiazAkP0olRz9zNTlNIUd9RyYKekNhTUc/PCkqc3lZK0NYXmVwS0hlbzE/TThjdlpCSFZx
fX0hd31HYkRkdzEmKVp0fHMrQ1JFbDRIQn5NVHstQjF8CnokPEY3Qnk3eWBJTHl2WCZRQ31QYGk0
VjJFb0RRZyVUSTUzVU09OVk+YDkzciQoJEU7YjghPlZTPD18SE0hPko1egp6TmZ5e3R6Vy17VG5B
IUc/ZDxRK04tRnItMFpvfTNvbCg9eFJvRGZPMGtkfFY8I1Jwc01TR0FwYyRxU3YrUHhCU24KekNy
T3V6I3QjZD9taWN1UiQ3fjhQWGJKYjReTSRiJmM2YitycFRTLTRBSzE5USthZFJnaCRiS0J3WXh2
WXU9cmtuCnpPNkBMWEBrPiNmYlQoZ2tsQyo0bG1QU0UrelF4PD8jRiVzcUBoQW5zSm1td210QEpN
YDBWPVZiPiFYeipQUmR6Zwp6V1hrRmRObTBrNXRvSmt8PVdvTVhOMWJnRl5qeF8rbHlAPHxWV3NV
cj04VyNuQStNd3VfdnpJayFwcWk3YWR7WlEKemlST0ZXbDE3VCg0Q2RIbGlmPDFyTl5xYUYpNUF6
X2BBRCZQPXQkPldeT34jbm9rSE01Z1klQjNLMzsxb1B2NF93Cnp2Unw/KHhpMjNUQ14zQW9jd34x
Y2BBKVZKQDc9Um1uJX1wKVh8SipwciM2NDxgfUVHQGlRUVl4I2B4VCZjU3wqZQp6dFppZjBlPn0q
JFY+SFp1Yj8xdDYyfGB1Ym0qT2hnYTxgTU1sI1pTdEAoRkx0S0c+b0QqUFVAeSljZn5hSE0+Ki0K
ektBMk1FKVJkbXkrKitIeUNXbyFtPkNCcDxtSkJAM3s4X2NNTSNoVGUoND1SNCE0V1FMYDM7aTgp
RXdAbmkoZnFICnoqPnxTZ1RYfk1sZClqK2laRVRVeyVqYih5WX0wJWpBPn53dnQtbjdOUEhmYTR6
bih0JG5PMH5wKXg1YlVeTVZ9Vgp6YEVrUE85a3QpQUMlNDQoX2drITNgKT11Wk1JRi0zek5nbG1i
KEF4Uz8/UyNfRzt8S182fEVHcWRtNmFVazhme0oKejZZbGZGTHllaFRga3hkZl9WcDt5ZU15PUZ6
OCNKaEpHaEl7LUpMUjU0bXNmej5Ge3s5O08/fSNfRkl4fVQ0UTJQCnpHMiNoQldWNTRwQHNyIXIt
Qnh4ekRJTDE8YT5UNSpIR1U7MEg1fSZmdTZeN3hRVH4tc3VwJVVLXmt6Myprbj9Vcwp6UlNGTWY9
MXR3PXVkZFN9TkI3ayVjPypAJk5qSWs4aC1xP1RVMkxtQD8pQ3Z1blV7cz5gXyF0UU1ge0hoZTsy
QSsKekJHczJAeXJwfmQ3SFdEe3ZnU1pUPTRncWJWRUV+dGp7IShRKV9kSkUtLXdIPy1iK2lKNH5r
bkVKITxEeFZVMEVeCnomd05wYT5vaEM9eXByUG1JSEttJXttVWZyK256SllmODh7UXJja2BFKFly
ZmFaI1pKZDk7VzJrbzBHbXtyVXwzdAp6XiZMeHNIYGYjJnpJdyozeXstNmA7bklme21WIz9WVXc3
UVI5YUVAR3JhWFVobWA2I3h2XihjQS0/fEVjJnhzPkQKelRlaGo+JE8oVmIqPnRrbm9Ye1NtYHRr
JmwqPVZ0UnlJISpnbTU8dSVDJGtGT3ttemtsenQpd1ZGITdUaXVXWGpqCnprM0hIZGx0O0JRMG1H
bHVAQXF1M0A7fDlPXnhhRntXSlVqfmhoRXZqWiQ7OS15aUJATGNEWFhgUkZOXmt3YXVWagp6ZUBv
enRFT1VqMlRQQG1HTkVgM1Y9LW5GWk0ySGI7SmVxJUpTNi1+Z1NyZTxoU0Z7YmtKJjZCUVhXLUlT
YnMrVT8Kemc8T1A8QDMlSkwjWkEteD1lJi1ubCt5YklHSlkoUkkrRExDUXJNdHlsSHkpQVl6YVg7
aFU/VkdUXkReQE1zNEx1CnpgMG0oT0tTWF9zXkZHdyM5ODdWPGpNTGg3ZnsoV3ZhMFoxRGxgaSMw
NT47K0JhQTB7fW5Cczd1QygyWCNJPWxtfQp6YnRrJFNEe0JZZ1B+ZGZqQTZnNzRMTWpqJHtncTlL
TyYkeldhS095fXl9JWRkSXx4KDdJOGgpciNpJCtmVTxBakEKentUaml1eUNjYU9mY2NqcjckdXxM
K0NUMSQxU0lYaEtpS3lkeUdiYSkkfUtmR3t3MnFjPSptVT44MXYydEghO2BZCnpFPXFyTEx+JmIm
PSZRbCFAQVM+eXk1UU1AKi1iP1A0b1lYZW1iJDt9Ry12VHlsNjtMbWNhbmRNUT1EU000TkQ/LQp6
ZTBqaU5US0FjKjNadT4hcWx6bmNfckplK3QtN3BlYnpZZFFRMUlhKUBnK0xSJiR7MTkpX0xGSzJ8
TT83cWZWfGkKemBMPXJuJihuQjRlYklBKjE2KzZYJSlIRGYjO2YtQ1VsZVhCcip4PWgpQjNMT005
UmBDRlAwUiRgXiYyaD5eWCE/CnotbzVYI3FvWSF9KEw/MGhwa2RQR2Jzc25QQSo7bjNMZkB9OUtY
SiozIXk9KGtkVmBFJnk7K2A0bWxZPWw/eURDSAp6NkhRTVNAVDE/Kl9ZR01XeFk7cC1kdHh2UypY
KXkhNkxVfkd2JEg5N3hUc31qZz1YeW1uPlctXjlpPmdUck89eFAKenMxZylWLXx9fCRYeGI2a0Jf
cUBPU01OSVFeQ0lqVFlEYUpNOXVIOTh6JUM5I3ZiVnxVVF5zWSgxaE1VQ1VSWW4kCnpFPnRNJF8t
cmtJUShwKWJBODg+NiR7VTZJUm8+Wk11SC1kRntyX0VrYVNDeVVDZDV3SyZmIzN8c35KVlRiVE8p
IQp6QVl4dj5sbH1RQjN5Ykg2RCFBKlVISTFFP14tWTVPeEgpPzZVOWskayo7dFRmcFIpYitfWGlv
cDNiPmFNRWctKmYKemlqXklJTkA8QGQkRytuQ2h3PSlPYTN+SmAjZm1DcWhrWGdOZDc9S2ZaeV9s
MGtpOUkoPiMpTUZ5dWRhY2ZGIyVkCnpGV1EhfWFPOzR9UzNEaXZqSzlPfmszVi1hUkRTM3trbyRM
MjFmTmtvbX1JeFMqbClTK3oxLVUtdlRMRz1gKEo7Vwp6WTlxNllVMlMlR0skMHpMdSh2LUxGQD9e
cjUpTFg+d1Q4RmxwUDQlNHJQPHR7ZCpDK1JZTkZkSnFpdn19aWxjNHoKelpKQWNNUj9qenVYM31x
KSZMdiFBTzk/NGBeNDsqKlhQYVhkPWlYODJidCkmZFQ/Qm1De2Z5Mng4JExwP3swe24yCno/dUY4
RWsyYy1qdyE2fGJvTlohbm5nSEdZUUROQCE5KSUzUnQhYz1GRUlqYkZfKGVHOHZDeSZgVUw2LUti
S2txKQp6c1JQe05qaiFsRU5Sb0FSRj9vNlZ6TmwyPyFycDs7cD1sSTlTcFNVVXg2TERYaCp0KVg5
RjZgKF42WEF1QClMbWwKeiVpZUxhSE5WT2daSiE7WSU5fjl3aSsmc0JUWChZM057ZkF9QiU9M0J7
NCl+IUMyNl96NGhNclA+ejBOTXF2MlJWCnpqWH1QSSs+emsqT3tsRihLfnd2bG4/Jmd6c0NwTFAr
Tk8zaXtHZHh7K096biQ+LXRXJUU2dG5KK1BRfSVoNFlkdgp6MFg0Z0MpdHZxbVI7ZkhANW9oNVJN
QzZfSEs0SXFtQTwrcD9sWmRuQUVNOVZxdT0qdXNGbG5lOytpMCVzJlIpSUcKekJuMHx4K2NpWDVO
OzgmfCZAVj0yVXZlYT97dFk3KD04aEdvV1V7dE49SExfNjNDejshVUoqfE5fMjh4RDFwJjFlCnoj
fG5nMCFgaX1IP1JGbyt3K1c4ZENyT2gpWDZneG5VRVkqKm5JQHhfUSg7fXRicGttaVczSnw/NWtP
fG4yMWx4PQp6SHR7X1JfZ0x7R0hoJD5WVHcrY1VpVHt8R15RQEx9UFIyX3VlMGlIKVBYOWslXiNt
RHtnVFZNI2x6SEc4PWw9aj0KQzBOWTt4CgpkZWx0YSAzNDI0CnpjbWVISmN+QkVxNz1PRGozNWhZ
aDEoUj9eTVlJYW1EMW4zfHA3OXVUbHF6YmlOWXlhYHRrO018QFR3TFMxZ2ZAMAp6NCVld3ghR2No
YVFIOzc7Tjl6ckV2P14qbk1nQCZadHEzUzZ0eUtEVUwqbUElOWo1PHZyYVFDeSYzXmxTLXx6Yz0K
ekBBITdsMSZAcDhEVDYqKXY9WFRBYz5fUUpfRyYrRVl7PyE7IT1XQG9PeT8lfnV0ZS00YDJORlY5
eitNfHdsPmZnCnpKJjRaaENKclUzUzAkU1k1YXF6X159TXJJY0cpYEw4Y0ImTXIrNGJmPzxAQ0pU
e18wMHZlVyVwbkR4QVcwckdJKgp6XmEoUVV3I0UkaWNHal8hK1okbFJgcmA3YW95MiVNa1RHJDxX
KXFLKUtFSkpXZk5aa0ptOVdCRXFnckhCPD1Tek4KenJnNkFsVyolWWwySEZzcWFuUzg4IW9mTG5P
OXk9IzljVHg3dD5BIUBTTVVnbiZ3SExlN1pTYk9tR0UtJWBtSlM4CnomSSM/ZjtyU2VIWjlXZ1Rh
QVU7VUokSCttdGZtcSU8KmVIP3FOSHhjSD1FQ31YXkBtc2cwK0A3R3w5PkREKGAqYwp6TSNOaHdR
a3hwIUN1UWFsY0ItTihqX09HamsxOVJZeFVRJE1mMn1wSW89MGA9dkZGVTlAMCFlU2clalAjQEU7
ez4KeiV4MSRgQFZxY3VQbDZaZ25hWj92X1dwVWphay1GRSRvT2tQNXQ7Qj5wTHw/IUFjV3gyZ2Il
Iykje35EeTMyKUl6Cno/QGsmSmFwQTYtNGp5TngkcjtDfD17RyM7bWlOS3QzfENiQFNnaT9Ndmg+
O3xkUmxAVkcmejtyZil3MFJiKk9ZRwp6R1ZiUWdvfH1mKjZaRjZkST5qeyFLN00lQ2VkUmJOR1ll
PHZUI2J1fG1kM1pOZDhsQkR4QU5VQjlqWXQoUiVZRWAKempfdXtVJWIldkFXWmtUQT1LMll+YF53
VW0pU0JEN01sZn1rYEVFO0QmZDdYUVF6dTR6cFlPZzdNK3g2Z25PbiZDCnpLaip1ek9fPzg2Y2Rx
eWcjc0VvUGY/RDYyYVhJXnI0YEN1WkBaR1VRbDtuYCNwY0JsRHVHcm5sQTs5cjlNLXhrQAp6XnB+
LTcxQ2J0fUFKSDxUeDA8T1NMXkRJa09DNm05MSFjI3xgcVpvMWFSY2lCWURPOypsYjtMa3g/QVRf
MHdQUVoKejI/OWQpTnM8c3MqdjA2TVp8OSpme3picTU7VFdtYjktdERTQ1JCLUBWeTRUOCZXc0Bn
b2hkITR6V1IwMXUhKCFACnpEYiloPjNOQGx5SmdeRmQyX1BpSVAoYjEqek0oe24zMCE4YXZFfHQ+
cjVvcW5lXjs5SCNUMyVwSWhvPngyYnYhKAp6Pj9oYFMxTVFWY3ZmRntkPiFiaH45RUNzYklOe0Yp
NTZVTUFGJV5NY3VfZFcrTiotaHE9fE1hdWp1MmFqI2wlTzEKemsjR1lRVT4lcn1aS2liZWc7bFQl
QSk7JG4hTkomUShxSmV5YWNOTTQ0Vj96eCF7JGdEUkFGOzc0RitOWig+WjVRCnpJXyFicCMtX3Nu
WSFjSTlTRF4/S0IwNFZ6YGdHTldZQmJ1SVBfMF5QKFp7S15YMXp7cjIqSSFCPjNYQmw3O0NsIQp6
JEkjYylWSzU8TEJwR2x+ZCNfbW5rdEFxXjBmMT0mOTM+cGcxYW0rZjVZWmNRVV9pVnZXViVIa3Q1
TkhXTWpUTmEKejZRO0k9PXEmMmMqeSgwJWE5Q0pxczNyN3VPR151STE3UHt8YDFzejVpeFR+elAh
aU89SFFYPkAyOG5EcTk5anlGCnpNVnlwaFBhMntvZyVTLSokYT0+QjN6JnNSI05jc1FnPFJNUjdk
MTUoRHBkZ1p2SEs5PitxcG8zVihEKERkdF94Wgp6ZmQlfTl0R0c1fVVFZCZDMSFMTXJldjhfbyFU
TThWJDlgPzc0cyt3JC1YdV5uRm1BVnY/ejVZVEl6P3UraUhWazcKekFwLWB0ZmxBWmNHQUdgR3gh
NDhrdGhuNUZecE9pU0otPWs7VF9IRU9qWmtBRlJjKSt8LUdOVDNRX25MO0tWUEY8CnomMUJnNDsh
NWA/aEckNistREMwXnV2X2p9Xk9SfVY9SW9iZyhLdnZkRig8KG1xPiVIWTlnIXpwYCg1Z2x6Kzk5
PQp6OT9VUVApWkY/PEMkezZFJTJ0Pz81QSEtQmRibCZDJiZtVGpLQmBgQklDXk9lVDdwTTx4MSNW
TCNoY1g2PzZ8ZVMKelpOdmdrQ1Veb0wqMShNWk59Q2FSN0xXOThoNTdQZlU4PnlEcylDYVAqbCMy
PzVjdSZ3anRgZEotViFIJCQofUozCnptOyVzR1hiVjMwe0A+TDllcDNmSFBnVCtvQHxudDxIR3wy
X2ckamhYe0kmdzkkTDNBfSlMfG5wPFc5cDhoMX1jYwp6aDB4Y0R7NWliaD0qVD9KYzEmPzBvQCFA
RDcoUyUtY0tpSyNWaXtgME97JHZoMihfcGhjWjhkMGZLYk1Fb09icmMKemZNLSlBYWNLPEI0WH59
R3N3T2ZmP3plWH1oQ3A4YmxDfTBQZGB0bkFWXjBqOTk2ajQtKH05Q1VieXVNfkV+RVpGCnpSQU04
eCFTMn1mdkI2SCpqSjgyI0lEN1BvNn4wMkVpeFFCKUFIVSZDWmVyYlQzTGpURCNrb2EzLXFfdmcm
MWtWbgp6TH5wbDJVbGpgeUQzcT9DeDxSWlAoI3MzRHJxTzEzcWNgWCh5fn1PJDhTejhEeXVxYGcm
OzB0c2hkWDRiKSopey0KellIKlBrKCtSfndpZmkld3pVITFYQzM5S3lqTit0fnwxMi1Ye1R9P1N5
aUAlZF9qPzxwZy1vUFVhOUdBXj0lP3R5CnApZVJqUTAhfU8rZ308eFlFe0NfR3YjVXpvdSFqR0VO
JFNBUHJJUCktOzRUSUd7MGxqZzNgX3QzCgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBh
dGliaWxpdHlSZWFkLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVJlYWQuaHRtbApp
bmRleCAwZjQ3NjE5YjVmNjUzNDFlMjU5YWQ0MmFlZDQ3OTM1ZmRlZDhiODBjLi5jMDhiMjkyNmY0
NWRjYTE4ODk5Y2Y2NTQ0NmY4ODNhZTkxM2ZiMjY1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJk
Q29tcGF0aWJpbGl0eVJlYWQuaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVJl
YWQuaHRtbApAQCAtMSwyMSArMSwyMSBAQAogPHNjcmlwdD4KICAgICBmdW5jdGlvbiBsb2cobXNn
KQogICAgIHsKLS8vICAgICAgICBhbGVydChtc2cpOworICAgICAgICAvLyBhbGVydChtc2cpOwog
ICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVz
c2FnZShtc2cpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHNob3VsZEJlVHlwZShfYSwgX3R5cGUp
CiAgICAgewotICAgICAgICB2YXIgZXhjZXB0aW9uOwotICAgICAgICB2YXIgX2F2OworICAgICAg
ICBsZXQgZXhjZXB0aW9uOworICAgICAgICBsZXQgX2F2OwogICAgICAgICB0cnkgewogICAgICAg
ICAgICAgX2F2ID0gZXZhbChfYSk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAg
IGV4Y2VwdGlvbiA9IGU7CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgX3R5cGV2ID0gZXZhbChf
dHlwZSk7CisgICAgICAgIGNvbnN0IF90eXBldiA9IGV2YWwoX3R5cGUpOwogICAgICAgICBpZiAo
X2F2IGluc3RhbmNlb2YgX3R5cGV2KSB7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfSBlbHNlIHsKQEAgLTIzLDggKzIzLDIxIEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBm
dW5jdGlvbiBzaG91bGRCZUNyeXB0b0tleShfYSwgX2tleSkKKyAgICB7CisgICAgICAgIGlmICgh
KEpTT04uc3RyaW5naWZ5KF9rZXkua2V5X29wcykgPT0gSlNPTi5zdHJpbmdpZnkoX2Eua2V5X29w
cykpIHx8ICEoX2tleS5leHQgPT0gX2EuZXh0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgaWYgKF9rZXkua3R5ICA9PSAib2N0IiAmJiBfYS5rdHkgPT0gIm9jdCIpCisgICAg
ICAgICAgICByZXR1cm4gKF9rZXkuayA9PSBfYS5rKSAmJiAoX2tleS5hbGcgPT0gX2EuYWxnKTsK
KyAgICAgICAgaWYgKF9rZXkua3R5ICA9PSAiRUMiICYmIF9hLmt0eSA9PSAiRUMiKQorICAgICAg
ICAgICAgcmV0dXJuIChfa2V5LmsgPT0gX2EuaykgJiYgKF9rZXkuY3J2ID09IF9hLmNydikgJiYg
KF9rZXkueCA9PSBfYS54KSAmJiAoX2tleS55ID09IF9hLnkpICYmIChfa2V5LmQgPT0gX2EuZCk7
CisgICAgICAgIGlmIChfa2V5Lmt0eSAgPT0gIlJTQSIgJiYgX2Eua3R5ID09ICJSU0EiKQorICAg
ICAgICAgICAgcmV0dXJuIChfa2V5LmFsZyA9PSBfYS5hbGcpICYmIChfa2V5Lm4gPT0gX2Eubikg
JiYgKF9rZXkuZSA9PSBfYS5lKSAmJiAoX2tleS5kID09IF9hLmQpICYmIChfa2V5LnAgPT0gX2Eu
cCkgJiYgKF9rZXkucSA9PSBfYS5xKSAmJiAoX2tleS5kcCA9PSBfYS5kcCkgJiYgKF9rZXkuZHEg
PT0gX2EuZHEpICYmIChfa2V5LnFpID09IF9hLnFpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKwogICAgIC8vIFZhbHVlcyB0aGF0IGFyZSB1c2VkIHRvIGluZmVyIHRoZSB0eXBlIG9m
IGEgZ2l2ZW4gcHJpbWl0aXZlIHR5cGUuCi0gICAgdmFyIHRlc3RWYWx1ZXMgPSBbCisgICAgY29u
c3QgdGVzdFZhbHVlcyA9IFsKICAgICAgICAgdW5kZWZpbmVkLAogICAgICAgICBudWxsLAogICAg
ICAgICA1LCAvLyBJbnQKQEAgLTM4LDI1ICs1MSwzNSBAQAogICAgIF07CiAKICAgICAvLyBWYWx1
ZXMgdGhhdCBhcmUgdXNlZCB0byBpbmZlciB0aGUgdHlwZSBvZiBhIGdpdmVuIEJvb2xlYW4vU3Ry
aW5nIHR5cGUuCi0gICAgdmFyIHRlc3RUeXBlVmFsdWVzID0gWworICAgIGNvbnN0IHRlc3RUeXBl
VmFsdWVzID0gWwogICAgICAgICB7IGl0ZW06IG5ldyBCb29sZWFuKHRydWUpLCB0eXBlOiAiQm9v
bGVhbiIsIHZhbHVlOiB0cnVlIH0sCiAgICAgICAgIHsgaXRlbTogbmV3IEJvb2xlYW4oZmFsc2Up
LCB0eXBlOiAiQm9vbGVhbiIsIHZhbHVlOiBmYWxzZSB9LAogICAgICAgICB7IGl0ZW06IG5ldyBT
dHJpbmcoKSwgdHlwZTogIlN0cmluZyIsIHZhbHVlOiAiIiB9CiAgICAgXTsKIAotICAgIHZhciBv
cGVuUmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCJiYWNrd2FyZF9jb21wYXRpYmlsaXR5Iik7Cisg
ICAgLy8gVmFsdWVzIGFyZSBpbiBKV0sgZm9ybWF0cy4KKyAgICBjb25zdCB0ZXN0Q3J5cHRvS2V5
VmFsdWVzID0gWworICAgICAgICB7IGt0eTogIm9jdCIsIGs6ICJZV0pqWkdWbVoyZ3hNak0wTlRZ
M09BIiwgYWxnOiAiQTEyOENCQyIsIHVzZTogImVuYyIsIGtleV9vcHM6IFsnZGVjcnlwdCcsICdl
bmNyeXB0JywgJ3Vud3JhcEtleScsICd3cmFwS2V5J10sIGV4dDogdHJ1ZSB9LAorICAgICAgICB7
IGt0eTogIkVDIiwgdXNlOiAic2lnIiwgZXh0OiB0cnVlLCBjcnY6ICJQLTI1NiIsIHg6ICIxRlNW
V2llVHZpa0ZrRzFOT3loa1VDYU1iZFFoeHdINmFDdTRFei1zUnRBIiwgeTogIjlqbU5UTHFNNGNq
QmhkQW5IY05JOVlRVjNPOExGbW8tRWRaV2s4bnRBYUkiLCBrZXlfb3BzOiBbJ3ZlcmlmeSddIH0s
CisgICAgICAgIHsga3R5OiAiRUMiLCB1c2U6ICJzaWciLCBleHQ6IHRydWUsIGtleV9vcHM6IFsi
c2lnbiJdLCBjcnY6ICJQLTI1NiIsIHg6ICIxRlNWV2llVHZpa0ZrRzFOT3loa1VDYU1iZFFoeHdI
NmFDdTRFei1zUnRBIiwgeTogIjlqbU5UTHFNNGNqQmhkQW5IY05JOVlRVjNPOExGbW8tRWRaV2s4
bnRBYUkiLCBkOiAicHB4QlNvdjNOOF9BVWNpc0F1dm1MVjR5RThlX0xfQkxFOGJaYjlaMVhqZyIg
fSwKKyAgICAgICAgeyBrdHk6ICJvY3QiLCBrOiAiWVdKalpHVm1aMmd4TWpNME5UWTNPQSIsIGFs
ZzogIkhTMjU2IiwgdXNlOiAic2lnIiwga2V5X29wczogWyJzaWduIiwgInZlcmlmeSJdLCBleHQ6
IHRydWUsIH0sCisgICAgICAgIHsga3R5OiAiUlNBIiwgYWxnOiAiUFMyNTYiLCB1c2U6ICJzaWci
LCBrZXlfb3BzOiBbInZlcmlmeSJdLCBleHQ6IHRydWUsIG46ICJyY0NVQ3Y3T2MxSFZhbTFESWhD
enFrblRoV2F3T3A4UUxrOFppeTJwMTBCeWpRRkNham9GaXl1QVdsLVIxV1haYWY0eGl0TFJyYWNU
OWFncHpJemMtTWJMU0hJR2dXUUdPMjFsR2lJbXk1ZnRaLUQ4YkhBcVJ6MnkxNXB6RDRjNENFb3U3
WFNTTERvUm5SMFFHNU1zRGhENnMyZ1Y5bXdIa3J0a0N4dE1XZEJpLTc3YXM4d0dtbE5SbGRjT1Nn
WkRMSzhVbkNTZ0ExT2d1Wjk4OWJGeWM4dE9PRUliMHhVU2ZQU3ozTFBTQ255WXo2OGFEam1LVmVO
SC1pZzg1N09TY3lXYkd5RXkzQml3NjRxdW4zanVVbE5Xc0ozem5na09kdGVZV3l0eDVRcjRYS05z
NlItTXl5cTcyS1VwMDJtSkRaaWl5aWdseE1MX2kzLV9DZWVjQ3ciLCBlOiAiQVFBQiIgfSwKKyAg
ICAgICAgeyBrdHk6ICJSU0EiLCBhbGc6ICJQUzEiLCB1c2U6ICJzaWciLCBrZXlfb3BzOiBbInNp
Z24iXSwgZXh0OiB0cnVlLCBuOiAicmNDVUN2N09jMUhWYW0xREloQ3pxa25UaFdhd09wOFFMazha
aXkycDEwQnlqUUZDYWpvRml5dUFXbC1SMVdYWmFmNHhpdExScmFjVDlhZ3B6SXpjLU1iTFNISUdn
V1FHTzIxbEdpSW15NWZ0Wi1EOGJIQXFSejJ5MTVwekQ0YzRDRW91N1hTU0xEb1JuUjBRRzVNc0Ro
RDZzMmdWOW13SGtydGtDeHRNV2RCaS03N2FzOHdHbWxOUmxkY09TZ1pETEs4VW5DU2dBMU9ndVo5
ODliRnljOHRPT0VJYjB4VVNmUFN6M0xQU0NueVl6NjhhRGptS1ZlTkgtaWc4NTdPU2N5V2JHeUV5
M0JpdzY0cXVuM2p1VWxOV3NKM3puZ2tPZHRlWVd5dHg1UXI0WEtOczZSLU15eXE3MktVcDAybUpE
WmlpeWlnbHhNTF9pMy1fQ2VlY0N3IiwgZTogIkFRQUIiLCBkOiAiZU5MUzM3YUN6N1JYU05QRF9E
dExCSjZqNVQ4Y1N4ZHpSQkNqUGFJNldjR3FKcDE2bHEzVVR3dW9ETEFxbEE5b0dZbTIzOGRzSVdw
dXVjUF9sUXRiV2UtN1NweG9JNl92bVlHZjdZVlVIdjEtREY5cWlPbVNyTW1keE1uVk96WVhZOFJh
VDZ0aFBqbl9KNWNmTFYyeElfTHdzck10bXBkU3lObGdYMHpUVWh3dHVhaGdBS01FQ2hZakgyRW5q
SGRIdzZzWTItd0FwZGNRSTdVTEUwb281UnpiUVpwbXVoY045aGlCYzBMM2hoRjBxbzUwbWJsMDJf
NjVfR1E3RHBWa1hCeE5nUkJMemxQYWJtenpHMm9BaGZlZkxnWW1TQzFvcGFDa1hFNnZSV1FOV05M
NDVSWk5aRllNM3VvSmdoT01xR2VvY00wQnBqZENoSHJQT2xGdlNRIiwgcDogIjRtaVR1QWpLTWVI
NXVKNUtCMzk3UVV3aGJrWUVnU2JjQTJtaWZtU2t2RTIwMThnYjU1cWtCSEsxZVZyeWYxX200M0xO
bGM2T19hazZnZnpkWkladlM1TkNHalBsMHEwOXBsVXB1OHFGT1NzcEJ3QTY3cUdINzZsRmxaTG5f
ZDR5Z2xTN3dmTHJ1NF81WXM4cUxMcy1EcVZMdml3cG9zT255eVdxd001QVhwMCIsIHE6ICJ4SFly
emtpdnRtbnpfc0djaG5XR2MwcS1wRE9rS2ljcHRScHYycE1GSUlYeG5GWDVhTWVFWElaalZ1alh0
d1V5MVVsRklOMkdaSlN2eTVLSjc5bXVfWHlObkZITXplZEgtQTNlZTN1OGgxVVVyWkYtdlV1MV9l
NFVfeDY3Tk4xZGVkelVTS3luTjdwRmwzT2t1U2hNQldHVi1jd3pPUGRjVkFmVnVabHhVTWMiLCBk
cDogImZCekR6WURVQm1CUUdvcDdIbjBkdmZfVDI3VjZScXBjdFdvMDc0Q1FaY0ZiUDJhdEZWdEtT
ajN2aVdUM3hpZDJWSHpjZ2lESGRmcE0zbkVWbEVPMXd3SW9uR0NTdmRqR0VPWmlpRlZPanJaQU9W
eEE4Z3VPanl5RnZxYlhrZTA2VndQSUlWdmZLZVNVMnp1aGJQX18xdHQ2Rl9meG93NEtiMnhvbkdU
MEdHayIsIGRxOiAiam1FMkRpSVBkaHdEZ0xYQVFwSWFCcVE4MWJPM1hmVlRfTFJVTEF3d3d3bFB1
UVYxNDhIMDR6bGg5VEo2WTJHWkhZb2tWMVUwZU9CcEp4ZmtiN2RMWXRwSnB1aUJqUmY0eUlVRW9H
bGtrSV9RbEpuRlNGci1ZakdSZGZOSHFXQmt4bFNNWkw3NzBSOW1JQVRuZEdrSDd6NXgtcjlLd0Ja
RkM0RkNHMmhnX3pFIiwgcWk6ICJZQ1hfcEx3Yk1CQTFUaFZIMFdjd21ueXRxTmNyTUNFd1RtN0J5
QTJlVTZuV2JRclVMdmY3bTlfa3pmTFVjanNucEFWbEJRRzVKTVhNeTBTcTRwdHdieXdzYTUtRzhL
QU9PT1IyTDN2NGhDLUV5czlmdGdGTV8zaTBvNDBlZVFINGIzaGFQYm50ckllTWc4SXpsT3VWWUtm
OS0yUXVLRG9XZVJkZDdOc2R4VGsiIH0KKyAgICBdOworCisgICAgY29uc3Qgb3BlblJlcXVlc3Qg
PSBpbmRleGVkREIub3BlbigiYmFja3dhcmRfY29tcGF0aWJpbGl0eSIpOwogICAgIG9wZW5SZXF1
ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewogICAgICAgICBsb2coIkVycm9yOiAiICsg
ZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUpOwotICAgIH0KKyAgICB9OwogICAgIG9wZW5SZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIGRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsKICAgICAgICAgcmVhZFR5cGUoKTsKLSAgICB9CisgICAgfTsKIAotICAgIHZhciBy
ZXN1bHQgPSB0cnVlOworICAgIGxldCByZXN1bHQgPSB0cnVlOwogICAgIGZ1bmN0aW9uIHJlYWRU
eXBlKCkKICAgICB7Ci0gICAgICAgIHZhciBvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCJ0
eXBlIikub2JqZWN0U3RvcmUoInR5cGUiKTsKKyAgICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBk
Yi50cmFuc2FjdGlvbigidHlwZSIpLm9iamVjdFN0b3JlKCJ0eXBlIik7CiAgICAgICAgIG9iamVj
dFN0b3JlLm9wZW5DdXJzb3IoKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewogICAgICAg
ICAgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAgICAgICAgICAgIGlmIChjdXJz
b3IpIHsKQEAgLTY5LDcgKzkyLDcgQEAKIAogICAgIGZ1bmN0aW9uIHJlYWRWYWx1ZSgpCiAgICAg
ewotICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigidmFsdWUiKS5vYmpl
Y3RTdG9yZSgidmFsdWUiKTsKKyAgICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2Fj
dGlvbigidmFsdWUiKS5vYmplY3RTdG9yZSgidmFsdWUiKTsKICAgICAgICAgb2JqZWN0U3RvcmUu
b3BlbkN1cnNvcigpLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgICAgICBj
dXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OwogICAgICAgICAgICAgaWYgKGN1cnNvcikgewpA
QCAtODIsMTIgKzEwNSwyNyBAQAogCiAgICAgZnVuY3Rpb24gcmVhZFR5cGVWYWx1ZSgpCiAgICAg
ewotICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigidHlwZVZhbHVlIiku
b2JqZWN0U3RvcmUoInR5cGVWYWx1ZSIpOworICAgICAgICBjb25zdCBvYmplY3RTdG9yZSA9IGRi
LnRyYW5zYWN0aW9uKCJ0eXBlVmFsdWUiKS5vYmplY3RTdG9yZSgidHlwZVZhbHVlIik7CiAgICAg
ICAgIG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkg
ewogICAgICAgICAgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAgICAgICAgICAg
IGlmIChjdXJzb3IpIHsKICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgJiYgc2hvdWxk
QmVUeXBlKCJjdXJzb3IudmFsdWUiLCB0ZXN0VHlwZVZhbHVlc1tjdXJzb3Iua2V5IC0gMV0udHlw
ZSkgJiYgKGN1cnNvci52YWx1ZSA9PSB0ZXN0VHlwZVZhbHVlc1tjdXJzb3Iua2V5IC0gMV0udmFs
dWUpOwogICAgICAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICByZWFkQ3J5cHRvS2V5KCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisgICAgfQorCisgICAgYXN5bmMgZnVuY3Rpb24gcmVhZENyeXB0b0tleSgpCisg
ICAgeworICAgICAgICBjb25zdCBvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCJjcnlwdG9L
ZXkiKS5vYmplY3RTdG9yZSgiY3J5cHRvS2V5Iik7CisgICAgICAgIG9iamVjdFN0b3JlLm9wZW5D
dXJzb3IoKS5vbnN1Y2Nlc3MgPSBhc3luYyBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAg
Y3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgIGlmIChjdXJzb3IpIHsK
KyAgICAgICAgICAgICAgICBjb25zdCBqd2tLZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmV4cG9y
dEtleSgiandrIiwgY3Vyc29yLnZhbHVlKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1
bHQgJiYgc2hvdWxkQmVDcnlwdG9LZXkoandrS2V5LCB0ZXN0Q3J5cHRvS2V5VmFsdWVzW2N1cnNv
ci5rZXkgLSAxXSk7CisgICAgICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CiAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICAg
ICAgICAgIGxvZygiUGFzcyIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxp
dHlXcml0ZS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRl
eGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHlXcml0ZS5odG1sCmluZGV4
IGIyNjZlY2M0ZWFhYjE5Y2ZhNWZlMTliN2FiOTMzM2NhMzA0MTUzNDcuLjBlMDhkNDNmZGM2NjA4
NzY2MmU3OGE0NjhiZWRkMGE3M2ZiOThkNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21w
YXRpYmlsaXR5V3JpdGUuaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVdyaXRl
Lmh0bWwKQEAgLTEsMjEgKzEsMjEgQEAKIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gbG9nKG1zZykK
ICAgICB7Ci0vLyAgICAgICAgYWxlcnQobXNnKTsKKyAgICAgICAgLy8gYWxlcnQobXNnKTsKICAg
ICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3Nh
Z2UobXNnKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzaG91bGRCZVR5cGUoX2EsIF90eXBlKQog
ICAgIHsKLSAgICAgICAgdmFyIGV4Y2VwdGlvbjsKLSAgICAgICAgdmFyIF9hdjsKKyAgICAgICAg
bGV0IGV4Y2VwdGlvbjsKKyAgICAgICAgbGV0IF9hdjsKICAgICAgICAgdHJ5IHsKICAgICAgICAg
ICAgIF9hdiA9IGV2YWwoX2EpOwogICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICBl
eGNlcHRpb24gPSBlOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIF90eXBldiA9IGV2YWwoX3R5
cGUpOworICAgICAgICBjb25zdCBfdHlwZXYgPSBldmFsKF90eXBlKTsKICAgICAgICAgaWYgKF9h
diBpbnN0YW5jZW9mIF90eXBldikgewogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0gZWxzZSB7CkBAIC0yMyw4ICsyMywyMSBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgZnVu
Y3Rpb24gc2hvdWxkQmVDcnlwdG9LZXkoX2EsIF9rZXkpCisgICAgeworICAgICAgICBpZiAoIShK
U09OLnN0cmluZ2lmeShfa2V5LmtleV9vcHMpID09IEpTT04uc3RyaW5naWZ5KF9hLmtleV9vcHMp
KSB8fCAhKF9rZXkuZXh0ID09IF9hLmV4dCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGlmIChfa2V5Lmt0eSAgPT0gIm9jdCIgJiYgX2Eua3R5ID09ICJvY3QiKQorICAgICAg
ICAgICAgcmV0dXJuIChfa2V5LmsgPT0gX2EuaykgJiYgKF9rZXkuYWxnID09IF9hLmFsZyk7Cisg
ICAgICAgIGlmIChfa2V5Lmt0eSAgPT0gIkVDIiAmJiBfYS5rdHkgPT0gIkVDIikKKyAgICAgICAg
ICAgIHJldHVybiAoX2tleS5rID09IF9hLmspICYmIChfa2V5LmNydiA9PSBfYS5jcnYpICYmIChf
a2V5LnggPT0gX2EueCkgJiYgKF9rZXkueSA9PSBfYS55KSAmJiAoX2tleS5kID09IF9hLmQpOwor
ICAgICAgICBpZiAoX2tleS5rdHkgID09ICJSU0EiICYmIF9hLmt0eSA9PSAiUlNBIikKKyAgICAg
ICAgICAgIHJldHVybiAoX2tleS5hbGcgPT0gX2EuYWxnKSAmJiAoX2tleS5uID09IF9hLm4pICYm
IChfa2V5LmUgPT0gX2EuZSkgJiYgKF9rZXkuZCA9PSBfYS5kKSAmJiAoX2tleS5wID09IF9hLnAp
ICYmIChfa2V5LnEgPT0gX2EucSkgJiYgKF9rZXkuZHAgPT0gX2EuZHApICYmIChfa2V5LmRxID09
IF9hLmRxKSAmJiAoX2tleS5xaSA9PSBfYS5xaSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKICAgICAvLyBWYWx1ZXMgdGhhdCBhcmUgdXNlZCB0byBpbmZlciB0aGUgdHlwZSBvZiBh
IGdpdmVuIHByaW1pdGl2ZSB0eXBlLgotICAgIHZhciB0ZXN0VmFsdWVzID0gWworICAgIGNvbnN0
IHRlc3RWYWx1ZXMgPSBbCiAgICAgICAgIHVuZGVmaW5lZCwKICAgICAgICAgbnVsbCwKICAgICAg
ICAgNSwgLy8gSW50CkBAIC0zOCwzOSArNTEsNTEgQEAKICAgICBdOwogCiAgICAgLy8gVmFsdWVz
IHRoYXQgYXJlIHVzZWQgdG8gaW5mZXIgdGhlIHR5cGUgb2YgYSBnaXZlbiBCb29sZWFuL1N0cmlu
ZyB0eXBlLgotICAgIHZhciB0ZXN0VHlwZVZhbHVlcyA9IFsKKyAgICBjb25zdCB0ZXN0VHlwZVZh
bHVlcyA9IFsKICAgICAgICAgeyBpdGVtOiBuZXcgQm9vbGVhbih0cnVlKSwgdHlwZTogIkJvb2xl
YW4iLCB2YWx1ZTogdHJ1ZSB9LAogICAgICAgICB7IGl0ZW06IG5ldyBCb29sZWFuKGZhbHNlKSwg
dHlwZTogIkJvb2xlYW4iLCB2YWx1ZTogZmFsc2UgfSwKICAgICAgICAgeyBpdGVtOiBuZXcgU3Ry
aW5nKCksIHR5cGU6ICJTdHJpbmciLCB2YWx1ZTogIiIgfQogICAgIF07CiAKKyAgICAvLyBWYWx1
ZXMgYXJlIGluIEpXSyBmb3JtYXRzLgorICAgIGNvbnN0IHRlc3RDcnlwdG9LZXlWYWx1ZXMgPSBb
CisgICAgICAgIHsga3R5OiAib2N0IiwgazogIllXSmpaR1ZtWjJneE1qTTBOVFkzT0EiLCBhbGc6
ICJBMTI4Q0JDIiwgdXNlOiAiZW5jIiwga2V5X29wczogWydkZWNyeXB0JywgJ2VuY3J5cHQnLCAn
dW53cmFwS2V5JywgJ3dyYXBLZXknXSwgZXh0OiB0cnVlIH0sCisgICAgICAgIHsga3R5OiAiRUMi
LCB1c2U6ICJzaWciLCBleHQ6IHRydWUsIGNydjogIlAtMjU2IiwgeDogIjFGU1ZXaWVUdmlrRmtH
MU5PeWhrVUNhTWJkUWh4d0g2YUN1NEV6LXNSdEEiLCB5OiAiOWptTlRMcU00Y2pCaGRBbkhjTkk5
WVFWM084TEZtby1FZFpXazhudEFhSSIsIGtleV9vcHM6IFsndmVyaWZ5J10gfSwKKyAgICAgICAg
eyBrdHk6ICJFQyIsIHVzZTogInNpZyIsIGV4dDogdHJ1ZSwga2V5X29wczogWyJzaWduIl0sIGNy
djogIlAtMjU2IiwgeDogIjFGU1ZXaWVUdmlrRmtHMU5PeWhrVUNhTWJkUWh4d0g2YUN1NEV6LXNS
dEEiLCB5OiAiOWptTlRMcU00Y2pCaGRBbkhjTkk5WVFWM084TEZtby1FZFpXazhudEFhSSIsIGQ6
ICJwcHhCU292M044X0FVY2lzQXV2bUxWNHlFOGVfTF9CTEU4YlpiOVoxWGpnIiB9LAorICAgICAg
ICB7IGt0eTogIm9jdCIsIGs6ICJZV0pqWkdWbVoyZ3hNak0wTlRZM09BIiwgYWxnOiAiSFMyNTYi
LCB1c2U6ICJzaWciLCBrZXlfb3BzOiBbInNpZ24iLCAidmVyaWZ5Il0sIGV4dDogdHJ1ZSwgfSwK
KyAgICAgICAgeyBrdHk6ICJSU0EiLCBhbGc6ICJQUzI1NiIsIHVzZTogInNpZyIsIGtleV9vcHM6
IFsidmVyaWZ5Il0sIGV4dDogdHJ1ZSwgbjogInJjQ1VDdjdPYzFIVmFtMURJaEN6cWtuVGhXYXdP
cDhRTGs4Wml5MnAxMEJ5alFGQ2Fqb0ZpeXVBV2wtUjFXWFphZjR4aXRMUnJhY1Q5YWdwekl6Yy1N
YkxTSElHZ1dRR08yMWxHaUlteTVmdFotRDhiSEFxUnoyeTE1cHpENGM0Q0VvdTdYU1NMRG9SblIw
UUc1TXNEaEQ2czJnVjltd0hrcnRrQ3h0TVdkQmktNzdhczh3R21sTlJsZGNPU2daRExLOFVuQ1Nn
QTFPZ3VaOTg5YkZ5Yzh0T09FSWIweFVTZlBTejNMUFNDbnlZejY4YURqbUtWZU5ILWlnODU3T1Nj
eVdiR3lFeTNCaXc2NHF1bjNqdVVsTldzSjN6bmdrT2R0ZVlXeXR4NVFyNFhLTnM2Ui1NeXlxNzJL
VXAwMm1KRFppaXlpZ2x4TUxfaTMtX0NlZWNDdyIsIGU6ICJBUUFCIiB9LAorICAgICAgICB7IGt0
eTogIlJTQSIsIGFsZzogIlBTMSIsIHVzZTogInNpZyIsIGtleV9vcHM6IFsic2lnbiJdLCBleHQ6
IHRydWUsIG46ICJyY0NVQ3Y3T2MxSFZhbTFESWhDenFrblRoV2F3T3A4UUxrOFppeTJwMTBCeWpR
RkNham9GaXl1QVdsLVIxV1haYWY0eGl0TFJyYWNUOWFncHpJemMtTWJMU0hJR2dXUUdPMjFsR2lJ
bXk1ZnRaLUQ4YkhBcVJ6MnkxNXB6RDRjNENFb3U3WFNTTERvUm5SMFFHNU1zRGhENnMyZ1Y5bXdI
a3J0a0N4dE1XZEJpLTc3YXM4d0dtbE5SbGRjT1NnWkRMSzhVbkNTZ0ExT2d1Wjk4OWJGeWM4dE9P
RUliMHhVU2ZQU3ozTFBTQ255WXo2OGFEam1LVmVOSC1pZzg1N09TY3lXYkd5RXkzQml3NjRxdW4z
anVVbE5Xc0ozem5na09kdGVZV3l0eDVRcjRYS05zNlItTXl5cTcyS1VwMDJtSkRaaWl5aWdseE1M
X2kzLV9DZWVjQ3ciLCBlOiAiQVFBQiIsIGQ6ICJlTkxTMzdhQ3o3UlhTTlBEX0R0TEJKNmo1VDhj
U3hkelJCQ2pQYUk2V2NHcUpwMTZscTNVVHd1b0RMQXFsQTlvR1ltMjM4ZHNJV3B1dWNQX2xRdGJX
ZS03U3B4b0k2X3ZtWUdmN1lWVUh2MS1ERjlxaU9tU3JNbWR4TW5WT3pZWFk4UmFUNnRoUGpuX0o1
Y2ZMVjJ4SV9Md3NyTXRtcGRTeU5sZ1gwelRVaHd0dWFoZ0FLTUVDaFlqSDJFbmpIZEh3NnNZMi13
QXBkY1FJN1VMRTBvbzVSemJRWnBtdWhjTjloaUJjMEwzaGhGMHFvNTBtYmwwMl82NV9HUTdEcFZr
WEJ4TmdSQkx6bFBhYm16ekcyb0FoZmVmTGdZbVNDMW9wYUNrWEU2dlJXUU5XTkw0NVJaTlpGWU0z
dW9KZ2hPTXFHZW9jTTBCcGpkQ2hIclBPbEZ2U1EiLCBwOiAiNG1pVHVBaktNZUg1dUo1S0IzOTdR
VXdoYmtZRWdTYmNBMm1pZm1Ta3ZFMjAxOGdiNTVxa0JISzFlVnJ5ZjFfbTQzTE5sYzZPX2FrNmdm
emRaSVp2UzVOQ0dqUGwwcTA5cGxVcHU4cUZPU3NwQndBNjdxR0g3NmxGbFpMbl9kNHlnbFM3d2ZM
cnU0XzVZczhxTExzLURxVkx2aXdwb3NPbnl5V3F3TTVBWHAwIiwgcTogInhIWXJ6a2l2dG1uel9z
R2NobldHYzBxLXBET2tLaWNwdFJwdjJwTUZJSVh4bkZYNWFNZUVYSVpqVnVqWHR3VXkxVWxGSU4y
R1pKU3Z5NUtKNzltdV9YeU5uRkhNemVkSC1BM2VlM3U4aDFVVXJaRi12VXUxX2U0VV94NjdOTjFk
ZWR6VVNLeW5ON3BGbDNPa3VTaE1CV0dWLWN3ek9QZGNWQWZWdVpseFVNYyIsIGRwOiAiZkJ6RHpZ
RFVCbUJRR29wN0huMGR2Zl9UMjdWNlJxcGN0V28wNzRDUVpjRmJQMmF0RlZ0S1NqM3ZpV1QzeGlk
MlZIemNnaURIZGZwTTNuRVZsRU8xd3dJb25HQ1N2ZGpHRU9aaWlGVk9qclpBT1Z4QThndU9qeXlG
dnFiWGtlMDZWd1BJSVZ2ZktlU1UyenVoYlBfXzF0dDZGX2Z4b3c0S2IyeG9uR1QwR0drIiwgZHE6
ICJqbUUyRGlJUGRod0RnTFhBUXBJYUJxUTgxYk8zWGZWVF9MUlVMQXd3d3dsUHVRVjE0OEgwNHps
aDlUSjZZMkdaSFlva1YxVTBlT0JwSnhma2I3ZExZdHBKcHVpQmpSZjR5SVVFb0dsa2tJX1FsSm5G
U0ZyLVlqR1JkZk5IcVdCa3hsU01aTDc3MFI5bUlBVG5kR2tIN3o1eC1yOUt3QlpGQzRGQ0cyaGdf
ekUiLCBxaTogIllDWF9wTHdiTUJBMVRoVkgwV2N3bW55dHFOY3JNQ0V3VG03QnlBMmVVNm5XYlFy
VUx2ZjdtOV9remZMVWNqc25wQVZsQlFHNUpNWE15MFNxNHB0d2J5d3NhNS1HOEtBT09PUjJMM3Y0
aEMtRXlzOWZ0Z0ZNXzNpMG80MGVlUUg0YjNoYVBibnRySWVNZzhJemxPdVZZS2Y5LTJRdUtEb1dl
UmRkN05zZHhUayIgfQorICAgIF07CisKICAgICBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoImJh
Y2t3YXJkX2NvbXBhdGliaWxpdHkiKTsKLSAgICB2YXIgb3BlblJlcXVlc3QgPSBpbmRleGVkREIu
b3BlbigiYmFja3dhcmRfY29tcGF0aWJpbGl0eSIpOworICAgIGNvbnN0IG9wZW5SZXF1ZXN0ID0g
aW5kZXhlZERCLm9wZW4oImJhY2t3YXJkX2NvbXBhdGliaWxpdHkiKTsKICAgICBvcGVuUmVxdWVz
dC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgewogICAgICAgICAvLyBUaGlzIG9i
amVjdFN0b3JlIHN0b3JlcyBlbGVtZW50cyB0aGF0IHdlIG9ubHkgbmVlZCB0byBjaGVjayBpdHMg
dHlwZSB0byBkZXRlcm1pbmUgaXRzIHNlcmlhbGl6YXRpb24gdGFnLgotICAgICAgICB2YXIgb2Jq
ZWN0U3RvcmUgPSBldmVudC50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3JlKCJ0eXBlIik7
CisgICAgICAgIGV2ZW50LnRhcmdldC5yZXN1bHQuY3JlYXRlT2JqZWN0U3RvcmUoInR5cGUiKTsK
ICAgICAgICAgLy8gVGhpcyBvYmplY3RTdG9yZSBzdG9yZXMgZWxlbWVudHMgdGhhdCB3ZSBuZWVk
IHRvIGNoZWNrIGl0cyB2YWx1ZSB0byBkZXRlcm1pbmUgaXRzIHNlcmlhbGl6YXRpb24gdGFnLgot
ICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmVudC50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVj
dFN0b3JlKCJ2YWx1ZSIsIHsgYXV0b0luY3JlbWVudCA6IHRydWUgfSk7CisgICAgICAgIGV2ZW50
LnRhcmdldC5yZXN1bHQuY3JlYXRlT2JqZWN0U3RvcmUoInZhbHVlIiwgeyBhdXRvSW5jcmVtZW50
IDogdHJ1ZSB9KTsKICAgICAgICAgLy8gVGhpcyBvYmplY3RTdG9yZSBzdG9yZXMgZWxlbWVudHMg
dGhhdCB3ZSBuZWVkIHRvIGNoZWNrIGJvdGggaXRzIHR5cGUgYW5kIGl0cyB2YWx1ZSB0byBkZXRl
cm1pbmUgaXRzIHNlcmlhbGl6YXRpb24gdGFnLgotICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBl
dmVudC50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3JlKCJ0eXBlVmFsdWUiLCB7IGF1dG9J
bmNyZW1lbnQgOiB0cnVlIH0pOwotICAgIH0KKyAgICAgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5j
cmVhdGVPYmplY3RTdG9yZSgidHlwZVZhbHVlIiwgeyBhdXRvSW5jcmVtZW50IDogdHJ1ZSB9KTsK
KyAgICAgICAgLy8gVGhpcyBvYmplY3RTdG9yZSBzdG9yZXMgY3J5cHRvIGtleXMuCisgICAgICAg
IGV2ZW50LnRhcmdldC5yZXN1bHQuY3JlYXRlT2JqZWN0U3RvcmUoImNyeXB0b0tleSIsIHsgYXV0
b0luY3JlbWVudCA6IHRydWUgfSk7CisgICAgfTsKICAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0g
ZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgbG9nKCJFcnJvcjogIiArIGV2ZW50LnRhcmdldC5l
cnJvci5uYW1lKTsKLSAgICB9CisgICAgfTsKICAgICBvcGVuUmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbihldmVudCkgewogICAgICAgICBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CiAgICAg
ICAgIHN0b3JlVHlwZSgpOwotICAgIH0KKyAgICB9OwogCiAgICAgZnVuY3Rpb24gc3RvcmVUeXBl
KCkKICAgICB7Ci0gICAgICAgIHZhciB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCJ0eXBl
IiwgInJlYWR3cml0ZSIpOworICAgICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0
aW9uKCJ0eXBlIiwgInJlYWR3cml0ZSIpOwogICAgICAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0g
ZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAgIGxvZygiRXJyb3I6ICIgKyBldmVudC50YXJn
ZXQuZXJyb3IubmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7IHN0b3JlVmFsdWUoKTsgfQorICAgICAgICB9OworICAgICAg
ICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsgc3RvcmVWYWx1ZSgp
OyB9OwogCi0gICAgICAgIHZhciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3Jl
KCJ0eXBlIik7CisgICAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0
U3RvcmUoInR5cGUiKTsKICAgICAgICAgLy8gVGhlIGtleSBvZiBhbiBpdGVtIGlzIHRoZSB0eXBl
IG9mIGl0cyB2YWx1ZSwgaGVuY2Ugd2UgY291bGQgZGV0ZXJtaW5lIHR5cGUgbWlzbWF0Y2gsIGku
ZS4gc2VyaWFsaXphdGlvbiB0YWcgcmVvcmRlcgogICAgICAgICAvLyBzaW1wbHkgYnkgdXNpbmcg
YW4gaXRlbSdzIGtleSBhbmQgdmFsdWUuCiAgICAgICAgIG9iamVjdFN0b3JlLmFkZChbMSwgMl0s
ICJBcnJheSIpOwpAQCAtOTksMzYgKzEyNCw2MCBAQAogCiAgICAgZnVuY3Rpb24gc3RvcmVWYWx1
ZSgpCiAgICAgewotICAgICAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbigidmFs
dWUiLCAicmVhZHdyaXRlIik7CisgICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gZGIudHJhbnNh
Y3Rpb24oInZhbHVlIiwgInJlYWR3cml0ZSIpOwogICAgICAgICB0cmFuc2FjdGlvbi5vbmVycm9y
ID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAgIGxvZygiRXJyb3I6ICIgKyBldmVudC50
YXJnZXQuZXJyb3IubmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgdHJhbnNhY3Rpb24ub25jb21w
bGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7IHN0b3JlVHlwZVZhbHVlKCk7IH0KKyAgICAgICAgfTsK
KyAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7IHN0b3Jl
VHlwZVZhbHVlKCk7IH07CiAKLSAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoInZhbHVlIik7CisgICAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gdHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoInZhbHVlIik7CiAgICAgICAgIC8vIEhlcmUgd2Ugc3RvcmUgdmFs
dWVzIGluIHRoZSB0ZXN0IG1hdHJpeCBpbiBvcmRlciBhbmQgcmVhZCB0aGVtIGluIG9yZGVyIHRv
IHNlZSBpZiBhbnkgbWlzbWF0Y2ggaGFwcGVucy4KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0ZXN0VmFsdWVzLmxlbmd0aDsgaSsrKQorICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRl
c3RWYWx1ZXMubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICBvYmplY3RTdG9yZS5hZGQodGVzdFZh
bHVlc1tpXSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RvcmVUeXBlVmFsdWUoKQogICAgIHsK
LSAgICAgICAgdmFyIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oInR5cGVWYWx1ZSIsICJy
ZWFkd3JpdGUiKTsKKyAgICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbigi
dHlwZVZhbHVlIiwgInJlYWR3cml0ZSIpOwogICAgICAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0g
ZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAgIGxvZygiRXJyb3I6ICIgKyBldmVudC50YXJn
ZXQuZXJyb3IubmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7IHJlYWRUeXBlKCk7IH0KKyAgICAgICAgfTsKKyAgICAgICAg
dHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7IHN0b3JlQ3J5cHRvS2V5
KCk7IH07CiAKLSAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3Rv
cmUoInR5cGVWYWx1ZSIpOworICAgICAgICBjb25zdCBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCJ0eXBlVmFsdWUiKTsKICAgICAgICAgLy8gSGVyZSB3ZSBzdG9yZSBpdGVt
cyBpbiB0aGUgdGVzdCBtYXRyaXggaW4gb3JkZXIgYW5kIHJlYWQgdGhlbSBpbiBvcmRlciB0byBz
ZWUgaWYgYW55IG1pc21hdGNoZXMgaXRzIHR5cGUgYW5kIHZhbHVlLgotICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHRlc3RUeXBlVmFsdWVzLmxlbmd0aDsgaSsrKQorICAgICAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IHRlc3RUeXBlVmFsdWVzLmxlbmd0aDsgaSsrKQogICAgICAgICAgICAgb2Jq
ZWN0U3RvcmUuYWRkKHRlc3RUeXBlVmFsdWVzW2ldLml0ZW0pOwogICAgIH0KIAotICAgIHZhciBy
ZXN1bHQgPSB0cnVlOworICAgIGFzeW5jIGZ1bmN0aW9uIHN0b3JlQ3J5cHRvS2V5KCkKKyAgICB7
CisgICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oImNyeXB0b0tleSIs
ICJyZWFkd3JpdGUiKTsKKyAgICAgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgICAgICAgICBsb2coIkVycm9yOiAiICsgZXZlbnQudGFyZ2V0LmVycm9yLm5h
bWUpOworICAgICAgICB9OworICAgICAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rp
b24oZXZlbnQpIHsgcmVhZFR5cGUoKTsgfTsKKworICAgICAgICBjb25zdCBvYmplY3RTdG9yZSA9
IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJjcnlwdG9LZXkiKTsKKyAgICAgICAgLy8gSGVyZSB3
ZSBzdG9yZSBpdGVtcyBpbiB0aGUgdGVzdCBtYXRyaXggaW4gb3JkZXIgYW5kIHJlYWQgdGhlbSBp
biBvcmRlciB0byBzZWUgaWYgYW55IG1pc21hdGNoZXMgaXRzIHR5cGUgYW5kIHZhbHVlLgorICAg
ICAgICBsZXQgY3J5cHRvS2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIs
IHRlc3RDcnlwdG9LZXlWYWx1ZXNbMF0sICJhZXMtY2JjIiwgdHJ1ZSwgWyJlbmNyeXB0IiwgImRl
Y3J5cHQiLCAid3JhcEtleSIsICJ1bndyYXBLZXkiXSk7CisgICAgICAgIG9iamVjdFN0b3JlLmFk
ZChjcnlwdG9LZXkpOworICAgICAgICBjcnlwdG9LZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmlt
cG9ydEtleSgiandrIiwgdGVzdENyeXB0b0tleVZhbHVlc1sxXSwgeyBuYW1lOiAiRUNEU0EiLCBu
YW1lZEN1cnZlOiAiUC0yNTYiIH0sIHRydWUsIFsndmVyaWZ5J10pOworICAgICAgICBvYmplY3RT
dG9yZS5hZGQoY3J5cHRvS2V5KTsKKyAgICAgICAgY3J5cHRvS2V5ID0gYXdhaXQgY3J5cHRvLnN1
YnRsZS5pbXBvcnRLZXkoImp3ayIsIHRlc3RDcnlwdG9LZXlWYWx1ZXNbMl0sIHsgbmFtZTogIkVD
RFNBIiwgbmFtZWRDdXJ2ZTogIlAtMjU2IiB9LCB0cnVlLCBbInNpZ24iXSk7CisgICAgICAgIG9i
amVjdFN0b3JlLmFkZChjcnlwdG9LZXkpOworICAgICAgICBjcnlwdG9LZXkgPSBhd2FpdCBjcnlw
dG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgdGVzdENyeXB0b0tleVZhbHVlc1szXSwge25hbWU6
ICJobWFjIiwgaGFzaDogInNoYS0yNTYifSwgdHJ1ZSwgWyJzaWduIiwgInZlcmlmeSJdKTsKKyAg
ICAgICAgb2JqZWN0U3RvcmUuYWRkKGNyeXB0b0tleSk7CisgICAgICAgIGNyeXB0b0tleSA9IGF3
YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCB0ZXN0Q3J5cHRvS2V5VmFsdWVzWzRd
LCB7bmFtZTogIlJTQS1QU1MiLCBoYXNoOiAiU0hBLTI1NiJ9LCB0cnVlLCBbInZlcmlmeSJdKTsK
KyAgICAgICAgb2JqZWN0U3RvcmUuYWRkKGNyeXB0b0tleSk7CisgICAgICAgIGNyeXB0b0tleSA9
IGF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCB0ZXN0Q3J5cHRvS2V5VmFsdWVz
WzVdLCB7bmFtZTogIlJTQS1QU1MiLCBoYXNoOiAiU0hBLTEifSwgdHJ1ZSwgWyJzaWduIl0pOwor
ICAgICAgICBvYmplY3RTdG9yZS5hZGQoY3J5cHRvS2V5KTsKKyAgICB9CisKKyAgICBsZXQgcmVz
dWx0ID0gdHJ1ZTsKICAgICBmdW5jdGlvbiByZWFkVHlwZSgpCiAgICAgewotICAgICAgICB2YXIg
b2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigidHlwZSIpLm9iamVjdFN0b3JlKCJ0eXBlIik7
CisgICAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oInR5cGUiKS5vYmpl
Y3RTdG9yZSgidHlwZSIpOwogICAgICAgICBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkub25zdWNj
ZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAgIGN1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7CiAgICAgICAgICAgICBpZiAoY3Vyc29yKSB7CkBAIC0xNDEsNyArMTkwLDcgQEAK
IAogICAgIGZ1bmN0aW9uIHJlYWRWYWx1ZSgpCiAgICAgewotICAgICAgICB2YXIgb2JqZWN0U3Rv
cmUgPSBkYi50cmFuc2FjdGlvbigidmFsdWUiKS5vYmplY3RTdG9yZSgidmFsdWUiKTsKKyAgICAg
ICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigidmFsdWUiKS5vYmplY3RTdG9y
ZSgidmFsdWUiKTsKICAgICAgICAgb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpLm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgICAgICBjdXJzb3IgPSBldmVudC50YXJnZXQucmVz
dWx0OwogICAgICAgICAgICAgaWYgKGN1cnNvcikgewpAQCAtMTU0LDEyICsyMDMsMjcgQEAKIAog
ICAgIGZ1bmN0aW9uIHJlYWRUeXBlVmFsdWUoKQogICAgIHsKLSAgICAgICAgdmFyIG9iamVjdFN0
b3JlID0gZGIudHJhbnNhY3Rpb24oInR5cGVWYWx1ZSIpLm9iamVjdFN0b3JlKCJ0eXBlVmFsdWUi
KTsKKyAgICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigidHlwZVZhbHVl
Iikub2JqZWN0U3RvcmUoInR5cGVWYWx1ZSIpOwogICAgICAgICBvYmplY3RTdG9yZS5vcGVuQ3Vy
c29yKCkub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAgIGN1cnNvciA9
IGV2ZW50LnRhcmdldC5yZXN1bHQ7CiAgICAgICAgICAgICBpZiAoY3Vyc29yKSB7CiAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICYmIHNob3VsZEJlVHlwZSgiY3Vyc29yLnZhbHVlIiwg
dGVzdFR5cGVWYWx1ZXNbY3Vyc29yLmtleSAtIDFdLnR5cGUpICYmIChjdXJzb3IudmFsdWUgPT0g
dGVzdFR5cGVWYWx1ZXNbY3Vyc29yLmtleSAtIDFdLnZhbHVlKTsKICAgICAgICAgICAgICAgICBj
dXJzb3IuY29udGludWUoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
cmVhZENyeXB0b0tleSgpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKworICAg
IGFzeW5jIGZ1bmN0aW9uIHJlYWRDcnlwdG9LZXkoKQorICAgIHsKKyAgICAgICAgY29uc3Qgb2Jq
ZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigiY3J5cHRvS2V5Iikub2JqZWN0U3RvcmUoImNyeXB0
b0tleSIpOworICAgICAgICBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkub25zdWNjZXNzID0gYXN5
bmMgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7CisgICAgICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICAgICAgY29uc3Qg
andrS2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5leHBvcnRLZXkoImp3ayIsIGN1cnNvci52YWx1
ZSk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICYmIHNob3VsZEJlQ3J5cHRvS2V5
KGp3a0tleSwgdGVzdENyeXB0b0tleVZhbHVlc1tjdXJzb3Iua2V5IC0gMV0pOworICAgICAgICAg
ICAgICAgIGN1cnNvci5jb250aW51ZSgpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgICAgICAgICBsb2coIlBhc3MiKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA3MDJkZDY1ZmY3MjFlNGI2MjViOWQ3MWE5MTdiYTZiZTQ0MGNmYTUyLi5hZDljMTNhMTdh
YzAyYzI3Y2MxZDQ1MDMxOTNiODUzMmRkNTJlNGQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIw
MTktMTAtMDIgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBP
bmx5IHdyYXBwaW5nIENyeXB0b0tleXMgZm9yIElEQiBkdXJpbmcgc2VyaWFsaXphdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTAwCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81MjQ0NTkyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgbmV3IHRlc3QgYWVzLWluZGV4ZWRkYi5odG1s
IHRvIGRvIGlkYiBpbiB3b3JrZXJzIGFuZCBtYWtlcworICAgICAgICBvdGhlciB0ZXN0cyBtb3Jl
IGRldGVybWluaXN0aWMuCisKKyAgICAgICAgKiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvYWVzLWlu
ZGV4ZWRkYi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNyeXB0by93b3JrZXJzL3N1
YnRsZS9hZXMtaW5kZXhlZGRiLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNyeXB0by93b3JrZXJz
L3N1YnRsZS9lYy1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGNy
eXB0by93b3JrZXJzL3N1YnRsZS9lYy1wb3N0TWVzc2FnZS13b3JrZXIuaHRtbDoKKyAgICAgICAg
KiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvaHJzYS1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGNyeXB0by93b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdv
cmtlci5odG1sOgorICAgICAgICAqIGNyeXB0by93b3JrZXJzL3N1YnRsZS9yZXNvdXJjZXMvYWVz
LWluZGV4ZWRkYi5qczogQWRkZWQuCisgICAgICAgICogY3J5cHRvL3dvcmtlcnMvc3VidGxlL3Jz
YS1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGNyeXB0by93b3Jr
ZXJzL3N1YnRsZS9yc2EtcG9zdE1lc3NhZ2Utd29ya2VyLmh0bWw6CisKIDIwMTktMTAtMDQgIFRy
dWl0dCBTYXZlbGwgIDx0c2F2ZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBMYXlvdXQgVGVzdCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzLzJkY29udGV4dC9saW5lLXN0eWxlcy8yZC5s
aW5lLmNhcC5yb3VuZC5odG1sIGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Ny
eXB0by93b3JrZXJzL3N1YnRsZS9hZXMtaW5kZXhlZGRiLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9hZXMtaW5kZXhlZGRiLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZmIyMTYwMjdiZTAxYzYyM2IyNDQ2OGM4ZjU4YTg0ZTdiYjVhN2ViCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL2Flcy1pbmRleGVk
ZGItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1tXb3JrZXJdIFRlc3QgZ2VuZXJhdGlu
ZyBhbiBBRVMga2V5IHVzaW5nIEFFUy1DQkMgYWxnb3JpdGhtIGluIHdvcmtlcnMuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitTdGFydGluZyB3b3JrZXI6IHJlc291cmNlcy9hZXMt
aW5kZXhlZGRiLmpzCitbV29ya2VyXSBJbXBvcnRpbmcgYSBrZXkuLi4KK1BBU1MgW1dvcmtlcl0g
cmV0cmlldmVkS2V5LnR5cGUgaXMgJ3NlY3JldCcKK1BBU1MgW1dvcmtlcl0gcmV0cmlldmVkS2V5
LmV4dHJhY3RhYmxlIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gcmV0cmlldmVkS2V5LmFsZ29yaXRo
bS5uYW1lIGlzICdBRVMtQ0JDJworUEFTUyBbV29ya2VyXSByZXRyaWV2ZWRLZXkuYWxnb3JpdGht
Lmxlbmd0aCBpcyAxMjgKK1BBU1MgW1dvcmtlcl0gcmV0cmlldmVkS2V5LnVzYWdlcyBpcyBbJ2Rl
Y3J5cHQnLCAnZW5jcnlwdCcsICd1bndyYXBLZXknLCAnd3JhcEtleSddCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL2Flcy1pbmRleGVkZGIuaHRtbCBiL0xheW91dFRl
c3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9hZXMtaW5kZXhlZGRiLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTc4MmU3NGRiMGFmMTMyZDE4NDIyYzFiY2Q3M2U5MmYzNGNkMmQwYgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9hZXMtaW5kZXhlZGRiLmh0bWwK
QEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIHdvcmtlciA9IHN0YXJ0V29ya2VyKCdyZXNv
dXJjZXMvYWVzLWluZGV4ZWRkYi5qcycpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvZWMtcG9zdE1l
c3NhZ2Utd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1
YnRsZS9lYy1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IDc1YmM3OWVlN2Fl
MzBmN2JhNWY5OTU3NDcwMDJiYjgwYWZiOWI0NmMuLjJmOWIzYTA2ZmUzMzEzZWFmZDQwZjdiYzQ1
NDRkMGNiNTAxMDc4ZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1
YnRsZS9lYy1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2NyeXB0by93b3JrZXJzL3N1YnRsZS9lYy1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0
CkBAIC0zLDYgKzMsMTQgQEAgVGVzdCBzZW5kaW5nIGVjIGNyeXB0byBrZXlzIHZpYSBwb3N0TWVz
c2FnZSB0byBhIHdvcmtlci4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitQQVNTIEFs
bCBjaGVja3MgcGFzc2VkIGluIHdvcmtlciBmb3IgcHVibGljIGtleQorUEFTUyBwdWJsaWNLZXku
dHlwZSBpcyAncHVibGljJworUEFTUyBwdWJsaWNLZXkuZXh0cmFjdGFibGUgaXMgdHJ1ZQorUEFT
UyBwdWJsaWNLZXkuYWxnb3JpdGhtLm5hbWUgaXMgJ0VDREgnCitQQVNTIHB1YmxpY0tleS5hbGdv
cml0aG0ubmFtZWRDdXJ2ZSBpcyAnUC0yNTYnCitQQVNTIHB1YmxpY0tleS51c2FnZXMgaXMgWyBd
CitQQVNTIGV4cG9ydGVkS2V5LnggaXMgcHVibGljS2V5SlNPTi54CitQQVNTIGV4cG9ydGVkS2V5
LnkgaXMgcHVibGljS2V5SlNPTi55CiBQQVNTIEFsbCBjaGVja3MgcGFzc2VkIGluIHdvcmtlciBm
b3IgcHJpdmF0ZSBrZXkKIFBBU1MgcHJpdmF0ZUtleS50eXBlIGlzICdwcml2YXRlJwogUEFTUyBw
cml2YXRlS2V5LmV4dHJhY3RhYmxlIGlzIHRydWUKQEAgLTEyLDE0ICsyMCw2IEBAIFBBU1MgcHJp
dmF0ZUtleS51c2FnZXMgaXMgWydkZXJpdmVCaXRzJ10KIFBBU1MgZXhwb3J0ZWRLZXkueCBpcyBw
cml2YXRlS2V5SlNPTi54CiBQQVNTIGV4cG9ydGVkS2V5LnkgaXMgcHJpdmF0ZUtleUpTT04ueQog
UEFTUyBleHBvcnRlZEtleS5kIGlzIHByaXZhdGVLZXlKU09OLmQKLVBBU1MgQWxsIGNoZWNrcyBw
YXNzZWQgaW4gd29ya2VyIGZvciBwdWJsaWMga2V5Ci1QQVNTIHB1YmxpY0tleS50eXBlIGlzICdw
dWJsaWMnCi1QQVNTIHB1YmxpY0tleS5leHRyYWN0YWJsZSBpcyB0cnVlCi1QQVNTIHB1YmxpY0tl
eS5hbGdvcml0aG0ubmFtZSBpcyAnRUNESCcKLVBBU1MgcHVibGljS2V5LmFsZ29yaXRobS5uYW1l
ZEN1cnZlIGlzICdQLTI1NicKLVBBU1MgcHVibGljS2V5LnVzYWdlcyBpcyBbIF0KLVBBU1MgZXhw
b3J0ZWRLZXkueCBpcyBwdWJsaWNLZXlKU09OLngKLVBBU1MgZXhwb3J0ZWRLZXkueSBpcyBwdWJs
aWNLZXlKU09OLnkKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01Q
TEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL2VjLXBv
c3RNZXNzYWdlLXdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxl
L2VjLXBvc3RNZXNzYWdlLXdvcmtlci5odG1sCmluZGV4IDRhMTY2NjZkZmIyNDY5YTU0YTY0ZWM2
MTRlYmYxNWQ1MTQ0MDE4MTIuLjVmOTEwMzdhYjFhOGY3NDg3MTY5NWU4MTdlNTdkNGRkZGU0NjY0
ZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9lYy1wb3N0
TWVzc2FnZS13b3JrZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0
bGUvZWMtcG9zdE1lc3NhZ2Utd29ya2VyLmh0bWwKQEAgLTgxLDkgKzgxLDkgQEAgd29ya2VyLm9u
bWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgewogCiBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandr
IiwgcHVibGljS2V5SlNPTiwgeyBuYW1lOiJFQ0RIIiwgbmFtZWRDdXJ2ZToiUC0yNTYiIH0sIHRy
dWUsIFsgXSkudGhlbihmdW5jdGlvbihsb2NhbFB1YmxpY0tleSkgewogICAgIHdvcmtlci5wb3N0
TWVzc2FnZSh7IHB1YmxpY0tleTogbG9jYWxQdWJsaWNLZXkgfSk7Ci19KTsKLWNyeXB0by5zdWJ0
bGUuaW1wb3J0S2V5KCJqd2siLCBwcml2YXRlS2V5SlNPTiwgeyBuYW1lOiJFQ0RIIiwgbmFtZWRD
dXJ2ZToiUC0yNTYiIH0sIHRydWUsIFsnZGVyaXZlQml0cyddKS50aGVuKGZ1bmN0aW9uKGxvY2Fs
UHJpdmF0ZUtleSkgewotICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7IHByaXZhdGVLZXk6IGxvY2Fs
UHJpdmF0ZUtleSB9KTsKKyAgICBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgcHJpdmF0
ZUtleUpTT04sIHsgbmFtZToiRUNESCIsIG5hbWVkQ3VydmU6IlAtMjU2IiB9LCB0cnVlLCBbJ2Rl
cml2ZUJpdHMnXSkudGhlbihmdW5jdGlvbihsb2NhbFByaXZhdGVLZXkpIHsKKyAgICAgICAgd29y
a2VyLnBvc3RNZXNzYWdlKHsgcHJpdmF0ZUtleTogbG9jYWxQcml2YXRlS2V5IH0pOworICAgIH0p
OwogfSk7CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NyeXB0by93b3Jr
ZXJzL3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvaHJzYS1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0
ZWQudHh0CmluZGV4IDBlZDc0ZjlmZmY0Y2MxZmYyYjJhNTFlZjAyM2QyYWQwM2ZjYjY4NmYuLjZl
MWQ2ZmU1MzA4MjdkNDlmOGVjOWY2NmY2MTcxMjI0NzM0YTMyZDAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdvcmtlci1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL2hyc2EtcG9z
dE1lc3NhZ2Utd29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMywxNCArMyw2IEBAIFRlc3Qgc2VuZGlu
ZyBoYXNoZWQgcnNhIGNyeXB0byBrZXlzIHZpYSBwb3N0TWVzc2FnZSB0byBhIHdvcmtlci4KIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIEFsbCBjaGVja3MgcGFzc2VkIGluIHdv
cmtlciBmb3IgcHJpdmF0ZSBrZXkKLVBBU1MgcHJpdmF0ZUtleS50eXBlIGlzICdwcml2YXRlJwot
UEFTUyBwcml2YXRlS2V5LmV4dHJhY3RhYmxlIGlzIGZhbHNlCi1QQVNTIHByaXZhdGVLZXkuYWxn
b3JpdGhtLm5hbWUgaXMgJ1JTQVNTQS1QS0NTMS12MV81JwotUEFTUyBwcml2YXRlS2V5LmFsZ29y
aXRobS5tb2R1bHVzTGVuZ3RoIGlzIDIwNDgKLVBBU1MgYnl0ZXNUb0hleFN0cmluZyhwcml2YXRl
S2V5LmFsZ29yaXRobS5wdWJsaWNFeHBvbmVudCkgaXMgJzAxMDAwMScKLVBBU1MgcHJpdmF0ZUtl
eS5hbGdvcml0aG0uaGFzaC5uYW1lIGlzICdTSEEtMjU2JwotUEFTUyBwcml2YXRlS2V5LnVzYWdl
cyBpcyBbJ3NpZ24nXQogUEFTUyBBbGwgY2hlY2tzIHBhc3NlZCBpbiB3b3JrZXIgZm9yIHB1Ymxp
YyBrZXkKIFBBU1MgcHVibGljS2V5LnR5cGUgaXMgJ3B1YmxpYycKIFBBU1MgcHVibGljS2V5LmV4
dHJhY3RhYmxlIGlzIHRydWUKQEAgLTE5LDYgKzExLDE0IEBAIFBBU1MgcHVibGljS2V5LmFsZ29y
aXRobS5tb2R1bHVzTGVuZ3RoIGlzIDIwNDgKIFBBU1MgYnl0ZXNUb0hleFN0cmluZyhwdWJsaWNL
ZXkuYWxnb3JpdGhtLnB1YmxpY0V4cG9uZW50KSBpcyAnMDEwMDAxJwogUEFTUyBwdWJsaWNLZXku
YWxnb3JpdGhtLmhhc2gubmFtZSBpcyAnU0hBLTI1NicKIFBBU1MgcHVibGljS2V5LnVzYWdlcyBp
cyBbJ3ZlcmlmeSddCitQQVNTIEFsbCBjaGVja3MgcGFzc2VkIGluIHdvcmtlciBmb3IgcHJpdmF0
ZSBrZXkKK1BBU1MgcHJpdmF0ZUtleS50eXBlIGlzICdwcml2YXRlJworUEFTUyBwcml2YXRlS2V5
LmV4dHJhY3RhYmxlIGlzIGZhbHNlCitQQVNTIHByaXZhdGVLZXkuYWxnb3JpdGhtLm5hbWUgaXMg
J1JTQVNTQS1QS0NTMS12MV81JworUEFTUyBwcml2YXRlS2V5LmFsZ29yaXRobS5tb2R1bHVzTGVu
Z3RoIGlzIDIwNDgKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhwcml2YXRlS2V5LmFsZ29yaXRobS5w
dWJsaWNFeHBvbmVudCkgaXMgJzAxMDAwMScKK1BBU1MgcHJpdmF0ZUtleS5hbGdvcml0aG0uaGFz
aC5uYW1lIGlzICdTSEEtMjU2JworUEFTUyBwcml2YXRlS2V5LnVzYWdlcyBpcyBbJ3NpZ24nXQog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvaHJzYS1wb3N0TWVzc2FnZS13
b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RN
ZXNzYWdlLXdvcmtlci5odG1sCmluZGV4IDdhNDM1ZmU1ZWUzNGY0OTM0MmQ5MjZkN2FiM2FiN2Ux
YzdjYmI5OGQuLmU5ZWQ4YzkyZTAzMDdlMDgzZjljNDY3MThkYWI5YmJjZTVhNDQwZGUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdl
LXdvcmtlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9ocnNh
LXBvc3RNZXNzYWdlLXdvcmtlci5odG1sCkBAIC03NSw5ICs3NSw5IEBAIHdvcmtlci5vbm1lc3Nh
Z2UgPSBmdW5jdGlvbihldnQpIHsKIAogY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIHB1
YmxpY0tleUpTT04sIGFsZ29yaXRobUtleUdlbiwgdHJ1ZSwgWyd2ZXJpZnknXSkudGhlbihmdW5j
dGlvbihsb2NhbFB1YmxpY0tleSkgewogICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7IHB1YmxpY0tl
eTogbG9jYWxQdWJsaWNLZXkgfSk7Ci19KTsKLWNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2si
LCBwcml2YXRlS2V5SlNPTiwgYWxnb3JpdGhtS2V5R2VuLCBmYWxzZSwgWydzaWduJ10pLnRoZW4o
ZnVuY3Rpb24obG9jYWxQcml2YXRlS2V5KSB7Ci0gICAgd29ya2VyLnBvc3RNZXNzYWdlKHsgcHJp
dmF0ZUtleTogbG9jYWxQcml2YXRlS2V5IH0pOworICAgIGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5
KCJqd2siLCBwcml2YXRlS2V5SlNPTiwgYWxnb3JpdGhtS2V5R2VuLCBmYWxzZSwgWydzaWduJ10p
LnRoZW4oZnVuY3Rpb24obG9jYWxQcml2YXRlS2V5KSB7CisgICAgICAgIHdvcmtlci5wb3N0TWVz
c2FnZSh7IHByaXZhdGVLZXk6IGxvY2FsUHJpdmF0ZUtleSB9KTsKKyAgICB9KTsKIH0pOwogPC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUv
cmVzb3VyY2VzL2Flcy1pbmRleGVkZGIuanMgYi9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9z
dWJ0bGUvcmVzb3VyY2VzL2Flcy1pbmRleGVkZGIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJkOGRjOWI4ODll
MDgxZTgxNmM1Y2FiMjhkOGFjNzQ2NTg3YmRhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9yZXNvdXJjZXMvYWVzLWluZGV4ZWRkYi5qcwpAQCAt
MCwwICsxLDUxIEBACitpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMnKTsKKworZGVzY3JpcHRpb24oIlRlc3QgZ2VuZXJhdGluZyBhbiBBRVMga2V5IHVz
aW5nIEFFUy1DQkMgYWxnb3JpdGhtIGluIHdvcmtlcnMuIik7Citqc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworY29uc3QgandrS2V5ID0geyBrdHk6ICJvY3QiLCBrOiAiWVdKalpHVm1aMmd4TWpNME5U
WTNPQSIsIGFsZzogIkExMjhDQkMiLCB1c2U6ICJlbmMiLCBrZXlfb3BzOiBbJ2RlY3J5cHQnLCAn
ZW5jcnlwdCcsICd1bndyYXBLZXknLCAnd3JhcEtleSddLCBleHQ6IHRydWUgfTsKKworZGVidWco
IkltcG9ydGluZyBhIGtleS4uLiIpOworY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIGp3
a0tleSwgImFlcy1jYmMiLCB0cnVlLCBbImVuY3J5cHQiLCAiZGVjcnlwdCIsICJ3cmFwS2V5Iiwg
InVud3JhcEtleSJdKS50aGVuKGZ1bmN0aW9uKGtleSkgeworICAgIGNvbnN0IG9wZW5SZXF1ZXN0
ID0gaW5kZXhlZERCLm9wZW4oImNyeXB0b19zdWJ0bGUiKTsKKyAgICBvcGVuUmVxdWVzdC5vbnVw
Z3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBldmVudC50YXJnZXQucmVz
dWx0LmNyZWF0ZU9iamVjdFN0b3JlKCJhZXMtaW5kZXhlZGRiIik7CisgICAgfTsKKyAgICBvcGVu
UmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgi
Q291bGQgbm90IG9wZW4gZGF0YWJhc2U6ICIgKyBldmVudC50YXJnZXQuZXJyb3IubmFtZSk7Cisg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH07CisgICAgb3BlblJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0Owor
ICAgICAgICBzdG9yZUtleSgpOworICAgIH07CisKKyAgICBmdW5jdGlvbiBzdG9yZUtleSgpIHsK
KyAgICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigiYWVzLWluZGV4ZWRk
YiIsICJyZWFkd3JpdGUiKS5vYmplY3RTdG9yZSgiYWVzLWluZGV4ZWRkYiIpOworICAgICAgICBj
b25zdCByZXEgPSBvYmplY3RTdG9yZS5wdXQoa2V5LCAibXlLZXkiKTsKKyAgICAgICAgcmVxLm9u
ZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQg
bm90IHB1dCBhIGtleSBpbnRvIGRhdGFiYXNlOiAiICsgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUp
OworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHJlcS5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgcmVhZEtleSgpOyB9CisgICAgfQorCisgICAgZnVuY3Rp
b24gcmVhZEtleSgpIHsKKyAgICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlv
bigiYWVzLWluZGV4ZWRkYiIpLm9iamVjdFN0b3JlKCJhZXMtaW5kZXhlZGRiIik7CisgICAgICAg
IGNvbnN0IHJlcSA9IG9iamVjdFN0b3JlLmdldCgibXlLZXkiKTsKKyAgICAgICAgcmVxLm9uZXJy
b3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90
IGdldCBhIGtleSBmcm9tIGRhdGFiYXNlOiAiICsgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUpOwor
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHJlcS5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgcmV0cmlldmVkS2V5ID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgIHNob3VsZEJlKCJyZXRyaWV2ZWRLZXkudHlw
ZSIsICInc2VjcmV0JyIpOworICAgICAgICAgICAgc2hvdWxkQmUoInJldHJpZXZlZEtleS5leHRy
YWN0YWJsZSIsICJ0cnVlIik7CisgICAgICAgICAgICBzaG91bGRCZSgicmV0cmlldmVkS2V5LmFs
Z29yaXRobS5uYW1lIiwgIidBRVMtQ0JDJyIpOworICAgICAgICAgICAgc2hvdWxkQmUoInJldHJp
ZXZlZEtleS5hbGdvcml0aG0ubGVuZ3RoIiwgIjEyOCIpOworICAgICAgICAgICAgc2hvdWxkQmUo
InJldHJpZXZlZEtleS51c2FnZXMiLCAiWydkZWNyeXB0JywgJ2VuY3J5cHQnLCAndW53cmFwS2V5
JywgJ3dyYXBLZXknXSIpOworCisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fQorICAgIH0KK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3Vi
dGxlL3JzYS1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3J5
cHRvL3dvcmtlcnMvc3VidGxlL3JzYS1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0Cmlu
ZGV4IDBjMzk3OTAwZmJlZTljOTMyOTk2ODZmZDAzNWQ0ZDdiNGI4NWM4OTguLjYxOTIxYzQyMTQ4
MjIzMjJmODYzZGJiYjJiY2ZjM2NjYzcxMGRkMWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Ny
eXB0by93b3JrZXJzL3N1YnRsZS9yc2EtcG9zdE1lc3NhZ2Utd29ya2VyLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvcnNhLXBvc3RNZXNzYWdlLXdv
cmtlci1leHBlY3RlZC50eHQKQEAgLTMsNiArMywxNiBAQCBUZXN0IHNlbmRpbmcgcnNhIGNyeXB0
byBrZXlzIHZpYSBwb3N0TWVzc2FnZSB0byBhIHdvcmtlci4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KIAogCitQQVNTIEFsbCBjaGVja3MgcGFzc2VkIGluIHdvcmtlciBmb3IgcHVibGljIGtl
eQorUEFTUyBwdWJsaWNLZXkudHlwZSBpcyAncHVibGljJworUEFTUyBwdWJsaWNLZXkuZXh0cmFj
dGFibGUgaXMgdHJ1ZQorUEFTUyBwdWJsaWNLZXkuYWxnb3JpdGhtLm5hbWUgaXMgJ1JTQUVTLVBL
Q1MxLXYxXzUnCitQQVNTIHB1YmxpY0tleS5hbGdvcml0aG0ubW9kdWx1c0xlbmd0aCBpcyAyMDQ4
CitQQVNTIGJ5dGVzVG9IZXhTdHJpbmcocHVibGljS2V5LmFsZ29yaXRobS5wdWJsaWNFeHBvbmVu
dCkgaXMgJzAxMDAwMScKK1BBU1MgcHVibGljS2V5LmFsZ29yaXRobS5oYXNoIGlzIHVuZGVmaW5l
ZC4KK1BBU1MgcHVibGljS2V5LnVzYWdlcyBpcyBbJ2VuY3J5cHQnXQorUEFTUyBleHBvcnRlZEtl
eS5uIGlzIHB1YmxpY0tleUpTT04ubgorUEFTUyBleHBvcnRlZEtleS5lIGlzIHB1YmxpY0tleUpT
T04uZQogUEFTUyBBbGwgY2hlY2tzIHBhc3NlZCBpbiB3b3JrZXIgZm9yIHByaXZhdGUga2V5CiBQ
QVNTIHByaXZhdGVLZXkudHlwZSBpcyAncHJpdmF0ZScKIFBBU1MgcHJpdmF0ZUtleS5leHRyYWN0
YWJsZSBpcyB0cnVlCkBAIC0xOSwxNiArMjksNiBAQCBQQVNTIGV4cG9ydGVkS2V5LnEgaXMgcHJp
dmF0ZUtleUpTT04ucQogUEFTUyBleHBvcnRlZEtleS5kcCBpcyBwcml2YXRlS2V5SlNPTi5kcAog
UEFTUyBleHBvcnRlZEtleS5kcSBpcyBwcml2YXRlS2V5SlNPTi5kcQogUEFTUyBleHBvcnRlZEtl
eS5xaSBpcyBwcml2YXRlS2V5SlNPTi5xaQotUEFTUyBBbGwgY2hlY2tzIHBhc3NlZCBpbiB3b3Jr
ZXIgZm9yIHB1YmxpYyBrZXkKLVBBU1MgcHVibGljS2V5LnR5cGUgaXMgJ3B1YmxpYycKLVBBU1Mg
cHVibGljS2V5LmV4dHJhY3RhYmxlIGlzIHRydWUKLVBBU1MgcHVibGljS2V5LmFsZ29yaXRobS5u
YW1lIGlzICdSU0FFUy1QS0NTMS12MV81JwotUEFTUyBwdWJsaWNLZXkuYWxnb3JpdGhtLm1vZHVs
dXNMZW5ndGggaXMgMjA0OAotUEFTUyBieXRlc1RvSGV4U3RyaW5nKHB1YmxpY0tleS5hbGdvcml0
aG0ucHVibGljRXhwb25lbnQpIGlzICcwMTAwMDEnCi1QQVNTIHB1YmxpY0tleS5hbGdvcml0aG0u
aGFzaCBpcyB1bmRlZmluZWQuCi1QQVNTIHB1YmxpY0tleS51c2FnZXMgaXMgWydlbmNyeXB0J10K
LVBBU1MgZXhwb3J0ZWRLZXkubiBpcyBwdWJsaWNLZXlKU09OLm4KLVBBU1MgZXhwb3J0ZWRLZXku
ZSBpcyBwdWJsaWNLZXlKU09OLmUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAog
VEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3Vi
dGxlL3JzYS1wb3N0TWVzc2FnZS13b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2NyeXB0by93b3Jr
ZXJzL3N1YnRsZS9yc2EtcG9zdE1lc3NhZ2Utd29ya2VyLmh0bWwKaW5kZXggNGY1NTFlYTNhMWNh
YjhkZTMzODk0YTFjYTgwZDdhZTEwNDZlZjI4Yy4uMjJiOWFkMDdiNWQyODYxYjE1NzQ4YTBjMGFi
Njk2Y2E4ZmE2MmZiMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3Vi
dGxlL3JzYS1wb3N0TWVzc2FnZS13b3JrZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jcnlwdG8v
d29ya2Vycy9zdWJ0bGUvcnNhLXBvc3RNZXNzYWdlLXdvcmtlci5odG1sCkBAIC05OCw5ICs5OCw5
IEBAIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKIAogY3J5cHRvLnN1YnRsZS5p
bXBvcnRLZXkoImp3ayIsIHB1YmxpY0tleUpTT04sIGFsZ29yaXRobUtleUdlbiwgdHJ1ZSwgWydl
bmNyeXB0J10pLnRoZW4oZnVuY3Rpb24obG9jYWxQdWJsaWNLZXkpIHsKICAgICB3b3JrZXIucG9z
dE1lc3NhZ2UoeyBwdWJsaWNLZXk6IGxvY2FsUHVibGljS2V5IH0pOwotfSk7Ci1jcnlwdG8uc3Vi
dGxlLmltcG9ydEtleSgiandrIiwgcHJpdmF0ZUtleUpTT04sIGFsZ29yaXRobUtleUdlbiwgdHJ1
ZSwgWydkZWNyeXB0J10pLnRoZW4oZnVuY3Rpb24obG9jYWxQcml2YXRlS2V5KSB7Ci0gICAgd29y
a2VyLnBvc3RNZXNzYWdlKHsgcHJpdmF0ZUtleTogbG9jYWxQcml2YXRlS2V5IH0pOworICAgIGNy
eXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBwcml2YXRlS2V5SlNPTiwgYWxnb3JpdGhtS2V5
R2VuLCB0cnVlLCBbJ2RlY3J5cHQnXSkudGhlbihmdW5jdGlvbihsb2NhbFByaXZhdGVLZXkpIHsK
KyAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsgcHJpdmF0ZUtleTogbG9jYWxQcml2YXRlS2V5
IH0pOworICAgIH0pOwogfSk7CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380360</attachid>
            <date>2019-10-07 14:09:51 -0700</date>
            <delta_ts>2019-10-07 18:16:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202500-20191007140950.patch</filename>
            <type>text/plain</type>
            <size>64725</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODYzMWQwN2UxZjAyODk1
ZmZiZDY4MjdiNThjNzMzZjVhOTk0ODAzZC4uYzBmZTMzNzViOGFkZTc4Y2FmYjc1YzA4YTcwNDU3
NzE1NjU1YTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE5LTEwLTAyICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgT25seSB3cmFwcGluZyBD
cnlwdG9LZXlzIGZvciBJREIgZHVyaW5nIHNlcmlhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjUwMAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTI0NDU5Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV3JhcHBpbmcgQ3J5cHRvS2V5cyBkdXJpbmcgSURCIHNlcmlhbGl6YXRpb24gaXMg
YSBsZWdhY3kgcmVxdWVzdCBmcm9tIE5ldGZsaXggd2hlbiBXZWJLaXQgd2FzIGFuCisgICAgICAg
IGVhcmx5IGFkb3B0ZXIuIEl0IGlzIG5vdCBuZWNlc3NhcnkgZm9yIG90aGVyIGtpbmRzIG9mIHNl
cmlhbGl6YXRpb24uIEhvd2V2ZXIsIGdpdmVuIGV4aXN0aW5nIGtleXMKKyAgICAgICAgc3RvcmVk
IGluIHVzZXJzJyBpZGIgYXJlIHdyYXBwZWQsIHRoZSB3cmFwcGluZy91bndyYXBwaW5nIG1lY2hh
bmlzbSBjYW5ub3QgYmUgZWFzaWx5IGRpc2NhcmRlZC4KKyAgICAgICAgVGhlcmVmb3JlLCB0aGlz
IHBhdGNoIHJlc3RyaWN0cyB0aGUgd3JhcHBpbmcvdW53cmFwcGluZyBtZWNoYW5pc20gdG8gaWRi
IG9ubHkuCisKKyAgICAgICAgVG8gZG8gc28sIGEgaXNXcmFwcGluZ1JlcXVpcmVkIGZsYWcgaXMg
YWRkZWQgdG8gQ3J5cHRvS2V5IHN1Y2ggdGhhdCB3aGVuZXZlciBpZGIgc2VlcyBhIENyeXB0b0tl
eSwKKyAgICAgICAgaXQgY2FuIHNldCBpdC4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIHdpbGwgdGhl
biBvbmx5IHdyYXAgYSBDcnlwdG9LZXkgd2hlbiB0aGlzIGZsYWcgaXMgc2V0LiBPdGhlcndpc2Us
CisgICAgICAgIGEgbmV3IHRhZyBVbndyYXBwZWRDcnlwdG9LZXlUYWcgaXMgdXNlZCB0byBzdG9y
ZSB1bndyYXBwZWQgQ3J5cHRvS2V5cyBpbiBvcmRlciB0byBrZWVwIHRoZSBvbGQgQ3J5cHRvS2V5
VGFnCisgICAgICAgIGJpbmFyaWVzIGludGFjdC4gRm9yIGRlc2VyaWFsaXphdGlvbiwgZWFjaCB0
eXBlIHdpbGwgYmUgZGVzZXJpYWxpemVkIGRpZmZlcmVudGx5LgorCisgICAgICAgIEJlc2lkZXMg
dGhlIGFib3ZlLCB0aGlzIHBhdGNoIGFsc28gaGFyZGVucyBXb3JrZXJHbG9iYWxTY29wZTo6d3Jh
cENyeXB0b0tleS91bndyYXBDcnlwdG9LZXkgZm9yCisgICAgICAgIGFueSBwb3RlbnRpYWwgcmFj
eSBpc3N1ZXMuIENyeXB0b0Jvb2xlYW5Db250YWluZXIgaXMgaW50cm9kdWNlZCB0byBjYXB0dXJl
IGJvb2xlYW4gaW4gdGhlIGxhbWJkYS4KKyAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUgaXMgcmVw
bGFjZWQgd2l0aCB3b3JrZXJNZXNzYWdpbmdQcm94eS4gTm93LCBldmVyeSB2YXJpYWJsZXMgY2Fw
dHVyZWQgaW4gdGhlIGxhbWJkYXMKKyAgICAgICAgc2hvdWxkIGJlIGVpdGhlciBhIGNvcHkgb3Ig
YSB0aHJlYWQgc2FmZSByZWYgb2YgdGhlIG9yaWdpbmFsIG9iamVjdC4KKworICAgICAgICBUZXN0
OiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvYWVzLWluZGV4ZWRkYi5odG1sCisKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0M6OnNldElzV3JhcHBpbmdSZXF1aXJlZEZvckNyeXB0b0tleSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZTo6cHV0T3JBZGQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6
OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpy
ZWFkVGVybWluYWwpOgorICAgICAgICAqIGNyeXB0by9DcnlwdG9LZXkuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0tleTo6aXNXcmFwcGluZ1JlcXVpcmVkIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0tleTo6c2V0SXNXcmFwcGluZ1JlcXVpcmVkKToKKyAgICAgICAgKiBkb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQm9vbGVhbkNvbnRhaW5lcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Jvb2xlYW5Db250YWluZXI6OmJvb2xlYW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQm9vbGVhbkNvbnRhaW5lcjo6c2V0Qm9v
bGVhbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6d3JhcENyeXB0b0tl
eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6dW53cmFwQ3J5cHRvS2V5
KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTG9hZGVy
UHJveHk6OmlzV29ya2VyTWVzc2FnaW5nUHJveHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyTWVzc2FnaW5nUHJveHkuaDoKKyAgICAgICAgKGlzVHlwZSk6CisKIDIwMTktMTAtMDQg
IEhlaWtvIEJlY2tlciAgPGhlaXJlY2thQGV4aGVyYm8ub3JnPgogCiAgICAgICAgIEZpeCBidWls
ZCB3aXRoIGljdSA2NS4xCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggYTU5N2FjMTliNjNiODg4YzEyMmY5MjgzYTdkY2Ey
ZWY5NzRmZWUyMC4uMGJkZGVmNWI5ODE4ZDcwM2M0ZGE4M2VhNWY4OTU0ZjJiNzZkYTJjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmNwcApAQCAtNTEsOSArNTEsMjYgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1Zh
bHVlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KIAorI2lmIEVOQUJMRShXRUJf
Q1JZUFRPKQorI2luY2x1ZGUgIkpTQ3J5cHRvS2V5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAorI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQor
bmFtZXNwYWNlIHsKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRJc1dyYXBwaW5nUmVxdWlyZWRGb3JD
cnlwdG9LZXkoVk0mIHZtLCBjb25zdCBKU1ZhbHVlJiB2YWx1ZSkKK3sKKyAgICBpZiAoIXZhbHVl
LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvKiBvYmogPSBhc09iamVjdCh2
YWx1ZSk7CisgICAgaWYgKGF1dG8qIGtleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQodm0sIG9i
aikpCisgICAgICAgIGtleS0+c2V0SXNXcmFwcGluZ1JlcXVpcmVkKCk7Cit9Cit9CisjZW5kaWYK
KwogSURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgSURCVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV9p
bmZvKGluZm8pCkBAIC0zMzksNiArMzU2LDkgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBJREJPYmplY3RTdG9yZTo6cHV0T3JBZGQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZQogICAg
IGlmIChtX3RyYW5zYWN0aW9uLmlzUmVhZE9ubHkoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFJlYWRvbmx5RXJyb3IsICJGYWlsZWQgdG8gc3RvcmUgcmVjb3JkIGluIGFuIElEQk9iamVj
dFN0b3JlOiBUaGUgdHJhbnNhY3Rpb24gaXMgcmVhZC1vbmx5LiJfcyB9OwogCisjaWYgRU5BQkxF
KFdFQl9DUllQVE8pCisgICAgc2V0SXNXcmFwcGluZ1JlcXVpcmVkRm9yQ3J5cHRvS2V5KHZtLCB2
YWx1ZSk7CisjZW5kaWYKICAgICBhdXRvIHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IERhdGFDbG9uZUVycm9yLCAi
RmFpbGVkIHRvIHN0b3JlIHJlY29yZCBpbiBhbiBJREJPYmplY3RTdG9yZTogQW4gb2JqZWN0IGNv
dWxkIG5vdCBiZSBjbG9uZWQuIl9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCAzYjAwMGI4ODEwMDNkMmI0OTE1
YjA4NDc4ZmJhYzk5MzIzMGY1YTI1Li5kMzQzNmM2MGM5MmVkZjdjZDk1NzFiNzg1NTU2M2E3N2Zm
YzFhZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTE2Nyw2ICsxNjcsOSBAQCBlbnVtIFNlcmlhbGl6YXRpb25U
YWcgewogICAgIFJUQ0NlcnRpZmljYXRlVGFnID0gNDQsCiAjZW5kaWYKICAgICBJbWFnZUJpdG1h
cFRhZyA9IDQ1LAorI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQorICAgIFVud3JhcHBlZENyeXB0b0tl
eVRhZyA9IDQ2LAorI2VuZGlmCiAgICAgRXJyb3JUYWcgPSAyNTUKIH07CiAKQEAgLTM1MCw2ICsz
NTMsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RyaW5nRGF0YUlzOEJpdEZsYWcgPSAweDgw
MDAwMDAwOwogICogICAgfCBJbWFnZUJpdG1hcFRyYW5zZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4K
ICAqICAgIHwgUlRDQ2VydGlmaWNhdGVUYWcKICAqICAgIHwgSW1hZ2VCaXRtYXBUYWcgPG9yaWdp
bkNsZWFuOnVpbnQ4X3Q+IDxsb2dpY2FsV2lkdGg6aW50MzJfdD4gPGxvZ2ljYWxIZWlnaHQ6aW50
MzJfdD4gPHJlc29sdXRpb25TY2FsZTpkb3VibGU+IDxieXRlTGVuZ3RoOnVpbnQzMl90Pig8aW1h
Z2VCeXRlRGF0YTp1aW50OF90PikKKyAqICAgIHwgVW53cmFwcGVkQ3J5cHRvS2V5VGFnIDx1bndy
YXBwZWRLZXlMZW5ndGg6dWludDMyX3Q+IDxmYWN0b3I6Ynl0ZXt1bndyYXBwZWRLZXlMZW5ndGh9
PgogICoKICAqIEluc2lkZSBjZXJ0aWZpY2F0ZSwgZGF0YSBpcyBzZXJpYWxpemVkIGluIHRoaXMg
Zm9ybWF0IGFzIHBlciBzcGVjOgogICoKQEAgLTEwODMsNyArMTA4NywxMCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgfQogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQogICAgICAgICAgICAgaWYgKGF1
dG8qIGtleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQodm0sIG9iaikpIHsKLSAgICAgICAgICAg
ICAgICB3cml0ZShDcnlwdG9LZXlUYWcpOworICAgICAgICAgICAgICAgIGlmIChrZXktPmlzV3Jh
cHBpbmdSZXF1aXJlZCgpKQorICAgICAgICAgICAgICAgICAgICB3cml0ZShDcnlwdG9LZXlUYWcp
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgd3JpdGUoVW53cmFw
cGVkQ3J5cHRvS2V5VGFnKTsKICAgICAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gc2VyaWFs
aXplZEtleTsKICAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBkdW1teUJsb2JVUkxzOwog
ICAgICAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBkdW1teU1lc3NhZ2VQ
b3J0czsKQEAgLTEwOTgsMTAgKzExMDUsMTQgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgICAgICAg
ICAgICAgICAgICBkdW1teUJsb2JVUkxzLCBzZXJpYWxpemVkS2V5LCBTZXJpYWxpemF0aW9uQ29u
dGV4dDo6RGVmYXVsdCwgZHVtbXlTaGFyZWRCdWZmZXJzKTsKICAgICAgICAgICAgICAgICByYXdL
ZXlTZXJpYWxpemVyLndyaXRlKGtleSk7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHdyYXBwZWRLZXk7Ci0gICAgICAgICAgICAgICAgaWYgKCF3cmFwQ3J5cHRvS2V5KG1fZXhlYywg
c2VyaWFsaXplZEtleSwgd3JhcHBlZEtleSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgICAgICB3cml0ZSh3cmFwcGVkS2V5KTsKKyAgICAgICAgICAgICAg
ICBpZiAoa2V5LT5pc1dyYXBwaW5nUmVxdWlyZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBW
ZWN0b3I8dWludDhfdD4gd3JhcHBlZEtleTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF3cmFw
Q3J5cHRvS2V5KG1fZXhlYywgc2VyaWFsaXplZEtleSwgd3JhcHBlZEtleSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlKHdy
YXBwZWRLZXkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgd3JpdGUoc2VyaWFsaXplZEtleSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAjZW5kaWYKQEAgLTMwOTIsNiArMzEw
MywyOCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgICAgIGNhc2UgSW1hZ2VCaXRtYXBUYWc6CiAg
ICAgICAgICAgICByZXR1cm4gcmVhZEltYWdlQml0bWFwKCk7CisjaWYgRU5BQkxFKFdFQl9DUllQ
VE8pCisgICAgICAgIGNhc2UgVW53cmFwcGVkQ3J5cHRvS2V5VGFnOiB7CisgICAgICAgICAgICBW
ZWN0b3I8dWludDhfdD4gc2VyaWFsaXplZEtleTsKKyAgICAgICAgICAgIGlmICghcmVhZChzZXJp
YWxpemVkS2V5KSkgeworICAgICAgICAgICAgICAgIGZhaWwoKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgSlNWYWx1ZSBjcnlw
dG9LZXk7CisgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gZHVtbXlNZXNz
YWdlUG9ydHM7CisgICAgICAgICAgICBDbG9uZURlc2VyaWFsaXplciByYXdLZXlEZXNlcmlhbGl6
ZXIobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgZHVtbXlNZXNzYWdlUG9ydHMsIG51bGxwdHIsIHsg
fSwKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyNl
bmRpZgorICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWRLZXkpOworICAgICAgICAgICAgaWYgKCFy
YXdLZXlEZXNlcmlhbGl6ZXIucmVhZENyeXB0b0tleShjcnlwdG9LZXkpKSB7CisgICAgICAgICAg
ICAgICAgZmFpbCgpOworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBtX2djQnVmZmVyLmFwcGVuZFdpdGhDcmFzaE9uT3ZlcmZsb3co
Y3J5cHRvS2V5KTsKKyAgICAgICAgICAgIHJldHVybiBjcnlwdG9LZXk7CisgICAgICAgIH0KKyNl
bmRpZgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgbV9wdHItLTsgLy8gUHVzaCB0aGUg
dGFnIGJhY2sKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5
cHRvS2V5LmgKaW5kZXggMGViYzU3MjA0NGY5MmYwOTliYTA1YzM0MmU5ZGU3MTE2MjgxMTEwNi4u
Mzg2NWQyOTBlMzUyOTdjNzc3OGVhOGZjMTk1MTcwNTZiNWViZDAxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9DcnlwdG9LZXkuaApAQCAtNzIsNiArNzIsOCBAQCBwdWJsaWM6CiAgICAgQ3J5cHRvS2V5VXNh
Z2VCaXRtYXAgdXNhZ2VzQml0bWFwKCkgY29uc3QgeyByZXR1cm4gbV91c2FnZXM7IH0KICAgICB2
b2lkIHNldFVzYWdlc0JpdG1hcChDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZSkgeyBtX3VzYWdl
cyA9IHVzYWdlOyB9OwogICAgIGJvb2wgYWxsb3dzKENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdl
KSBjb25zdCB7IHJldHVybiB1c2FnZSA9PSAobV91c2FnZXMgJiB1c2FnZSk7IH0KKyAgICBib29s
IGlzV3JhcHBpbmdSZXF1aXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNXcmFwcGluZ1JlcXVpcmVk
OyB9CisgICAgdm9pZCBzZXRJc1dyYXBwaW5nUmVxdWlyZWQoKSB7IG1faXNXcmFwcGluZ1JlcXVp
cmVkID0gdHJ1ZTsgfQogCiAgICAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiByYW5kb21EYXRhKHNp
emVfdCk7CiAKQEAgLTgwLDYgKzgyLDcgQEAgcHJpdmF0ZToKICAgICBUeXBlIG1fdHlwZTsKICAg
ICBib29sIG1fZXh0cmFjdGFibGU7CiAgICAgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgbV91c2FnZXM7
CisgICAgYm9vbCBtX2lzV3JhcHBpbmdSZXF1aXJlZCB7IGZhbHNlIH07CiB9OwogCiBpbmxpbmUg
YXV0byBDcnlwdG9LZXk6OnR5cGUoKSBjb25zdCAtPiBUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCBmMGU2NTRiNzMwYjlkZTJhNjUwY2NlNTI0
Mjg0MjZlMDZjOWMxMjJlLi4xMjdlMGE0NDA5NmYwNjJhMzNhYTY1ZGYwNWY0ZjkyYjNmM2JlNzA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTIy
MCw2ICsyMjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREYXRhYmFzZUNvbnRleHQoRGF0YWJh
c2VDb250ZXh0Kik7CiAKICNpZiBFTkFCTEUoV0VCX0NSWVBUTykKKyAgICAvLyBUaGVzZSB0d28g
bWV0aG9kcyBhcmUgdXNlZCB3aGVuIENyeXB0b0tleXMgYXJlIHNlcmlhbGl6ZWQgaW50byBJbmRl
eGVkREIuCiAgICAgdmlydHVhbCBib29sIHdyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBrZXksIFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSkgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCB1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5LCBW
ZWN0b3I8dWludDhfdD4mIGtleSkgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDFlOGZjMDZiZDNlMTM5NTdkMGFiMmZiZjYy
ZTYxOWZkNjQ1OGMyNzcuLjk1M2Y5MGVhMDc4NDVmMDMwMDA1YTM0YzdkYjYzMTc3ZjZhYjIxNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC00
NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyTG9jYXRpb24uaCIK
KyNpbmNsdWRlICJXb3JrZXJNZXNzYWdpbmdQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck5hdmln
YXRvci5oIgogI2luY2x1ZGUgIldvcmtlclJlcG9ydGluZ1Byb3h5LmgiCiAjaW5jbHVkZSAiV29y
a2VyU1dDbGllbnRDb25uZWN0aW9uLmgiCkBAIC0zOTgsNDggKzM5OSw2MCBAQCBwcml2YXRlOgog
ICAgIFZlY3Rvcjx1aW50OF90PiBtX2J1ZmZlcjsKIH07CiAKK2NsYXNzIENyeXB0b0Jvb2xlYW5D
b250YWluZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q3J5cHRvQm9vbGVhbkNvbnRh
aW5lcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Q3J5cHRvQm9vbGVhbkNvbnRhaW5lcj4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDcnlwdG9Cb29sZWFuQ29udGFpbmVyKTsg
fQorICAgIGJvb2wgYm9vbGVhbigpIGNvbnN0IHsgcmV0dXJuIG1fYm9vbGVhbjsgfQorICAgIHZv
aWQgc2V0Qm9vbGVhbihib29sIGJvb2xlYW4pIHsgbV9ib29sZWFuID0gYm9vbGVhbjsgfQorCitw
cml2YXRlOgorICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1fYm9vbGVhbiB7IGZhbHNlIH07Cit9Owor
CiBib29sIFdvcmtlckdsb2JhbFNjb3BlOjp3cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYga2V5LCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXkpCiB7Ci0gICAgYm9vbCByZXN1
bHQgPSBmYWxzZTsKLSAgICBzdGQ6OmF0b21pYzxib29sPiBkb25lID0gZmFsc2U7Ci0gICAgYXV0
byBjb250YWluZXIgPSBDcnlwdG9CdWZmZXJDb250YWluZXI6OmNyZWF0ZSgpOwotICAgIG1fdGhy
ZWFkLndvcmtlckxvYWRlclByb3h5KCkucG9zdFRhc2tUb0xvYWRlcihbJnJlc3VsdCwga2V5LCBj
b250YWluZXJSZWYgPSBjb250YWluZXIuY29weVJlZigpLCAmZG9uZSwgd29ya2VyR2xvYmFsU2Nv
cGUgPSB0aGlzXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIHJl
c3VsdCA9IGNvbnRleHQud3JhcENyeXB0b0tleShrZXksIGNvbnRhaW5lclJlZi0+YnVmZmVyKCkp
OwotICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUtPnBvc3RU
YXNrKFtdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBSZWY8V29ya2Vy
R2xvYmFsU2NvcGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOworICAgIGF1dG8gcmVzdWx0Q29udGFp
bmVyID0gQ3J5cHRvQm9vbGVhbkNvbnRhaW5lcjo6Y3JlYXRlKCk7CisgICAgYXV0byBkb25lQ29u
dGFpbmVyID0gQ3J5cHRvQm9vbGVhbkNvbnRhaW5lcjo6Y3JlYXRlKCk7CisgICAgYXV0byB3cmFw
cGVkS2V5Q29udGFpbmVyID0gQ3J5cHRvQnVmZmVyQ29udGFpbmVyOjpjcmVhdGUoKTsKKyAgICBt
X3RocmVhZC53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2FkZXIoW3Jlc3VsdENvbnRh
aW5lciA9IHJlc3VsdENvbnRhaW5lci5jb3B5UmVmKCksIGtleSwgd3JhcHBlZEtleUNvbnRhaW5l
ciA9IHdyYXBwZWRLZXlDb250YWluZXIuY29weVJlZigpLCBkb25lQ29udGFpbmVyID0gZG9uZUNv
bnRhaW5lci5jb3B5UmVmKCksIHdvcmtlck1lc3NhZ2luZ1Byb3h5ID0gbWFrZVJlZihkb3duY2Fz
dDxXb3JrZXJNZXNzYWdpbmdQcm94eT4obV90aHJlYWQud29ya2VyTG9hZGVyUHJveHkoKSkpXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIHJlc3VsdENvbnRhaW5l
ci0+c2V0Qm9vbGVhbihjb250ZXh0LndyYXBDcnlwdG9LZXkoa2V5LCB3cmFwcGVkS2V5Q29udGFp
bmVyLT5idWZmZXIoKSkpOworICAgICAgICBkb25lQ29udGFpbmVyLT5zZXRCb29sZWFuKHRydWUp
OworICAgICAgICB3b3JrZXJNZXNzYWdpbmdQcm94eS0+cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJH
bG9iYWxTY29wZShbXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAg
ICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgp
KTsKLSAgICAgICAgfSk7CisgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkp
OwogICAgIH0pOwogCiAgICAgYXV0byB3YWl0UmVzdWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2FnZVJl
Y2VpdmVkOwotICAgIHdoaWxlICghZG9uZSAmJiB3YWl0UmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRl
cm1pbmF0ZWQpCisgICAgd2hpbGUgKCFkb25lQ29udGFpbmVyLT5ib29sZWFuKCkgJiYgd2FpdFJl
c3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKQogICAgICAgICB3YWl0UmVzdWx0ID0gbV90
aHJlYWQucnVuTG9vcCgpLnJ1bkluTW9kZSh0aGlzLCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9k
ZSgpKTsKIAotICAgIGlmIChkb25lKQotICAgICAgICB3cmFwcGVkS2V5LnN3YXAoY29udGFpbmVy
LT5idWZmZXIoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAoZG9uZUNvbnRhaW5lci0+
Ym9vbGVhbigpKQorICAgICAgICB3cmFwcGVkS2V5LnN3YXAod3JhcHBlZEtleUNvbnRhaW5lci0+
YnVmZmVyKCkpOworICAgIHJldHVybiByZXN1bHRDb250YWluZXItPmJvb2xlYW4oKTsKIH0KIAog
Ym9vbCBXb3JrZXJHbG9iYWxTY29wZTo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgd3JhcHBlZEtleSwgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkpCiB7Ci0gICAgYm9vbCByZXN1
bHQgPSBmYWxzZTsKLSAgICBzdGQ6OmF0b21pYzxib29sPiBkb25lID0gZmFsc2U7Ci0gICAgYXV0
byBjb250YWluZXIgPSBDcnlwdG9CdWZmZXJDb250YWluZXI6OmNyZWF0ZSgpOwotICAgIG1fdGhy
ZWFkLndvcmtlckxvYWRlclByb3h5KCkucG9zdFRhc2tUb0xvYWRlcihbJnJlc3VsdCwgd3JhcHBl
ZEtleSwgY29udGFpbmVyUmVmID0gY29udGFpbmVyLmNvcHlSZWYoKSwgJmRvbmUsIHdvcmtlckds
b2JhbFNjb3BlID0gdGhpc10oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAg
ICAgICByZXN1bHQgPSBjb250ZXh0LnVud3JhcENyeXB0b0tleSh3cmFwcGVkS2V5LCBjb250YWlu
ZXJSZWYtPmJ1ZmZlcigpKTsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgICAgIHdvcmtlckds
b2JhbFNjb3BlLT5wb3N0VGFzayhbXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
CisgICAgUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKKyAgICBh
dXRvIHJlc3VsdENvbnRhaW5lciA9IENyeXB0b0Jvb2xlYW5Db250YWluZXI6OmNyZWF0ZSgpOwor
ICAgIGF1dG8gZG9uZUNvbnRhaW5lciA9IENyeXB0b0Jvb2xlYW5Db250YWluZXI6OmNyZWF0ZSgp
OworICAgIGF1dG8ga2V5Q29udGFpbmVyID0gQ3J5cHRvQnVmZmVyQ29udGFpbmVyOjpjcmVhdGUo
KTsKKyAgICBtX3RocmVhZC53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2FkZXIoW3Jl
c3VsdENvbnRhaW5lciA9IHJlc3VsdENvbnRhaW5lci5jb3B5UmVmKCksIHdyYXBwZWRLZXksIGtl
eUNvbnRhaW5lciA9IGtleUNvbnRhaW5lci5jb3B5UmVmKCksIGRvbmVDb250YWluZXIgPSBkb25l
Q29udGFpbmVyLmNvcHlSZWYoKSwgd29ya2VyTWVzc2FnaW5nUHJveHkgPSBtYWtlUmVmKGRvd25j
YXN0PFdvcmtlck1lc3NhZ2luZ1Byb3h5PihtX3RocmVhZC53b3JrZXJMb2FkZXJQcm94eSgpKSld
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgcmVzdWx0Q29udGFp
bmVyLT5zZXRCb29sZWFuKGNvbnRleHQudW53cmFwQ3J5cHRvS2V5KHdyYXBwZWRLZXksIGtleUNv
bnRhaW5lci0+YnVmZmVyKCkpKTsKKyAgICAgICAgZG9uZUNvbnRhaW5lci0+c2V0Qm9vbGVhbih0
cnVlKTsKKyAgICAgICAgd29ya2VyTWVzc2FnaW5nUHJveHktPnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyR2xvYmFsU2NvcGUoW10oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAg
ICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2Nv
cGUoKSk7Ci0gICAgICAgIH0pOworICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9k
ZSgpKTsKICAgICB9KTsKIAogICAgIGF1dG8gd2FpdFJlc3VsdCA9IE1lc3NhZ2VRdWV1ZU1lc3Nh
Z2VSZWNlaXZlZDsKLSAgICB3aGlsZSAoIWRvbmUgJiYgd2FpdFJlc3VsdCAhPSBNZXNzYWdlUXVl
dWVUZXJtaW5hdGVkKQorICAgIHdoaWxlICghZG9uZUNvbnRhaW5lci0+Ym9vbGVhbigpICYmIHdh
aXRSZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCkKICAgICAgICAgd2FpdFJlc3VsdCA9
IG1fdGhyZWFkLnJ1bkxvb3AoKS5ydW5Jbk1vZGUodGhpcywgV29ya2VyUnVuTG9vcDo6ZGVmYXVs
dE1vZGUoKSk7CiAKLSAgICBpZiAoZG9uZSkKLSAgICAgICAga2V5LnN3YXAoY29udGFpbmVyLT5i
dWZmZXIoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAoZG9uZUNvbnRhaW5lci0+Ym9v
bGVhbigpKQorICAgICAgICBrZXkuc3dhcChrZXlDb250YWluZXItPmJ1ZmZlcigpKTsKKyAgICBy
ZXR1cm4gcmVzdWx0Q29udGFpbmVyLT5ib29sZWFuKCk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCX0NSWVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xv
YmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaApp
bmRleCBiYzcxYjU2NjZjMWMyZWM0ZTZlZDc3OTI0ZGRhYWNkMzI5MWU3OTg3Li4zOWI4ZmM1MWIw
N2ZkYTg1NjQ0NWY2ODE4ODNkMGNiNzBhMjU5MTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0xNjcsMTMgKzE2Nyw2IEBAIHByaXZhdGU6CiAgICAg
U2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdG9wT3Jp
Z2luLmdldCgpOyB9CiAKICNpZiBFTkFCTEUoV0VCX0NSWVBUTykKLSAgICAvLyBUaGUgZm9sbG93
aW5nIHR3byBmdW5jdGlvbnMgYXJlIHNpZGUgZWZmZWN0cyBvZiBwcm92aWRpbmcgZXh0cmEgcHJv
dGVjdGlvbiB0byBzZXJpYWxpemVkCi0gICAgLy8gQ3J5cHRvS2V5IGRhdGEgdGhhdCB3ZW50IHRo
cm91Z2ggdGhlIHN0cnVjdHVyZWQgY2xvbmUgYWxnb3JpdGhtIHRvIGxvY2FsIHN0b3JhZ2Ugc3Vj
aCBhcwotICAgIC8vIEluZGV4ZWREQi4gVGhleSBkb24ndCBwcm92aWRlIGFueSBwcm9jdGVjdGlv
biBhZ2FpbnN0IGNvbW11bmljYXRpb25zIGJldHdlZW4gbWFpblRocmVhZAotICAgIC8vIGFuZCB3
b3JrZXJUaHJlYWRzLiBJbiBmYWN0LCB0aGV5IGNhdXNlIGV4dHJhIGV4cGVuc2UgYXMgd29ya2Vy
VGhyZWFkcyBjYW5ub3QgdGFsayB0byBjbGllbnRzCi0gICAgLy8gdG8gdW53cmFwL3dyYXAgY3J5
cHRvIGtleXMuIEhlbmNlLCB3b3JrZXJUaHJlYWRzIG11c3QgYWx3YXlzIGFzayBtYWluVGhyZWFk
IHRvIHVud3JhcC93cmFwCi0gICAgLy8ga2V5cywgd2hpY2ggcmVzdWx0cyBpbiBhIHNlY29uZCBj
b21tdW5pY2F0aW9uIGFuZCBwbGFpbiBrZXlzIGJlaW5nIHRyYW5zZmVycmVkIGJldHdlZW4KLSAg
ICAvLyB3b3JrZXJUaHJlYWRzIGFuZCB0aGUgbWFpblRocmVhZC4KICAgICBib29sIHdyYXBDcnlw
dG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIFZlY3Rvcjx1aW50OF90PiYgd3JhcHBl
ZEtleSkgZmluYWw7CiAgICAgYm9vbCB1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiB3cmFwcGVkS2V5LCBWZWN0b3I8dWludDhfdD4mIGtleSkgZmluYWw7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaAppbmRleCA0YTYzMzc5MmMy
MjlhYmFjZDM3YjU2YWIxZWI4MzFjYzk4NjIwMTIzLi42MTUzMWVkNDA4NjRiMzhhY2I5OWNjMDY3
NTdiZmMxMTEyM2Q4ZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckxvYWRlclByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2FkZXJQ
cm94eS5oCkBAIC00NSw2ICs0NSw4IEBAIGNsYXNzIFdvcmtlckxvYWRlclByb3h5IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5Xb3JrZXJMb2FkZXJQcm94eSgpID0gZGVmYXVsdDsKIAorICAgIHZp
cnR1YWwgYm9vbCBpc1dvcmtlck1lc3NhZ2luZ1Byb3h5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKwogICAgIC8vIENyZWF0ZXMgYSBjYWNoZSBzdG9yYWdlIGNvbm5lY3Rpb24gdG8gYmUgdXNl
ZCBvbiB0aGUgbWFpbiB0aHJlYWQuIE1ldGhvZCBtdXN0IGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0
aHJlYWQuCiAgICAgdmlydHVhbCBSZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbigpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5oCmluZGV4IDVjNzgzMzJlY2EyOTNlZDM0NmY0MjJjMTA1ODRh
ODNlOTc0NThjMWMuLjhiZjc1NzMwMGFiMWExMThjMzZmMzNkYWM1MWJlY2E5MmIyZWU0ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKQEAgLTQz
LDYgKzQzLDEwIEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBXb3JrZXJNZXNzYWdpbmdQcm94eShX
b3JrZXImKTsKICAgICB2aXJ0dWFsIH5Xb3JrZXJNZXNzYWdpbmdQcm94eSgpOwogCisgICAgLy8g
SW1wbGVtZW50YXRpb24gb2YgV29ya2VyTG9hZGVyUHJveHkuCisgICAgLy8gVGhpcyBtZXRob2Qg
aXMgdXNlZCBpbiB0aGUgbWFpbiB0aHJlYWQgdG8gcG9zdCB0YXNrIGJhY2sgdG8gdGhlIHdvcmtl
ciB0aHJlYWQuCisgICAgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3QgU3RyaW5nJiBtb2RlKSBmaW5hbDsK
KwogcHJpdmF0ZToKICAgICAvLyBJbXBsZW1lbnRhdGlvbnMgb2YgV29ya2VyR2xvYmFsU2NvcGVQ
cm94eS4KICAgICAvLyAoT25seSB1c2UgdGhlc2UgZnVuY3Rpb25zIGluIHRoZSB3b3JrZXIgb2Jq
ZWN0IHRocmVhZC4pCkBAIC03MCw4ICs3NCw4IEBAIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50
YXRpb24gb2YgV29ya2VyTG9hZGVyUHJveHkuCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSBj
YWxsZWQgb24gZGlmZmVyZW50IHRocmVhZHMgdG8gc2NoZWR1bGUgbG9hZGluZwogICAgIC8vIHJl
cXVlc3RzIGFuZCB0byBzZW5kIGNhbGxiYWNrcyBiYWNrIHRvIFdvcmtlckdsb2JhbFNjb3BlLgor
ICAgIGJvb2wgaXNXb3JrZXJNZXNzYWdpbmdQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KICAgICB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayYmKSBmaW5hbDsKLSAgICBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2Nv
cGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJpbmcmIG1vZGUpIGZp
bmFsOwogICAgIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGVDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uKCkgZmluYWw7CiAKICAgICB2b2lkIHdvcmtlclRocmVhZENyZWF0ZWQoRGVkaWNh
dGVkV29ya2VyVGhyZWFkJik7CkBAIC05OCwzICsxMDIsNyBAQCBwcml2YXRlOgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNv
cmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpXb3JrZXJMb2FkZXJQcm94eSYgcHJveHkpIHsgcmV0dXJuIHByb3h5LmlzV29ya2Vy
TWVzc2FnaW5nUHJveHkoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDMxZTM1MzA3ZmQ3
ZGZhN2QzYzQwZWUwOWQ1MWU4MDVlYTY1Zjk1NzIuLjk3OWRiMGZhYTBmNTJjYjk1MTAyNjg3MzEw
ODlmYjE2NWMwODZiOWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOS0xMC0wMiAgSmlld2VuIFRhbiAgPGppZXdl
bl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIE9ubHkgd3JhcHBpbmcgQ3J5cHRvS2V5cyBmb3Ig
SURCIGR1cmluZyBzZXJpYWxpemF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDI1MDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUyNDQ1OTI3
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vZGlm
aWVzIEluZGV4ZWREQi5TdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkgdGVzdCB0
byBpbmNsdWRlIENyeXB0b0tleXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5t
bToKKyAgICAgICAgKC1bU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5TmF2aWdh
dGlvbkRlbGVnYXRlIF93ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3Ol0pOgorICAgICAgICAo
VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVk
REJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3FsaXRlMzoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9u
ZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzLXNobToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29t
cGF0aWJpbGl0eS5zcWxpdGUzLXdhbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVJl
YWQuaHRtbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4
ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVdyaXRlLmh0bWw6CisKIDIw
MTktMTAtMDQgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQWxs
b3cgT1NSIGV4aXQgdG8gdGhlIExMSW50CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0
aWJpbGl0eS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhl
ZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5Lm1tCmluZGV4IGYxZTQyMTZh
YTJmNmE5YTY1MTE0ZGQwOWZjMGE0ODE0MTRkNThiZmUuLmFmODFhYTNiODA1MTMwNGIzOGFlNWE3
MTdiMzVmOTEwNDdjNWM3MjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERC
U3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5Lm1tCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUzLDYgKzUzLDE4IEBAIC0g
KHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVz
ZXJDb250ZW50Q29udHJvbGxlciBkCiAKIEBlbmQKIAorQGludGVyZmFjZSBTdHJ1Y3R1cmVkQ2xv
bmVCYWNrd2FyZENvbXBhdGliaWxpdHlOYXZpZ2F0aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tO
YXZpZ2F0aW9uRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBTdHJ1Y3R1cmVkQ2xv
bmVCYWNrd2FyZENvbXBhdGliaWxpdHlOYXZpZ2F0aW9uRGVsZWdhdGUKKworLSAoTlNEYXRhICop
X3dlYkNyeXB0b01hc3RlcktleUZvcldlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAg
ICByZXR1cm4gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOihjb25zdCB1aW50OF90KikiXHgwMFx4MDFc
eDAyXHgwM1x4MDRceDA1XHgwNlx4MDdceDA4XHgwOVx4MGFceDBiXHgwY1x4MGRceDBlXHgwZiIg
bGVuZ3RoOjE2XTsKK30KKworQGVuZAorCiBzdGF0aWMgV0tTY3JpcHRNZXNzYWdlICpnZXROZXh0
TWVzc2FnZSgpCiB7CiAgICAgaWYgKHNjcmlwdE1lc3NhZ2VzLmlzRW1wdHkoKSkgewpAQCAtOTIs
NiArMTA0LDggQEAgVEVTVChJbmRleGVkREIsIFN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0
aWJpbGl0eSkKIAogICAgIC8vIFJ1biB0aGUgdGVzdAogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbU3RydWN0dXJlZENsb25lQmFja3dhcmRD
b21wYXRpYmlsaXR5TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZp
ZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICBOU1VSTFJlcXVl
c3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2Fy
ZENvbXBhdGliaWxpdHlSZWFkIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAi
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVx
dWVzdF07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5LnNxbGl0ZTMg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVy
ZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzCmluZGV4IDM0MjBjZDgwOGY4OTZk
YmU1OGQ2YTM3YWY5NjI1NTNkODI1MTRmYTguLjg2YmJlYTdlODQyOTMwYjA0NGJkZjcyN2FlMGVk
ZTBmMDgyNTgzNGQgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMjIKY2NtWm9yWGklN3Qj
OV5ZcSVLIXVkOHc+bVNDbU9IPTA2b2hFR3luaHEKCmRlbHRhIDIyCmNjbVpvclhpJTd0IzNBc1Rt
ak1VX0hXdjJ0UGMmYyQwN3QwPj5pX0AlCgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBh
dGliaWxpdHkuc3FsaXRlMy1zaG0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUz
LXNobQppbmRleCBlNzgxNThkMzNlNTY5N2QyNmJiMjliMjRhODdiMzUxYWIxZmM0ZTY5Li5iNGVj
NzM0MGUxY2EzMzA3NGNjOGEzYTU3YWZlNTc4ZTM3YTNkNGJhIDEwMDY0NApHSVQgYmluYXJ5IHBh
dGNoCmRlbHRhIDE5Nwp6Y21ab0BVfXxWIXMrVn1BJUshcXhLK01SJUFtOWUxV3FeM3d0QUxqfXls
U1JmN18lIWJoRDc9NHpWbCtNS1hMeVUKenNwXjQ3ZmRSPGV8NDBCVCUqNWNmdjV9dX5hfDVHYCF7
I2ZGZGhDcU9uPHB9IVc/WCNFaTw4an0kVyYoQnszK3l7Clk2ciY0fXtncjkqeSY/YHFTMUB6KW9s
K0dwMEs0ISVuKmFhKwoKZGVsdGEgMTkzCnpjbVpvQFV9fFYhcytWfUElSyFwR0srTVIlQW05WH5X
cV9EKHlGJVBqP2lyN0c1Jn0xRjtRWD8pX3AjSHBZVEx+IQp6cV5idVIxcU4wP0A7PyVRM050WTxZ
OzVGYitgTkYlIzl7SVZNdUUqJjlRRHtZRkplNXl4Y0huR0N5PTRTeGNPN2EKVkh6Xj9OOGBJPV9N
STJ6cDx+eVktVG1TO0ZLcjtYVQoKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmls
aXR5LnNxbGl0ZTMtd2FsIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3FsaXRlMy13YWwK
aW5kZXggYzc1YWY1N2VlYjljZTZhMmNmYTlkYzNiMGY2MzA5ZGY0MGJjY2VmZC4uZjNkNWVkNDQ2
YjA1ZjU5MmNlMjQ0NzUxNjU0MWQ2ZWEyMzgzZWVjYiAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApk
ZWx0YSA2NzQwCnpjbWReRGN7byk0K2RwJjhGIW1ZQ09rKnFpN1RJUChvMkFrc1RTN144dlRxQGpD
USh3elIjUW5sTGByclVyN1NIZgp6JDxrJmlNV25LMWgqRkIqY1NiYXg+KkBGUUtMNVNmZCMtRUZK
P0IyPmIxJEYhe0AoTEYpNiQ0NWUjRWI+TVBXWSMKenNrfFhWNURzRC08dFZTdilAP1E+IyNfPCVF
Sz0yMTB+THhAS1hgODxlQUA8eEJ4KHlrWUR0cHlUOV9uSmFfI35hCnpIOzIydjF9ajc2RUYrYmY7
VyUqZitRVil+e2YkVkUkVl5tOWowNksjKStsaVMlUmgobiY9JEV0dig+PEdtNl91KAp6emtzOS1B
MDhhYlFSPCFyKCk1X1g/fExpX3lFWEU0WXhuSGh5VV5qWlhHYDQxcVU3KmQrJmMjKlBUNyZnVmJQ
MXAKeiVxQ0t3K1RSP1M0UiZBVHk7Xyt3M3RTWSoxbG1Uakk4PzdrIzl0NnJ2QENSMzwrXk9sdE5G
WGxFTjtWSk9rQ1Z3CnpFSTlKZ087N3R1a0RIaDJtMmx3Wl5TKVBLVWZrcnJSRmU/fmozYU9ZdH51
djhAZVNGIzwhZyRvX31AYSpJQU58aQp6QGojYiUqNDQheHJtTFlJN0ZUQnkhbXJJNy15ZDMqSW0r
VmQlT04qVDtwUHxCZT4wYitNJTIhMjchWUVaYXtfZ3QKemtweGdJd2w7YDhGNzx0ejxfeXdCYUNs
elVVUmQlS1ZpIUNYYUktPUsjcDAmT0p2K1NHU0gwJE1adUE2cWs+ODdhCnp1JW9KTm9wcURDbURT
QztIek4tPEQoWTFodk1UaT81U01mfDt5VHFLYTI4fTY0UUY4UyV2UE9hWTBPU15nK1JHYAp6PFpP
V2FBaSNOWTxKIUhkXkpSMjNYXkZgbyF1Zjd8bTZmN3ZhbCV4SW1ZMm48IzwxdDRYKlM3PihQflJz
KSMrbmcKenJ0LWNEZHVaKnFTaylnNDFYcW96VStTUklBRzR9MkoodX01WSp2eUA8TEc1b3VkVTg2
NUd5ZUlOUiMtKXMoI3xuCno2JmtpektiTk1CeiReaDhabnF1cXsxelRYR1pTUTBBOFNsTSEoRFFq
TXN0QDJZS2JgbDFsYTFVa2ZvZkZqTXx8Mgp6TWo+bnNIVWdgfkgoS1YxPiozPkhoaH5TQ2dtN3s9
MlpzM3ZgNUMhfVFIfEVaV0djLTdaa0BMZlIzbV9pXjR7cGoKeiNqdD1LZlV3YE9wUnNpODBJPC1C
ck01KUQ9b00lKjgtaFkxMjsmVUgyKlN6ZVI2ZypUcEJOYjkmKWhiaU57WHthCno5eilwMipoeT9S
XzlITkkzcmtJT2hTNk59RmB5YU8zaUpNbHFFPzA3ZVdtWmYlbURpViFjSmkpdXBgKEgwTlIxbwp6
TVdZY0UyUk1OPGZgLTh2ZD1PMyE7Q2V4XmNAP19KeVRVPip8Ml8jQWpiPGM2b050NjxPPDcjcnlQ
SillRH5ZLSYKejhmR2pkOHRBYkwqdWBffjNZOTIhd09JejxWKn56QiplT1FGViVSQVY4NjdKayU0
a0d7cF8rVHpfX3BhYiEtTFp1CnpHPSZTU21ENnxAa3ZLbF8oVEFwMjR5UitLVUM2RkZFKmZxK0Rr
TEA2PHRpajZiIWA8Vk8mNHR5bEFFQFU3SFBSQQp6aUEqfG0yTnF3Y3VBJTB0ekZicXFObGltamcr
eXtEc1dAcjVJSUYxWnM1X0IwJFpBPzdYQVImUiF4fSo0N3lJaFcKenNeZWE/P1JWaGhLa2BLN2VG
e3RJfEE4eUBXbHI5SFBRViQxYHVVOHsqNmthWHsyRm45PUttQnZ8N1EtPmAoVXZACnolI0cxeV5S
QnBoeDExYGwpS3NNJT9QRGMoQkVMbSRmMUB1cUVwcl5HaDJ9fnpgSVNhXi1QRSlRNyFhYTQxfHVf
QQp6eWIhQ2teZ04+NSlCRmxTVDhqfEUwPXY0V2o8RWklWTdLYWxARG9PMGc+QnMoRXIrN1p6bztP
eXE4ZDh9UExZamwKejxpVjR+cEQ2SD9gWVV2Y2pKMG1qQGRlSF9IQWAwNU0tUmJNXkBCQzA7N082
NkZjRFVtV0okbD03RkNDUSN5dUZmCnoxYD1oeDNEPFVoUyRja2VvM1V6ZWtSXm18IWUpUyMmazZn
JG9UeFhidDAqY2UwQSskd2hpMElNUCVMRGI7KXFrQgp6YGxQfj1DPUImUER5JERnWWJ2WT5nd0dL
fjlmKnUwaCU2QWhQUXFlOWdyOV5KZlomY3tEJUUyVWQybHMpNXwjcEQKemUrKGlHTH1tO2t7d0t7
JD9UJGd6UCM3QmpRNiFYU1E2UVJ+USEjUVExVWFCVjxjNSQzPFBFdCh6KjtJSVclfnp4CnpJNlg1
biEpV0AwWmhuNXRmPGw5ISNFdGQrP0k4dmQycGd4TyspdU9YQVYoO09WSFVYSGg4Jm5yUHokcVI1
ZkhaZQp6TmtrYjR5T1c2Mnszd3Q9dFpaQiVMRWxlSEpjOzEzO0JNeyhMPEAqbDdaNVRLTE9CUzdz
RXMreXN7PVdSJFVJV30Keik/ND9LTyZqY0pjeyFsOF5EflZuYXg4WDREeDgtV0l7e3x1OF4lbG42
QWsrWU9wZURgTHBEQ2Y5T1lzaVo2SHV+CnpGaWx1UytrRTVhP3JWcys1eilIeF9vR2N8IUY9WlhJ
aUpPVk98aU40NVdHaEZAe3lQIV5OYUxuMnBgQzB2PTw9Jgp6IU9ANHYwaW9LNUVDI30pNDxRJmJJ
T0QqSnUlUlJnNURaQ3hEe3UodUcxTTVtQElwMD9zYiZgQDBgPWx3UGpsI0QKenNGKFc/NWl0ZWBq
VkNNdyhSQ1NXZ25JQS12JHlgMz5iM1ZyKD0tfGZJQXxSR3RXKn50e1hzS2N3UFE2ZWM0VXJmCnpL
czB2ekFFKlh5KiZzSDQ9MTx1X1FxNU04cUdfRDxkZ18wc254RllvXz5XWH5va3Z8Qip9UEdaVz0y
MylAaU9Abwp6I1ktfGRLPDQ7X244WFI9Ql5JaEBzVWhOKkVNIWF1QGNEbklWMmtFQEYxNWkjYHlQ
Xi16K2g4PiREZk1yTjduUTMKeit+cTBmJD52R3NpUkFHSUJfaV47O217fmE2bmMmc3FNcEorZ14t
XjdMSXFBd1psUXVoUGo7YUsodnctSnB6QkswCnpVWDM5ZCRvdkFgZV9UQjY9O251cWRCS0xgPUs9
KmlnQkBQYkhIX3xNVExqdCMmSG1ySTI4dFRMJDQzOUxfVi08Kgp6aiRYdnZLPmU0bGBDdjlzTDYr
bEhYM1RSVSpySGh6KDZUJXt0PXg1N19NRVlwMCs8WFVgKz1leTNzenU5TnVKeVcKenVASl5zUExl
eXA3UkFabStoYjNWbiVZd29qRyk9ckYmd3Q4elJYPmhzfChvciszWEU7XiFFb30qQmU7YElxdFIm
CnphU2h6IztwYzEwa0ZORXlgQX1jUng1eV5adWw0WT09WEdqKClDcEQrSj9zLV55KmAqOXZLeksq
aThueVRTLWpERQp6RFghSStyMEhaJWpZcH4tbUkpZEJhN21Zeml8flAjb2tMTioke01ZeWl5PD5F
PmpiazAkP0olRz9zNTlNIUd9RyYKekNhTUc/PCkqc3lZK0NYXmVwS0hlbzE/TThjdlpCSFZxfX0h
d31HYkRkdzEmKVp0fHMrQ1JFbDRIQn5NVHstQjF8CnokPEY3Qnk3eWBJTHl2WCZRQ31QYGk0VjJF
b0RRZyVUSTUzVU09OVk+YDkzciQoJEU7YjghPlZTPD18SE0hPko1egp6TmZ5e3R6Vy17VG5BIUc/
ZDxRK04tRnItMFpvfTNvbCg9eFJvRGZPMGtkfFY8I1Jwc01TR0FwYyRxU3YrUHhCU24KekNyT3V6
I3QjZD9taWN1UiQ3fjhQWGJKYjReTSRiJmM2YitycFRTLTRBSzE5USthZFJnaCRiS0J3WXh2WXU9
cmtuCnpPNkBMWEBrPiNmYlQoZ2tsQyo0bG1QU0UrelF4PD8jRiVzcUBoQW5zSm1td210QEpNYDBW
PVZiPiFYeipQUmR6Zwp6V1hrRmRObTBrNXRvSmt8PVdvTVhOMWJnRl5qeF8rbHlAPHxWV3NVcj04
VyNuQStNd3VfdnpJayFwcWk3YWR7WlEKemlST0ZXbDE3VCg0Q2RIbGlmPDFyTl5xYUYpNUF6X2BB
RCZQPXQkPldeT34jbm9rSE01Z1klQjNLMzsxb1B2NF93Cnp2Unw/KHhpMjNUQ14zQW9jd34xY2BB
KVZKQDc9Um1uJX1wKVh8SipwciM2NDxgfUVHQGlRUVl4I2B4VCZjU3wqZQp6dFppZjBlPn0qJFY+
SFp1Yj8xdDYyfGB1Ym0qT2hnYTxgTU1sI1pTdEAoRkx0S0c+b0QqUFVAeSljZn5hSE0+Ki0KektB
Mk1FKVJkbXkrKitIeUNXbyFtPkNCcDxtSkJAM3s4X2NNTSNoVGUoND1SNCE0V1FMYDM7aTgpRXdA
bmkoZnFICnoqPnxTZ1RYfk1sZClqK2laRVRVeyVqYih5WX0wJWpBPn53dnQtbjdOUEhmYTR6bih0
JG5PMH5wKXg1YlVeTVZ9Vgp6YEVrUE85a3QpQUMlNDQoX2drITNgKT11Wk1JRi0zek5nbG1iKEF4
Uz8/UyNfRzt8S182fEVHcWRtNmFVazhme0oKejZZbGZGTHllaFRga3hkZl9WcDt5ZU15PUZ6OCNK
aEpHaEl7LUpMUjU0bXNmej5Ge3s5O08/fSNfRkl4fVQ0UTJQCnpHMiNoQldWNTRwQHNyIXItQnh4
ekRJTDE8YT5UNSpIR1U7MEg1fSZmdTZeN3hRVH4tc3VwJVVLXmt6Myprbj9Vcwp6UlNGTWY9MXR3
PXVkZFN9TkI3ayVjPypAJk5qSWs4aC1xP1RVMkxtQD8pQ3Z1blV7cz5gXyF0UU1ge0hoZTsyQSsK
ekJHczJAeXJwfmQ3SFdEe3ZnU1pUPTRncWJWRUV+dGp7IShRKV9kSkUtLXdIPy1iK2lKNH5rbkVK
ITxEeFZVMEVeCnomd05wYT5vaEM9eXByUG1JSEttJXttVWZyK256SllmODh7UXJja2BFKFlyZmFa
I1pKZDk7VzJrbzBHbXtyVXwzdAp6XiZMeHNIYGYjJnpJdyozeXstNmA7bklme21WIz9WVXc3UVI5
YUVAR3JhWFVobWA2I3h2XihjQS0/fEVjJnhzPkQKelRlaGo+JE8oVmIqPnRrbm9Ye1NtYHRrJmwq
PVZ0UnlJISpnbTU8dSVDJGtGT3ttemtsenQpd1ZGITdUaXVXWGpqCnprM0hIZGx0O0JRMG1HbHVA
QXF1M0A7fDlPXnhhRntXSlVqfmhoRXZqWiQ7OS15aUJATGNEWFhgUkZOXmt3YXVWagp6ZUBvenRF
T1VqMlRQQG1HTkVgM1Y9LW5GWk0ySGI7SmVxJUpTNi1+Z1NyZTxoU0Z7YmtKJjZCUVhXLUlTYnMr
VT8Kemc8T1A8QDMlSkwjWkEteD1lJi1ubCt5YklHSlkoUkkrRExDUXJNdHlsSHkpQVl6YVg7aFU/
VkdUXkReQE1zNEx1CnpgMG0oT0tTWF9zXkZHdyM5ODdWPGpNTGg3ZnsoV3ZhMFoxRGxgaSMwNT47
K0JhQTB7fW5Cczd1QygyWCNJPWxtfQp6YnRrJFNEe0JZZ1B+ZGZqQTZnNzRMTWpqJHtncTlLTyYk
eldhS095fXl9JWRkSXx4KDdJOGgpciNpJCtmVTxBakEKentUaml1eUNjYU9mY2NqcjckdXxMK0NU
MSQxU0lYaEtpS3lkeUdiYSkkfUtmR3t3MnFjPSptVT44MXYydEghO2BZCnpFPXFyTEx+JmImPSZR
bCFAQVM+eXk1UU1AKi1iP1A0b1lYZW1iJDt9Ry12VHlsNjtMbWNhbmRNUT1EU000TkQ/LQp6ZTBq
aU5US0FjKjNadT4hcWx6bmNfckplK3QtN3BlYnpZZFFRMUlhKUBnK0xSJiR7MTkpX0xGSzJ8TT83
cWZWfGkKemBMPXJuJihuQjRlYklBKjE2KzZYJSlIRGYjO2YtQ1VsZVhCcip4PWgpQjNMT005UmBD
RlAwUiRgXiYyaD5eWCE/CnotbzVYI3FvWSF9KEw/MGhwa2RQR2Jzc25QQSo7bjNMZkB9OUtYSioz
IXk9KGtkVmBFJnk7K2A0bWxZPWw/eURDSAp6NkhRTVNAVDE/Kl9ZR01XeFk7cC1kdHh2UypYKXkh
NkxVfkd2JEg5N3hUc31qZz1YeW1uPlctXjlpPmdUck89eFAKenMxZylWLXx9fCRYeGI2a0JfcUBP
U01OSVFeQ0lqVFlEYUpNOXVIOTh6JUM5I3ZiVnxVVF5zWSgxaE1VQ1VSWW4kCnpFPnRNJF8tcmtJ
UShwKWJBODg+NiR7VTZJUm8+Wk11SC1kRntyX0VrYVNDeVVDZDV3SyZmIzN8c35KVlRiVE8pIQp6
QVl4dj5sbH1RQjN5Ykg2RCFBKlVISTFFP14tWTVPeEgpPzZVOWskayo7dFRmcFIpYitfWGlvcDNi
PmFNRWctKmYKemlqXklJTkA8QGQkRytuQ2h3PSlPYTN+SmAjZm1DcWhrWGdOZDc9S2ZaeV9sMGtp
OUkoPiMpTUZ5dWRhY2ZGIyVkCnpGV1EhfWFPOzR9UzNEaXZqSzlPfmszVi1hUkRTM3trbyRMMjFm
TmtvbX1JeFMqbClTK3oxLVUtdlRMRz1gKEo7Vwp6WTlxNllVMlMlR0skMHpMdSh2LUxGQD9ecjUp
TFg+d1Q4RmxwUDQlNHJQPHR7ZCpDK1JZTkZkSnFpdn19aWxjNHoKelpKQWNNUj9qenVYM31xKSZM
diFBTzk/NGBeNDsqKlhQYVhkPWlYODJidCkmZFQ/Qm1De2Z5Mng4JExwP3swe24yCno/dUY4RWsy
Yy1qdyE2fGJvTlohbm5nSEdZUUROQCE5KSUzUnQhYz1GRUlqYkZfKGVHOHZDeSZgVUw2LUtiS2tx
KQp6c1JQe05qaiFsRU5Sb0FSRj9vNlZ6TmwyPyFycDs7cD1sSTlTcFNVVXg2TERYaCp0KVg5RjZg
KF42WEF1QClMbWwKeiVpZUxhSE5WT2daSiE7WSU5fjl3aSsmc0JUWChZM057ZkF9QiU9M0J7NCl+
IUMyNl96NGhNclA+ejBOTXF2MlJWCnpqWH1QSSs+emsqT3tsRihLfnd2bG4/Jmd6c0NwTFArTk8z
aXtHZHh7K096biQ+LXRXJUU2dG5KK1BRfSVoNFlkdgp6MFg0Z0MpdHZxbVI7ZkhANW9oNVJNQzZf
SEs0SXFtQTwrcD9sWmRuQUVNOVZxdT0qdXNGbG5lOytpMCVzJlIpSUcKekJuMHx4K2NpWDVOOzgm
fCZAVj0yVXZlYT97dFk3KD04aEdvV1V7dE49SExfNjNDejshVUoqfE5fMjh4RDFwJjFlCnojfG5n
MCFgaX1IP1JGbyt3K1c4ZENyT2gpWDZneG5VRVkqKm5JQHhfUSg7fXRicGttaVczSnw/NWtPfG4y
MWx4PQp6SHR7X1JfZ0x7R0hoJD5WVHcrY1VpVHt8R15RQEx9UFIyX3VlMGlIKVBYOWslXiNtRHtn
VFZNI2x6SEc4PWw9aj0KQzBOWTt4CgpkZWx0YSAzNDI0CnpjbWVISmN+QkVxNz1PRGozNWhZaDEo
Uj9eTVlJYW1EMW4zfHA3OXVUbHF6YmlOWXlhYHRrO018QFR3TFMxZ2ZAMAp6NCVld3ghR2NoYVFI
Ozc7Tjl6ckV2P14qbk1nQCZadHEzUzZ0eUtEVUwqbUElOWo1PHZyYVFDeSYzXmxTLXx6Yz0KekBB
ITdsMSZAcDhEVDYqKXY9WFRBYz5fUUpfRyYrRVl7PyE7IT1XQG9PeT8lfnV0ZS00YDJORlY5eitN
fHdsPmZnCnpKJjRaaENKclUzUzAkU1k1YXF6X159TXJJY0cpYEw4Y0ImTXIrNGJmPzxAQ0pUe18w
MHZlVyVwbkR4QVcwckdJKgp6XmEoUVV3I0UkaWNHal8hK1okbFJgcmA3YW95MiVNa1RHJDxXKXFL
KUtFSkpXZk5aa0ptOVdCRXFnckhCPD1Tek4KenJnNkFsVyolWWwySEZzcWFuUzg4IW9mTG5POXk9
IzljVHg3dD5BIUBTTVVnbiZ3SExlN1pTYk9tR0UtJWBtSlM4CnomSSM/ZjtyU2VIWjlXZ1RhQVU7
VUokSCttdGZtcSU8KmVIP3FOSHhjSD1FQ31YXkBtc2cwK0A3R3w5PkREKGAqYwp6TSNOaHdRa3hw
IUN1UWFsY0ItTihqX09HamsxOVJZeFVRJE1mMn1wSW89MGA9dkZGVTlAMCFlU2clalAjQEU7ez4K
eiV4MSRgQFZxY3VQbDZaZ25hWj92X1dwVWphay1GRSRvT2tQNXQ7Qj5wTHw/IUFjV3gyZ2IlIykj
e35EeTMyKUl6Cno/QGsmSmFwQTYtNGp5TngkcjtDfD17RyM7bWlOS3QzfENiQFNnaT9Ndmg+O3xk
UmxAVkcmejtyZil3MFJiKk9ZRwp6R1ZiUWdvfH1mKjZaRjZkST5qeyFLN00lQ2VkUmJOR1llPHZU
I2J1fG1kM1pOZDhsQkR4QU5VQjlqWXQoUiVZRWAKempfdXtVJWIldkFXWmtUQT1LMll+YF53VW0p
U0JEN01sZn1rYEVFO0QmZDdYUVF6dTR6cFlPZzdNK3g2Z25PbiZDCnpLaip1ek9fPzg2Y2RxeWcj
c0VvUGY/RDYyYVhJXnI0YEN1WkBaR1VRbDtuYCNwY0JsRHVHcm5sQTs5cjlNLXhrQAp6XnB+LTcx
Q2J0fUFKSDxUeDA8T1NMXkRJa09DNm05MSFjI3xgcVpvMWFSY2lCWURPOypsYjtMa3g/QVRfMHdQ
UVoKejI/OWQpTnM8c3MqdjA2TVp8OSpme3picTU7VFdtYjktdERTQ1JCLUBWeTRUOCZXc0Bnb2hk
ITR6V1IwMXUhKCFACnpEYiloPjNOQGx5SmdeRmQyX1BpSVAoYjEqek0oe24zMCE4YXZFfHQ+cjVv
cW5lXjs5SCNUMyVwSWhvPngyYnYhKAp6Pj9oYFMxTVFWY3ZmRntkPiFiaH45RUNzYklOe0YpNTZV
TUFGJV5NY3VfZFcrTiotaHE9fE1hdWp1MmFqI2wlTzEKemsjR1lRVT4lcn1aS2liZWc7bFQlQSk7
JG4hTkomUShxSmV5YWNOTTQ0Vj96eCF7JGdEUkFGOzc0RitOWig+WjVRCnpJXyFicCMtX3NuWSFj
STlTRF4/S0IwNFZ6YGdHTldZQmJ1SVBfMF5QKFp7S15YMXp7cjIqSSFCPjNYQmw3O0NsIQp6JEkj
YylWSzU8TEJwR2x+ZCNfbW5rdEFxXjBmMT0mOTM+cGcxYW0rZjVZWmNRVV9pVnZXViVIa3Q1TkhX
TWpUTmEKejZRO0k9PXEmMmMqeSgwJWE5Q0pxczNyN3VPR151STE3UHt8YDFzejVpeFR+elAhaU89
SFFYPkAyOG5EcTk5anlGCnpNVnlwaFBhMntvZyVTLSokYT0+QjN6JnNSI05jc1FnPFJNUjdkMTUo
RHBkZ1p2SEs5PitxcG8zVihEKERkdF94Wgp6ZmQlfTl0R0c1fVVFZCZDMSFMTXJldjhfbyFUTThW
JDlgPzc0cyt3JC1YdV5uRm1BVnY/ejVZVEl6P3UraUhWazcKekFwLWB0ZmxBWmNHQUdgR3ghNDhr
dGhuNUZecE9pU0otPWs7VF9IRU9qWmtBRlJjKSt8LUdOVDNRX25MO0tWUEY8CnomMUJnNDshNWA/
aEckNistREMwXnV2X2p9Xk9SfVY9SW9iZyhLdnZkRig8KG1xPiVIWTlnIXpwYCg1Z2x6Kzk5PQp6
OT9VUVApWkY/PEMkezZFJTJ0Pz81QSEtQmRibCZDJiZtVGpLQmBgQklDXk9lVDdwTTx4MSNWTCNo
Y1g2PzZ8ZVMKelpOdmdrQ1Veb0wqMShNWk59Q2FSN0xXOThoNTdQZlU4PnlEcylDYVAqbCMyPzVj
dSZ3anRgZEotViFIJCQofUozCnptOyVzR1hiVjMwe0A+TDllcDNmSFBnVCtvQHxudDxIR3wyX2ck
amhYe0kmdzkkTDNBfSlMfG5wPFc5cDhoMX1jYwp6aDB4Y0R7NWliaD0qVD9KYzEmPzBvQCFARDco
UyUtY0tpSyNWaXtgME97JHZoMihfcGhjWjhkMGZLYk1Fb09icmMKemZNLSlBYWNLPEI0WH59R3N3
T2ZmP3plWH1oQ3A4YmxDfTBQZGB0bkFWXjBqOTk2ajQtKH05Q1VieXVNfkV+RVpGCnpSQU04eCFT
Mn1mdkI2SCpqSjgyI0lEN1BvNn4wMkVpeFFCKUFIVSZDWmVyYlQzTGpURCNrb2EzLXFfdmcmMWtW
bgp6TH5wbDJVbGpgeUQzcT9DeDxSWlAoI3MzRHJxTzEzcWNgWCh5fn1PJDhTejhEeXVxYGcmOzB0
c2hkWDRiKSopey0KellIKlBrKCtSfndpZmkld3pVITFYQzM5S3lqTit0fnwxMi1Ye1R9P1N5aUAl
ZF9qPzxwZy1vUFVhOUdBXj0lP3R5CnApZVJqUTAhfU8rZ308eFlFe0NfR3YjVXpvdSFqR0VOJFNB
UHJJUCktOzRUSUd7MGxqZzNgX3QzCgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGli
aWxpdHlSZWFkLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
ZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVJlYWQuaHRtbAppbmRl
eCAwZjQ3NjE5YjVmNjUzNDFlMjU5YWQ0MmFlZDQ3OTM1ZmRlZDhiODBjLi5jMDhiMjkyNmY0NWRj
YTE4ODk5Y2Y2NTQ0NmY4ODNhZTkxM2ZiMjY1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29t
cGF0aWJpbGl0eVJlYWQuaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVJlYWQu
aHRtbApAQCAtMSwyMSArMSwyMSBAQAogPHNjcmlwdD4KICAgICBmdW5jdGlvbiBsb2cobXNnKQog
ICAgIHsKLS8vICAgICAgICBhbGVydChtc2cpOworICAgICAgICAvLyBhbGVydChtc2cpOwogICAg
ICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2Fn
ZShtc2cpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHNob3VsZEJlVHlwZShfYSwgX3R5cGUpCiAg
ICAgewotICAgICAgICB2YXIgZXhjZXB0aW9uOwotICAgICAgICB2YXIgX2F2OworICAgICAgICBs
ZXQgZXhjZXB0aW9uOworICAgICAgICBsZXQgX2F2OwogICAgICAgICB0cnkgewogICAgICAgICAg
ICAgX2F2ID0gZXZhbChfYSk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgIGV4
Y2VwdGlvbiA9IGU7CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgX3R5cGV2ID0gZXZhbChfdHlw
ZSk7CisgICAgICAgIGNvbnN0IF90eXBldiA9IGV2YWwoX3R5cGUpOwogICAgICAgICBpZiAoX2F2
IGluc3RhbmNlb2YgX3R5cGV2KSB7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fSBlbHNlIHsKQEAgLTIzLDggKzIzLDIxIEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBmdW5j
dGlvbiBzaG91bGRCZUNyeXB0b0tleShfYSwgX2tleSkKKyAgICB7CisgICAgICAgIGlmICghKEpT
T04uc3RyaW5naWZ5KF9rZXkua2V5X29wcykgPT0gSlNPTi5zdHJpbmdpZnkoX2Eua2V5X29wcykp
IHx8ICEoX2tleS5leHQgPT0gX2EuZXh0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgaWYgKF9rZXkua3R5ICA9PSAib2N0IiAmJiBfYS5rdHkgPT0gIm9jdCIpCisgICAgICAg
ICAgICByZXR1cm4gKF9rZXkuayA9PSBfYS5rKSAmJiAoX2tleS5hbGcgPT0gX2EuYWxnKTsKKyAg
ICAgICAgaWYgKF9rZXkua3R5ICA9PSAiRUMiICYmIF9hLmt0eSA9PSAiRUMiKQorICAgICAgICAg
ICAgcmV0dXJuIChfa2V5LmsgPT0gX2EuaykgJiYgKF9rZXkuY3J2ID09IF9hLmNydikgJiYgKF9r
ZXkueCA9PSBfYS54KSAmJiAoX2tleS55ID09IF9hLnkpICYmIChfa2V5LmQgPT0gX2EuZCk7Cisg
ICAgICAgIGlmIChfa2V5Lmt0eSAgPT0gIlJTQSIgJiYgX2Eua3R5ID09ICJSU0EiKQorICAgICAg
ICAgICAgcmV0dXJuIChfa2V5LmFsZyA9PSBfYS5hbGcpICYmIChfa2V5Lm4gPT0gX2EubikgJiYg
KF9rZXkuZSA9PSBfYS5lKSAmJiAoX2tleS5kID09IF9hLmQpICYmIChfa2V5LnAgPT0gX2EucCkg
JiYgKF9rZXkucSA9PSBfYS5xKSAmJiAoX2tleS5kcCA9PSBfYS5kcCkgJiYgKF9rZXkuZHEgPT0g
X2EuZHEpICYmIChfa2V5LnFpID09IF9hLnFpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKwogICAgIC8vIFZhbHVlcyB0aGF0IGFyZSB1c2VkIHRvIGluZmVyIHRoZSB0eXBlIG9mIGEg
Z2l2ZW4gcHJpbWl0aXZlIHR5cGUuCi0gICAgdmFyIHRlc3RWYWx1ZXMgPSBbCisgICAgY29uc3Qg
dGVzdFZhbHVlcyA9IFsKICAgICAgICAgdW5kZWZpbmVkLAogICAgICAgICBudWxsLAogICAgICAg
ICA1LCAvLyBJbnQKQEAgLTM4LDI1ICs1MSwzNSBAQAogICAgIF07CiAKICAgICAvLyBWYWx1ZXMg
dGhhdCBhcmUgdXNlZCB0byBpbmZlciB0aGUgdHlwZSBvZiBhIGdpdmVuIEJvb2xlYW4vU3RyaW5n
IHR5cGUuCi0gICAgdmFyIHRlc3RUeXBlVmFsdWVzID0gWworICAgIGNvbnN0IHRlc3RUeXBlVmFs
dWVzID0gWwogICAgICAgICB7IGl0ZW06IG5ldyBCb29sZWFuKHRydWUpLCB0eXBlOiAiQm9vbGVh
biIsIHZhbHVlOiB0cnVlIH0sCiAgICAgICAgIHsgaXRlbTogbmV3IEJvb2xlYW4oZmFsc2UpLCB0
eXBlOiAiQm9vbGVhbiIsIHZhbHVlOiBmYWxzZSB9LAogICAgICAgICB7IGl0ZW06IG5ldyBTdHJp
bmcoKSwgdHlwZTogIlN0cmluZyIsIHZhbHVlOiAiIiB9CiAgICAgXTsKIAotICAgIHZhciBvcGVu
UmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCJiYWNrd2FyZF9jb21wYXRpYmlsaXR5Iik7CisgICAg
Ly8gVmFsdWVzIGFyZSBpbiBKV0sgZm9ybWF0cy4KKyAgICBjb25zdCB0ZXN0Q3J5cHRvS2V5VmFs
dWVzID0gWworICAgICAgICB7IGt0eTogIm9jdCIsIGs6ICJZV0pqWkdWbVoyZ3hNak0wTlRZM09B
IiwgYWxnOiAiQTEyOENCQyIsIHVzZTogImVuYyIsIGtleV9vcHM6IFsnZGVjcnlwdCcsICdlbmNy
eXB0JywgJ3Vud3JhcEtleScsICd3cmFwS2V5J10sIGV4dDogdHJ1ZSB9LAorICAgICAgICB7IGt0
eTogIkVDIiwgdXNlOiAic2lnIiwgZXh0OiB0cnVlLCBjcnY6ICJQLTI1NiIsIHg6ICIxRlNWV2ll
VHZpa0ZrRzFOT3loa1VDYU1iZFFoeHdINmFDdTRFei1zUnRBIiwgeTogIjlqbU5UTHFNNGNqQmhk
QW5IY05JOVlRVjNPOExGbW8tRWRaV2s4bnRBYUkiLCBrZXlfb3BzOiBbJ3ZlcmlmeSddIH0sCisg
ICAgICAgIHsga3R5OiAiRUMiLCB1c2U6ICJzaWciLCBleHQ6IHRydWUsIGtleV9vcHM6IFsic2ln
biJdLCBjcnY6ICJQLTI1NiIsIHg6ICIxRlNWV2llVHZpa0ZrRzFOT3loa1VDYU1iZFFoeHdINmFD
dTRFei1zUnRBIiwgeTogIjlqbU5UTHFNNGNqQmhkQW5IY05JOVlRVjNPOExGbW8tRWRaV2s4bnRB
YUkiLCBkOiAicHB4QlNvdjNOOF9BVWNpc0F1dm1MVjR5RThlX0xfQkxFOGJaYjlaMVhqZyIgfSwK
KyAgICAgICAgeyBrdHk6ICJvY3QiLCBrOiAiWVdKalpHVm1aMmd4TWpNME5UWTNPQSIsIGFsZzog
IkhTMjU2IiwgdXNlOiAic2lnIiwga2V5X29wczogWyJzaWduIiwgInZlcmlmeSJdLCBleHQ6IHRy
dWUsIH0sCisgICAgICAgIHsga3R5OiAiUlNBIiwgYWxnOiAiUFMyNTYiLCB1c2U6ICJzaWciLCBr
ZXlfb3BzOiBbInZlcmlmeSJdLCBleHQ6IHRydWUsIG46ICJyY0NVQ3Y3T2MxSFZhbTFESWhDenFr
blRoV2F3T3A4UUxrOFppeTJwMTBCeWpRRkNham9GaXl1QVdsLVIxV1haYWY0eGl0TFJyYWNUOWFn
cHpJemMtTWJMU0hJR2dXUUdPMjFsR2lJbXk1ZnRaLUQ4YkhBcVJ6MnkxNXB6RDRjNENFb3U3WFNT
TERvUm5SMFFHNU1zRGhENnMyZ1Y5bXdIa3J0a0N4dE1XZEJpLTc3YXM4d0dtbE5SbGRjT1NnWkRM
SzhVbkNTZ0ExT2d1Wjk4OWJGeWM4dE9PRUliMHhVU2ZQU3ozTFBTQ255WXo2OGFEam1LVmVOSC1p
Zzg1N09TY3lXYkd5RXkzQml3NjRxdW4zanVVbE5Xc0ozem5na09kdGVZV3l0eDVRcjRYS05zNlIt
TXl5cTcyS1VwMDJtSkRaaWl5aWdseE1MX2kzLV9DZWVjQ3ciLCBlOiAiQVFBQiIgfSwKKyAgICAg
ICAgeyBrdHk6ICJSU0EiLCBhbGc6ICJQUzEiLCB1c2U6ICJzaWciLCBrZXlfb3BzOiBbInNpZ24i
XSwgZXh0OiB0cnVlLCBuOiAicmNDVUN2N09jMUhWYW0xREloQ3pxa25UaFdhd09wOFFMazhaaXky
cDEwQnlqUUZDYWpvRml5dUFXbC1SMVdYWmFmNHhpdExScmFjVDlhZ3B6SXpjLU1iTFNISUdnV1FH
TzIxbEdpSW15NWZ0Wi1EOGJIQXFSejJ5MTVwekQ0YzRDRW91N1hTU0xEb1JuUjBRRzVNc0RoRDZz
MmdWOW13SGtydGtDeHRNV2RCaS03N2FzOHdHbWxOUmxkY09TZ1pETEs4VW5DU2dBMU9ndVo5ODli
RnljOHRPT0VJYjB4VVNmUFN6M0xQU0NueVl6NjhhRGptS1ZlTkgtaWc4NTdPU2N5V2JHeUV5M0Jp
dzY0cXVuM2p1VWxOV3NKM3puZ2tPZHRlWVd5dHg1UXI0WEtOczZSLU15eXE3MktVcDAybUpEWmlp
eWlnbHhNTF9pMy1fQ2VlY0N3IiwgZTogIkFRQUIiLCBkOiAiZU5MUzM3YUN6N1JYU05QRF9EdExC
SjZqNVQ4Y1N4ZHpSQkNqUGFJNldjR3FKcDE2bHEzVVR3dW9ETEFxbEE5b0dZbTIzOGRzSVdwdXVj
UF9sUXRiV2UtN1NweG9JNl92bVlHZjdZVlVIdjEtREY5cWlPbVNyTW1keE1uVk96WVhZOFJhVDZ0
aFBqbl9KNWNmTFYyeElfTHdzck10bXBkU3lObGdYMHpUVWh3dHVhaGdBS01FQ2hZakgyRW5qSGRI
dzZzWTItd0FwZGNRSTdVTEUwb281UnpiUVpwbXVoY045aGlCYzBMM2hoRjBxbzUwbWJsMDJfNjVf
R1E3RHBWa1hCeE5nUkJMemxQYWJtenpHMm9BaGZlZkxnWW1TQzFvcGFDa1hFNnZSV1FOV05MNDVS
Wk5aRllNM3VvSmdoT01xR2VvY00wQnBqZENoSHJQT2xGdlNRIiwgcDogIjRtaVR1QWpLTWVINXVK
NUtCMzk3UVV3aGJrWUVnU2JjQTJtaWZtU2t2RTIwMThnYjU1cWtCSEsxZVZyeWYxX200M0xObGM2
T19hazZnZnpkWkladlM1TkNHalBsMHEwOXBsVXB1OHFGT1NzcEJ3QTY3cUdINzZsRmxaTG5fZDR5
Z2xTN3dmTHJ1NF81WXM4cUxMcy1EcVZMdml3cG9zT255eVdxd001QVhwMCIsIHE6ICJ4SFlyemtp
dnRtbnpfc0djaG5XR2MwcS1wRE9rS2ljcHRScHYycE1GSUlYeG5GWDVhTWVFWElaalZ1alh0d1V5
MVVsRklOMkdaSlN2eTVLSjc5bXVfWHlObkZITXplZEgtQTNlZTN1OGgxVVVyWkYtdlV1MV9lNFVf
eDY3Tk4xZGVkelVTS3luTjdwRmwzT2t1U2hNQldHVi1jd3pPUGRjVkFmVnVabHhVTWMiLCBkcDog
ImZCekR6WURVQm1CUUdvcDdIbjBkdmZfVDI3VjZScXBjdFdvMDc0Q1FaY0ZiUDJhdEZWdEtTajN2
aVdUM3hpZDJWSHpjZ2lESGRmcE0zbkVWbEVPMXd3SW9uR0NTdmRqR0VPWmlpRlZPanJaQU9WeEE4
Z3VPanl5RnZxYlhrZTA2VndQSUlWdmZLZVNVMnp1aGJQX18xdHQ2Rl9meG93NEtiMnhvbkdUMEdH
ayIsIGRxOiAiam1FMkRpSVBkaHdEZ0xYQVFwSWFCcVE4MWJPM1hmVlRfTFJVTEF3d3d3bFB1UVYx
NDhIMDR6bGg5VEo2WTJHWkhZb2tWMVUwZU9CcEp4ZmtiN2RMWXRwSnB1aUJqUmY0eUlVRW9HbGtr
SV9RbEpuRlNGci1ZakdSZGZOSHFXQmt4bFNNWkw3NzBSOW1JQVRuZEdrSDd6NXgtcjlLd0JaRkM0
RkNHMmhnX3pFIiwgcWk6ICJZQ1hfcEx3Yk1CQTFUaFZIMFdjd21ueXRxTmNyTUNFd1RtN0J5QTJl
VTZuV2JRclVMdmY3bTlfa3pmTFVjanNucEFWbEJRRzVKTVhNeTBTcTRwdHdieXdzYTUtRzhLQU9P
T1IyTDN2NGhDLUV5czlmdGdGTV8zaTBvNDBlZVFINGIzaGFQYm50ckllTWc4SXpsT3VWWUtmOS0y
UXVLRG9XZVJkZDdOc2R4VGsiIH0KKyAgICBdOworCisgICAgY29uc3Qgb3BlblJlcXVlc3QgPSBp
bmRleGVkREIub3BlbigiYmFja3dhcmRfY29tcGF0aWJpbGl0eSIpOwogICAgIG9wZW5SZXF1ZXN0
Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewogICAgICAgICBsb2coIkVycm9yOiAiICsgZXZl
bnQudGFyZ2V0LmVycm9yLm5hbWUpOwotICAgIH0KKyAgICB9OwogICAgIG9wZW5SZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIGRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdDsKICAgICAgICAgcmVhZFR5cGUoKTsKLSAgICB9CisgICAgfTsKIAotICAgIHZhciByZXN1
bHQgPSB0cnVlOworICAgIGxldCByZXN1bHQgPSB0cnVlOwogICAgIGZ1bmN0aW9uIHJlYWRUeXBl
KCkKICAgICB7Ci0gICAgICAgIHZhciBvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCJ0eXBl
Iikub2JqZWN0U3RvcmUoInR5cGUiKTsKKyAgICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi50
cmFuc2FjdGlvbigidHlwZSIpLm9iamVjdFN0b3JlKCJ0eXBlIik7CiAgICAgICAgIG9iamVjdFN0
b3JlLm9wZW5DdXJzb3IoKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewogICAgICAgICAg
ICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAgICAgICAgICAgIGlmIChjdXJzb3Ip
IHsKQEAgLTY5LDcgKzkyLDcgQEAKIAogICAgIGZ1bmN0aW9uIHJlYWRWYWx1ZSgpCiAgICAgewot
ICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigidmFsdWUiKS5vYmplY3RT
dG9yZSgidmFsdWUiKTsKKyAgICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlv
bigidmFsdWUiKS5vYmplY3RTdG9yZSgidmFsdWUiKTsKICAgICAgICAgb2JqZWN0U3RvcmUub3Bl
bkN1cnNvcigpLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgICAgICBjdXJz
b3IgPSBldmVudC50YXJnZXQucmVzdWx0OwogICAgICAgICAgICAgaWYgKGN1cnNvcikgewpAQCAt
ODIsMTIgKzEwNSwyNyBAQAogCiAgICAgZnVuY3Rpb24gcmVhZFR5cGVWYWx1ZSgpCiAgICAgewot
ICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigidHlwZVZhbHVlIikub2Jq
ZWN0U3RvcmUoInR5cGVWYWx1ZSIpOworICAgICAgICBjb25zdCBvYmplY3RTdG9yZSA9IGRiLnRy
YW5zYWN0aW9uKCJ0eXBlVmFsdWUiKS5vYmplY3RTdG9yZSgidHlwZVZhbHVlIik7CiAgICAgICAg
IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewog
ICAgICAgICAgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAgICAgICAgICAgIGlm
IChjdXJzb3IpIHsKICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgJiYgc2hvdWxkQmVU
eXBlKCJjdXJzb3IudmFsdWUiLCB0ZXN0VHlwZVZhbHVlc1tjdXJzb3Iua2V5IC0gMV0udHlwZSkg
JiYgKGN1cnNvci52YWx1ZSA9PSB0ZXN0VHlwZVZhbHVlc1tjdXJzb3Iua2V5IC0gMV0udmFsdWUp
OwogICAgICAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICByZWFkQ3J5cHRvS2V5KCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH07CisgICAgfQorCisgICAgYXN5bmMgZnVuY3Rpb24gcmVhZENyeXB0b0tleSgpCisgICAg
eworICAgICAgICBjb25zdCBvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCJjcnlwdG9LZXki
KS5vYmplY3RTdG9yZSgiY3J5cHRvS2V5Iik7CisgICAgICAgIG9iamVjdFN0b3JlLm9wZW5DdXJz
b3IoKS5vbnN1Y2Nlc3MgPSBhc3luYyBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgY3Vy
c29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgIGlmIChjdXJzb3IpIHsKKyAg
ICAgICAgICAgICAgICBjb25zdCBqd2tLZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmV4cG9ydEtl
eSgiandrIiwgY3Vyc29yLnZhbHVlKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQg
JiYgc2hvdWxkQmVDcnlwdG9LZXkoandrS2V5LCB0ZXN0Q3J5cHRvS2V5VmFsdWVzW2N1cnNvci5r
ZXkgLSAxXSk7CisgICAgICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CiAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICAgICAg
ICAgIGxvZygiUGFzcyIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9JbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHlX
cml0ZS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVk
REJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHlXcml0ZS5odG1sCmluZGV4IGIy
NjZlY2M0ZWFhYjE5Y2ZhNWZlMTliN2FiOTMzM2NhMzA0MTUzNDcuLjBlMDhkNDNmZGM2NjA4NzY2
MmU3OGE0NjhiZWRkMGE3M2ZiOThkNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRp
YmlsaXR5V3JpdGUuaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVdyaXRlLmh0
bWwKQEAgLTEsMjEgKzEsMjEgQEAKIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gbG9nKG1zZykKICAg
ICB7Ci0vLyAgICAgICAgYWxlcnQobXNnKTsKKyAgICAgICAgLy8gYWxlcnQobXNnKTsKICAgICAg
ICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2Uo
bXNnKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzaG91bGRCZVR5cGUoX2EsIF90eXBlKQogICAg
IHsKLSAgICAgICAgdmFyIGV4Y2VwdGlvbjsKLSAgICAgICAgdmFyIF9hdjsKKyAgICAgICAgbGV0
IGV4Y2VwdGlvbjsKKyAgICAgICAgbGV0IF9hdjsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAg
IF9hdiA9IGV2YWwoX2EpOwogICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICBleGNl
cHRpb24gPSBlOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIF90eXBldiA9IGV2YWwoX3R5cGUp
OworICAgICAgICBjb25zdCBfdHlwZXYgPSBldmFsKF90eXBlKTsKICAgICAgICAgaWYgKF9hdiBp
bnN0YW5jZW9mIF90eXBldikgewogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0g
ZWxzZSB7CkBAIC0yMyw4ICsyMywyMSBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgZnVuY3Rp
b24gc2hvdWxkQmVDcnlwdG9LZXkoX2EsIF9rZXkpCisgICAgeworICAgICAgICBpZiAoIShKU09O
LnN0cmluZ2lmeShfa2V5LmtleV9vcHMpID09IEpTT04uc3RyaW5naWZ5KF9hLmtleV9vcHMpKSB8
fCAhKF9rZXkuZXh0ID09IF9hLmV4dCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmIChfa2V5Lmt0eSAgPT0gIm9jdCIgJiYgX2Eua3R5ID09ICJvY3QiKQorICAgICAgICAg
ICAgcmV0dXJuIChfa2V5LmsgPT0gX2EuaykgJiYgKF9rZXkuYWxnID09IF9hLmFsZyk7CisgICAg
ICAgIGlmIChfa2V5Lmt0eSAgPT0gIkVDIiAmJiBfYS5rdHkgPT0gIkVDIikKKyAgICAgICAgICAg
IHJldHVybiAoX2tleS5rID09IF9hLmspICYmIChfa2V5LmNydiA9PSBfYS5jcnYpICYmIChfa2V5
LnggPT0gX2EueCkgJiYgKF9rZXkueSA9PSBfYS55KSAmJiAoX2tleS5kID09IF9hLmQpOworICAg
ICAgICBpZiAoX2tleS5rdHkgID09ICJSU0EiICYmIF9hLmt0eSA9PSAiUlNBIikKKyAgICAgICAg
ICAgIHJldHVybiAoX2tleS5hbGcgPT0gX2EuYWxnKSAmJiAoX2tleS5uID09IF9hLm4pICYmIChf
a2V5LmUgPT0gX2EuZSkgJiYgKF9rZXkuZCA9PSBfYS5kKSAmJiAoX2tleS5wID09IF9hLnApICYm
IChfa2V5LnEgPT0gX2EucSkgJiYgKF9rZXkuZHAgPT0gX2EuZHApICYmIChfa2V5LmRxID09IF9h
LmRxKSAmJiAoX2tleS5xaSA9PSBfYS5xaSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKICAgICAvLyBWYWx1ZXMgdGhhdCBhcmUgdXNlZCB0byBpbmZlciB0aGUgdHlwZSBvZiBhIGdp
dmVuIHByaW1pdGl2ZSB0eXBlLgotICAgIHZhciB0ZXN0VmFsdWVzID0gWworICAgIGNvbnN0IHRl
c3RWYWx1ZXMgPSBbCiAgICAgICAgIHVuZGVmaW5lZCwKICAgICAgICAgbnVsbCwKICAgICAgICAg
NSwgLy8gSW50CkBAIC0zOCwzOSArNTEsNTEgQEAKICAgICBdOwogCiAgICAgLy8gVmFsdWVzIHRo
YXQgYXJlIHVzZWQgdG8gaW5mZXIgdGhlIHR5cGUgb2YgYSBnaXZlbiBCb29sZWFuL1N0cmluZyB0
eXBlLgotICAgIHZhciB0ZXN0VHlwZVZhbHVlcyA9IFsKKyAgICBjb25zdCB0ZXN0VHlwZVZhbHVl
cyA9IFsKICAgICAgICAgeyBpdGVtOiBuZXcgQm9vbGVhbih0cnVlKSwgdHlwZTogIkJvb2xlYW4i
LCB2YWx1ZTogdHJ1ZSB9LAogICAgICAgICB7IGl0ZW06IG5ldyBCb29sZWFuKGZhbHNlKSwgdHlw
ZTogIkJvb2xlYW4iLCB2YWx1ZTogZmFsc2UgfSwKICAgICAgICAgeyBpdGVtOiBuZXcgU3RyaW5n
KCksIHR5cGU6ICJTdHJpbmciLCB2YWx1ZTogIiIgfQogICAgIF07CiAKKyAgICAvLyBWYWx1ZXMg
YXJlIGluIEpXSyBmb3JtYXRzLgorICAgIGNvbnN0IHRlc3RDcnlwdG9LZXlWYWx1ZXMgPSBbCisg
ICAgICAgIHsga3R5OiAib2N0IiwgazogIllXSmpaR1ZtWjJneE1qTTBOVFkzT0EiLCBhbGc6ICJB
MTI4Q0JDIiwgdXNlOiAiZW5jIiwga2V5X29wczogWydkZWNyeXB0JywgJ2VuY3J5cHQnLCAndW53
cmFwS2V5JywgJ3dyYXBLZXknXSwgZXh0OiB0cnVlIH0sCisgICAgICAgIHsga3R5OiAiRUMiLCB1
c2U6ICJzaWciLCBleHQ6IHRydWUsIGNydjogIlAtMjU2IiwgeDogIjFGU1ZXaWVUdmlrRmtHMU5P
eWhrVUNhTWJkUWh4d0g2YUN1NEV6LXNSdEEiLCB5OiAiOWptTlRMcU00Y2pCaGRBbkhjTkk5WVFW
M084TEZtby1FZFpXazhudEFhSSIsIGtleV9vcHM6IFsndmVyaWZ5J10gfSwKKyAgICAgICAgeyBr
dHk6ICJFQyIsIHVzZTogInNpZyIsIGV4dDogdHJ1ZSwga2V5X29wczogWyJzaWduIl0sIGNydjog
IlAtMjU2IiwgeDogIjFGU1ZXaWVUdmlrRmtHMU5PeWhrVUNhTWJkUWh4d0g2YUN1NEV6LXNSdEEi
LCB5OiAiOWptTlRMcU00Y2pCaGRBbkhjTkk5WVFWM084TEZtby1FZFpXazhudEFhSSIsIGQ6ICJw
cHhCU292M044X0FVY2lzQXV2bUxWNHlFOGVfTF9CTEU4YlpiOVoxWGpnIiB9LAorICAgICAgICB7
IGt0eTogIm9jdCIsIGs6ICJZV0pqWkdWbVoyZ3hNak0wTlRZM09BIiwgYWxnOiAiSFMyNTYiLCB1
c2U6ICJzaWciLCBrZXlfb3BzOiBbInNpZ24iLCAidmVyaWZ5Il0sIGV4dDogdHJ1ZSwgfSwKKyAg
ICAgICAgeyBrdHk6ICJSU0EiLCBhbGc6ICJQUzI1NiIsIHVzZTogInNpZyIsIGtleV9vcHM6IFsi
dmVyaWZ5Il0sIGV4dDogdHJ1ZSwgbjogInJjQ1VDdjdPYzFIVmFtMURJaEN6cWtuVGhXYXdPcDhR
TGs4Wml5MnAxMEJ5alFGQ2Fqb0ZpeXVBV2wtUjFXWFphZjR4aXRMUnJhY1Q5YWdwekl6Yy1NYkxT
SElHZ1dRR08yMWxHaUlteTVmdFotRDhiSEFxUnoyeTE1cHpENGM0Q0VvdTdYU1NMRG9SblIwUUc1
TXNEaEQ2czJnVjltd0hrcnRrQ3h0TVdkQmktNzdhczh3R21sTlJsZGNPU2daRExLOFVuQ1NnQTFP
Z3VaOTg5YkZ5Yzh0T09FSWIweFVTZlBTejNMUFNDbnlZejY4YURqbUtWZU5ILWlnODU3T1NjeVdi
R3lFeTNCaXc2NHF1bjNqdVVsTldzSjN6bmdrT2R0ZVlXeXR4NVFyNFhLTnM2Ui1NeXlxNzJLVXAw
Mm1KRFppaXlpZ2x4TUxfaTMtX0NlZWNDdyIsIGU6ICJBUUFCIiB9LAorICAgICAgICB7IGt0eTog
IlJTQSIsIGFsZzogIlBTMSIsIHVzZTogInNpZyIsIGtleV9vcHM6IFsic2lnbiJdLCBleHQ6IHRy
dWUsIG46ICJyY0NVQ3Y3T2MxSFZhbTFESWhDenFrblRoV2F3T3A4UUxrOFppeTJwMTBCeWpRRkNh
am9GaXl1QVdsLVIxV1haYWY0eGl0TFJyYWNUOWFncHpJemMtTWJMU0hJR2dXUUdPMjFsR2lJbXk1
ZnRaLUQ4YkhBcVJ6MnkxNXB6RDRjNENFb3U3WFNTTERvUm5SMFFHNU1zRGhENnMyZ1Y5bXdIa3J0
a0N4dE1XZEJpLTc3YXM4d0dtbE5SbGRjT1NnWkRMSzhVbkNTZ0ExT2d1Wjk4OWJGeWM4dE9PRUli
MHhVU2ZQU3ozTFBTQ255WXo2OGFEam1LVmVOSC1pZzg1N09TY3lXYkd5RXkzQml3NjRxdW4zanVV
bE5Xc0ozem5na09kdGVZV3l0eDVRcjRYS05zNlItTXl5cTcyS1VwMDJtSkRaaWl5aWdseE1MX2kz
LV9DZWVjQ3ciLCBlOiAiQVFBQiIsIGQ6ICJlTkxTMzdhQ3o3UlhTTlBEX0R0TEJKNmo1VDhjU3hk
elJCQ2pQYUk2V2NHcUpwMTZscTNVVHd1b0RMQXFsQTlvR1ltMjM4ZHNJV3B1dWNQX2xRdGJXZS03
U3B4b0k2X3ZtWUdmN1lWVUh2MS1ERjlxaU9tU3JNbWR4TW5WT3pZWFk4UmFUNnRoUGpuX0o1Y2ZM
VjJ4SV9Md3NyTXRtcGRTeU5sZ1gwelRVaHd0dWFoZ0FLTUVDaFlqSDJFbmpIZEh3NnNZMi13QXBk
Y1FJN1VMRTBvbzVSemJRWnBtdWhjTjloaUJjMEwzaGhGMHFvNTBtYmwwMl82NV9HUTdEcFZrWEJ4
TmdSQkx6bFBhYm16ekcyb0FoZmVmTGdZbVNDMW9wYUNrWEU2dlJXUU5XTkw0NVJaTlpGWU0zdW9K
Z2hPTXFHZW9jTTBCcGpkQ2hIclBPbEZ2U1EiLCBwOiAiNG1pVHVBaktNZUg1dUo1S0IzOTdRVXdo
YmtZRWdTYmNBMm1pZm1Ta3ZFMjAxOGdiNTVxa0JISzFlVnJ5ZjFfbTQzTE5sYzZPX2FrNmdmemRa
SVp2UzVOQ0dqUGwwcTA5cGxVcHU4cUZPU3NwQndBNjdxR0g3NmxGbFpMbl9kNHlnbFM3d2ZMcnU0
XzVZczhxTExzLURxVkx2aXdwb3NPbnl5V3F3TTVBWHAwIiwgcTogInhIWXJ6a2l2dG1uel9zR2No
bldHYzBxLXBET2tLaWNwdFJwdjJwTUZJSVh4bkZYNWFNZUVYSVpqVnVqWHR3VXkxVWxGSU4yR1pK
U3Z5NUtKNzltdV9YeU5uRkhNemVkSC1BM2VlM3U4aDFVVXJaRi12VXUxX2U0VV94NjdOTjFkZWR6
VVNLeW5ON3BGbDNPa3VTaE1CV0dWLWN3ek9QZGNWQWZWdVpseFVNYyIsIGRwOiAiZkJ6RHpZRFVC
bUJRR29wN0huMGR2Zl9UMjdWNlJxcGN0V28wNzRDUVpjRmJQMmF0RlZ0S1NqM3ZpV1QzeGlkMlZI
emNnaURIZGZwTTNuRVZsRU8xd3dJb25HQ1N2ZGpHRU9aaWlGVk9qclpBT1Z4QThndU9qeXlGdnFi
WGtlMDZWd1BJSVZ2ZktlU1UyenVoYlBfXzF0dDZGX2Z4b3c0S2IyeG9uR1QwR0drIiwgZHE6ICJq
bUUyRGlJUGRod0RnTFhBUXBJYUJxUTgxYk8zWGZWVF9MUlVMQXd3d3dsUHVRVjE0OEgwNHpsaDlU
SjZZMkdaSFlva1YxVTBlT0JwSnhma2I3ZExZdHBKcHVpQmpSZjR5SVVFb0dsa2tJX1FsSm5GU0Zy
LVlqR1JkZk5IcVdCa3hsU01aTDc3MFI5bUlBVG5kR2tIN3o1eC1yOUt3QlpGQzRGQ0cyaGdfekUi
LCBxaTogIllDWF9wTHdiTUJBMVRoVkgwV2N3bW55dHFOY3JNQ0V3VG03QnlBMmVVNm5XYlFyVUx2
ZjdtOV9remZMVWNqc25wQVZsQlFHNUpNWE15MFNxNHB0d2J5d3NhNS1HOEtBT09PUjJMM3Y0aEMt
RXlzOWZ0Z0ZNXzNpMG80MGVlUUg0YjNoYVBibnRySWVNZzhJemxPdVZZS2Y5LTJRdUtEb1dlUmRk
N05zZHhUayIgfQorICAgIF07CisKICAgICBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoImJhY2t3
YXJkX2NvbXBhdGliaWxpdHkiKTsKLSAgICB2YXIgb3BlblJlcXVlc3QgPSBpbmRleGVkREIub3Bl
bigiYmFja3dhcmRfY29tcGF0aWJpbGl0eSIpOworICAgIGNvbnN0IG9wZW5SZXF1ZXN0ID0gaW5k
ZXhlZERCLm9wZW4oImJhY2t3YXJkX2NvbXBhdGliaWxpdHkiKTsKICAgICBvcGVuUmVxdWVzdC5v
bnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgewogICAgICAgICAvLyBUaGlzIG9iamVj
dFN0b3JlIHN0b3JlcyBlbGVtZW50cyB0aGF0IHdlIG9ubHkgbmVlZCB0byBjaGVjayBpdHMgdHlw
ZSB0byBkZXRlcm1pbmUgaXRzIHNlcmlhbGl6YXRpb24gdGFnLgotICAgICAgICB2YXIgb2JqZWN0
U3RvcmUgPSBldmVudC50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3JlKCJ0eXBlIik7Cisg
ICAgICAgIGV2ZW50LnRhcmdldC5yZXN1bHQuY3JlYXRlT2JqZWN0U3RvcmUoInR5cGUiKTsKICAg
ICAgICAgLy8gVGhpcyBvYmplY3RTdG9yZSBzdG9yZXMgZWxlbWVudHMgdGhhdCB3ZSBuZWVkIHRv
IGNoZWNrIGl0cyB2YWx1ZSB0byBkZXRlcm1pbmUgaXRzIHNlcmlhbGl6YXRpb24gdGFnLgotICAg
ICAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmVudC50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0
b3JlKCJ2YWx1ZSIsIHsgYXV0b0luY3JlbWVudCA6IHRydWUgfSk7CisgICAgICAgIGV2ZW50LnRh
cmdldC5yZXN1bHQuY3JlYXRlT2JqZWN0U3RvcmUoInZhbHVlIiwgeyBhdXRvSW5jcmVtZW50IDog
dHJ1ZSB9KTsKICAgICAgICAgLy8gVGhpcyBvYmplY3RTdG9yZSBzdG9yZXMgZWxlbWVudHMgdGhh
dCB3ZSBuZWVkIHRvIGNoZWNrIGJvdGggaXRzIHR5cGUgYW5kIGl0cyB2YWx1ZSB0byBkZXRlcm1p
bmUgaXRzIHNlcmlhbGl6YXRpb24gdGFnLgotICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmVu
dC50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3JlKCJ0eXBlVmFsdWUiLCB7IGF1dG9JbmNy
ZW1lbnQgOiB0cnVlIH0pOwotICAgIH0KKyAgICAgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5jcmVh
dGVPYmplY3RTdG9yZSgidHlwZVZhbHVlIiwgeyBhdXRvSW5jcmVtZW50IDogdHJ1ZSB9KTsKKyAg
ICAgICAgLy8gVGhpcyBvYmplY3RTdG9yZSBzdG9yZXMgY3J5cHRvIGtleXMuCisgICAgICAgIGV2
ZW50LnRhcmdldC5yZXN1bHQuY3JlYXRlT2JqZWN0U3RvcmUoImNyeXB0b0tleSIsIHsgYXV0b0lu
Y3JlbWVudCA6IHRydWUgfSk7CisgICAgfTsKICAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gZnVu
Y3Rpb24oZXZlbnQpIHsKICAgICAgICAgbG9nKCJFcnJvcjogIiArIGV2ZW50LnRhcmdldC5lcnJv
ci5uYW1lKTsKLSAgICB9CisgICAgfTsKICAgICBvcGVuUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbihldmVudCkgewogICAgICAgICBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CiAgICAgICAg
IHN0b3JlVHlwZSgpOwotICAgIH0KKyAgICB9OwogCiAgICAgZnVuY3Rpb24gc3RvcmVUeXBlKCkK
ICAgICB7Ci0gICAgICAgIHZhciB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCJ0eXBlIiwg
InJlYWR3cml0ZSIpOworICAgICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9u
KCJ0eXBlIiwgInJlYWR3cml0ZSIpOwogICAgICAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVu
Y3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAgIGxvZygiRXJyb3I6ICIgKyBldmVudC50YXJnZXQu
ZXJyb3IubmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9
IGZ1bmN0aW9uKGV2ZW50KSB7IHN0b3JlVmFsdWUoKTsgfQorICAgICAgICB9OworICAgICAgICB0
cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsgc3RvcmVWYWx1ZSgpOyB9
OwogCi0gICAgICAgIHZhciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJ0
eXBlIik7CisgICAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3Rv
cmUoInR5cGUiKTsKICAgICAgICAgLy8gVGhlIGtleSBvZiBhbiBpdGVtIGlzIHRoZSB0eXBlIG9m
IGl0cyB2YWx1ZSwgaGVuY2Ugd2UgY291bGQgZGV0ZXJtaW5lIHR5cGUgbWlzbWF0Y2gsIGkuZS4g
c2VyaWFsaXphdGlvbiB0YWcgcmVvcmRlcgogICAgICAgICAvLyBzaW1wbHkgYnkgdXNpbmcgYW4g
aXRlbSdzIGtleSBhbmQgdmFsdWUuCiAgICAgICAgIG9iamVjdFN0b3JlLmFkZChbMSwgMl0sICJB
cnJheSIpOwpAQCAtOTksMzYgKzEyNCw2MCBAQAogCiAgICAgZnVuY3Rpb24gc3RvcmVWYWx1ZSgp
CiAgICAgewotICAgICAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbigidmFsdWUi
LCAicmVhZHdyaXRlIik7CisgICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rp
b24oInZhbHVlIiwgInJlYWR3cml0ZSIpOwogICAgICAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0g
ZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAgIGxvZygiRXJyb3I6ICIgKyBldmVudC50YXJn
ZXQuZXJyb3IubmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7IHN0b3JlVHlwZVZhbHVlKCk7IH0KKyAgICAgICAgfTsKKyAg
ICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7IHN0b3JlVHlw
ZVZhbHVlKCk7IH07CiAKLSAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoInZhbHVlIik7CisgICAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gdHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUoInZhbHVlIik7CiAgICAgICAgIC8vIEhlcmUgd2Ugc3RvcmUgdmFsdWVz
IGluIHRoZSB0ZXN0IG1hdHJpeCBpbiBvcmRlciBhbmQgcmVhZCB0aGVtIGluIG9yZGVyIHRvIHNl
ZSBpZiBhbnkgbWlzbWF0Y2ggaGFwcGVucy4KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
ZXN0VmFsdWVzLmxlbmd0aDsgaSsrKQorICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRlc3RW
YWx1ZXMubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICBvYmplY3RTdG9yZS5hZGQodGVzdFZhbHVl
c1tpXSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RvcmVUeXBlVmFsdWUoKQogICAgIHsKLSAg
ICAgICAgdmFyIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oInR5cGVWYWx1ZSIsICJyZWFk
d3JpdGUiKTsKKyAgICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbigidHlw
ZVZhbHVlIiwgInJlYWR3cml0ZSIpOwogICAgICAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVu
Y3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAgIGxvZygiRXJyb3I6ICIgKyBldmVudC50YXJnZXQu
ZXJyb3IubmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9
IGZ1bmN0aW9uKGV2ZW50KSB7IHJlYWRUeXBlKCk7IH0KKyAgICAgICAgfTsKKyAgICAgICAgdHJh
bnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7IHN0b3JlQ3J5cHRvS2V5KCk7
IH07CiAKLSAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUo
InR5cGVWYWx1ZSIpOworICAgICAgICBjb25zdCBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9i
amVjdFN0b3JlKCJ0eXBlVmFsdWUiKTsKICAgICAgICAgLy8gSGVyZSB3ZSBzdG9yZSBpdGVtcyBp
biB0aGUgdGVzdCBtYXRyaXggaW4gb3JkZXIgYW5kIHJlYWQgdGhlbSBpbiBvcmRlciB0byBzZWUg
aWYgYW55IG1pc21hdGNoZXMgaXRzIHR5cGUgYW5kIHZhbHVlLgotICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHRlc3RUeXBlVmFsdWVzLmxlbmd0aDsgaSsrKQorICAgICAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IHRlc3RUeXBlVmFsdWVzLmxlbmd0aDsgaSsrKQogICAgICAgICAgICAgb2JqZWN0
U3RvcmUuYWRkKHRlc3RUeXBlVmFsdWVzW2ldLml0ZW0pOwogICAgIH0KIAotICAgIHZhciByZXN1
bHQgPSB0cnVlOworICAgIGFzeW5jIGZ1bmN0aW9uIHN0b3JlQ3J5cHRvS2V5KCkKKyAgICB7Cisg
ICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oImNyeXB0b0tleSIsICJy
ZWFkd3JpdGUiKTsKKyAgICAgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgICAgICBsb2coIkVycm9yOiAiICsgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUp
OworICAgICAgICB9OworICAgICAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24o
ZXZlbnQpIHsgcmVhZFR5cGUoKTsgfTsKKworICAgICAgICBjb25zdCBvYmplY3RTdG9yZSA9IHRy
YW5zYWN0aW9uLm9iamVjdFN0b3JlKCJjcnlwdG9LZXkiKTsKKyAgICAgICAgLy8gSGVyZSB3ZSBz
dG9yZSBpdGVtcyBpbiB0aGUgdGVzdCBtYXRyaXggaW4gb3JkZXIgYW5kIHJlYWQgdGhlbSBpbiBv
cmRlciB0byBzZWUgaWYgYW55IG1pc21hdGNoZXMgaXRzIHR5cGUgYW5kIHZhbHVlLgorICAgICAg
ICBsZXQgY3J5cHRvS2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIHRl
c3RDcnlwdG9LZXlWYWx1ZXNbMF0sICJhZXMtY2JjIiwgdHJ1ZSwgWyJlbmNyeXB0IiwgImRlY3J5
cHQiLCAid3JhcEtleSIsICJ1bndyYXBLZXkiXSk7CisgICAgICAgIG9iamVjdFN0b3JlLmFkZChj
cnlwdG9LZXkpOworICAgICAgICBjcnlwdG9LZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9y
dEtleSgiandrIiwgdGVzdENyeXB0b0tleVZhbHVlc1sxXSwgeyBuYW1lOiAiRUNEU0EiLCBuYW1l
ZEN1cnZlOiAiUC0yNTYiIH0sIHRydWUsIFsndmVyaWZ5J10pOworICAgICAgICBvYmplY3RTdG9y
ZS5hZGQoY3J5cHRvS2V5KTsKKyAgICAgICAgY3J5cHRvS2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRs
ZS5pbXBvcnRLZXkoImp3ayIsIHRlc3RDcnlwdG9LZXlWYWx1ZXNbMl0sIHsgbmFtZTogIkVDRFNB
IiwgbmFtZWRDdXJ2ZTogIlAtMjU2IiB9LCB0cnVlLCBbInNpZ24iXSk7CisgICAgICAgIG9iamVj
dFN0b3JlLmFkZChjcnlwdG9LZXkpOworICAgICAgICBjcnlwdG9LZXkgPSBhd2FpdCBjcnlwdG8u
c3VidGxlLmltcG9ydEtleSgiandrIiwgdGVzdENyeXB0b0tleVZhbHVlc1szXSwge25hbWU6ICJo
bWFjIiwgaGFzaDogInNoYS0yNTYifSwgdHJ1ZSwgWyJzaWduIiwgInZlcmlmeSJdKTsKKyAgICAg
ICAgb2JqZWN0U3RvcmUuYWRkKGNyeXB0b0tleSk7CisgICAgICAgIGNyeXB0b0tleSA9IGF3YWl0
IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCB0ZXN0Q3J5cHRvS2V5VmFsdWVzWzRdLCB7
bmFtZTogIlJTQS1QU1MiLCBoYXNoOiAiU0hBLTI1NiJ9LCB0cnVlLCBbInZlcmlmeSJdKTsKKyAg
ICAgICAgb2JqZWN0U3RvcmUuYWRkKGNyeXB0b0tleSk7CisgICAgICAgIGNyeXB0b0tleSA9IGF3
YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCB0ZXN0Q3J5cHRvS2V5VmFsdWVzWzVd
LCB7bmFtZTogIlJTQS1QU1MiLCBoYXNoOiAiU0hBLTEifSwgdHJ1ZSwgWyJzaWduIl0pOworICAg
ICAgICBvYmplY3RTdG9yZS5hZGQoY3J5cHRvS2V5KTsKKyAgICB9CisKKyAgICBsZXQgcmVzdWx0
ID0gdHJ1ZTsKICAgICBmdW5jdGlvbiByZWFkVHlwZSgpCiAgICAgewotICAgICAgICB2YXIgb2Jq
ZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigidHlwZSIpLm9iamVjdFN0b3JlKCJ0eXBlIik7Cisg
ICAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oInR5cGUiKS5vYmplY3RT
dG9yZSgidHlwZSIpOwogICAgICAgICBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkub25zdWNjZXNz
ID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7CiAgICAgICAgICAgICBpZiAoY3Vyc29yKSB7CkBAIC0xNDEsNyArMTkwLDcgQEAKIAog
ICAgIGZ1bmN0aW9uIHJlYWRWYWx1ZSgpCiAgICAgewotICAgICAgICB2YXIgb2JqZWN0U3RvcmUg
PSBkYi50cmFuc2FjdGlvbigidmFsdWUiKS5vYmplY3RTdG9yZSgidmFsdWUiKTsKKyAgICAgICAg
Y29uc3Qgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigidmFsdWUiKS5vYmplY3RTdG9yZSgi
dmFsdWUiKTsKICAgICAgICAgb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpLm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgICAgICBjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
OwogICAgICAgICAgICAgaWYgKGN1cnNvcikgewpAQCAtMTU0LDEyICsyMDMsMjcgQEAKIAogICAg
IGZ1bmN0aW9uIHJlYWRUeXBlVmFsdWUoKQogICAgIHsKLSAgICAgICAgdmFyIG9iamVjdFN0b3Jl
ID0gZGIudHJhbnNhY3Rpb24oInR5cGVWYWx1ZSIpLm9iamVjdFN0b3JlKCJ0eXBlVmFsdWUiKTsK
KyAgICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigidHlwZVZhbHVlIiku
b2JqZWN0U3RvcmUoInR5cGVWYWx1ZSIpOwogICAgICAgICBvYmplY3RTdG9yZS5vcGVuQ3Vyc29y
KCkub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAgIGN1cnNvciA9IGV2
ZW50LnRhcmdldC5yZXN1bHQ7CiAgICAgICAgICAgICBpZiAoY3Vyc29yKSB7CiAgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gcmVzdWx0ICYmIHNob3VsZEJlVHlwZSgiY3Vyc29yLnZhbHVlIiwgdGVz
dFR5cGVWYWx1ZXNbY3Vyc29yLmtleSAtIDFdLnR5cGUpICYmIChjdXJzb3IudmFsdWUgPT0gdGVz
dFR5cGVWYWx1ZXNbY3Vyc29yLmtleSAtIDFdLnZhbHVlKTsKICAgICAgICAgICAgICAgICBjdXJz
b3IuY29udGludWUoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmVh
ZENyeXB0b0tleSgpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKworICAgIGFz
eW5jIGZ1bmN0aW9uIHJlYWRDcnlwdG9LZXkoKQorICAgIHsKKyAgICAgICAgY29uc3Qgb2JqZWN0
U3RvcmUgPSBkYi50cmFuc2FjdGlvbigiY3J5cHRvS2V5Iikub2JqZWN0U3RvcmUoImNyeXB0b0tl
eSIpOworICAgICAgICBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkub25zdWNjZXNzID0gYXN5bmMg
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1
bHQ7CisgICAgICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICAgICAgY29uc3Qgandr
S2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5leHBvcnRLZXkoImp3ayIsIGN1cnNvci52YWx1ZSk7
CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICYmIHNob3VsZEJlQ3J5cHRvS2V5KGp3
a0tleSwgdGVzdENyeXB0b0tleVZhbHVlc1tjdXJzb3Iua2V5IC0gMV0pOworICAgICAgICAgICAg
ICAgIGN1cnNvci5jb250aW51ZSgpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgICAgICAgICBsb2coIlBhc3MiKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA3MDJkZDY1ZmY3MjFlNGI2MjViOWQ3MWE5MTdiYTZiZTQ0MGNmYTUyLi5hZDljMTNhMTdhYzAy
YzI3Y2MxZDQ1MDMxOTNiODUzMmRkNTJlNGQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTkt
MTAtMDIgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBPbmx5
IHdyYXBwaW5nIENyeXB0b0tleXMgZm9yIElEQiBkdXJpbmcgc2VyaWFsaXphdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTAwCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81MjQ0NTkyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgbmV3IHRlc3QgYWVzLWluZGV4ZWRkYi5odG1sIHRv
IGRvIGlkYiBpbiB3b3JrZXJzIGFuZCBtYWtlcworICAgICAgICBvdGhlciB0ZXN0cyBtb3JlIGRl
dGVybWluaXN0aWMuCisKKyAgICAgICAgKiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvYWVzLWluZGV4
ZWRkYi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNyeXB0by93b3JrZXJzL3N1YnRs
ZS9hZXMtaW5kZXhlZGRiLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNyeXB0by93b3JrZXJzL3N1
YnRsZS9lYy1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGNyeXB0
by93b3JrZXJzL3N1YnRsZS9lYy1wb3N0TWVzc2FnZS13b3JrZXIuaHRtbDoKKyAgICAgICAgKiBj
cnlwdG8vd29ya2Vycy9zdWJ0bGUvaHJzYS1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGNyeXB0by93b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdvcmtl
ci5odG1sOgorICAgICAgICAqIGNyeXB0by93b3JrZXJzL3N1YnRsZS9yZXNvdXJjZXMvYWVzLWlu
ZGV4ZWRkYi5qczogQWRkZWQuCisgICAgICAgICogY3J5cHRvL3dvcmtlcnMvc3VidGxlL3JzYS1w
b3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGNyeXB0by93b3JrZXJz
L3N1YnRsZS9yc2EtcG9zdE1lc3NhZ2Utd29ya2VyLmh0bWw6CisKIDIwMTktMTAtMDQgIFRydWl0
dCBTYXZlbGwgIDx0c2F2ZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBMYXlvdXQgVGVzdCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzLzJkY29udGV4dC9saW5lLXN0eWxlcy8yZC5saW5l
LmNhcC5yb3VuZC5odG1sIGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NyeXB0
by93b3JrZXJzL3N1YnRsZS9hZXMtaW5kZXhlZGRiLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2NyeXB0by93b3JrZXJzL3N1YnRsZS9hZXMtaW5kZXhlZGRiLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZmIyMTYwMjdiZTAxYzYyM2IyNDQ2OGM4ZjU4YTg0ZTdiYjVhN2ViCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL2Flcy1pbmRleGVkZGIt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1tXb3JrZXJdIFRlc3QgZ2VuZXJhdGluZyBh
biBBRVMga2V5IHVzaW5nIEFFUy1DQkMgYWxnb3JpdGhtIGluIHdvcmtlcnMuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitTdGFydGluZyB3b3JrZXI6IHJlc291cmNlcy9hZXMtaW5k
ZXhlZGRiLmpzCitbV29ya2VyXSBJbXBvcnRpbmcgYSBrZXkuLi4KK1BBU1MgW1dvcmtlcl0gcmV0
cmlldmVkS2V5LnR5cGUgaXMgJ3NlY3JldCcKK1BBU1MgW1dvcmtlcl0gcmV0cmlldmVkS2V5LmV4
dHJhY3RhYmxlIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gcmV0cmlldmVkS2V5LmFsZ29yaXRobS5u
YW1lIGlzICdBRVMtQ0JDJworUEFTUyBbV29ya2VyXSByZXRyaWV2ZWRLZXkuYWxnb3JpdGhtLmxl
bmd0aCBpcyAxMjgKK1BBU1MgW1dvcmtlcl0gcmV0cmlldmVkS2V5LnVzYWdlcyBpcyBbJ2RlY3J5
cHQnLCAnZW5jcnlwdCcsICd1bndyYXBLZXknLCAnd3JhcEtleSddCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL2Flcy1pbmRleGVkZGIuaHRtbCBiL0xheW91dFRlc3Rz
L2NyeXB0by93b3JrZXJzL3N1YnRsZS9hZXMtaW5kZXhlZGRiLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTc4
MmU3NGRiMGFmMTMyZDE4NDIyYzFiY2Q3M2U5MmYzNGNkMmQwYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9hZXMtaW5kZXhlZGRiLmh0bWwKQEAg
LTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIHdvcmtlciA9IHN0YXJ0V29ya2VyKCdyZXNvdXJj
ZXMvYWVzLWluZGV4ZWRkYi5qcycpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvZWMtcG9zdE1lc3Nh
Z2Utd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRs
ZS9lYy1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IDc1YmM3OWVlN2FlMzBm
N2JhNWY5OTU3NDcwMDJiYjgwYWZiOWI0NmMuLjJmOWIzYTA2ZmUzMzEzZWFmZDQwZjdiYzQ1NDRk
MGNiNTAxMDc4ZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRs
ZS9lYy1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Ny
eXB0by93b3JrZXJzL3N1YnRsZS9lYy1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0CkBA
IC0zLDYgKzMsMTQgQEAgVGVzdCBzZW5kaW5nIGVjIGNyeXB0byBrZXlzIHZpYSBwb3N0TWVzc2Fn
ZSB0byBhIHdvcmtlci4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitQQVNTIEFsbCBj
aGVja3MgcGFzc2VkIGluIHdvcmtlciBmb3IgcHVibGljIGtleQorUEFTUyBwdWJsaWNLZXkudHlw
ZSBpcyAncHVibGljJworUEFTUyBwdWJsaWNLZXkuZXh0cmFjdGFibGUgaXMgdHJ1ZQorUEFTUyBw
dWJsaWNLZXkuYWxnb3JpdGhtLm5hbWUgaXMgJ0VDREgnCitQQVNTIHB1YmxpY0tleS5hbGdvcml0
aG0ubmFtZWRDdXJ2ZSBpcyAnUC0yNTYnCitQQVNTIHB1YmxpY0tleS51c2FnZXMgaXMgWyBdCitQ
QVNTIGV4cG9ydGVkS2V5LnggaXMgcHVibGljS2V5SlNPTi54CitQQVNTIGV4cG9ydGVkS2V5Lnkg
aXMgcHVibGljS2V5SlNPTi55CiBQQVNTIEFsbCBjaGVja3MgcGFzc2VkIGluIHdvcmtlciBmb3Ig
cHJpdmF0ZSBrZXkKIFBBU1MgcHJpdmF0ZUtleS50eXBlIGlzICdwcml2YXRlJwogUEFTUyBwcml2
YXRlS2V5LmV4dHJhY3RhYmxlIGlzIHRydWUKQEAgLTEyLDE0ICsyMCw2IEBAIFBBU1MgcHJpdmF0
ZUtleS51c2FnZXMgaXMgWydkZXJpdmVCaXRzJ10KIFBBU1MgZXhwb3J0ZWRLZXkueCBpcyBwcml2
YXRlS2V5SlNPTi54CiBQQVNTIGV4cG9ydGVkS2V5LnkgaXMgcHJpdmF0ZUtleUpTT04ueQogUEFT
UyBleHBvcnRlZEtleS5kIGlzIHByaXZhdGVLZXlKU09OLmQKLVBBU1MgQWxsIGNoZWNrcyBwYXNz
ZWQgaW4gd29ya2VyIGZvciBwdWJsaWMga2V5Ci1QQVNTIHB1YmxpY0tleS50eXBlIGlzICdwdWJs
aWMnCi1QQVNTIHB1YmxpY0tleS5leHRyYWN0YWJsZSBpcyB0cnVlCi1QQVNTIHB1YmxpY0tleS5h
bGdvcml0aG0ubmFtZSBpcyAnRUNESCcKLVBBU1MgcHVibGljS2V5LmFsZ29yaXRobS5uYW1lZEN1
cnZlIGlzICdQLTI1NicKLVBBU1MgcHVibGljS2V5LnVzYWdlcyBpcyBbIF0KLVBBU1MgZXhwb3J0
ZWRLZXkueCBpcyBwdWJsaWNLZXlKU09OLngKLVBBU1MgZXhwb3J0ZWRLZXkueSBpcyBwdWJsaWNL
ZXlKU09OLnkKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVU
RQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL2VjLXBvc3RN
ZXNzYWdlLXdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL2Vj
LXBvc3RNZXNzYWdlLXdvcmtlci5odG1sCmluZGV4IDRhMTY2NjZkZmIyNDY5YTU0YTY0ZWM2MTRl
YmYxNWQ1MTQ0MDE4MTIuLjVmOTEwMzdhYjFhOGY3NDg3MTY5NWU4MTdlNTdkNGRkZGU0NjY0ZjYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9lYy1wb3N0TWVz
c2FnZS13b3JrZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUv
ZWMtcG9zdE1lc3NhZ2Utd29ya2VyLmh0bWwKQEAgLTgxLDkgKzgxLDkgQEAgd29ya2VyLm9ubWVz
c2FnZSA9IGZ1bmN0aW9uKGV2dCkgewogCiBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwg
cHVibGljS2V5SlNPTiwgeyBuYW1lOiJFQ0RIIiwgbmFtZWRDdXJ2ZToiUC0yNTYiIH0sIHRydWUs
IFsgXSkudGhlbihmdW5jdGlvbihsb2NhbFB1YmxpY0tleSkgewogICAgIHdvcmtlci5wb3N0TWVz
c2FnZSh7IHB1YmxpY0tleTogbG9jYWxQdWJsaWNLZXkgfSk7Ci19KTsKLWNyeXB0by5zdWJ0bGUu
aW1wb3J0S2V5KCJqd2siLCBwcml2YXRlS2V5SlNPTiwgeyBuYW1lOiJFQ0RIIiwgbmFtZWRDdXJ2
ZToiUC0yNTYiIH0sIHRydWUsIFsnZGVyaXZlQml0cyddKS50aGVuKGZ1bmN0aW9uKGxvY2FsUHJp
dmF0ZUtleSkgewotICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7IHByaXZhdGVLZXk6IGxvY2FsUHJp
dmF0ZUtleSB9KTsKKyAgICBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgcHJpdmF0ZUtl
eUpTT04sIHsgbmFtZToiRUNESCIsIG5hbWVkQ3VydmU6IlAtMjU2IiB9LCB0cnVlLCBbJ2Rlcml2
ZUJpdHMnXSkudGhlbihmdW5jdGlvbihsb2NhbFByaXZhdGVLZXkpIHsKKyAgICAgICAgd29ya2Vy
LnBvc3RNZXNzYWdlKHsgcHJpdmF0ZUtleTogbG9jYWxQcml2YXRlS2V5IH0pOworICAgIH0pOwog
fSk7CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJz
L3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvaHJzYS1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQu
dHh0CmluZGV4IDBlZDc0ZjlmZmY0Y2MxZmYyYjJhNTFlZjAyM2QyYWQwM2ZjYjY4NmYuLjZlMWQ2
ZmU1MzA4MjdkNDlmOGVjOWY2NmY2MTcxMjI0NzM0YTMyZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdvcmtlci1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxlL2hyc2EtcG9zdE1l
c3NhZ2Utd29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMywxNCArMyw2IEBAIFRlc3Qgc2VuZGluZyBo
YXNoZWQgcnNhIGNyeXB0byBrZXlzIHZpYSBwb3N0TWVzc2FnZSB0byBhIHdvcmtlci4KIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIEFsbCBjaGVja3MgcGFzc2VkIGluIHdvcmtl
ciBmb3IgcHJpdmF0ZSBrZXkKLVBBU1MgcHJpdmF0ZUtleS50eXBlIGlzICdwcml2YXRlJwotUEFT
UyBwcml2YXRlS2V5LmV4dHJhY3RhYmxlIGlzIGZhbHNlCi1QQVNTIHByaXZhdGVLZXkuYWxnb3Jp
dGhtLm5hbWUgaXMgJ1JTQVNTQS1QS0NTMS12MV81JwotUEFTUyBwcml2YXRlS2V5LmFsZ29yaXRo
bS5tb2R1bHVzTGVuZ3RoIGlzIDIwNDgKLVBBU1MgYnl0ZXNUb0hleFN0cmluZyhwcml2YXRlS2V5
LmFsZ29yaXRobS5wdWJsaWNFeHBvbmVudCkgaXMgJzAxMDAwMScKLVBBU1MgcHJpdmF0ZUtleS5h
bGdvcml0aG0uaGFzaC5uYW1lIGlzICdTSEEtMjU2JwotUEFTUyBwcml2YXRlS2V5LnVzYWdlcyBp
cyBbJ3NpZ24nXQogUEFTUyBBbGwgY2hlY2tzIHBhc3NlZCBpbiB3b3JrZXIgZm9yIHB1YmxpYyBr
ZXkKIFBBU1MgcHVibGljS2V5LnR5cGUgaXMgJ3B1YmxpYycKIFBBU1MgcHVibGljS2V5LmV4dHJh
Y3RhYmxlIGlzIHRydWUKQEAgLTE5LDYgKzExLDE0IEBAIFBBU1MgcHVibGljS2V5LmFsZ29yaXRo
bS5tb2R1bHVzTGVuZ3RoIGlzIDIwNDgKIFBBU1MgYnl0ZXNUb0hleFN0cmluZyhwdWJsaWNLZXku
YWxnb3JpdGhtLnB1YmxpY0V4cG9uZW50KSBpcyAnMDEwMDAxJwogUEFTUyBwdWJsaWNLZXkuYWxn
b3JpdGhtLmhhc2gubmFtZSBpcyAnU0hBLTI1NicKIFBBU1MgcHVibGljS2V5LnVzYWdlcyBpcyBb
J3ZlcmlmeSddCitQQVNTIEFsbCBjaGVja3MgcGFzc2VkIGluIHdvcmtlciBmb3IgcHJpdmF0ZSBr
ZXkKK1BBU1MgcHJpdmF0ZUtleS50eXBlIGlzICdwcml2YXRlJworUEFTUyBwcml2YXRlS2V5LmV4
dHJhY3RhYmxlIGlzIGZhbHNlCitQQVNTIHByaXZhdGVLZXkuYWxnb3JpdGhtLm5hbWUgaXMgJ1JT
QVNTQS1QS0NTMS12MV81JworUEFTUyBwcml2YXRlS2V5LmFsZ29yaXRobS5tb2R1bHVzTGVuZ3Ro
IGlzIDIwNDgKK1BBU1MgYnl0ZXNUb0hleFN0cmluZyhwcml2YXRlS2V5LmFsZ29yaXRobS5wdWJs
aWNFeHBvbmVudCkgaXMgJzAxMDAwMScKK1BBU1MgcHJpdmF0ZUtleS5hbGdvcml0aG0uaGFzaC5u
YW1lIGlzICdTSEEtMjU2JworUEFTUyBwcml2YXRlS2V5LnVzYWdlcyBpcyBbJ3NpZ24nXQogUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvaHJzYS1wb3N0TWVzc2FnZS13b3Jr
ZXIuaHRtbCBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RNZXNz
YWdlLXdvcmtlci5odG1sCmluZGV4IDdhNDM1ZmU1ZWUzNGY0OTM0MmQ5MjZkN2FiM2FiN2UxYzdj
YmI5OGQuLmU5ZWQ4YzkyZTAzMDdlMDgzZjljNDY3MThkYWI5YmJjZTVhNDQwZGUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdv
cmtlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJzL3N1YnRsZS9ocnNhLXBv
c3RNZXNzYWdlLXdvcmtlci5odG1sCkBAIC03NSw5ICs3NSw5IEBAIHdvcmtlci5vbm1lc3NhZ2Ug
PSBmdW5jdGlvbihldnQpIHsKIAogY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIHB1Ymxp
Y0tleUpTT04sIGFsZ29yaXRobUtleUdlbiwgdHJ1ZSwgWyd2ZXJpZnknXSkudGhlbihmdW5jdGlv
bihsb2NhbFB1YmxpY0tleSkgewogICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7IHB1YmxpY0tleTog
bG9jYWxQdWJsaWNLZXkgfSk7Ci19KTsKLWNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBw
cml2YXRlS2V5SlNPTiwgYWxnb3JpdGhtS2V5R2VuLCBmYWxzZSwgWydzaWduJ10pLnRoZW4oZnVu
Y3Rpb24obG9jYWxQcml2YXRlS2V5KSB7Ci0gICAgd29ya2VyLnBvc3RNZXNzYWdlKHsgcHJpdmF0
ZUtleTogbG9jYWxQcml2YXRlS2V5IH0pOworICAgIGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJq
d2siLCBwcml2YXRlS2V5SlNPTiwgYWxnb3JpdGhtS2V5R2VuLCBmYWxzZSwgWydzaWduJ10pLnRo
ZW4oZnVuY3Rpb24obG9jYWxQcml2YXRlS2V5KSB7CisgICAgICAgIHdvcmtlci5wb3N0TWVzc2Fn
ZSh7IHByaXZhdGVLZXk6IGxvY2FsUHJpdmF0ZUtleSB9KTsKKyAgICB9KTsKIH0pOwogPC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvcmVz
b3VyY2VzL2Flcy1pbmRleGVkZGIuanMgYi9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0
bGUvcmVzb3VyY2VzL2Flcy1pbmRleGVkZGIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJkOGRjOWI4ODllMDgx
ZTgxNmM1Y2FiMjhkOGFjNzQ2NTg3YmRhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2NyeXB0by93b3JrZXJzL3N1YnRsZS9yZXNvdXJjZXMvYWVzLWluZGV4ZWRkYi5qcwpAQCAtMCww
ICsxLDUxIEBACitpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMnKTsKKworZGVzY3JpcHRpb24oIlRlc3QgZ2VuZXJhdGluZyBhbiBBRVMga2V5IHVzaW5n
IEFFUy1DQkMgYWxnb3JpdGhtIGluIHdvcmtlcnMuIik7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworY29uc3QgandrS2V5ID0geyBrdHk6ICJvY3QiLCBrOiAiWVdKalpHVm1aMmd4TWpNME5UWTNP
QSIsIGFsZzogIkExMjhDQkMiLCB1c2U6ICJlbmMiLCBrZXlfb3BzOiBbJ2RlY3J5cHQnLCAnZW5j
cnlwdCcsICd1bndyYXBLZXknLCAnd3JhcEtleSddLCBleHQ6IHRydWUgfTsKKworZGVidWcoIklt
cG9ydGluZyBhIGtleS4uLiIpOworY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIGp3a0tl
eSwgImFlcy1jYmMiLCB0cnVlLCBbImVuY3J5cHQiLCAiZGVjcnlwdCIsICJ3cmFwS2V5IiwgInVu
d3JhcEtleSJdKS50aGVuKGZ1bmN0aW9uKGtleSkgeworICAgIGNvbnN0IG9wZW5SZXF1ZXN0ID0g
aW5kZXhlZERCLm9wZW4oImNyeXB0b19zdWJ0bGUiKTsKKyAgICBvcGVuUmVxdWVzdC5vbnVwZ3Jh
ZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBldmVudC50YXJnZXQucmVzdWx0
LmNyZWF0ZU9iamVjdFN0b3JlKCJhZXMtaW5kZXhlZGRiIik7CisgICAgfTsKKyAgICBvcGVuUmVx
dWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291
bGQgbm90IG9wZW4gZGF0YWJhc2U6ICIgKyBldmVudC50YXJnZXQuZXJyb3IubmFtZSk7CisgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH07CisgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAg
ICAgICBzdG9yZUtleSgpOworICAgIH07CisKKyAgICBmdW5jdGlvbiBzdG9yZUtleSgpIHsKKyAg
ICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigiYWVzLWluZGV4ZWRkYiIs
ICJyZWFkd3JpdGUiKS5vYmplY3RTdG9yZSgiYWVzLWluZGV4ZWRkYiIpOworICAgICAgICBjb25z
dCByZXEgPSBvYmplY3RTdG9yZS5wdXQoa2V5LCAibXlLZXkiKTsKKyAgICAgICAgcmVxLm9uZXJy
b3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90
IHB1dCBhIGtleSBpbnRvIGRhdGFiYXNlOiAiICsgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUpOwor
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHJlcS5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpIHsgcmVhZEtleSgpOyB9CisgICAgfQorCisgICAgZnVuY3Rpb24g
cmVhZEtleSgpIHsKKyAgICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigi
YWVzLWluZGV4ZWRkYiIpLm9iamVjdFN0b3JlKCJhZXMtaW5kZXhlZGRiIik7CisgICAgICAgIGNv
bnN0IHJlcSA9IG9iamVjdFN0b3JlLmdldCgibXlLZXkiKTsKKyAgICAgICAgcmVxLm9uZXJyb3Ig
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGdl
dCBhIGtleSBmcm9tIGRhdGFiYXNlOiAiICsgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUpOworICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHJlcS5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgcmV0cmlldmVkS2V5ID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgIHNob3VsZEJlKCJyZXRyaWV2ZWRLZXkudHlwZSIs
ICInc2VjcmV0JyIpOworICAgICAgICAgICAgc2hvdWxkQmUoInJldHJpZXZlZEtleS5leHRyYWN0
YWJsZSIsICJ0cnVlIik7CisgICAgICAgICAgICBzaG91bGRCZSgicmV0cmlldmVkS2V5LmFsZ29y
aXRobS5uYW1lIiwgIidBRVMtQ0JDJyIpOworICAgICAgICAgICAgc2hvdWxkQmUoInJldHJpZXZl
ZEtleS5hbGdvcml0aG0ubGVuZ3RoIiwgIjEyOCIpOworICAgICAgICAgICAgc2hvdWxkQmUoInJl
dHJpZXZlZEtleS51c2FnZXMiLCAiWydkZWNyeXB0JywgJ2VuY3J5cHQnLCAndW53cmFwS2V5Jywg
J3dyYXBLZXknXSIpOworCisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQor
ICAgIH0KK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxl
L3JzYS1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3J5cHRv
L3dvcmtlcnMvc3VidGxlL3JzYS1wb3N0TWVzc2FnZS13b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4
IDBjMzk3OTAwZmJlZTljOTMyOTk2ODZmZDAzNWQ0ZDdiNGI4NWM4OTguLjYxOTIxYzQyMTQ4MjIz
MjJmODYzZGJiYjJiY2ZjM2NjYzcxMGRkMWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NyeXB0
by93b3JrZXJzL3N1YnRsZS9yc2EtcG9zdE1lc3NhZ2Utd29ya2VyLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9jcnlwdG8vd29ya2Vycy9zdWJ0bGUvcnNhLXBvc3RNZXNzYWdlLXdvcmtl
ci1leHBlY3RlZC50eHQKQEAgLTMsNiArMywxNiBAQCBUZXN0IHNlbmRpbmcgcnNhIGNyeXB0byBr
ZXlzIHZpYSBwb3N0TWVzc2FnZSB0byBhIHdvcmtlci4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KIAogCitQQVNTIEFsbCBjaGVja3MgcGFzc2VkIGluIHdvcmtlciBmb3IgcHVibGljIGtleQor
UEFTUyBwdWJsaWNLZXkudHlwZSBpcyAncHVibGljJworUEFTUyBwdWJsaWNLZXkuZXh0cmFjdGFi
bGUgaXMgdHJ1ZQorUEFTUyBwdWJsaWNLZXkuYWxnb3JpdGhtLm5hbWUgaXMgJ1JTQUVTLVBLQ1Mx
LXYxXzUnCitQQVNTIHB1YmxpY0tleS5hbGdvcml0aG0ubW9kdWx1c0xlbmd0aCBpcyAyMDQ4CitQ
QVNTIGJ5dGVzVG9IZXhTdHJpbmcocHVibGljS2V5LmFsZ29yaXRobS5wdWJsaWNFeHBvbmVudCkg
aXMgJzAxMDAwMScKK1BBU1MgcHVibGljS2V5LmFsZ29yaXRobS5oYXNoIGlzIHVuZGVmaW5lZC4K
K1BBU1MgcHVibGljS2V5LnVzYWdlcyBpcyBbJ2VuY3J5cHQnXQorUEFTUyBleHBvcnRlZEtleS5u
IGlzIHB1YmxpY0tleUpTT04ubgorUEFTUyBleHBvcnRlZEtleS5lIGlzIHB1YmxpY0tleUpTT04u
ZQogUEFTUyBBbGwgY2hlY2tzIHBhc3NlZCBpbiB3b3JrZXIgZm9yIHByaXZhdGUga2V5CiBQQVNT
IHByaXZhdGVLZXkudHlwZSBpcyAncHJpdmF0ZScKIFBBU1MgcHJpdmF0ZUtleS5leHRyYWN0YWJs
ZSBpcyB0cnVlCkBAIC0xOSwxNiArMjksNiBAQCBQQVNTIGV4cG9ydGVkS2V5LnEgaXMgcHJpdmF0
ZUtleUpTT04ucQogUEFTUyBleHBvcnRlZEtleS5kcCBpcyBwcml2YXRlS2V5SlNPTi5kcAogUEFT
UyBleHBvcnRlZEtleS5kcSBpcyBwcml2YXRlS2V5SlNPTi5kcQogUEFTUyBleHBvcnRlZEtleS5x
aSBpcyBwcml2YXRlS2V5SlNPTi5xaQotUEFTUyBBbGwgY2hlY2tzIHBhc3NlZCBpbiB3b3JrZXIg
Zm9yIHB1YmxpYyBrZXkKLVBBU1MgcHVibGljS2V5LnR5cGUgaXMgJ3B1YmxpYycKLVBBU1MgcHVi
bGljS2V5LmV4dHJhY3RhYmxlIGlzIHRydWUKLVBBU1MgcHVibGljS2V5LmFsZ29yaXRobS5uYW1l
IGlzICdSU0FFUy1QS0NTMS12MV81JwotUEFTUyBwdWJsaWNLZXkuYWxnb3JpdGhtLm1vZHVsdXNM
ZW5ndGggaXMgMjA0OAotUEFTUyBieXRlc1RvSGV4U3RyaW5nKHB1YmxpY0tleS5hbGdvcml0aG0u
cHVibGljRXhwb25lbnQpIGlzICcwMTAwMDEnCi1QQVNTIHB1YmxpY0tleS5hbGdvcml0aG0uaGFz
aCBpcyB1bmRlZmluZWQuCi1QQVNTIHB1YmxpY0tleS51c2FnZXMgaXMgWydlbmNyeXB0J10KLVBB
U1MgZXhwb3J0ZWRLZXkubiBpcyBwdWJsaWNLZXlKU09OLm4KLVBBU1MgZXhwb3J0ZWRLZXkuZSBp
cyBwdWJsaWNLZXlKU09OLmUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVT
VCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxl
L3JzYS1wb3N0TWVzc2FnZS13b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2NyeXB0by93b3JrZXJz
L3N1YnRsZS9yc2EtcG9zdE1lc3NhZ2Utd29ya2VyLmh0bWwKaW5kZXggNGY1NTFlYTNhMWNhYjhk
ZTMzODk0YTFjYTgwZDdhZTEwNDZlZjI4Yy4uMjJiOWFkMDdiNWQyODYxYjE1NzQ4YTBjMGFiNjk2
Y2E4ZmE2MmZiMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3J5cHRvL3dvcmtlcnMvc3VidGxl
L3JzYS1wb3N0TWVzc2FnZS13b3JrZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jcnlwdG8vd29y
a2Vycy9zdWJ0bGUvcnNhLXBvc3RNZXNzYWdlLXdvcmtlci5odG1sCkBAIC05OCw5ICs5OCw5IEBA
IHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKIAogY3J5cHRvLnN1YnRsZS5pbXBv
cnRLZXkoImp3ayIsIHB1YmxpY0tleUpTT04sIGFsZ29yaXRobUtleUdlbiwgdHJ1ZSwgWydlbmNy
eXB0J10pLnRoZW4oZnVuY3Rpb24obG9jYWxQdWJsaWNLZXkpIHsKICAgICB3b3JrZXIucG9zdE1l
c3NhZ2UoeyBwdWJsaWNLZXk6IGxvY2FsUHVibGljS2V5IH0pOwotfSk7Ci1jcnlwdG8uc3VidGxl
LmltcG9ydEtleSgiandrIiwgcHJpdmF0ZUtleUpTT04sIGFsZ29yaXRobUtleUdlbiwgdHJ1ZSwg
WydkZWNyeXB0J10pLnRoZW4oZnVuY3Rpb24obG9jYWxQcml2YXRlS2V5KSB7Ci0gICAgd29ya2Vy
LnBvc3RNZXNzYWdlKHsgcHJpdmF0ZUtleTogbG9jYWxQcml2YXRlS2V5IH0pOworICAgIGNyeXB0
by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBwcml2YXRlS2V5SlNPTiwgYWxnb3JpdGhtS2V5R2Vu
LCB0cnVlLCBbJ2RlY3J5cHQnXSkudGhlbihmdW5jdGlvbihsb2NhbFByaXZhdGVLZXkpIHsKKyAg
ICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsgcHJpdmF0ZUtleTogbG9jYWxQcml2YXRlS2V5IH0p
OworICAgIH0pOwogfSk7CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>