<?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>131578</bug_id>
          
          <creation_ts>2014-04-11 18:29:48 -0700</creation_ts>
          <short_desc>Change callToJavaScript and callToNativeFunction so their callFrames match the native calling conventions</short_desc>
          <delta_ts>2014-08-18 03:28:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>136028</dependson>
          <blocked>129178</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>clopez</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mmirman</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1000147</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-04-11 18:29:48 -0700</bug_when>
    <thetext>In callToJavaScript and callToNativeFunction we push the frame pointer on the stack where the calling conventions expect it, but this is really a &quot;dummy&quot;.  We save another copy of the frame pointer in the sentinel frame that we actually unwind through.  Some of the unwinding code does a simplistic disassembly.  Our dummy does the trick for some unwinding, e.g. Mac OSX x86-64, but doesn&apos;t work on other platforms.

The proposed fix is to have callToJavaScript and callToNativeFunction execute a standard prologue to create a calling convention compliant call frame and then link to that call frame when those functions call out to JavaScript or native code respectively.  Then unwinding should work fine for all platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008793</commentid>
    <comment_count>1</comment_count>
      <attachid>231341</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-05-12 16:53:07 -0700</bug_when>
    <thetext>Created attachment 231341
Work in Progress

Runs JSC tests on X86-64.

Will work on other platforms and clean up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019110</commentid>
    <comment_count>2</comment_count>
      <attachid>234021</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-06-27 15:04:00 -0700</bug_when>
    <thetext>Created attachment 234021
Now mostly works on X86 (32 &amp; 64)

Need to fix inspector-protocol/debugger LayoutTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019353</commentid>
    <comment_count>3</comment_count>
      <attachid>234021</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-06-30 11:13:09 -0700</bug_when>
    <thetext>Comment on attachment 234021
Now mostly works on X86 (32 &amp; 64)

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

&gt; Source/JavaScriptCore/debugger/Debugger.cpp:600
&gt; +    m_pauseOnCallFrame = m_currentCallFrame ? m_currentCallFrame-&gt;callerFrameSkippingTopMostEntryFrame() : 0;

&quot;SkippingTopMostEntryFrame&quot; suggests that we will skip only the top-most entry frame -- not other entry frames, and not other host frames. I don&apos;t think that can be the right behavior.

&gt; Source/JavaScriptCore/interpreter/CallFrame.h:270
&gt; +        bool isTopmostEntryFrame() const
&gt;          {
&gt; -            return !!this &amp;&amp; codeBlock() == vmEntrySentinelCodeBlock();
&gt; +            return callerFrame() == vm().topJSCallingFrame;
&gt;          }

These names are pretty confusing.

&quot;EntryFrame&quot; doesn&apos;t describe what entered what.

&quot;Topmost&quot; is arbitrarily different from &quot;top&quot;, used for &quot;topCallFrame&quot;, but the difference doesn&apos;t mean anything.

&quot;topJSCallingFrame&quot; always refers to a host caller to JavaScript, but the name implies that it could refer to any caller, including a JavaScript caller to JavaScript. Also, the word &quot;calling&quot; is ambiguous: it could either mean &quot;the top frame calling JS&quot; or &quot;the top JS frame calling something else&quot;. These meanings are opposites, so we need to clarify.

&gt; Source/JavaScriptCore/interpreter/CallFrame.h:293
&gt; +        CallFrame* callerFrameSkippingTopMostEntryFrame()
&gt;          {
&gt; -            CallFrame* caller = callerFrame();
&gt; -            if (caller-&gt;isVMEntrySentinel())
&gt; -                return caller-&gt;vmEntrySentinelCallerFrame();
&gt; -            return caller;
&gt; +            if (isTopmostEntryFrame())
&gt; +                return vmPriorTopCallFrame();
&gt; +            return callerFrame();
&gt;          }

How do we skip entry frames that are not the top-most entry frame, along with their host caller frames? Unwind logic updates the JSEntryFrame value, but this logic does not.

&gt; Source/JavaScriptCore/interpreter/CallFrame.h:350
&gt; +        CallFrame* vmPriorTopCallFrame() const
&gt; +        {
&gt; +            return callerFrame()[-EntryFrameStateRegisterCount].entryFrameState().topCallFrame;
&gt; +        }

A constant should not need to be negated in order to be used. The constant we want is the offset to the EntryFrameState structure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027672</commentid>
    <comment_count>4</comment_count>
      <attachid>236236</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-08-07 15:32:30 -0700</bug_when>
    <thetext>Created attachment 236236
Updated patch addressing prior review concerns.

Tested on X86 (32 &amp; 64).  In the process of testing on iOS devices.  Untested on WIN (32 &amp; 64).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027745</commentid>
    <comment_count>5</comment_count>
      <attachid>236259</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-08-07 20:43:33 -0700</bug_when>
    <thetext>Created attachment 236259
Updated with fixes for arm on iOS.

Refactored alignment adjustments in callToJavaScript including eliminating callToJavaScriptPrologue/callToJavaScriptEpilogue macros.

Not tested yet on X86 (32 &amp; 64) on windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027932</commentid>
    <comment_count>6</comment_count>
      <attachid>236301</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-08-08 13:59:41 -0700</bug_when>
    <thetext>Created attachment 236301
Updated with speculative Windows changes and fix for patch to apply cleanly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028555</commentid>
    <comment_count>7</comment_count>
      <attachid>236301</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-08-12 11:53:12 -0700</bug_when>
    <thetext>Comment on attachment 236301
Updated with speculative Windows changes and fix for patch to apply cleanly

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

&gt; Source/JavaScriptCore/jsc.cpp:690
&gt; -    if (!exec-&gt;callerFrame()-&gt;isVMEntrySentinel())
&gt; -        exec-&gt;vm().interpreter-&gt;dumpCallFrame(exec-&gt;callerFrame());
&gt; +    exec-&gt;vm().interpreter-&gt;dumpCallFrame(exec-&gt;callerFrame());

Why don&apos;t we need this check anymore? That&apos;s a good think to explain in per-function ChangeLog comments, which are missing in this patch.

&gt; Source/JavaScriptCore/debugger/Debugger.cpp:610
&gt; +    m_pauseOnCallFrame = m_currentCallFrame ? m_currentCallFrame-&gt;callerFrameSkippingTopMostJavaScriptEntryFrame() : 0;

Since this call will only skip the top-most entry frame, it seems like you will not see the whole JavaScript stack, if there are intermediate C++ stack frames. Why is that OK?

&gt; Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp:99
&gt; +    m_callFrame-&gt;vm().topCallFrame-&gt;iterate(functor);

Why do we need to iterate from topCallFrame instead of just iterating from m_callFrame, or just returning m_callFrame-&gt;callerFrame()?

&gt; Source/JavaScriptCore/interpreter/CallFrame.h:165
&gt; -            if (isVMEntrySentinel() || !codeBlock())
&gt; +            if (!codeBlock())

What guarantees that this will no longer be called on the CallToJavaScriptFrame?

&gt; Source/JavaScriptCore/interpreter/CallFrame.h:252
&gt; +        CallFrame* callerFrameUnwind(CallFrame*&amp; currJSEntryFrame)

You should pick one name for the VM entry frame concept and stick with it. The class name you picked was &quot;CallToJavaScriptFrame&quot;, so maybe go with that.

&gt; Source/JavaScriptCore/interpreter/CallFrame.h:267
&gt; +        // This only works for the top most contiguous set of JS frames including the callee
&gt; +        // frame of the top most callToJavaScript/callToNativeFunction. In the latter case,
&gt; +        // it returns the prior JS CallFrame, skipping host frames, or nullptr if there isn&apos;t
&gt; +        // a prior JS caller.
&gt; +        // General unwinding must use StackVisitor.
&gt; +        CallFrame* callerFrameSkippingTopMostJavaScriptEntryFrame()

This seems broken, since it won&apos;t go all the way up the JS stack.

&gt; Source/JavaScriptCore/interpreter/CallToJavaScriptFrame.h:34
&gt; +struct CallToJavaScriptFrame {

Since this isn&apos;t the whole stack frame, and is rather a data structure that happens to be located on the stack, we should name it more like the data it represents.

Some options:

VMEntryRecord
CallToJavaScriptRecord

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:-693
&gt; -    if (callFrame-&gt;isVMEntrySentinel()) {
&gt; -        // This happens when we throw stack overflow in a function that is called
&gt; -        // directly from callToJavaScript. Stack overflow throws the exception in the
&gt; -        // context of the caller. In that case the caller is the sentinel frame. The
&gt; -        // right thing to do is to pretend that the exception is uncaught so that we
&gt; -        // go to the uncaught exception handler, which returns through callToJavaScript.
&gt; -        return 0;
&gt; -    }

Why don&apos;t we need this check anymore?

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:206
&gt; +    CallToJavaScriptFrameFromFramePointer(cfr, sp)

Here, we can just subtract sizeof(CallToJavaScriptFrame) from sp instead of using the brittle constant.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:71
&gt; +if C_LOOP
&gt; +    const CalleeSaveRegisterCount = 0
&gt; +elsif X86 or X86_WIN
&gt; +    const CalleeSaveRegisterCount = 3
&gt; +elsif X86_64 or SH4
&gt; +    const CalleeSaveRegisterCount = 5
&gt; +elsif ARM or ARMv7 or ARMv7_TRADITIONAL
&gt; +    const CalleeSaveRegisterCount = 7
&gt; +elsif ARM64 or MIPS
&gt; +    const CalleeSaveRegisterCount = 10
&gt; +end
&gt; +
&gt; +const CalleeRegisterSaveSize = CalleeSaveRegisterCount * PtrSize

Let&apos;s remove these brittle constants, and instead of subtracting CalleeRegisterSaveSize from the base pointer, let&apos;s use the stack pointer.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:669
&gt; +# CallToJavaScriptFrame* callToJavaScriptFrameFromFramePointer(const CallFrame* callFrame)
&gt; +global _callToJavaScriptFrameFromFramePointer
&gt; +_callToJavaScriptFrameFromFramePointer:
&gt; +    if X86_64
&gt; +        const callFrame = t4
&gt; +        const result = t0
&gt; +    elsif X86 or X86_WIN
&gt; +        const callFrame = t2
&gt; +        const result = t0
&gt; +    else
&gt; +        const callFrame = a0
&gt; +        const result = t0
&gt; +    end
&gt; +
&gt; +    if X86 or X86_WIN
&gt; +        loadp 4[sp], callFrame
&gt; +    end
&gt; +
&gt; +    CallToJavaScriptFrameFromFramePointer(callFrame, result)
&gt; +    ret

It&apos;s not such a good interface to use CallFrame* to mean &quot;a pointer to a stack frame that includes the CallToJavaScript structure and some callee-saved registers, which has none of the data members that a CallFrame has&quot;. It&apos;s very easy to use this API wrong, and try to pass it a CallFrame*.

One way to fix this is to pass in the real CallFrame*, whose parent frame is known to be the callToJavaScript frame, and simply to add the CallFrame header size to it in order to produce a CallToJavaScriptFrame*. Then, you don&apos;t even need this global function implemented in assembly.

&gt; Source/JavaScriptCore/runtime/VM.cpp:673
&gt; +        FindFirstCallerFrameWithCodeblockFunctor functor(exec);
&gt; +        topCallFrame-&gt;iterate(functor);

Why do we iterate the whole stack, instead of starting from exec?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028806</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-08-13 09:26:47 -0700</bug_when>
    <thetext>(In reply to comment #7)

Discussed in person with Geoff the design and feedback.

Some overall agreements.
 - Eliminate callerFrameSkippingTopMostJavaScriptEntryFrame()
 - Change name of callerFrameUnwind(CallFrame*&amp;) to callerFrame(CallFrame*&amp;).  This is the preferred iterative method for unwinding.
 - Changed CallToJavaScriptFrame name to VMEntryRecord
 - After some discussion, agreed to use platform specific offset to get the VMEntryRecord from a callToJavaScript frame pointer. Given that callToJavaScript needs to find the VMEntryRecord after returning from a  call to JavaScript code or when a stack overflow is detected, argument count rounding logic in C++ code would need to be duplicated in the assembly code which would be as brittle or more than having callee save register count constants in the assembly code.  The brittleness has been somewhat mitigated given that after change set r172429, the constants can and will be located near the actual callee save and restore macros.
 - Agreed that we store the CallFrame* of the first JavaScript callee instead of the pointer to the callToJavaScript frame.  After coding this up, discovered that this won&apos;t work due to register preservation stubs and arity fix up code that move the callee&apos;s CallFrame* after the call is made.

Response to individual comments inline.

&gt; (From update of attachment 236301 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=236301&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/jsc.cpp:690
&gt; &gt; -    if (!exec-&gt;callerFrame()-&gt;isVMEntrySentinel())
&gt; &gt; -        exec-&gt;vm().interpreter-&gt;dumpCallFrame(exec-&gt;callerFrame());
&gt; &gt; +    exec-&gt;vm().interpreter-&gt;dumpCallFrame(exec-&gt;callerFrame());
&gt; 
&gt; Why don&apos;t we need this check anymore? That&apos;s a good think to explain in per-function ChangeLog comments, which are missing in this patch.

Will use the safe callerFrame(CallFrame*&amp;) variant instead of callerFrame().
 
&gt; &gt; Source/JavaScriptCore/debugger/Debugger.cpp:610
&gt; &gt; +    m_pauseOnCallFrame = m_currentCallFrame ? m_currentCallFrame-&gt;callerFrameSkippingTopMostJavaScriptEntryFrame() : 0;
&gt; 
&gt; Since this call will only skip the top-most entry frame, it seems like you will not see the whole JavaScript stack, if there are intermediate C++ stack frames. Why is that OK?

Replaced with callerFrame(CallFrame*&amp;).

&gt; &gt; Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp:99
&gt; &gt; +    m_callFrame-&gt;vm().topCallFrame-&gt;iterate(functor);
&gt; 
&gt; Why do we need to iterate from topCallFrame instead of just iterating from m_callFrame, or just returning m_callFrame-&gt;callerFrame()?

Because m_callFrame can be some arbitrary frame in the stack and contiguous JavaScript stack frames are linked across intermeaning C++ frame as a singly linked list.

&gt; &gt; Source/JavaScriptCore/interpreter/CallFrame.h:165
&gt; &gt; -            if (isVMEntrySentinel() || !codeBlock())
&gt; &gt; +            if (!codeBlock())
&gt; 
&gt; What guarantees that this will no longer be called on the CallToJavaScriptFrame?

In all current cases, it is called in slow path code from a passed in CallFrame object to find the extent of a stack, either for stacks bound checking or for setting the stack when OSR from the llint to the Baseline JIT.  We could add a debug only check to walk the stack to make sure that the current object doesn&apos;t point to a CallToJavaScriptFrame.

&gt; &gt; Source/JavaScriptCore/interpreter/CallFrame.h:252
&gt; &gt; +        CallFrame* callerFrameUnwind(CallFrame*&amp; currJSEntryFrame)
&gt; 
&gt; You should pick one name for the VM entry frame concept and stick with it. The class name you picked was &quot;CallToJavaScriptFrame&quot;, so maybe go with that.

Now using VM entry.  This method now has the signature: CallFrame* callerFrame(CallFrame*&amp; currVMEntryFrame)

&gt; &gt; Source/JavaScriptCore/interpreter/CallFrame.h:267
&gt; &gt; +        // This only works for the top most contiguous set of JS frames including the callee
&gt; &gt; +        // frame of the top most callToJavaScript/callToNativeFunction. In the latter case,
&gt; &gt; +        // it returns the prior JS CallFrame, skipping host frames, or nullptr if there isn&apos;t
&gt; &gt; +        // a prior JS caller.
&gt; &gt; +        // General unwinding must use StackVisitor.
&gt; &gt; +        CallFrame* callerFrameSkippingTopMostJavaScriptEntryFrame()
&gt; 
&gt; This seems broken, since it won&apos;t go all the way up the JS stack.

This has been eliminated.  It&apos;s uses have been replaced with callerFrame(CallFrame*&amp;)

&gt; &gt; Source/JavaScriptCore/interpreter/CallToJavaScriptFrame.h:34
&gt; &gt; +struct CallToJavaScriptFrame {
&gt; 
&gt; Since this isn&apos;t the whole stack frame, and is rather a data structure that happens to be located on the stack, we should name it more like the data it represents.
&gt; 
&gt; Some options:
&gt; 
&gt; VMEntryRecord
&gt; CallToJavaScriptRecord

Changed to VMEntryRecord

&gt; &gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:-693
&gt; &gt; -    if (callFrame-&gt;isVMEntrySentinel()) {
&gt; &gt; -        // This happens when we throw stack overflow in a function that is called
&gt; &gt; -        // directly from callToJavaScript. Stack overflow throws the exception in the
&gt; &gt; -        // context of the caller. In that case the caller is the sentinel frame. The
&gt; &gt; -        // right thing to do is to pretend that the exception is uncaught so that we
&gt; &gt; -        // go to the uncaught exception handler, which returns through callToJavaScript.
&gt; &gt; -        return 0;
&gt; &gt; -    }
&gt; 
&gt; Why don&apos;t we need this check anymore?

We should add a nullptr check.  In all cases we&apos;ll have a valid CallFrame* or a nullptr.  When a stack overflow is detected in callToJavaScript itself,  we use VM::topCallFrame (which could be a nullptr).  If the entry JS callee detects a stack overflow when it goes to make an outgoing call, the callee&apos;s CallFrame* is used for the exception.

&gt; &gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:206
&gt; &gt; +    CallToJavaScriptFrameFromFramePointer(cfr, sp)
&gt; 
&gt; Here, we can just subtract sizeof(CallToJavaScriptFrame) from sp instead of using the brittle constant.
&gt; 
&gt; &gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:71
&gt; &gt; +if C_LOOP
&gt; &gt; +    const CalleeSaveRegisterCount = 0
&gt; &gt; +elsif X86 or X86_WIN
&gt; &gt; +    const CalleeSaveRegisterCount = 3
&gt; &gt; +elsif X86_64 or SH4
&gt; &gt; +    const CalleeSaveRegisterCount = 5
&gt; &gt; +elsif ARM or ARMv7 or ARMv7_TRADITIONAL
&gt; &gt; +    const CalleeSaveRegisterCount = 7
&gt; &gt; +elsif ARM64 or MIPS
&gt; &gt; +    const CalleeSaveRegisterCount = 10
&gt; &gt; +end
&gt; &gt; +
&gt; &gt; +const CalleeRegisterSaveSize = CalleeSaveRegisterCount * PtrSize
&gt; 
&gt; Let&apos;s remove these brittle constants, and instead of subtracting CalleeRegisterSaveSize from the base pointer, let&apos;s use the stack pointer.
&gt; 
&gt; &gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:669
&gt; &gt; +# CallToJavaScriptFrame* callToJavaScriptFrameFromFramePointer(const CallFrame* callFrame)
&gt; &gt; +global _callToJavaScriptFrameFromFramePointer
&gt; &gt; +_callToJavaScriptFrameFromFramePointer:
&gt; &gt; +    if X86_64
&gt; &gt; +        const callFrame = t4
&gt; &gt; +        const result = t0
&gt; &gt; +    elsif X86 or X86_WIN
&gt; &gt; +        const callFrame = t2
&gt; &gt; +        const result = t0
&gt; &gt; +    else
&gt; &gt; +        const callFrame = a0
&gt; &gt; +        const result = t0
&gt; &gt; +    end
&gt; &gt; +
&gt; &gt; +    if X86 or X86_WIN
&gt; &gt; +        loadp 4[sp], callFrame
&gt; &gt; +    end
&gt; &gt; +
&gt; &gt; +    CallToJavaScriptFrameFromFramePointer(callFrame, result)
&gt; &gt; +    ret

Agreed that this is a better option than the alternatives as discussed above.

&gt; It&apos;s not such a good interface to use CallFrame* to mean &quot;a pointer to a stack frame that includes the CallToJavaScript structure and some callee-saved registers, which has none of the data members that a CallFrame has&quot;. It&apos;s very easy to use this API wrong, and try to pass it a CallFrame*.
&gt; 
&gt; One way to fix this is to pass in the real CallFrame*, whose parent frame is known to be the callToJavaScript frame, and simply to add the CallFrame header size to it in order to produce a CallToJavaScriptFrame*. Then, you don&apos;t even need this global function implemented in assembly.

We agree that using CallFrame* to mean &quot;a pointer to a stack frame that includes the CallToJavaScript structure and some callee-saved registers, which has none of the data members that a CallFrame has&quot; is not a good thing.

Given that using a &quot;real CallFrame*, whose parent frame is known to be the callToJavaScript frame&quot; won&apos;t work due to callee&apos;s changing their CallFrame* after the call, I will come up with more type safe method of addressing the VMEntry frame pointer.

&gt; &gt; Source/JavaScriptCore/runtime/VM.cpp:673
&gt; &gt; +        FindFirstCallerFrameWithCodeblockFunctor functor(exec);
&gt; &gt; +        topCallFrame-&gt;iterate(functor);
&gt; 
&gt; Why do we iterate the whole stack, instead of starting from exec?

As described above, the contiguous sets of JavaSCript frames are a singly linked list that needs to be iterated from the top most frame on down.  The CallFrame* for the exception could be the prior topCallFrame that made a C++ call that subsequently reentered JavaScript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029421</commentid>
    <comment_count>9</comment_count>
      <attachid>236667</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-08-15 12:07:59 -0700</bug_when>
    <thetext>Created attachment 236667
Updated patch addressing prior concerns and with other changes from discussion with ggaren</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029457</commentid>
    <comment_count>10</comment_count>
      <attachid>236667</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-08-15 13:45:34 -0700</bug_when>
    <thetext>Comment on attachment 236667
Updated patch addressing prior concerns and with other changes from discussion with ggaren

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

r=me with some naming fixes.

&gt; Source/JavaScriptCore/jsc.cpp:696
&gt;  EncodedJSValue JSC_HOST_CALL functionDumpCallFrame(ExecState* exec)
&gt;  {
&gt; -    if (!exec-&gt;callerFrame()-&gt;isVMEntrySentinel())
&gt; -        exec-&gt;vm().interpreter-&gt;dumpCallFrame(exec-&gt;callerFrame());
&gt; +    VMEntryFrame* topVMEntryCallFrame = exec-&gt;vm().topVMEntryCallFrame;
&gt; +    ExecState* callerFrame = exec-&gt;callerFrame(topVMEntryCallFrame);
&gt; +    if (callerFrame)
&gt; +        exec-&gt;vm().interpreter-&gt;dumpCallFrame(callerFrame);
&gt;      return JSValue::encode(jsUndefined());
&gt;  }
&gt;  #endif

It&apos;s weird that this function dumps exec&apos;s caller and not exec. That seems like a bug. Oh well. Not new, I guess.

&gt; Source/JavaScriptCore/debugger/Debugger.cpp:610
&gt; +    VMEntryFrame* topVMEntryCallFrame = m_vm-&gt;topVMEntryCallFrame;

You should either name the class VMEntryCallFrame or name the variable and the data member vmEntryFrame. It&apos;s not so good to name one &quot;EntryFrame&quot; and the other &quot;EntryCallFrame&quot;. That makes it sounds like they&apos;re subtly different things.

I&apos;d suggest the &quot;EntryFrame&quot; variant, since it is shorter, and we don&apos;t really want this class to seem similar to the CallFrame class, since they are different data structures.

&gt; Source/JavaScriptCore/interpreter/StackVisitor.cpp:45
&gt; +    m_frame.m_callerIsVMEntry = false;

Should be &quot;m_callerIsVMEntryFrame&quot; to match the type name.

&gt; Source/JavaScriptCore/llint/LLIntThunks.cpp:109
&gt; +extern &quot;C&quot; VMEntryRecord* vmEntryRecordFromVMEntryFrame(VMEntryFrame* entryFrame)

No need to put &quot;FromVMEntryFrame&quot; in the name here, since it&apos;s part of the signature of the function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029547</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-08-15 18:48:23 -0700</bug_when>
    <thetext>Committed r172665: &lt;http://trac.webkit.org/changeset/172665&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029627</commentid>
    <comment_count>12</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-08-16 10:42:56 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Committed r172665: &lt;http://trac.webkit.org/changeset/172665&gt;

It broke the Thumb2 Linux build:

[ 13%] Building CXX object Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/llint/LowLevelInterpreter.cpp.o
{standard input}: Assembler messages:
{standard input}:29: Error: r13 not allowed here -- `subs sp,r7,#48&apos;
{standard input}:41: Error: r13 not allowed here -- `subs sp,r4,#8&apos;
{standard input}:54: Error: r13 not allowed here -- `subs sp,r7,#48&apos;
{standard input}:64: Error: r13 not allowed here -- `subs sp,r7,#28&apos;
{standard input}:139: Error: r13 not allowed here -- `subs sp,r7,#48&apos;
{standard input}:149: Error: r13 not allowed here -- `subs sp,r7,#28&apos;
{standard input}:165: Error: r13 not allowed here -- `subs sp,r7,#48&apos;
{standard input}:177: Error: r13 not allowed here -- `subs sp,r4,#8&apos;
{standard input}:190: Error: r13 not allowed here -- `subs sp,r7,#48&apos;
{standard input}:200: Error: r13 not allowed here -- `subs sp,r7,#28&apos;
{standard input}:261: Error: r13 not allowed here -- `subs sp,r7,#48&apos;
{standard input}:271: Error: r13 not allowed here -- `subs sp,r7,#28&apos;
{standard input}:1502: Error: r13 not allowed here -- `subs sp,r7,#48&apos;
{standard input}:1512: Error: r13 not allowed here -- `subs sp,r7,#28&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029674</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-08-17 12:31:39 -0700</bug_when>
    <thetext>The problem is that this change reverted the previous fix
for the same issue - https://trac.webkit.org/changeset/163179. :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029675</commentid>
    <comment_count>14</comment_count>
      <attachid>236733</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-08-17 12:41:42 -0700</bug_when>
    <thetext>Created attachment 236733
preprocessed LowLevelInterpreter.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029676</commentid>
    <comment_count>15</comment_count>
      <attachid>236734</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-08-17 12:42:21 -0700</bug_when>
    <thetext>Created attachment 236734
assembly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029743</commentid>
    <comment_count>16</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-08-18 03:28:36 -0700</bug_when>
    <thetext>new bug report for fixing the build issue - https://bugs.webkit.org/show_bug.cgi?id=136028</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231341</attachid>
            <date>2014-05-12 16:53:07 -0700</date>
            <delta_ts>2014-06-27 15:04:00 -0700</delta_ts>
            <desc>Work in Progress</desc>
            <filename>unwind-no-sentinel-wip6.patch</filename>
            <type>text/plain</type>
            <size>26224</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAxNjg0ODMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDkzLDggKzQ5Myw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmkKICNpZm5kZWYgTkRFQlVHCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcENhbGxGcmFtZShFeGVjU3Rh
dGUqIGV4ZWMpCiB7Ci0gICAgaWYgKCFleGVjLT5jYWxsZXJGcmFtZSgpLT5pc1ZNRW50cnlTZW50
aW5lbCgpKQotICAgICAgICBleGVjLT52bSgpLmludGVycHJldGVyLT5kdW1wQ2FsbEZyYW1lKGV4
ZWMtPmNhbGxlckZyYW1lKCkpOworICAgIGV4ZWMtPnZtKCkuaW50ZXJwcmV0ZXItPmR1bXBDYWxs
RnJhbWUoZXhlYy0+Y2FsbGVyRnJhbWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE2ODQ4MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODgz
LDggKzI4ODMsNiBAQCB2b2lkIENvZGVCbG9jazo6bm90aWNlSW5jb21pbmdDYWxsKEV4ZWNTCiAg
ICAgCiAgICAgRXhlY1N0YXRlKiBmcmFtZSA9IGNhbGxlckZyYW1lOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ0RlcHRoKCk7IGktLTsgZnJhbWUgPSBmcmFt
ZS0+Y2FsbGVyRnJhbWUoKSkgewotICAgICAgICBpZiAoZnJhbWUtPmlzVk1FbnRyeVNlbnRpbmVs
KCkpCi0gICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKGZyYW1lLT5jb2RlQmxvY2soKSA9
PSB0aGlzKSB7CiAgICAgICAgICAgICAvLyBSZWN1cnNpdmUgY2FsbHMgd29uJ3QgYmUgaW5saW5l
ZC4KICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlQ2FsbExpbmsoKSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkocmV2aXNpb24gMTY4
NDgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTk3LDcgKzU5Nyw3IEBAIHZvaWQgRGVidWdnZXI6OnN0ZXBPdXRPZkZ1
bmN0aW9uKCkKICAgICBpZiAoIW1faXNQYXVzZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cGF1c2VPbkNhbGxGcmFtZSA9IG1fY3VycmVudENhbGxGcmFtZSA/IG1fY3VycmVudENhbGxGcmFt
ZS0+Y2FsbGVyRnJhbWVTa2lwcGluZ1ZNRW50cnlTZW50aW5lbCgpIDogMDsKKyAgICBtX3BhdXNl
T25DYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUgPyBtX2N1cnJlbnRDYWxsRnJhbWUtPmNh
bGxlckZyYW1lU2tpcHBpbmdFbnRyeUZyYW1lKCkgOiAwOwogICAgIG5vdGlmeURvbmVQcm9jZXNz
aW5nRGVidWdnZXJFdmVudHMoKTsKIH0KIApAQCAtNzE0LDkgKzcxNCw5IEBAIHZvaWQgRGVidWdn
ZXI6OnJldHVybkV2ZW50KENhbGxGcmFtZSogY2EKIAogICAgIC8vIFRyZWF0IHN0ZXBwaW5nIG92
ZXIgYSByZXR1cm4gc3RhdGVtZW50IGxpa2Ugc3RlcHBpbmcgb3V0LgogICAgIGlmIChtX2N1cnJl
bnRDYWxsRnJhbWUgPT0gbV9wYXVzZU9uQ2FsbEZyYW1lKQotICAgICAgICBtX3BhdXNlT25DYWxs
RnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlckZyYW1lU2tpcHBpbmdWTUVudHJ5U2Vu
dGluZWwoKTsKKyAgICAgICAgbV9wYXVzZU9uQ2FsbEZyYW1lID0gbV9jdXJyZW50Q2FsbEZyYW1l
LT5jYWxsZXJGcmFtZVNraXBwaW5nRW50cnlGcmFtZSgpOwogCi0gICAgbV9jdXJyZW50Q2FsbEZy
YW1lID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5jYWxsZXJGcmFtZVNraXBwaW5nVk1FbnRyeVNlbnRp
bmVsKCk7CisgICAgbV9jdXJyZW50Q2FsbEZyYW1lID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5jYWxs
ZXJGcmFtZVNraXBwaW5nRW50cnlGcmFtZSgpOwogfQogCiB2b2lkIERlYnVnZ2VyOjp3aWxsRXhl
Y3V0ZVByb2dyYW0oQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC03NDYsMTEgKzc0NiwxMSBAQCB2
b2lkIERlYnVnZ2VyOjpkaWRFeGVjdXRlUHJvZ3JhbShDYWxsRnJhCiAgICAgaWYgKCFtX2N1cnJl
bnRDYWxsRnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAobV9jdXJyZW50Q2FsbEZyYW1l
ID09IG1fcGF1c2VPbkNhbGxGcmFtZSkgewotICAgICAgICBtX3BhdXNlT25DYWxsRnJhbWUgPSBt
X2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlckZyYW1lU2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKTsK
KyAgICAgICAgbV9wYXVzZU9uQ2FsbEZyYW1lID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5jYWxsZXJG
cmFtZVNraXBwaW5nRW50cnlGcmFtZSgpOwogICAgICAgICBpZiAoIW1fY3VycmVudENhbGxGcmFt
ZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9jdXJyZW50Q2FsbEZyYW1lID0g
bV9jdXJyZW50Q2FsbEZyYW1lLT5jYWxsZXJGcmFtZVNraXBwaW5nVk1FbnRyeVNlbnRpbmVsKCk7
CisgICAgbV9jdXJyZW50Q2FsbEZyYW1lID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5jYWxsZXJGcmFt
ZVNraXBwaW5nRW50cnlGcmFtZSgpOwogfQogCiB2b2lkIERlYnVnZ2VyOjpkaWRSZWFjaEJyZWFr
cG9pbnQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDE2ODQ4
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgUGFzc1JlZlB0cjxEZWJ1Z2dlckNh
bGxGcmFtZT4gRGVidWdnZXJDYQogICAgIGlmIChtX2NhbGxlcikKICAgICAgICAgcmV0dXJuIG1f
Y2FsbGVyOwogCi0gICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IG1fY2FsbEZyYW1lLT5jYWxs
ZXJGcmFtZVNraXBwaW5nVk1FbnRyeVNlbnRpbmVsKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsZXJG
cmFtZSA9IG1fY2FsbEZyYW1lLT5jYWxsZXJGcmFtZVNraXBwaW5nRW50cnlGcmFtZSgpOwogICAg
IGlmICghY2FsbGVyRnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAxNjg0ODMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJBYnN0cmFjdFBDLmgiCiAjaW5j
bHVkZSAiVk0uaCIKICNpbmNsdWRlICJKU1N0YWNrLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgi
CiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIu
aCIKICNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKQEAgLTE4Miw3ICsxODMsNyBAQCBuYW1lc3Bh
Y2UgSlNDICB7CiAKICAgICAgICAgUmVnaXN0ZXIqIHRvcE9mRnJhbWUoKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoaXNWTUVudHJ5U2VudGluZWwoKSB8fCAhY29kZUJsb2NrKCkpCisgICAg
ICAgICAgICBpZiAoIWNvZGVCbG9jaygpKQogICAgICAgICAgICAgICAgIHJldHVybiByZWdpc3Rl
cnMoKTsKICAgICAgICAgICAgIHJldHVybiB0b3BPZkZyYW1lSW50ZXJuYWwoKTsKICAgICAgICAg
fQpAQCAtMTkwLDEyICsxOTEsMTAgQEAgbmFtZXNwYWNlIEpTQyAgewogI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCiAgICAgICAgIEluc3RydWN0aW9uKiBjdXJyZW50VlBDKCkgY29uc3QKICAgICAgICAg
ewotICAgICAgICAgICAgQVNTRVJUKCFpc1ZNRW50cnlTZW50aW5lbCgpKTsKICAgICAgICAgICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPih0aGlzW0pTU3RhY2s6OkFyZ3VtZW50
Q291bnRdLnRhZygpKTsKICAgICAgICAgfQogICAgICAgICB2b2lkIHNldEN1cnJlbnRWUEMoSW5z
dHJ1Y3Rpb24qIHZwYykKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCFpc1ZNRW50cnlT
ZW50aW5lbCgpKTsKICAgICAgICAgICAgIHRoaXNbSlNTdGFjazo6QXJndW1lbnRDb3VudF0udGFn
KCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4odnBjKTsKICAgICAgICAgfQogI2Vsc2UKQEAgLTIx
MCw3ICsyMDksNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBpbml0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogdlBDLCBKU1Njb3BlKiBz
Y29wZSwKICAgICAgICAgICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUsIGludCBhcmdjLCBKU09i
amVjdCogY2FsbGVlKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoY2FsbGVyRnJhbWUg
PT0gbm9DYWxsZXIoKSB8fCBjYWxsZXJGcmFtZS0+aXNWTUVudHJ5U2VudGluZWwoKSB8fCBjYWxs
ZXJGcmFtZS0+c3RhY2soKS0+Y29udGFpbnNBZGRyZXNzKHRoaXMpKTsKKyAgICAgICAgICAgIEFT
U0VSVChjYWxsZXJGcmFtZSA9PSBub0NhbGxlcigpIHx8IGNhbGxlckZyYW1lLT5zdGFjaygpLT5j
b250YWluc0FkZHJlc3ModGhpcykpOwogCiAgICAgICAgICAgICBzZXRDb2RlQmxvY2soY29kZUJs
b2NrKTsKICAgICAgICAgICAgIHNldFNjb3BlKHNjb3BlKTsKQEAgLTI2NiwzMyArMjY1LDQ2IEBA
IG5hbWVzcGFjZSBKU0MgIHsKIAogICAgICAgICBzdGF0aWMgQ2FsbEZyYW1lKiBub0NhbGxlcigp
IHsgcmV0dXJuIDA7IH0KIAotICAgICAgICBib29sIGlzVk1FbnRyeVNlbnRpbmVsKCkgY29uc3QK
KyAgICAgICAgYm9vbCBpc1RvcG1vc3RFbnRyeUZyYW1lKCkgY29uc3QKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuICEhdGhpcyAmJiBjb2RlQmxvY2soKSA9PSB2bUVudHJ5U2VudGluZWxD
b2RlQmxvY2soKTsKKyAgICAgICAgICAgIHJldHVybiBjYWxsZXJGcmFtZSgpID09IHZtKCkudG9w
SlNDYWxsaW5nRnJhbWU7CiAgICAgICAgIH0KIAotICAgICAgICBDYWxsRnJhbWUqIHZtRW50cnlT
ZW50aW5lbENhbGxlckZyYW1lKCkgY29uc3QKKyAgICAgICAgYm9vbCB1cGRhdGVKU0VudHJ5RnJh
bWUoQ2FsbEZyYW1lKiYgY3VyckpTRW50cnlGcmFtZSkgY29uc3QKICAgICAgICAgewotICAgICAg
ICAgICAgQVNTRVJUKGlzVk1FbnRyeVNlbnRpbmVsKCkpOwotICAgICAgICAgICAgcmV0dXJuIHRo
aXNbSlNTdGFjazo6U2NvcGVDaGFpbl0uY2FsbEZyYW1lKCk7CisgICAgICAgICAgICBpZiAoY3Vy
ckpTRW50cnlGcmFtZSA9PSBjYWxsZXJGcmFtZSgpKSB7CisgICAgICAgICAgICAgICAgY3VyckpT
RW50cnlGcmFtZSA9IGNhbGxlckZyYW1lKClbLUVudHJ5RnJhbWVTdGF0ZVJlZ2lzdGVyQ291bnRd
LmVudHJ5RnJhbWVTdGF0ZSgpLnRvcEpTQ2FsbGluZ0ZyYW1lOworICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBDYWxsRnJhbWUqIHZtUHJpb3JUb3BDYWxsRnJhbWUo
KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gY2FsbGVyRnJhbWUoKVstRW50
cnlGcmFtZVN0YXRlUmVnaXN0ZXJDb3VudF0uZW50cnlGcmFtZVN0YXRlKCkudG9wQ2FsbEZyYW1l
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBpbml0aWFsaXplVk1FbnRyeVNlbnRpbmVsRnJh
bWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCisgICAgICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWVV
bndpbmQoQ2FsbEZyYW1lKiYgY3VyckpTRW50cnlGcmFtZSkKICAgICAgICAgewotICAgICAgICAg
ICAgc2V0Q2FsbGVyRnJhbWUobm9DYWxsZXIoKSk7Ci0gICAgICAgICAgICBzZXRSZXR1cm5QQygw
KTsKLSAgICAgICAgICAgIHNldENvZGVCbG9jayh2bUVudHJ5U2VudGluZWxDb2RlQmxvY2soKSk7
Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW0pTU3RhY2s6OlNjb3Bl
Q2hhaW5dID0gY2FsbEZyYW1lOwotICAgICAgICAgICAgc2V0Q2FsbGVlKDApOwotICAgICAgICAg
ICAgc2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoMCk7CisgICAgICAgICAgICBpZiAoY3Vy
ckpTRW50cnlGcmFtZSA9PSBjYWxsZXJGcmFtZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiB2
bVByaW9yVG9wQ2FsbEZyYW1lKCk7CisgICAgICAgICAgICByZXR1cm4gY2FsbGVyRnJhbWUoKTsK
ICAgICAgICAgfQogCi0gICAgICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWVTa2lwcGluZ1ZNRW50
cnlTZW50aW5lbCgpCisgICAgICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWVTa2lwcGluZ1RvcE1v
c3RFbnRyeUZyYW1lKCkKICAgICAgICAgewotICAgICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsZXIg
PSBjYWxsZXJGcmFtZSgpOwotICAgICAgICAgICAgaWYgKGNhbGxlci0+aXNWTUVudHJ5U2VudGlu
ZWwoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGVyLT52bUVudHJ5U2VudGluZWxDYWxs
ZXJGcmFtZSgpOwotICAgICAgICAgICAgcmV0dXJuIGNhbGxlcjsKKyAgICAgICAgICAgIGlmIChp
c1RvcG1vc3RFbnRyeUZyYW1lKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHZtUHJpb3JUb3BD
YWxsRnJhbWUoKTsKKyAgICAgICAgICAgIHJldHVybiBjYWxsZXJGcmFtZSgpOworICAgICAgICB9
CisKKyAgICAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZVNraXBwaW5nRW50cnlGcmFtZSgpICAv
LyYmJiYgVGhpcyBhbmQgaXRzIGNhbGxlcnMgbmVlZCB0byBjaGFuZ2UuCisgICAgICAgIHsKKyAg
ICAgICAgICAgIENhbGxGcmFtZSogZW50cnlGcmFtZSA9IHZtKCkudG9wSlNDYWxsaW5nRnJhbWU7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChlbnRyeUZyYW1lID09IGNhbGxlckZyYW1l
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHZtUHJpb3JUb3BDYWxsRnJhbWUoKTsKKyAgICAg
ICAgICAgIHJldHVybiBjYWxsZXJGcmFtZSgpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBz
ZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhpbnQgY291bnQpIHsgc3RhdGljX2Nhc3Q8UmVn
aXN0ZXIqPih0aGlzKVtKU1N0YWNrOjpBcmd1bWVudENvdW50XS5wYXlsb2FkKCkgPSBjb3VudDsg
fQpAQCAtMzA5LDcgKzMyMSw2IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgfQogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IHNfVk1FbnRyeVNlbnRpbmVs
ID0gMTsKIAogI2lmbmRlZiBOREVCVUcKICAgICAgICAgSlNTdGFjayogc3RhY2soKTsKQEAgLTM1
MCw4ICszNjEsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAKICAgICAgICAgQ2FsbGVyRnJhbWVBbmRQ
QyYgY2FsbGVyRnJhbWVBbmRQQygpIHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PENhbGxlckZy
YW1lQW5kUEMqPih0aGlzKTsgfQogICAgICAgICBjb25zdCBDYWxsZXJGcmFtZUFuZFBDJiBjYWxs
ZXJGcmFtZUFuZFBDKCkgY29uc3QgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQ2Fs
bGVyRnJhbWVBbmRQQyo+KHRoaXMpOyB9Ci0KLSAgICAgICAgc3RhdGljIENvZGVCbG9jayogdm1F
bnRyeVNlbnRpbmVsQ29kZUJsb2NrKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDb2RlQmxv
Y2sqPihzX1ZNRW50cnlTZW50aW5lbCk7IH0KKyAgICAgICAgY29uc3QgRW50cnlGcmFtZVN0YXRl
JiBlbnRyeUZyYW1lU3RhdGUoKSBjb25zdCB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBFbnRyeUZyYW1lU3RhdGUqPih0aGlzKTsgfQogCiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU1N0
YWNrOwogICAgICAgICBmcmllbmQgY2xhc3MgVk1JbnNwZWN0b3I7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9u
IDE2ODQ4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBzdGF0aWMgYm9vbCB1bndp
bmRDYWxsRnJhbWUoU3RhY2tWaXNpdG9yCiAgICAgfQogCiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJG
cmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsKLSAgICByZXR1cm4gIWNhbGxlckZyYW1l
LT5pc1ZNRW50cnlTZW50aW5lbCgpOworICAgIHJldHVybiAhKGNhbGxlckZyYW1lID09IHZpc2l0
b3ItPmpzQ2FsbGluZ0ZyYW1lKCkpOwogfQogCiBzdGF0aWMgU3RhY2tGcmFtZUNvZGVUeXBlIGdl
dFN0YWNrRnJhbWVDb2RlVHlwZShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpCkBAIC01OTQsNyArNTk0
LDYgQEAgcHJpdmF0ZToKIHZvaWQgSW50ZXJwcmV0ZXI6OmdldFN0YWNrVHJhY2UoVmVjdG9yPFN0
YWNrRnJhbWU+JiByZXN1bHRzLCBzaXplX3QgbWF4U3RhY2tTaXplKQogewogICAgIFZNJiB2bSA9
IG1fdm07Ci0gICAgQVNTRVJUKCF2bS50b3BDYWxsRnJhbWUtPmlzVk1FbnRyeVNlbnRpbmVsKCkp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gdm0udG9wQ2FsbEZyYW1lOwogICAgIGlmICgh
Y2FsbEZyYW1lKQogICAgICAgICByZXR1cm47CkBAIC02ODAsMTUgKzY3OSw2IEBAIHByaXZhdGU6
CiAKIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6OnVud2luZChDYWxsRnJh
bWUqJiBjYWxsRnJhbWUsIEpTVmFsdWUmIGV4Y2VwdGlvblZhbHVlKQogewotICAgIGlmIChjYWxs
RnJhbWUtPmlzVk1FbnRyeVNlbnRpbmVsKCkpIHsKLSAgICAgICAgLy8gVGhpcyBoYXBwZW5zIHdo
ZW4gd2UgdGhyb3cgc3RhY2sgb3ZlcmZsb3cgaW4gYSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZAot
ICAgICAgICAvLyBkaXJlY3RseSBmcm9tIGNhbGxUb0phdmFTY3JpcHQuIFN0YWNrIG92ZXJmbG93
IHRocm93cyB0aGUgZXhjZXB0aW9uIGluIHRoZQotICAgICAgICAvLyBjb250ZXh0IG9mIHRoZSBj
YWxsZXIuIEluIHRoYXQgY2FzZSB0aGUgY2FsbGVyIGlzIHRoZSBzZW50aW5lbCBmcmFtZS4gVGhl
Ci0gICAgICAgIC8vIHJpZ2h0IHRoaW5nIHRvIGRvIGlzIHRvIHByZXRlbmQgdGhhdCB0aGUgZXhj
ZXB0aW9uIGlzIHVuY2F1Z2h0IHNvIHRoYXQgd2UKLSAgICAgICAgLy8gZ28gdG8gdGhlIHVuY2F1
Z2h0IGV4Y2VwdGlvbiBoYW5kbGVyLCB3aGljaCByZXR1cm5zIHRocm91Z2ggY2FsbFRvSmF2YVNj
cmlwdC4KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIAogICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICBBU1NFUlQoY29kZUJsb2NrKTsK
ICAgICBib29sIGlzVGVybWluYXRpb24gPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxNjg0ODMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU3LDEzICsxNTcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICA6IHZtKGN1cnJlbnRWTSkKICAgICAgICAgICAgICwgb2xkQ2FsbEZyYW1lKGN1cnJlbnRWTS50
b3BDYWxsRnJhbWUpIAogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+
aXNWTUVudHJ5U2VudGluZWwoKSk7CiAgICAgICAgICAgICBjdXJyZW50Vk0udG9wQ2FsbEZyYW1l
ID0gY2FsbEZyYW1lOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB+VG9wQ2FsbEZyYW1l
U2V0dGVyKCkgCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghb2xkQ2FsbEZyYW1lLT5p
c1ZNRW50cnlTZW50aW5lbCgpKTsKICAgICAgICAgICAgIHZtLnRvcENhbGxGcmFtZSA9IG9sZENh
bGxGcmFtZTsKICAgICAgICAgfQogICAgIHByaXZhdGU6CkBAIC0xNzcsMTggKzE3NSw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQodm0pOwogICAgICAg
ICAgICAgQVNTRVJUKGNhbGxGcmFtZSk7Ci0gICAgICAgICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+
aXNWTUVudHJ5U2VudGluZWwoKSk7CiAgICAgICAgICAgICB2bS0+dG9wQ2FsbEZyYW1lID0gY2Fs
bEZyYW1lOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBlbnVtIFZNRW50cnlTZW50aW5l
bE9LVGFnIHsgVk1FbnRyeVNlbnRpbmVsT0sgfTsKLSAgICAgICAgQUxXQVlTX0lOTElORSBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIoVk0qIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk1FbnRyeVNl
bnRpbmVsT0tUYWcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCh2bSk7Ci0gICAgICAg
ICAgICBBU1NFUlQoY2FsbEZyYW1lKTsKLSAgICAgICAgICAgIGlmICghY2FsbEZyYW1lLT5pc1ZN
RW50cnlTZW50aW5lbCgpKQotICAgICAgICAgICAgICAgIHZtLT50b3BDYWxsRnJhbWUgPSBjYWxs
RnJhbWU7Ci0gICAgICAgIH0KICAgICB9OwogCiAgICAgY2xhc3MgSW50ZXJwcmV0ZXIgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5oCShyZXZpc2lv
biAxNjg0ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1MiwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSW5zdHJ1Y3Rpb24qIHBjOwogICAgIH07CiAKKyAgICBzdHJ1Y3QgRW50cnlGcmFtZVN0YXRl
IHsKKyAgICAgICAgVk0qIHZtOworICAgICAgICBDYWxsRnJhbWUqIHRvcEpTQ2FsbGluZ0ZyYW1l
OworICAgICAgICBDYWxsRnJhbWUqIHRvcENhbGxGcmFtZTsKKyAgICB9OworCisgICAgZW51bSB7
CisgICAgICAgIEVudHJ5RnJhbWVTdGF0ZVJlZ2lzdGVyQ291bnQgPSBzaXplb2YoRW50cnlGcmFt
ZVN0YXRlKSAvIHNpemVvZihSZWdpc3RlcikKKyAgICB9OworCiAgICAgY2xhc3MgSlNTdGFjayB7
CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEpTU3RhY2spOwogICAgIHB1YmxpYzoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0
b3IuY3BwCShyZXZpc2lvbiAxNjg0ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMTAgQEAg
bmFtZXNwYWNlIEpTQyB7CiBTdGFja1Zpc2l0b3I6OlN0YWNrVmlzaXRvcihDYWxsRnJhbWUqIHN0
YXJ0RnJhbWUpCiB7CiAgICAgbV9mcmFtZS5tX2luZGV4ID0gMDsKKyAgICBpZiAoc3RhcnRGcmFt
ZSkKKyAgICAgICAgbV9mcmFtZS5tX0pTQ2FsbGluZ0ZyYW1lID0gc3RhcnRGcmFtZS0+dm0oKS50
b3BKU0NhbGxpbmdGcmFtZTsKKyAgICBlbHNlCisgICAgICAgIG1fZnJhbWUubV9KU0NhbGxpbmdG
cmFtZSA9IDA7CiAgICAgcmVhZEZyYW1lKHN0YXJ0RnJhbWUpOwogfQogCkBAIC01MSwxMiArNTUs
MTcgQEAgdm9pZCBTdGFja1Zpc2l0b3I6OmdvdG9OZXh0RnJhbWUoKQogCiAgICAgfSBlbHNlCiAj
ZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisgICAgeworICAgICAgICBpZiAobV9mcmFtZS5tX2Nh
bGxGcmFtZSkKKyAgICAgICAgICAgIG1fZnJhbWUubV9jYWxsRnJhbWUtPnVwZGF0ZUpTRW50cnlG
cmFtZShtX2ZyYW1lLm1fSlNDYWxsaW5nRnJhbWUpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtX2ZyYW1lLm1fSlNDYWxsaW5nRnJhbWUgPSAwOwogICAgICAgICByZWFkRnJhbWUobV9mcmFt
ZS5jYWxsZXJGcmFtZSgpKTsKKyAgICB9CiB9CiAKIHZvaWQgU3RhY2tWaXNpdG9yOjpyZWFkRnJh
bWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNTRVJUKCFjYWxsRnJhbWUtPmlzVk1F
bnRyeVNlbnRpbmVsKCkpOwogICAgIGlmICghY2FsbEZyYW1lKSB7CiAgICAgICAgIG1fZnJhbWUu
c2V0VG9FbmQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTA0LDcgKzExMyw3IEBAIHZvaWQgU3Rh
Y2tWaXNpdG9yOjpyZWFkTm9uSW5saW5lZEZyYW1lKEMKIHsKICAgICBtX2ZyYW1lLm1fY2FsbEZy
YW1lID0gY2FsbEZyYW1lOwogICAgIG1fZnJhbWUubV9hcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKLSAgICBtX2ZyYW1l
Lm1fY2FsbGVyRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lU2tpcHBpbmdWTUVudHJ5U2Vu
dGluZWwoKTsKKyAgICBtX2ZyYW1lLm1fY2FsbGVyRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZy
YW1lVW53aW5kKG1fZnJhbWUubV9KU0NhbGxpbmdGcmFtZSk7CiAgICAgbV9mcmFtZS5tX2NhbGxl
ZSA9IGNhbGxGcmFtZS0+Y2FsbGVlKCk7CiAgICAgbV9mcmFtZS5tX3Njb3BlID0gY2FsbEZyYW1l
LT5zY29wZSgpOwogICAgIG1fZnJhbWUubV9jb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9j
aygpOwpAQCAtMTI3LDcgKzEzNiw2IEBAIHN0YXRpYyBpbnQgaW5saW5lZEZyYW1lT2Zmc2V0KENv
ZGVPcmlnaW4KIHZvaWQgU3RhY2tWaXNpdG9yOjpyZWFkSW5saW5lZEZyYW1lKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBDb2RlT3JpZ2luKiBjb2RlT3JpZ2luKQogewogICAgIEFTU0VSVChjb2RlT3Jp
Z2luKTsKLSAgICBBU1NFUlQoIWNhbGxGcmFtZS0+aXNWTUVudHJ5U2VudGluZWwoKSk7CiAKICAg
ICBpbnQgZnJhbWVPZmZzZXQgPSBpbmxpbmVkRnJhbWVPZmZzZXQoY29kZU9yaWdpbik7CiAgICAg
Ym9vbCBpc0lubGluZWQgPSAhIWZyYW1lT2Zmc2V0OwpAQCAtMzgwLDcgKzM4OCw2IEBAIHZvaWQg
U3RhY2tWaXNpdG9yOjpGcmFtZTo6cHJpbnQoaW50IGluZGUKIAogICAgIHByaW50aWYoaSwgIiAg
IG5hbWUgJyVzJ1xuIiwgZnVuY3Rpb25OYW1lKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgcHJpbnRp
ZihpLCAiICAgc291cmNlVVJMICclcydcbiIsIHNvdXJjZVVSTCgpLnV0ZjgoKS5kYXRhKCkpOwot
ICAgIHByaW50aWYoaSwgIiAgIGlzVk1FbnRyeVNlbnRpbmVsICVkXG4iLCBjYWxsZXJGcmFtZS0+
aXNWTUVudHJ5U2VudGluZWwoKSk7CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBwcmludGlm
KGksICIgICBpc0lubGluZWRGcmFtZSAlZFxuIiwgaXNJbmxpbmVkRnJhbWUoKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oCShy
ZXZpc2lvbiAxNjg0ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3Rh
Y2tWaXNpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgogCiAg
ICAgICAgIHNpemVfdCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KICAgICAgICAg
c2l6ZV90IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgY29uc3QgeyByZXR1cm4gbV9hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpczsgfQorICAgICAgICBDYWxsRnJhbWUqIGpzQ2FsbGluZ0Zy
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9KU0NhbGxpbmdGcmFtZTsgfQogICAgICAgICBDYWxsRnJh
bWUqIGNhbGxlckZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZXJGcmFtZTsgfQogICAgICAg
ICBKU09iamVjdCogY2FsbGVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZWU7IH0KICAgICAgICAg
SlNTY29wZSogc2NvcGUoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlOyB9CkBAIC05NCw2ICs5NSw3
IEBAIHB1YmxpYzoKIAogICAgICAgICBzaXplX3QgbV9pbmRleDsKICAgICAgICAgc2l6ZV90IG1f
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CisgICAgICAgIENhbGxGcmFtZSogbV9KU0NhbGxp
bmdGcmFtZTsKICAgICAgICAgQ2FsbEZyYW1lKiBtX2NhbGxlckZyYW1lOwogICAgICAgICBKU09i
amVjdCogbV9jYWxsZWU7CiAgICAgICAgIEpTU2NvcGUqIG1fc2NvcGU7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1JbnNwZWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUluc3BlY3Rvci5jcHAJKHJldmlz
aW9uIDE2ODQ4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUluc3Bl
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw5ICsxMDIsMTEgQEAgdm9pZCBWTUluc3Bl
Y3Rvcjo6ZHVtcEZyYW1lKENhbGxGcmFtZSogZgogaW50IFZNSW5zcGVjdG9yOjpjb3VudEZyYW1l
cyhDYWxsRnJhbWUqIGZyYW1lKQogewogICAgIGludCBjb3VudCA9IC0xOwotICAgIHdoaWxlIChm
cmFtZSAmJiAhZnJhbWUtPmlzVk1FbnRyeVNlbnRpbmVsKCkpIHsKKyAgICB3aGlsZSAoZnJhbWUp
IHsKICAgICAgICAgY291bnQrKzsKICAgICAgICAgZnJhbWUgPSBmcmFtZS0+Y2FsbGVyRnJhbWUo
KTsKKyAgICAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5pc1RvcG1vc3RFbnRyeUZyYW1lKCkpCisg
ICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIGNvdW50OwogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNjg0
ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25U
aHJvd1N0YWNrT3YKIHsKICAgICAvLyBXZSBwYXNzIGluIG91ciBvd24gY29kZSBibG9jaywgYmVj
YXVzZSB0aGUgY2FsbGZyYW1lIGhhc24ndCBiZWVuIHBvcHVsYXRlZC4KICAgICBWTSogdm0gPSBj
b2RlQmxvY2stPnZtKCk7Ci0gICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxl
ckZyYW1lU2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxlckZy
YW1lID0gZXhlYy0+Y2FsbGVyRnJhbWVTa2lwcGluZ1RvcE1vc3RFbnRyeUZyYW1lKCk7CiAgICAg
aWYgKCFjYWxsZXJGcmFtZSkKICAgICAgICAgY2FsbGVyRnJhbWUgPSBleGVjOwogCkBAIC04OSw3
ICs4OSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3YKIGludDMy
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayhFeGVjU3RhdGUqIGV4ZWMp
CiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFt
ZSA9IGV4ZWMtPmNhbGxlckZyYW1lU2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKTsKKyAgICBDYWxs
RnJhbWUqIGNhbGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWVTa2lwcGluZ1RvcE1vc3RFbnRy
eUZyYW1lKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbGVyRnJh
bWUpOwogCiAgICAgSlNTdGFjayYgc3RhY2sgPSB2bS0+aW50ZXJwcmV0ZXItPnN0YWNrKCk7CkBA
IC0xMDQsNyArMTA0LDcgQEAgaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0
eQogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2soRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIENhbGxGcmFt
ZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZVNraXBwaW5nVk1FbnRyeVNlbnRpbmVs
KCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lU2tpcHBp
bmdUb3BNb3N0RW50cnlGcmFtZSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxlckZyYW1lKTsKIAogICAgIEpTU3RhY2smIHN0YWNrID0gdm0tPmludGVycHJldGVy
LT5zdGFjaygpOwpAQCAtMTc4Nyw3ICsxNzg3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkluaXRHbG9iYWxDbwogCiB2b2lkIEpJVF9PUEVSQVRJT04gbG9va3VwRXhjZXB0aW9uSGFu
ZGxlcihWTSogdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjLCBOYXRpdmVDYWxsRnJhbWVUcmFjZXI6OlZNRW50cnlTZW50aW5l
bE9LKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAogICAg
IEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUgPSB2bS0+ZXhjZXB0aW9uKCk7CiAgICAgQVNTRVJUKGV4
Y2VwdGlvblZhbHVlKTsKQEAgLTE4MDEsNyArMTgwMSw2IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WTUhhbmRsZUV4Y2UKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAotICAgIEFTU0VSVCghZXhlYy0+
aXNWTUVudHJ5U2VudGluZWwoKSk7CiAgICAgZ2VuZXJpY1Vud2luZCh2bSwgZXhlYywgdm0tPmV4
Y2VwdGlvbigpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAJKHJldmlzaW9uIDE2ODQ4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCw3IEBAIHZvaWQgRGF0
YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgIGNvbnN0IHB0cmRpZmZfdCBTbG90U2l6
ZSA9IDg7CiAjZW5kaWYKIAorLy8gJiYmJiBBZGQgYXBwcm9wcmlhdGUgQVNTRVJUUyBmb3IgbmV3
IGNvbnN0IGluIGxsaW50CiAgICAgQVNTRVJUKHNpemVvZih2b2lkKikgPT0gUHRyU2l6ZSk7CiAg
ICAgQVNTRVJUKHNpemVvZihSZWdpc3RlcikgPT0gU2xvdFNpemUpOwogICAgIEFTU0VSVChKU1N0
YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplID09IENhbGxGcmFtZUhlYWRlclNsb3RzKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAxNjg0
ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBzdHJ1Y3QgUHJvdG9DYWxsRnJhbWU7CiBleHRlcm4g
IkMiIHsKICAgICBFbmNvZGVkSlNWYWx1ZSBjYWxsVG9KYXZhU2NyaXB0KHZvaWQqLCBWTSosIFBy
b3RvQ2FsbEZyYW1lKik7CiAgICAgRW5jb2RlZEpTVmFsdWUgY2FsbFRvTmF0aXZlRnVuY3Rpb24o
dm9pZCosIFZNKiwgUHJvdG9DYWxsRnJhbWUqKTsKKyAgICB2b2lkIGdldFJldHVyblBDKCk7CiB9
CiAKIG5hbWVzcGFjZSBMTEludCB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTY4NDgzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTEzMiwzNSArMTMyLDIyIEBAIG1hY3JvIGRvQ2FsbFRvSmF2YVNj
cmlwdChtYWtlQ2FsbCkKIAogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHRlbXAyLCAw
eGJhZDBkYzAxKQogCi0gICAgIyBUaGUgc3RhY2sgcmVzZXJ2ZWQgem9uZSBlbnN1cmVzIHRoYXQg
d2UgaGF2ZSBhZGVxdWF0ZSBzcGFjZSBmb3IgdGhlCi0gICAgIyBWTUVudHJ5U2VudGluZWxGcmFt
ZS4gUHJvY2VlZCB3aXRoIGFsbG9jYXRpbmcgYW5kIGluaXRpYWxpemluZyB0aGUKLSAgICAjIHNl
bnRpbmVsIGZyYW1lLgotICAgIG1vdmUgc3AsIGNmcgotICAgIHN1YnAgQ2FsbEZyYW1lSGVhZGVy
U2xvdHMgKiA4LCBjZnIKLSAgICBzdG9yZXAgMCwgQXJndW1lbnRDb3VudFtjZnJdCi0gICAgc3Rv
cmVwIHZtLCBDYWxsZWVbY2ZyXQorICAgIHN0b3JlcCB2bSwgZW50cnlWTU9mZnNldFtjZnJdCiAg
ICAgbG9hZHAgVk06OnRvcENhbGxGcmFtZVt2bV0sIHRlbXAyCi0gICAgc3RvcmVwIHRlbXAyLCBT
Y29wZUNoYWluW2Nmcl0KLSAgICBzdG9yZXAgMSwgQ29kZUJsb2NrW2Nmcl0KLSAgICBpZiBYODZf
NjQKLSAgICAgICAgbG9hZHAgNyo4W3NwXSwgcHJldmlvdXNQQwotICAgICAgICBsb2FkcCA2Kjhb
c3BdLCBwcmV2aW91c0NGUgotICAgIGVuZAotICAgIHN0b3JlcCBwcmV2aW91c1BDLCBSZXR1cm5Q
Q1tjZnJdCi0gICAgc3RvcmVwIHByZXZpb3VzQ0ZSLCBDYWxsZXJGcmFtZVtjZnJdCisgICAgc3Rv
cmVwIHRlbXAyLCBlbnRyeVRvcENhbGxGcmFtZU9mZnNldFtjZnJdCisgICAgbG9hZHAgVk06OnRv
cEpTQ2FsbGluZ0ZyYW1lW3ZtXSwgdGVtcDIKKyAgICBzdG9yZXAgdGVtcDIsIGVudHJ5VG9wSlND
YWxsaW5nRnJhbWVPZmZzZXRbY2ZyXQogCiAgICAgbG9hZGkgUHJvdG9DYWxsRnJhbWU6OnBhZGRl
ZEFyZ0NvdW50W3Byb3RvQ2FsbEZyYW1lXSwgdGVtcDIKICAgICBhZGRwIENhbGxGcmFtZUhlYWRl
clNsb3RzLCB0ZW1wMiwgdGVtcDIKICAgICBsc2hpZnRwIDMsIHRlbXAyCi0gICAgc3VicCBjZnIs
IHRlbXAyLCB0ZW1wMQorICAgIHN1YnAgc3AsIHRlbXAyLCB0ZW1wMQogCiAgICAgIyBFbnN1cmUg
dGhhdCB3ZSBoYXZlIGVub3VnaCBhZGRpdGlvbmFsIHN0YWNrIGNhcGFjaXR5IGZvciB0aGUgaW5j
b21pbmcgYXJncywKICAgICAjIGFuZCB0aGUgZnJhbWUgZm9yIHRoZSBKUyBjb2RlIHdlJ3JlIGV4
ZWN1dGluZy4gV2UgbmVlZCB0byBkbyB0aGlzIGNoZWNrCiAgICAgIyBiZWZvcmUgd2Ugc3RhcnQg
Y29weWluZyB0aGUgYXJncyBmcm9tIHRoZSBwcm90b0NhbGxGcmFtZSBiZWxvdy4KICAgICBicGFl
cSB0ZW1wMSwgVk06Om1fanNTdGFja0xpbWl0W3ZtXSwgLnN0YWNrSGVpZ2h0T0sKIAotICAgIG1v
dmUgY2ZyLCBzcAotCiAgICAgaWYgQ19MT09QCiAgICAgICAgIG1vdmUgZW50cnksIHRlbXAyCiAg
ICAgICAgIG1vdmUgdm0sIHRlbXAzCkBAIC0yMTgsNiArMjA1LDcgQEAgbWFjcm8gZG9DYWxsVG9K
YXZhU2NyaXB0KG1ha2VDYWxsKQogICAgIGVsc2UKICAgICAgICAgc3RvcmVwIHNwLCBWTTo6dG9w
Q2FsbEZyYW1lW3ZtXQogICAgIGVuZAorICAgIHN0b3JlcCBjZnIsIFZNOjp0b3BKU0NhbGxpbmdG
cmFtZVt2bV0KIAogICAgIG1vdmUgMHhmZmZmMDAwMDAwMDAwMDAwLCBjc3IxCiAgICAgYWRkcCAy
LCBjc3IxLCBjc3IyCkBAIC0yMjgsMTkgKzIxNiwxNiBAQCBtYWNybyBkb0NhbGxUb0phdmFTY3Jp
cHQobWFrZUNhbGwpCiAKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0ZW1wMywgMHhi
YWQwZGMwMykKIAotICAgIGJwZXEgQ29kZUJsb2NrW2Nmcl0sIDEsIC5jYWxsZWVGcmFtZVBvcHBl
ZAotICAgIGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIGNmcgotCi0uY2FsbGVlRnJhbWVQb3BwZWQ6
Ci0gICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRlbXAyICMgVk0KLSAgICBsb2FkcCBTY29wZUNoYWlu
W2Nmcl0sIHRlbXAzICMgcHJldmlvdXMgdG9wQ2FsbEZyYW1lCisgICAgbG9hZHAgZW50cnlWTU9m
ZnNldFtjZnJdLCB0ZW1wMgorICAgIGxvYWRwIGVudHJ5VG9wQ2FsbEZyYW1lT2Zmc2V0W2Nmcl0s
IHRlbXAzCiAgICAgc3RvcmVwIHRlbXAzLCBWTTo6dG9wQ2FsbEZyYW1lW3RlbXAyXQorICAgIGxv
YWRwIGVudHJ5VG9wSlNDYWxsaW5nRnJhbWVPZmZzZXRbY2ZyXSwgdGVtcDMKKyAgICBzdG9yZXAg
dGVtcDMsIFZNOjp0b3BKU0NhbGxpbmdGcmFtZVt0ZW1wMl0KKworICAgIHN1YnAgY2ZyLCAxMCAq
IFNsb3RTaXplLCBzcCAjICYmJiYgTWFrZSB0aGlzIGEgY29uc3RhbnQKIAogICAgIGNoZWNrU3Rh
Y2tQb2ludGVyQWxpZ25tZW50KHRlbXAzLCAweGJhZDBkYzA0KQogCi0gICAgaWYgWDg2XzY0Ci0g
ICAgICAgIHBvcCB0NQotICAgIGVuZAogICAgIGNhbGxUb0phdmFTY3JpcHRFcGlsb2d1ZSgpCiAK
ICAgICByZXQKQEAgLTI4MywxOCArMjY4LDE1IEBAIF9oYW5kbGVVbmNhdWdodEV4Y2VwdGlvbjoK
ICAgICBsb2FkcCBNYXJrZWRCbG9jazo6bV93ZWFrU2V0ICsgV2Vha1NldDo6bV92bVt0M10sIHQz
CiAgICAgbG9hZHAgVk06OmNhbGxGcmFtZUZvclRocm93W3QzXSwgY2ZyCiAKLSAgICAjIFNvIGZh
ciwgd2UndmUgdW53b3VuZCB0aGUgc3RhY2sgdG8gdGhlIGZyYW1lIGp1c3QgYmVsb3cgdGhlIHNl
bnRpbmVsIGZyYW1lLCBleGNlcHQKLSAgICAjIGluIHRoZSBjYXNlIG9mIHN0YWNrIG92ZXJmbG93
IGluIHRoZSBmaXJzdCBmdW5jdGlvbiBjYWxsZWQgZnJvbSBjYWxsVG9KYXZhU2NyaXB0LgotICAg
ICMgQ2hlY2sgaWYgd2UgbmVlZCB0byBwb3AgdG8gdGhlIHNlbnRpbmVsIGZyYW1lIGFuZCBkbyB0
aGUgbmVjZXNzYXJ5IGNsZWFuIHVwIGZvcgotICAgICMgcmV0dXJuaW5nIHRvIHRoZSBjYWxsZXIg
QyBmcmFtZS4KLSAgICBicGVxIENvZGVCbG9ja1tjZnJdLCAxLCAuaGFuZGxlVW5jYXVnaHRFeGNl
cHRpb25BbHJlYWR5SXNTZW50aW5lbAogICAgIGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIGNmcgot
LmhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uQWxyZWFkeUlzU2VudGluZWw6Ci0KLSAgICBsb2FkcCBD
YWxsZWVbY2ZyXSwgdDMgIyBWTQotICAgIGxvYWRwIFNjb3BlQ2hhaW5bY2ZyXSwgdDUgIyBwcmV2
aW91cyB0b3BDYWxsRnJhbWUKKyAgICBsb2FkcCBlbnRyeVZNT2Zmc2V0W2Nmcl0sIHQzCisgICAg
bG9hZHAgZW50cnlUb3BKU0NhbGxpbmdGcmFtZU9mZnNldFtjZnJdLCB0NQorICAgIHN0b3JlcCB0
NSwgVk06OnRvcEpTQ2FsbGluZ0ZyYW1lW3QzXQorICAgIGxvYWRwIGVudHJ5VG9wQ2FsbEZyYW1l
T2Zmc2V0W2Nmcl0sIHQ1CiAgICAgc3RvcmVwIHQ1LCBWTTo6dG9wQ2FsbEZyYW1lW3QzXQogCisg
ICAgc3VicCBjZnIsIDEwICogU2xvdFNpemUsIHNwICMgJiYmJiBNYWtlIHRoaXMgYSBjb25zdGFu
dAorCiAgICAgY2FsbFRvSmF2YVNjcmlwdEVwaWxvZ3VlKCkKICAgICByZXQKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQkocmV2aXNpb24gMTY4NDgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1MywxMCBAQCBjb25z
dCBBcmd1bWVudENvdW50ID0gQ2FsbGVlICsgU2xvdFNpemUKIGNvbnN0IFRoaXNBcmd1bWVudE9m
ZnNldCA9IEFyZ3VtZW50Q291bnQgKyBTbG90U2l6ZQogY29uc3QgQ2FsbEZyYW1lSGVhZGVyU2l6
ZSA9IFRoaXNBcmd1bWVudE9mZnNldAogCitjb25zdCBlbnRyeVZNT2Zmc2V0ID0gLTMgKlB0clNp
emUKK2NvbnN0IGVudHJ5VG9wSlNDYWxsaW5nRnJhbWVPZmZzZXQgPSAtMiAqIFB0clNpemUKK2Nv
bnN0IGVudHJ5VG9wQ2FsbEZyYW1lT2Zmc2V0ID0gLTEgKiBQdHJTaXplCisKICMgU29tZSB2YWx1
ZSByZXByZXNlbnRhdGlvbiBjb25zdGFudHMuCiBpZiBKU1ZBTFVFNjQKIGNvbnN0IFRhZ0JpdFR5
cGVPdGhlciA9IDB4MgpAQCAtMzE4LDcgKzMyMiw2IEBAIGVuZAogbWFjcm8gY2FsbFRvSmF2YVNj
cmlwdFByb2xvZ3VlKCkKICAgICBpZiBYODZfNjQKICAgICAgICAgcHVzaCBjZnIKLSAgICAgICAg
cHVzaCB0MAogICAgIGVsc2lmIFg4NiBvciBYODZfV0lOCiAgICAgICAgIHB1c2ggY2ZyCiAgICAg
ZWxzaWYgQVJNNjQKQEAgLTMyNyw2ICszMzAsMTEgQEAgbWFjcm8gY2FsbFRvSmF2YVNjcmlwdFBy
b2xvZ3VlKCkKICAgICAgICAgcHVzaCBscgogICAgICAgICBwdXNoIGNmcgogICAgIGVuZAorICAg
IG1vdmUgc3AsIGNmcgorICAgIHN1YnAgNCAqIFB0clNpemUsIHNwICMgTGVhdmUgc3BhY2UgZm9y
IGVudHJ5IGZyYW1lIGluZm8gJiYmJiBNYWtlIGNvbnN0YW50CisgICAgaWYgWDg2XzY0CisgICAg
ICAgcHVzaCB0MAorICAgIGVuZAogICAgIHB1c2hDYWxsZWVTYXZlcwogICAgIGlmIFg4NgogICAg
ICAgICBzdWJwIDEyLCBzcApAQCAtMzQ5LDE1ICszNTcsNiBAQCBtYWNybyBjYWxsVG9KYXZhU2Ny
aXB0UHJvbG9ndWUoKQogZW5kCiAKIG1hY3JvIGNhbGxUb0phdmFTY3JpcHRFcGlsb2d1ZSgpCi0g
ICAgaWYgQVJNdjcKLSAgICAgICAgYWRkcCBDYWxsRnJhbWVIZWFkZXJTbG90cyAqIDgsIGNmciwg
dDQKLSAgICAgICAgbW92ZSB0NCwgc3AKLSAgICBlbHNlCi0gICAgICAgIGFkZHAgQ2FsbEZyYW1l
SGVhZGVyU2xvdHMgKiA4LCBjZnIsIHNwCi0gICAgZW5kCi0KLSAgICBsb2FkcCBDYWxsZXJGcmFt
ZVtjZnJdLCBjZnIKLQogICAgIGlmIFg4NgogICAgICAgICBhZGRwIDEyLCBzcAogICAgIGVsc2lm
IFg4Nl9XSU4KQEAgLTM3Myw2ICszNzIsOSBAQCBtYWNybyBjYWxsVG9KYXZhU2NyaXB0RXBpbG9n
dWUoKQogICAgIHBvcENhbGxlZVNhdmVzCiAgICAgaWYgWDg2XzY0CiAgICAgICAgIHBvcCB0Mgor
ICAgIGVuZAorICAgYWRkcCA0ICogUHRyU2l6ZSwgc3AKKyAgICBpZiBYODZfNjQKICAgICAgICAg
cG9wIGNmcgogICAgIGVsc2lmIFg4NiBvciBYODZfV0lOCiAgICAgICAgIHBvcCBjZnIKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE2ODQ4MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0
LDYgKzE3NCw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAg
ICAsIGhlYXAodGhpcywgaGVhcFR5cGUpCiAgICAgLCB2bVR5cGUodm1UeXBlKQogICAgICwgY2xp
ZW50RGF0YSgwKQorICAgICwgdG9wSlNDYWxsaW5nRnJhbWUoQ2FsbEZyYW1lOjpub0NhbGxlcigp
KQogICAgICwgdG9wQ2FsbEZyYW1lKENhbGxGcmFtZTo6bm9DYWxsZXIoKSkKICAgICAsIGFycmF5
Q29uc3RydWN0b3JUYWJsZShhZG9wdFB0cihuZXcgSGFzaFRhYmxlKEpTQzo6YXJyYXlDb25zdHJ1
Y3RvclRhYmxlKSkpCiAgICAgLCBhcnJheVByb3RvdHlwZVRhYmxlKGFkb3B0UHRyKG5ldyBIYXNo
VGFibGUoSlNDOjphcnJheVByb3RvdHlwZVRhYmxlKSkpCkBAIC02OTYsOSArNjk3LDEwIEBAIEpT
VmFsdWUgVk06OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXgKICAgICBpZiAoZXhjZXB0aW9u
LT5pc0Vycm9ySW5zdGFuY2UoKSAmJiBzdGF0aWNfY2FzdDxFcnJvckluc3RhbmNlKj4oZXhjZXB0
aW9uKS0+YXBwZW5kU291cmNlVG9NZXNzYWdlKCkpIHsKICAgICAgICAgdW5zaWduZWQgc3RhY2tJ
bmRleCA9IDA7CiAgICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lOworICAgICAgICBDYWxsRnJh
bWUqIGVudHJ5RnJhbWUgPSBleGVjLT52bSgpLnRvcENhbGxGcmFtZTsKICAgICAgICAgZm9yIChj
YWxsRnJhbWUgPSBleGVjOyBjYWxsRnJhbWUgJiYgIWNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7ICkg
ewogICAgICAgICAgICAgc3RhY2tJbmRleCsrOwotICAgICAgICAgICAgY2FsbEZyYW1lID0gY2Fs
bEZyYW1lLT5jYWxsZXJGcmFtZVNraXBwaW5nVk1FbnRyeVNlbnRpbmVsKCk7CisgICAgICAgICAg
ICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lVW53aW5kKGVudHJ5RnJhbWUpOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChjYWxsRnJhbWUgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2so
KSkgewogICAgICAgICAgICAgc3RhY2tGcmFtZSA9IHN0YWNrVHJhY2UuYXQoc3RhY2tJbmRleCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE2ODQ4MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTIy
OSw2ICsyMjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBWTVR5cGUgdm1UeXBlOwog
ICAgICAgICBDbGllbnREYXRhKiBjbGllbnREYXRhOworICAgICAgICBFeGVjU3RhdGUqIHRvcEpT
Q2FsbGluZ0ZyYW1lOwogICAgICAgICBFeGVjU3RhdGUqIHRvcENhbGxGcmFtZTsKICAgICAgICAg
V2F0Y2hkb2cgd2F0Y2hkb2c7CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0RhdGFMb2cuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0RhdGFMb2cuY3BwCShyZXZpc2lvbiAxNjg0ODMp
CisrKyBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyAr
NDEsNyBAQAogI2VuZGlmCiAjZW5kaWYKIAotI2RlZmluZSBEQVRBX0xPR19UT19GSUxFIDAKKyNk
ZWZpbmUgREFUQV9MT0dfVE9fRklMRSAxCiAKIC8vIFNldCB0byAxIHRvIHVzZSB0aGUgdGVtcCBk
aXJlY3RvcnkgZnJvbSBjb25mc3RyIGluc3RlYWQgb2YgaGFyZGNvZGVkIGRpcmVjdG9yeS4KIC8v
IFRoZSBsYXN0IGNvbXBvbmVudCBvZiBEQVRBX0xPR19GSUxFTkFNRSB3aWxsIHN0aWxsIGJlIHVz
ZWQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234021</attachid>
            <date>2014-06-27 15:04:00 -0700</date>
            <delta_ts>2014-08-07 15:32:30 -0700</delta_ts>
            <desc>Now mostly works on X86 (32 &amp; 64)</desc>
            <filename>unwind-no-sentinel-wip14.patch</filename>
            <type>text/plain</type>
            <size>31932</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAxNzA1NTcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTY4LDggKzU2OCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmkKICNpZm5kZWYgTkRFQlVHCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcENhbGxGcmFtZShFeGVjU3Rh
dGUqIGV4ZWMpCiB7Ci0gICAgaWYgKCFleGVjLT5jYWxsZXJGcmFtZSgpLT5pc1ZNRW50cnlTZW50
aW5lbCgpKQotICAgICAgICBleGVjLT52bSgpLmludGVycHJldGVyLT5kdW1wQ2FsbEZyYW1lKGV4
ZWMtPmNhbGxlckZyYW1lKCkpOworICAgIGV4ZWMtPnZtKCkuaW50ZXJwcmV0ZXItPmR1bXBDYWxs
RnJhbWUoZXhlYy0+Y2FsbGVyRnJhbWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE3MDU1NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDg0
LDggKzMwODQsNiBAQCB2b2lkIENvZGVCbG9jazo6bm90aWNlSW5jb21pbmdDYWxsKEV4ZWNTCiAg
ICAgCiAgICAgRXhlY1N0YXRlKiBmcmFtZSA9IGNhbGxlckZyYW1lOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ0RlcHRoKCk7IGktLTsgZnJhbWUgPSBmcmFt
ZS0+Y2FsbGVyRnJhbWUoKSkgewotICAgICAgICBpZiAoZnJhbWUtPmlzVk1FbnRyeVNlbnRpbmVs
KCkpCi0gICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKGZyYW1lLT5jb2RlQmxvY2soKSA9
PSB0aGlzKSB7CiAgICAgICAgICAgICAvLyBSZWN1cnNpdmUgY2FsbHMgd29uJ3QgYmUgaW5saW5l
ZC4KICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlQ2FsbExpbmsoKSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkocmV2aXNpb24gMTcw
NTU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTk3LDcgKzU5Nyw3IEBAIHZvaWQgRGVidWdnZXI6OnN0ZXBPdXRPZkZ1
bmN0aW9uKCkKICAgICBpZiAoIW1faXNQYXVzZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cGF1c2VPbkNhbGxGcmFtZSA9IG1fY3VycmVudENhbGxGcmFtZSA/IG1fY3VycmVudENhbGxGcmFt
ZS0+Y2FsbGVyRnJhbWVTa2lwcGluZ1ZNRW50cnlTZW50aW5lbCgpIDogMDsKKyAgICBtX3BhdXNl
T25DYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUgPyBtX2N1cnJlbnRDYWxsRnJhbWUtPmNh
bGxlckZyYW1lU2tpcHBpbmdUb3BNb3N0RW50cnlGcmFtZSgpIDogMDsKICAgICBub3RpZnlEb25l
UHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCk7CiB9CiAKQEAgLTcxNCw5ICs3MTQsOSBAQCB2b2lk
IERlYnVnZ2VyOjpyZXR1cm5FdmVudChDYWxsRnJhbWUqIGNhCiAKICAgICAvLyBUcmVhdCBzdGVw
cGluZyBvdmVyIGEgcmV0dXJuIHN0YXRlbWVudCBsaWtlIHN0ZXBwaW5nIG91dC4KICAgICBpZiAo
bV9jdXJyZW50Q2FsbEZyYW1lID09IG1fcGF1c2VPbkNhbGxGcmFtZSkKLSAgICAgICAgbV9wYXVz
ZU9uQ2FsbEZyYW1lID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5jYWxsZXJGcmFtZVNraXBwaW5nVk1F
bnRyeVNlbnRpbmVsKCk7CisgICAgICAgIG1fcGF1c2VPbkNhbGxGcmFtZSA9IG1fY3VycmVudENh
bGxGcmFtZS0+Y2FsbGVyRnJhbWVTa2lwcGluZ1RvcE1vc3RFbnRyeUZyYW1lKCk7CiAKLSAgICBt
X2N1cnJlbnRDYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlckZyYW1lU2tpcHBp
bmdWTUVudHJ5U2VudGluZWwoKTsKKyAgICBtX2N1cnJlbnRDYWxsRnJhbWUgPSBtX2N1cnJlbnRD
YWxsRnJhbWUtPmNhbGxlckZyYW1lU2tpcHBpbmdUb3BNb3N0RW50cnlGcmFtZSgpOwogfQogCiB2
b2lkIERlYnVnZ2VyOjp3aWxsRXhlY3V0ZVByb2dyYW0oQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBA
IC03NDYsMTEgKzc0NiwxMSBAQCB2b2lkIERlYnVnZ2VyOjpkaWRFeGVjdXRlUHJvZ3JhbShDYWxs
RnJhCiAgICAgaWYgKCFtX2N1cnJlbnRDYWxsRnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAobV9jdXJyZW50Q2FsbEZyYW1lID09IG1fcGF1c2VPbkNhbGxGcmFtZSkgewotICAgICAgICBt
X3BhdXNlT25DYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlckZyYW1lU2tpcHBp
bmdWTUVudHJ5U2VudGluZWwoKTsKKyAgICAgICAgbV9wYXVzZU9uQ2FsbEZyYW1lID0gbV9jdXJy
ZW50Q2FsbEZyYW1lLT5jYWxsZXJGcmFtZVNraXBwaW5nVG9wTW9zdEVudHJ5RnJhbWUoKTsKICAg
ICAgICAgaWYgKCFtX2N1cnJlbnRDYWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIG1fY3VycmVudENhbGxGcmFtZSA9IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVyRnJh
bWVTa2lwcGluZ1ZNRW50cnlTZW50aW5lbCgpOworICAgIG1fY3VycmVudENhbGxGcmFtZSA9IG1f
Y3VycmVudENhbGxGcmFtZS0+Y2FsbGVyRnJhbWVTa2lwcGluZ1RvcE1vc3RFbnRyeUZyYW1lKCk7
CiB9CiAKIHZvaWQgRGVidWdnZXI6OmRpZFJlYWNoQnJlYWtwb2ludChDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxG
cmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyQ2FsbEZyYW1lLmNwcAkocmV2aXNpb24gMTcwNTU3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzAsNyArNzAsNyBAQCBQYXNzUmVmUHRyPERlYnVnZ2VyQ2FsbEZyYW1lPiBEZWJ1Z2dlckNhCiAg
ICAgaWYgKG1fY2FsbGVyKQogICAgICAgICByZXR1cm4gbV9jYWxsZXI7CiAKLSAgICBDYWxsRnJh
bWUqIGNhbGxlckZyYW1lID0gbV9jYWxsRnJhbWUtPmNhbGxlckZyYW1lU2tpcHBpbmdWTUVudHJ5
U2VudGluZWwoKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gbV9jYWxsRnJhbWUtPmNh
bGxlckZyYW1lU2tpcHBpbmdUb3BNb3N0RW50cnlGcmFtZSgpOwogICAgIGlmICghY2FsbGVyRnJh
bWUpCiAgICAgICAgIHJldHVybiAwOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAxNzA1NTcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4
Miw3ICsxODIsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAKICAgICAgICAgUmVnaXN0ZXIqIHRvcE9m
RnJhbWUoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaXNWTUVudHJ5U2VudGluZWwoKSB8
fCAhY29kZUJsb2NrKCkpCisgICAgICAgICAgICBpZiAoIWNvZGVCbG9jaygpKQogICAgICAgICAg
ICAgICAgIHJldHVybiByZWdpc3RlcnMoKTsKICAgICAgICAgICAgIHJldHVybiB0b3BPZkZyYW1l
SW50ZXJuYWwoKTsKICAgICAgICAgfQpAQCAtMTkwLDEyICsxOTAsMTAgQEAgbmFtZXNwYWNlIEpT
QyAgewogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIEluc3RydWN0aW9uKiBjdXJyZW50
VlBDKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCFpc1ZNRW50cnlTZW50
aW5lbCgpKTsKICAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPih0
aGlzW0pTU3RhY2s6OkFyZ3VtZW50Q291bnRdLnRhZygpKTsKICAgICAgICAgfQogICAgICAgICB2
b2lkIHNldEN1cnJlbnRWUEMoSW5zdHJ1Y3Rpb24qIHZwYykKICAgICAgICAgewotICAgICAgICAg
ICAgQVNTRVJUKCFpc1ZNRW50cnlTZW50aW5lbCgpKTsKICAgICAgICAgICAgIHRoaXNbSlNTdGFj
azo6QXJndW1lbnRDb3VudF0udGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4odnBjKTsKICAg
ICAgICAgfQogI2Vsc2UKQEAgLTIxMCw3ICsyMDgsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAg
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBpbml0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVj
dGlvbiogdlBDLCBKU1Njb3BlKiBzY29wZSwKICAgICAgICAgICAgIENhbGxGcmFtZSogY2FsbGVy
RnJhbWUsIGludCBhcmdjLCBKU09iamVjdCogY2FsbGVlKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBBU1NFUlQoY2FsbGVyRnJhbWUgPT0gbm9DYWxsZXIoKSB8fCBjYWxsZXJGcmFtZS0+aXNWTUVu
dHJ5U2VudGluZWwoKSB8fCBjYWxsZXJGcmFtZS0+c3RhY2soKS0+Y29udGFpbnNBZGRyZXNzKHRo
aXMpKTsKKyAgICAgICAgICAgIEFTU0VSVChjYWxsZXJGcmFtZSA9PSBub0NhbGxlcigpIHx8IGNh
bGxlckZyYW1lLT5zdGFjaygpLT5jb250YWluc0FkZHJlc3ModGhpcykpOwogCiAgICAgICAgICAg
ICBzZXRDb2RlQmxvY2soY29kZUJsb2NrKTsKICAgICAgICAgICAgIHNldFNjb3BlKHNjb3BlKTsK
QEAgLTI2NiwzMyArMjY0LDMyIEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgICAgICBzdGF0aWMg
Q2FsbEZyYW1lKiBub0NhbGxlcigpIHsgcmV0dXJuIDA7IH0KIAotICAgICAgICBib29sIGlzVk1F
bnRyeVNlbnRpbmVsKCkgY29uc3QKKyAgICAgICAgYm9vbCBpc1RvcG1vc3RFbnRyeUZyYW1lKCkg
Y29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEhdGhpcyAmJiBjb2RlQmxvY2so
KSA9PSB2bUVudHJ5U2VudGluZWxDb2RlQmxvY2soKTsKKyAgICAgICAgICAgIHJldHVybiBjYWxs
ZXJGcmFtZSgpID09IHZtKCkudG9wSlNDYWxsaW5nRnJhbWU7CiAgICAgICAgIH0KIAotICAgICAg
ICBDYWxsRnJhbWUqIHZtRW50cnlTZW50aW5lbENhbGxlckZyYW1lKCkgY29uc3QKKyAgICAgICAg
dm9pZCB1cGRhdGVKU0VudHJ5RnJhbWUoQ2FsbEZyYW1lKiYgY3VyckpTRW50cnlGcmFtZSkgY29u
c3QKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGlzVk1FbnRyeVNlbnRpbmVsKCkpOwot
ICAgICAgICAgICAgcmV0dXJuIHRoaXNbSlNTdGFjazo6U2NvcGVDaGFpbl0uY2FsbEZyYW1lKCk7
CisgICAgICAgICAgICBpZiAoY3VyckpTRW50cnlGcmFtZSA9PSBjYWxsZXJGcmFtZSgpKQorICAg
ICAgICAgICAgICAgIGN1cnJKU0VudHJ5RnJhbWUgPSBjYWxsZXJGcmFtZSgpWy1FbnRyeUZyYW1l
U3RhdGVSZWdpc3RlckNvdW50XS5lbnRyeUZyYW1lU3RhdGUoKS50b3BKU0NhbGxpbmdGcmFtZTsK
ICAgICAgICAgfQotCi0gICAgICAgIHZvaWQgaW5pdGlhbGl6ZVZNRW50cnlTZW50aW5lbEZyYW1l
KENhbGxGcmFtZSogY2FsbEZyYW1lKQorICAgICAgICAKKyAgICAgICAgQ2FsbEZyYW1lKiBjYWxs
ZXJGcmFtZVVud2luZChDYWxsRnJhbWUqJiBjdXJySlNFbnRyeUZyYW1lLCBib29sIGRvVXBkYXRl
SlNFbnRyeUZyYW1lID0gZmFsc2UpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHNldENhbGxlckZy
YW1lKG5vQ2FsbGVyKCkpOwotICAgICAgICAgICAgc2V0UmV0dXJuUEMoMCk7Ci0gICAgICAgICAg
ICBzZXRDb2RlQmxvY2sodm1FbnRyeVNlbnRpbmVsQ29kZUJsb2NrKCkpOwotICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtKU1N0YWNrOjpTY29wZUNoYWluXSA9IGNhbGxG
cmFtZTsKLSAgICAgICAgICAgIHNldENhbGxlZSgwKTsKLSAgICAgICAgICAgIHNldEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKDApOworICAgICAgICAgICAgaWYgKGN1cnJKU0VudHJ5RnJhbWUg
PT0gY2FsbGVyRnJhbWUoKSkgeworICAgICAgICAgICAgICAgIGlmIChkb1VwZGF0ZUpTRW50cnlG
cmFtZSkKKyAgICAgICAgICAgICAgICAgICAgdXBkYXRlSlNFbnRyeUZyYW1lKGN1cnJKU0VudHJ5
RnJhbWUpOworICAgICAgICAgICAgICAgIHJldHVybiB2bVByaW9yVG9wQ2FsbEZyYW1lKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gY2FsbGVyRnJhbWUoKTsKICAgICAgICAg
fQogCi0gICAgICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWVTa2lwcGluZ1ZNRW50cnlTZW50aW5l
bCgpCisgICAgICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWVTa2lwcGluZ1RvcE1vc3RFbnRyeUZy
YW1lKCkKICAgICAgICAgewotICAgICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsZXIgPSBjYWxsZXJG
cmFtZSgpOwotICAgICAgICAgICAgaWYgKGNhbGxlci0+aXNWTUVudHJ5U2VudGluZWwoKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gY2FsbGVyLT52bUVudHJ5U2VudGluZWxDYWxsZXJGcmFtZSgp
OwotICAgICAgICAgICAgcmV0dXJuIGNhbGxlcjsKKyAgICAgICAgICAgIGlmIChpc1RvcG1vc3RF
bnRyeUZyYW1lKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHZtUHJpb3JUb3BDYWxsRnJhbWUo
KTsKKyAgICAgICAgICAgIHJldHVybiBjYWxsZXJGcmFtZSgpOwogICAgICAgICB9CiAKICAgICAg
ICAgdm9pZCBzZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhpbnQgY291bnQpIHsgc3RhdGlj
X2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtKU1N0YWNrOjpBcmd1bWVudENvdW50XS5wYXlsb2FkKCkg
PSBjb3VudDsgfQpAQCAtMzA5LDcgKzMwNiw2IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAg
fQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IHNfVk1FbnRy
eVNlbnRpbmVsID0gMTsKIAogI2lmbmRlZiBOREVCVUcKICAgICAgICAgSlNTdGFjayogc3RhY2so
KTsKQEAgLTM0OCwxMCArMzQ0LDE0IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgICAgIHJl
dHVybiB0aGlzW2FyZ3VtZW50T2Zmc2V0KGFyZ0luZGV4KV0uanNWYWx1ZSgpOwogICAgICAgICB9
CiAKKyAgICAgICAgQ2FsbEZyYW1lKiB2bVByaW9yVG9wQ2FsbEZyYW1lKCkgY29uc3QKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGNhbGxlckZyYW1lKClbLUVudHJ5RnJhbWVTdGF0ZVJl
Z2lzdGVyQ291bnRdLmVudHJ5RnJhbWVTdGF0ZSgpLnRvcENhbGxGcmFtZTsKKyAgICAgICAgfQor
CiAgICAgICAgIENhbGxlckZyYW1lQW5kUEMmIGNhbGxlckZyYW1lQW5kUEMoKSB7IHJldHVybiAq
cmVpbnRlcnByZXRfY2FzdDxDYWxsZXJGcmFtZUFuZFBDKj4odGhpcyk7IH0KICAgICAgICAgY29u
c3QgQ2FsbGVyRnJhbWVBbmRQQyYgY2FsbGVyRnJhbWVBbmRQQygpIGNvbnN0IHsgcmV0dXJuICpy
ZWludGVycHJldF9jYXN0PGNvbnN0IENhbGxlckZyYW1lQW5kUEMqPih0aGlzKTsgfQotCi0gICAg
ICAgIHN0YXRpYyBDb2RlQmxvY2sqIHZtRW50cnlTZW50aW5lbENvZGVCbG9jaygpIHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Q29kZUJsb2NrKj4oc19WTUVudHJ5U2VudGluZWwpOyB9CisgICAg
ICAgIGNvbnN0IEVudHJ5RnJhbWVTdGF0ZSYgZW50cnlGcmFtZVN0YXRlKCkgY29uc3QgeyByZXR1
cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRW50cnlGcmFtZVN0YXRlKj4odGhpcyk7IH0KIAog
ICAgICAgICBmcmllbmQgY2xhc3MgSlNTdGFjazsKICAgICAgICAgZnJpZW5kIGNsYXNzIFZNSW5z
cGVjdG9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxNzA1NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzcsNyAr
NDc3LDcgQEAgc3RhdGljIGJvb2wgdW53aW5kQ2FsbEZyYW1lKFN0YWNrVmlzaXRvcgogICAgIH0K
IAogICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCk7
Ci0gICAgcmV0dXJuICFjYWxsZXJGcmFtZS0+aXNWTUVudHJ5U2VudGluZWwoKTsKKyAgICByZXR1
cm4gIShjYWxsZXJGcmFtZSA9PSB2aXNpdG9yLT5qc0NhbGxpbmdGcmFtZSgpKTsKIH0KIAogc3Rh
dGljIFN0YWNrRnJhbWVDb2RlVHlwZSBnZXRTdGFja0ZyYW1lQ29kZVR5cGUoU3RhY2tWaXNpdG9y
JiB2aXNpdG9yKQpAQCAtNTk0LDcgKzU5NCw2IEBAIHByaXZhdGU6CiB2b2lkIEludGVycHJldGVy
OjpnZXRTdGFja1RyYWNlKFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0cywgc2l6ZV90IG1heFN0
YWNrU2l6ZSkKIHsKICAgICBWTSYgdm0gPSBtX3ZtOwotICAgIEFTU0VSVCghdm0udG9wQ2FsbEZy
YW1lLT5pc1ZNRW50cnlTZW50aW5lbCgpKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHZt
LnRvcENhbGxGcmFtZTsKICAgICBpZiAoIWNhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NjgwLDE1ICs2NzksNiBAQCBwcml2YXRlOgogCiBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIElu
dGVycHJldGVyOjp1bndpbmQoQ2FsbEZyYW1lKiYgY2FsbEZyYW1lLCBKU1ZhbHVlJiBleGNlcHRp
b25WYWx1ZSkKIHsKLSAgICBpZiAoY2FsbEZyYW1lLT5pc1ZNRW50cnlTZW50aW5lbCgpKSB7Ci0g
ICAgICAgIC8vIFRoaXMgaGFwcGVucyB3aGVuIHdlIHRocm93IHN0YWNrIG92ZXJmbG93IGluIGEg
ZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQKLSAgICAgICAgLy8gZGlyZWN0bHkgZnJvbSBjYWxsVG9K
YXZhU2NyaXB0LiBTdGFjayBvdmVyZmxvdyB0aHJvd3MgdGhlIGV4Y2VwdGlvbiBpbiB0aGUKLSAg
ICAgICAgLy8gY29udGV4dCBvZiB0aGUgY2FsbGVyLiBJbiB0aGF0IGNhc2UgdGhlIGNhbGxlciBp
cyB0aGUgc2VudGluZWwgZnJhbWUuIFRoZQotICAgICAgICAvLyByaWdodCB0aGluZyB0byBkbyBp
cyB0byBwcmV0ZW5kIHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyB1bmNhdWdodCBzbyB0aGF0IHdlCi0g
ICAgICAgIC8vIGdvIHRvIHRoZSB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlciwgd2hpY2ggcmV0
dXJucyB0aHJvdWdoIGNhbGxUb0phdmFTY3JpcHQuCi0gICAgICAgIHJldHVybiAwOwotICAgIH0K
LSAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7
CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAgICAgYm9vbCBpc1Rlcm1pbmF0aW9uID0gZmFsc2U7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuaAkocmV2aXNpb24gMTcwNTU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NywxMyArMTU3LDExIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgOiB2bShjdXJyZW50Vk0pCiAgICAgICAgICAgICAs
IG9sZENhbGxGcmFtZShjdXJyZW50Vk0udG9wQ2FsbEZyYW1lKSAKICAgICAgICAgewotICAgICAg
ICAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPmlzVk1FbnRyeVNlbnRpbmVsKCkpOwogICAgICAgICAg
ICAgY3VycmVudFZNLnRvcENhbGxGcmFtZSA9IGNhbGxGcmFtZTsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgflRvcENhbGxGcmFtZVNldHRlcigpIAogICAgICAgICB7Ci0gICAgICAgICAg
ICBBU1NFUlQoIW9sZENhbGxGcmFtZS0+aXNWTUVudHJ5U2VudGluZWwoKSk7CiAgICAgICAgICAg
ICB2bS50b3BDYWxsRnJhbWUgPSBvbGRDYWxsRnJhbWU7CiAgICAgICAgIH0KICAgICBwcml2YXRl
OgpAQCAtMTc3LDE4ICsxNzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAg
ICAgICAgQVNTRVJUKHZtKTsKICAgICAgICAgICAgIEFTU0VSVChjYWxsRnJhbWUpOwotICAgICAg
ICAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPmlzVk1FbnRyeVNlbnRpbmVsKCkpOwogICAgICAgICAg
ICAgdm0tPnRvcENhbGxGcmFtZSA9IGNhbGxGcmFtZTsKICAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgZW51bSBWTUVudHJ5U2VudGluZWxPS1RhZyB7IFZNRW50cnlTZW50aW5lbE9LIH07Ci0g
ICAgICAgIEFMV0FZU19JTkxJTkUgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyKFZNKiB2bSwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIFZNRW50cnlTZW50aW5lbE9LVGFnKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBBU1NFUlQodm0pOwotICAgICAgICAgICAgQVNTRVJUKGNhbGxGcmFtZSk7Ci0gICAgICAg
ICAgICBpZiAoIWNhbGxGcmFtZS0+aXNWTUVudHJ5U2VudGluZWwoKSkKLSAgICAgICAgICAgICAg
ICB2bS0+dG9wQ2FsbEZyYW1lID0gY2FsbEZyYW1lOwotICAgICAgICB9CiAgICAgfTsKIAogICAg
IGNsYXNzIEludGVycHJldGVyIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9KU1N0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0pTU3RhY2suaAkocmV2aXNpb24gMTcwNTU3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0pTU3RhY2suaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsMTcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEluc3RydWN0aW9uKiBwYzsKICAgICB9OwogCisg
ICAgc3RydWN0IEVudHJ5RnJhbWVTdGF0ZSB7CisgICAgICAgIHZvaWQqIHNwYXJlOworICAgICAg
ICBWTSogdm07CisgICAgICAgIENhbGxGcmFtZSogdG9wSlNDYWxsaW5nRnJhbWU7CisgICAgICAg
IENhbGxGcmFtZSogdG9wQ2FsbEZyYW1lOworICAgIH07CisKKyAgICBlbnVtIHsKKyAgICAgICAg
RW50cnlGcmFtZVN0YXRlUmVnaXN0ZXJDb3VudCA9IHNpemVvZihFbnRyeUZyYW1lU3RhdGUpIC8g
c2l6ZW9mKFJlZ2lzdGVyKQorICAgIH07CisKICAgICBjbGFzcyBKU1N0YWNrIHsKICAgICAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSlNTdGFjayk7CiAgICAgcHVibGljOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAJKHJl
dmlzaW9uIDE3MDU1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFj
a1Zpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIFN0YWNrVmlzaXRvcjo6U3RhY2tWaXNpdG9yKENhbGxGcmFtZSogc3RhcnRGcmFtZSkK
IHsKICAgICBtX2ZyYW1lLm1faW5kZXggPSAwOworICAgIGlmIChzdGFydEZyYW1lKQorICAgICAg
ICBtX2ZyYW1lLm1fSlNDYWxsaW5nRnJhbWUgPSBzdGFydEZyYW1lLT52bSgpLnRvcEpTQ2FsbGlu
Z0ZyYW1lOworICAgIGVsc2UKKyAgICAgICAgbV9mcmFtZS5tX0pTQ2FsbGluZ0ZyYW1lID0gMDsK
ICAgICByZWFkRnJhbWUoc3RhcnRGcmFtZSk7CiB9CiAKQEAgLTUxLDEyICs1NSwxNyBAQCB2b2lk
IFN0YWNrVmlzaXRvcjo6Z290b05leHRGcmFtZSgpCiAKICAgICB9IGVsc2UKICNlbmRpZiAvLyBF
TkFCTEUoREZHX0pJVCkKKyAgICB7CisgICAgICAgIGlmIChtX2ZyYW1lLm1fY2FsbEZyYW1lKQor
ICAgICAgICAgICAgbV9mcmFtZS5tX2NhbGxGcmFtZS0+dXBkYXRlSlNFbnRyeUZyYW1lKG1fZnJh
bWUubV9KU0NhbGxpbmdGcmFtZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZnJhbWUu
bV9KU0NhbGxpbmdGcmFtZSA9IDA7CiAgICAgICAgIHJlYWRGcmFtZShtX2ZyYW1lLmNhbGxlckZy
YW1lKCkpOworICAgIH0KIH0KIAogdm9pZCBTdGFja1Zpc2l0b3I6OnJlYWRGcmFtZShDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKLSAgICBBU1NFUlQoIWNhbGxGcmFtZS0+aXNWTUVudHJ5U2VudGlu
ZWwoKSk7CiAgICAgaWYgKCFjYWxsRnJhbWUpIHsKICAgICAgICAgbV9mcmFtZS5zZXRUb0VuZCgp
OwogICAgICAgICByZXR1cm47CkBAIC0xMDQsNyArMTEzLDcgQEAgdm9pZCBTdGFja1Zpc2l0b3I6
OnJlYWROb25JbmxpbmVkRnJhbWUoQwogewogICAgIG1fZnJhbWUubV9jYWxsRnJhbWUgPSBjYWxs
RnJhbWU7CiAgICAgbV9mcmFtZS5tX2FyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOwotICAgIG1fZnJhbWUubV9jYWxsZXJG
cmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWVTa2lwcGluZ1ZNRW50cnlTZW50aW5lbCgpOwor
ICAgIG1fZnJhbWUubV9jYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWVVbndpbmQo
bV9mcmFtZS5tX0pTQ2FsbGluZ0ZyYW1lKTsKICAgICBtX2ZyYW1lLm1fY2FsbGVlID0gY2FsbEZy
YW1lLT5jYWxsZWUoKTsKICAgICBtX2ZyYW1lLm1fc2NvcGUgPSBjYWxsRnJhbWUtPnNjb3BlKCk7
CiAgICAgbV9mcmFtZS5tX2NvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBAIC0x
MjcsNyArMTM2LDYgQEAgc3RhdGljIGludCBpbmxpbmVkRnJhbWVPZmZzZXQoQ29kZU9yaWdpbgog
dm9pZCBTdGFja1Zpc2l0b3I6OnJlYWRJbmxpbmVkRnJhbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IENvZGVPcmlnaW4qIGNvZGVPcmlnaW4pCiB7CiAgICAgQVNTRVJUKGNvZGVPcmlnaW4pOwotICAg
IEFTU0VSVCghY2FsbEZyYW1lLT5pc1ZNRW50cnlTZW50aW5lbCgpKTsKIAogICAgIGludCBmcmFt
ZU9mZnNldCA9IGlubGluZWRGcmFtZU9mZnNldChjb2RlT3JpZ2luKTsKICAgICBib29sIGlzSW5s
aW5lZCA9ICEhZnJhbWVPZmZzZXQ7CkBAIC0zODAsNyArMzg4LDYgQEAgdm9pZCBTdGFja1Zpc2l0
b3I6OkZyYW1lOjpwcmludChpbnQgaW5kZQogCiAgICAgcHJpbnRpZihpLCAiICAgbmFtZSAnJXMn
XG4iLCBmdW5jdGlvbk5hbWUoKS51dGY4KCkuZGF0YSgpKTsKICAgICBwcmludGlmKGksICIgICBz
b3VyY2VVUkwgJyVzJ1xuIiwgc291cmNlVVJMKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgcHJpbnRp
ZihpLCAiICAgaXNWTUVudHJ5U2VudGluZWwgJWRcbiIsIGNhbGxlckZyYW1lLT5pc1ZNRW50cnlT
ZW50aW5lbCgpKTsKIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIHByaW50aWYoaSwgIiAgIGlz
SW5saW5lZEZyYW1lICVkXG4iLCBpc0lubGluZWRGcmFtZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgJKHJldmlzaW9uIDE3
MDU1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgc2l6
ZV90IGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQogICAgICAgICBzaXplX3QgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzOyB9CisgICAgICAgIENhbGxGcmFtZSoganNDYWxsaW5nRnJhbWUoKSBjb25z
dCB7IHJldHVybiBtX0pTQ2FsbGluZ0ZyYW1lOyB9CiAgICAgICAgIENhbGxGcmFtZSogY2FsbGVy
RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlckZyYW1lOyB9CiAgICAgICAgIEpTT2JqZWN0
KiBjYWxsZWUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZTsgfQogICAgICAgICBKU1Njb3BlKiBz
Y29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGU7IH0KQEAgLTk0LDYgKzk1LDcgQEAgcHVibGlj
OgogCiAgICAgICAgIHNpemVfdCBtX2luZGV4OwogICAgICAgICBzaXplX3QgbV9hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpczsKKyAgICAgICAgQ2FsbEZyYW1lKiBtX0pTQ2FsbGluZ0ZyYW1lOwog
ICAgICAgICBDYWxsRnJhbWUqIG1fY2FsbGVyRnJhbWU7CiAgICAgICAgIEpTT2JqZWN0KiBtX2Nh
bGxlZTsKICAgICAgICAgSlNTY29wZSogbV9zY29wZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9WTUluc3BlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9yLmNwcAkocmV2aXNpb24gMTcwNTU3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTAyLDkgKzEwMiwxMSBAQCB2b2lkIFZNSW5zcGVjdG9yOjpkdW1w
RnJhbWUoQ2FsbEZyYW1lKiBmCiBpbnQgVk1JbnNwZWN0b3I6OmNvdW50RnJhbWVzKENhbGxGcmFt
ZSogZnJhbWUpCiB7CiAgICAgaW50IGNvdW50ID0gLTE7Ci0gICAgd2hpbGUgKGZyYW1lICYmICFm
cmFtZS0+aXNWTUVudHJ5U2VudGluZWwoKSkgeworICAgIHdoaWxlIChmcmFtZSkgewogICAgICAg
ICBjb3VudCsrOwogICAgICAgICBmcmFtZSA9IGZyYW1lLT5jYWxsZXJGcmFtZSgpOworICAgICAg
ICBpZiAoZnJhbWUgJiYgZnJhbWUtPmlzVG9wbW9zdEVudHJ5RnJhbWUoKSkKKyAgICAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gY291bnQ7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE3MDU1NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tP
dgogewogICAgIC8vIFdlIHBhc3MgaW4gb3VyIG93biBjb2RlIGJsb2NrLCBiZWNhdXNlIHRoZSBj
YWxsZnJhbWUgaGFzbid0IGJlZW4gcG9wdWxhdGVkLgogICAgIFZNKiB2bSA9IGNvZGVCbG9jay0+
dm0oKTsKLSAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWVTa2lw
cGluZ1ZNRW50cnlTZW50aW5lbCgpOworICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVj
LT5jYWxsZXJGcmFtZVNraXBwaW5nVG9wTW9zdEVudHJ5RnJhbWUoKTsKICAgICBpZiAoIWNhbGxl
ckZyYW1lKQogICAgICAgICBjYWxsZXJGcmFtZSA9IGV4ZWM7CiAKQEAgLTg5LDcgKzg5LDcgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdgogaW50MzJfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBW
TSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gZXhlYy0+
Y2FsbGVyRnJhbWVTa2lwcGluZ1ZNRW50cnlTZW50aW5lbCgpOworICAgIENhbGxGcmFtZSogY2Fs
bGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZVNraXBwaW5nVG9wTW9zdEVudHJ5RnJhbWUoKTsK
ICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsZXJGcmFtZSk7CiAKICAg
ICBKU1N0YWNrJiBzdGFjayA9IHZtLT5pbnRlcnByZXRlci0+c3RhY2soKTsKQEAgLTEwNCw3ICsx
MDQsNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEFyaXR5CiBpbnQzMl90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayhFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgQ2FsbEZyYW1lKiBjYWxsZXJG
cmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lU2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKTsKKyAgICBD
YWxsRnJhbWUqIGNhbGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWVTa2lwcGluZ1RvcE1vc3RF
bnRyeUZyYW1lKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbGVy
RnJhbWUpOwogCiAgICAgSlNTdGFjayYgc3RhY2sgPSB2bS0+aW50ZXJwcmV0ZXItPnN0YWNrKCk7
CkBAIC0xNzg3LDcgKzE3ODcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5pdEds
b2JhbENvCiAKIHZvaWQgSklUX09QRVJBVElPTiBsb29rdXBFeGNlcHRpb25IYW5kbGVyKFZNKiB2
bSwgRXhlY1N0YXRlKiBleGVjKQogewotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMsIE5hdGl2ZUNhbGxGcmFtZVRyYWNlcjo6Vk1FbnRyeVNlbnRpbmVsT0spOworICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCiAgICAgSlNWYWx1ZSBl
eGNlcHRpb25WYWx1ZSA9IHZtLT5leGNlcHRpb24oKTsKICAgICBBU1NFUlQoZXhjZXB0aW9uVmFs
dWUpOwpAQCAtMTgwMSw3ICsxODAxLDYgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZN
SGFuZGxlRXhjZQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCi0gICAgQVNTRVJUKCFleGVjLT5pc1ZNRW50cnlT
ZW50aW5lbCgpKTsKICAgICBnZW5lcmljVW53aW5kKHZtLCBleGVjLCB2bS0+ZXhjZXB0aW9uKCkp
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAko
cmV2aXNpb24gMTcwNTU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDcgQEAgdm9pZCBEYXRhOjpwZXJmb3Jt
QXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgY29uc3QgcHRyZGlmZl90IENhbGxGcmFtZUhlYWRlclNs
b3RzID0gNTsKICNlbmRpZgogICAgIGNvbnN0IHB0cmRpZmZfdCBTbG90U2l6ZSA9IDg7CisgICAg
Y29uc3QgcHRyZGlmZl90IEVudHJ5RnJhbWVTdGF0ZVNpemUgPSA0ICogUHRyU2l6ZTsKICNlbmRp
ZgogCiAgICAgQVNTRVJUKHNpemVvZih2b2lkKikgPT0gUHRyU2l6ZSk7CkBAIC0xMDAsNiArMTAx
LDEwIEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogCiAgICAgQVNTRVJU
KENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApID09IEpTU3RhY2s6OlRo
aXNBcmd1bWVudCk7CiAKKyAgICBBU1NFUlQoc2l6ZW9mKHN0cnVjdCBFbnRyeUZyYW1lU3RhdGUp
ID09IEVudHJ5RnJhbWVTdGF0ZVNpemUpOworICAgIEFTU0VSVChPQkpFQ1RfT0ZGU0VUT0YoRW50
cnlGcmFtZVN0YXRlLCB2bSkgPT0gKEVudHJ5RnJhbWVTdGF0ZVNpemUgLSAzICogUHRyU2l6ZSkp
OworICAgIEFTU0VSVChPQkpFQ1RfT0ZGU0VUT0YoRW50cnlGcmFtZVN0YXRlLCB0b3BKU0NhbGxp
bmdGcmFtZSkgPT0gKEVudHJ5RnJhbWVTdGF0ZVNpemUgLSAyICogUHRyU2l6ZSkpOworICAgIEFT
U0VSVChPQkpFQ1RfT0ZGU0VUT0YoRW50cnlGcmFtZVN0YXRlLCB0b3BDYWxsRnJhbWUpID09IChF
bnRyeUZyYW1lU3RhdGVTaXplIC0gMSAqIFB0clNpemUpKTsKICNpZiBDUFUoQklHX0VORElBTikK
ICAgICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0
cy50YWcpID09IDApOwogICAgIEFTU0VSVChPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnBheWxvYWQpID09IDQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50VGh1bmtzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDE3MDU1NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICsz
OCw3IEBAIHN0cnVjdCBQcm90b0NhbGxGcmFtZTsKIGV4dGVybiAiQyIgewogICAgIEVuY29kZWRK
U1ZhbHVlIGNhbGxUb0phdmFTY3JpcHQodm9pZCosIFZNKiwgUHJvdG9DYWxsRnJhbWUqKTsKICAg
ICBFbmNvZGVkSlNWYWx1ZSBjYWxsVG9OYXRpdmVGdW5jdGlvbih2b2lkKiwgVk0qLCBQcm90b0Nh
bGxGcmFtZSopOworICAgIHZvaWQgZ2V0UmV0dXJuUEMoKTsKIH0KIAogbmFtZXNwYWNlIExMSW50
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxNzA1NTcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBj
b3B5KQpAQCAtMjA2LDYwICsyMDYsMzkgQEAgbWFjcm8gZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VD
YWxsKQogICAgIGNhbGxUb0phdmFTY3JpcHRQcm9sb2d1ZSgpCiAKICAgICBpZiBYODYKLSAgICAg
ICAgbG9hZHAgMzZbc3BdLCB2bQotICAgICAgICBsb2FkcCAzMltzcF0sIGVudHJ5CisgICAgICAg
IGxvYWRwIDEyW2Nmcl0sIHZtCisgICAgICAgIGxvYWRwIDhbY2ZyXSwgZW50cnkKICAgICBlbHNp
ZiBYODZfV0lOCi0gICAgICAgIGxvYWRwIDQwW3NwLCB0ZW1wM10sIHZtCi0gICAgICAgIGxvYWRw
IDM2W3NwLCB0ZW1wM10sIGVudHJ5CisgICAgICAgIGxvYWRwIDQwW3NwLCB0ZW1wM10sIHZtICMg
JiYmJiBGaXggcmVsYXRpdmUgdG8gY2ZyCisgICAgICAgIGxvYWRwIDM2W3NwLCB0ZW1wM10sIGVu
dHJ5ICMgJiYmJiBGaXggcmVsYXRpdmUgdG8gY2ZyCiAgICAgZWxzZQogICAgICAgICBtb3ZlIGNm
ciwgcHJldmlvdXNDRlIKICAgICBlbmQKIAotICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50
KHRlbXAyLCAweGJhZDBkYzAxKQorIyAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0ZW1w
MiwgMHhiYWQwZGMwMSkKIAotICAgICMgVGhlIHN0YWNrIHJlc2VydmVkIHpvbmUgZW5zdXJlcyB0
aGF0IHdlIGhhdmUgYWRlcXVhdGUgc3BhY2UgZm9yIHRoZQotICAgICMgVk1FbnRyeVNlbnRpbmVs
RnJhbWUuIFByb2NlZWQgd2l0aCBhbGxvY2F0aW5nIGFuZCBpbml0aWFsaXppbmcgdGhlCi0gICAg
IyBzZW50aW5lbCBmcmFtZS4KLSAgICBtb3ZlIHNwLCBjZnIKLSAgICBzdWJwIENhbGxGcmFtZUhl
YWRlclNsb3RzICogOCwgY2ZyCi0gICAgc3RvcmVwIDAsIEFyZ3VtZW50Q291bnRbY2ZyXQotICAg
IHN0b3JlcCB2bSwgQ2FsbGVlW2Nmcl0KKyAgICBzdG9yZXAgdm0sIGVudHJ5Vk1PZmZzZXRbY2Zy
XQogICAgIGxvYWRwIFZNOjp0b3BDYWxsRnJhbWVbdm1dLCB0ZW1wMgotICAgIHN0b3JlcCB0ZW1w
MiwgU2NvcGVDaGFpbltjZnJdCi0gICAgc3RvcmVwIDEsIENvZGVCbG9ja1tjZnJdCi0gICAgaWYg
WDg2Ci0gICAgICAgIGxvYWRwIDI4W3NwXSwgcHJldmlvdXNQQwotICAgICAgICBsb2FkcCAyNFtz
cF0sIHByZXZpb3VzQ0ZSCi0gICAgZWxzaWYgWDg2X1dJTgotICAgICAgICBsb2FkcCAzMltzcCwg
dGVtcDNdLCBwcmV2aW91c1BDCi0gICAgICAgIGxvYWRwIDI4W3NwLCB0ZW1wM10sIHByZXZpb3Vz
Q0ZSCi0gICAgZW5kCi0gICAgc3RvcmVwIHByZXZpb3VzUEMsIFJldHVyblBDW2Nmcl0KLSAgICBz
dG9yZXAgcHJldmlvdXNDRlIsIENhbGxlckZyYW1lW2Nmcl0KKyAgICBzdG9yZXAgdGVtcDIsIGVu
dHJ5VG9wQ2FsbEZyYW1lT2Zmc2V0W2Nmcl0KKyAgICBsb2FkcCBWTTo6dG9wSlNDYWxsaW5nRnJh
bWVbdm1dLCB0ZW1wMgorICAgIHN0b3JlcCB0ZW1wMiwgZW50cnlUb3BKU0NhbGxpbmdGcmFtZU9m
ZnNldFtjZnJdCiAKICAgICBpZiBYODYKLSAgICAgICAgbG9hZHAgNDBbc3BdLCBwcm90b0NhbGxG
cmFtZQorICAgICAgICBsb2FkcCAxNltjZnJdLCBwcm90b0NhbGxGcmFtZQogICAgIGVsc2lmIFg4
Nl9XSU4KLSAgICAgICAgbG9hZHAgNDRbc3AsIHRlbXAzXSwgcHJvdG9DYWxsRnJhbWUKKyAgICAg
ICAgbG9hZHAgNDRbc3AsIHRlbXAzXSwgcHJvdG9DYWxsRnJhbWUgIyAmJiYmIEZpeCByZWxhdGl2
ZSB0byBjZnIKICAgICBlbmQKIAogICAgIGxvYWRpIFByb3RvQ2FsbEZyYW1lOjpwYWRkZWRBcmdD
b3VudFtwcm90b0NhbGxGcmFtZV0sIHRlbXAyCiAgICAgYWRkcCBDYWxsRnJhbWVIZWFkZXJTbG90
cywgdGVtcDIsIHRlbXAyCiAgICAgbHNoaWZ0cCAzLCB0ZW1wMgotICAgIHN1YnAgY2ZyLCB0ZW1w
MiwgdGVtcDEKKyAgICBzdWJwIHNwLCB0ZW1wMiwgdGVtcDEKIAogICAgICMgRW5zdXJlIHRoYXQg
d2UgaGF2ZSBlbm91Z2ggYWRkaXRpb25hbCBzdGFjayBjYXBhY2l0eSBmb3IgdGhlIGluY29taW5n
IGFyZ3MsCiAgICAgIyBhbmQgdGhlIGZyYW1lIGZvciB0aGUgSlMgY29kZSB3ZSdyZSBleGVjdXRp
bmcuIFdlIG5lZWQgdG8gZG8gdGhpcyBjaGVjawogICAgICMgYmVmb3JlIHdlIHN0YXJ0IGNvcHlp
bmcgdGhlIGFyZ3MgZnJvbSB0aGUgcHJvdG9DYWxsRnJhbWUgYmVsb3cuCiAgICAgYnBhZXEgdGVt
cDEsIFZNOjptX2pzU3RhY2tMaW1pdFt2bV0sIC5zdGFja0hlaWdodE9LCiAKLSAgICBpZiBBUk12
NwotICAgICAgICBzdWJwIGNmciwgOCwgdGVtcDIKLSAgICAgICAgbW92ZSB0ZW1wMiwgc3AKLSAg
ICBlbHNlCi0gICAgICAgIHN1YnAgY2ZyLCA4LCBzcAotICAgIGVuZAotCiAgICAgaWYgQ19MT09Q
CiAgICAgICAgIG1vdmUgZW50cnksIHRlbXAyCiAgICAgICAgIG1vdmUgdm0sIHRlbXAzCkBAIC0z
MTYsMTYgKzI5NSwxNyBAQCBtYWNybyBkb0NhbGxUb0phdmFTY3JpcHQobWFrZUNhbGwpCiAKIC5j
b3B5QXJnc0RvbmU6CiAgICAgc3RvcmVwIHNwLCBWTTo6dG9wQ2FsbEZyYW1lW3ZtXQorICAgIHN0
b3JlcCBjZnIsIFZNOjp0b3BKU0NhbGxpbmdGcmFtZVt2bV0KIAogICAgIG1ha2VDYWxsKGVudHJ5
LCB0ZW1wMSwgdGVtcDIpCiAKLSAgICBicGVxIENvZGVCbG9ja1tjZnJdLCAxLCAuY2FsbGVlRnJh
bWVQb3BwZWQKLSAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIKLQotLmNhbGxlZUZyYW1l
UG9wcGVkOgotICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0ZW1wMyAjIFZNCi0gICAgbG9hZHAgU2Nv
cGVDaGFpbltjZnJdLCB0ZW1wNCAjIHByZXZpb3VzIHRvcENhbGxGcmFtZQorICAgIGxvYWRwIGVu
dHJ5Vk1PZmZzZXRbY2ZyXSwgdGVtcDMKKyAgICBsb2FkcCBlbnRyeVRvcENhbGxGcmFtZU9mZnNl
dFtjZnJdLCB0ZW1wNAogICAgIHN0b3JlcCB0ZW1wNCwgVk06OnRvcENhbGxGcmFtZVt0ZW1wM10K
KyAgICBsb2FkcCBlbnRyeVRvcEpTQ2FsbGluZ0ZyYW1lT2Zmc2V0W2Nmcl0sIHRlbXA0CisgICAg
c3RvcmVwIHRlbXA0LCBWTTo6dG9wSlNDYWxsaW5nRnJhbWVbdGVtcDNdCisKKyAgICBzdWJwIGNm
ciwgY2FsbFRvSmF2YVNjcmlwdEZyYW1lU2l6ZSwgc3AKIAogICAgIGNhbGxUb0phdmFTY3JpcHRF
cGlsb2d1ZSgpCiAgICAgcmV0CkBAIC0zNzgsMTggKzM1OCwxNSBAQCBfaGFuZGxlVW5jYXVnaHRF
eGNlcHRpb246CiAgICAgbG9hZHAgTWFya2VkQmxvY2s6Om1fd2Vha1NldCArIFdlYWtTZXQ6Om1f
dm1bdDNdLCB0MwogICAgIGxvYWRwIFZNOjpjYWxsRnJhbWVGb3JUaHJvd1t0M10sIGNmcgogCi0g
ICAgIyBTbyBmYXIsIHdlJ3ZlIHVud291bmQgdGhlIHN0YWNrIHRvIHRoZSBmcmFtZSBqdXN0IGJl
bG93IHRoZSBzZW50aW5lbCBmcmFtZSwgZXhjZXB0Ci0gICAgIyBpbiB0aGUgY2FzZSBvZiBzdGFj
ayBvdmVyZmxvdyBpbiB0aGUgZmlyc3QgZnVuY3Rpb24gY2FsbGVkIGZyb20gY2FsbFRvSmF2YVNj
cmlwdC4KLSAgICAjIENoZWNrIGlmIHdlIG5lZWQgdG8gcG9wIHRvIHRoZSBzZW50aW5lbCBmcmFt
ZSBhbmQgZG8gdGhlIG5lY2Vzc2FyeSBjbGVhbiB1cCBmb3IKLSAgICAjIHJldHVybmluZyB0byB0
aGUgY2FsbGVyIEMgZnJhbWUuCi0gICAgYnBlcSBDb2RlQmxvY2tbY2ZyXSwgMSwgLmhhbmRsZVVu
Y2F1Z2h0RXhjZXB0aW9uQWxyZWFkeUlzU2VudGluZWwKICAgICBsb2FkcCBDYWxsZXJGcmFtZSAr
IFBheWxvYWRPZmZzZXRbY2ZyXSwgY2ZyCi0uaGFuZGxlVW5jYXVnaHRFeGNlcHRpb25BbHJlYWR5
SXNTZW50aW5lbDoKLQotICAgIGxvYWRwIENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDMg
IyBWTQotICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQ1ICMgcHJl
dmlvdXMgdG9wQ2FsbEZyYW1lCisgICAgbG9hZHAgZW50cnlWTU9mZnNldFtjZnJdLCB0MworICAg
IGxvYWRwIGVudHJ5VG9wSlNDYWxsaW5nRnJhbWVPZmZzZXRbY2ZyXSwgdDUKKyAgICBzdG9yZXAg
dDUsIFZNOjp0b3BKU0NhbGxpbmdGcmFtZVt0M10KKyAgICBsb2FkcCBlbnRyeVRvcENhbGxGcmFt
ZU9mZnNldFtjZnJdLCB0NQogICAgIHN0b3JlcCB0NSwgVk06OnRvcENhbGxGcmFtZVt0M10KIAor
ICAgIHN1YnAgY2ZyLCBjYWxsVG9KYXZhU2NyaXB0RnJhbWVTaXplLCBzcAorCiAgICAgY2FsbFRv
SmF2YVNjcmlwdEVwaWxvZ3VlKCkKICAgICByZXQKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9u
IDE3MDU1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsMzUgKzEzMiwyMiBAQCBtYWNybyBkb0Nh
bGxUb0phdmFTY3JpcHQobWFrZUNhbGwpCiAKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVu
dCh0ZW1wMiwgMHhiYWQwZGMwMSkKIAotICAgICMgVGhlIHN0YWNrIHJlc2VydmVkIHpvbmUgZW5z
dXJlcyB0aGF0IHdlIGhhdmUgYWRlcXVhdGUgc3BhY2UgZm9yIHRoZQotICAgICMgVk1FbnRyeVNl
bnRpbmVsRnJhbWUuIFByb2NlZWQgd2l0aCBhbGxvY2F0aW5nIGFuZCBpbml0aWFsaXppbmcgdGhl
Ci0gICAgIyBzZW50aW5lbCBmcmFtZS4KLSAgICBtb3ZlIHNwLCBjZnIKLSAgICBzdWJwIENhbGxG
cmFtZUhlYWRlclNsb3RzICogOCwgY2ZyCi0gICAgc3RvcmVwIDAsIEFyZ3VtZW50Q291bnRbY2Zy
XQotICAgIHN0b3JlcCB2bSwgQ2FsbGVlW2Nmcl0KKyAgICBzdG9yZXAgdm0sIGVudHJ5Vk1PZmZz
ZXRbY2ZyXQogICAgIGxvYWRwIFZNOjp0b3BDYWxsRnJhbWVbdm1dLCB0ZW1wMgotICAgIHN0b3Jl
cCB0ZW1wMiwgU2NvcGVDaGFpbltjZnJdCi0gICAgc3RvcmVwIDEsIENvZGVCbG9ja1tjZnJdCi0g
ICAgaWYgWDg2XzY0Ci0gICAgICAgIGxvYWRwIDcqOFtzcF0sIHByZXZpb3VzUEMKLSAgICAgICAg
bG9hZHAgNio4W3NwXSwgcHJldmlvdXNDRlIKLSAgICBlbmQKLSAgICBzdG9yZXAgcHJldmlvdXNQ
QywgUmV0dXJuUENbY2ZyXQotICAgIHN0b3JlcCBwcmV2aW91c0NGUiwgQ2FsbGVyRnJhbWVbY2Zy
XQorICAgIHN0b3JlcCB0ZW1wMiwgZW50cnlUb3BDYWxsRnJhbWVPZmZzZXRbY2ZyXQorICAgIGxv
YWRwIFZNOjp0b3BKU0NhbGxpbmdGcmFtZVt2bV0sIHRlbXAyCisgICAgc3RvcmVwIHRlbXAyLCBl
bnRyeVRvcEpTQ2FsbGluZ0ZyYW1lT2Zmc2V0W2Nmcl0KIAogICAgIGxvYWRpIFByb3RvQ2FsbEZy
YW1lOjpwYWRkZWRBcmdDb3VudFtwcm90b0NhbGxGcmFtZV0sIHRlbXAyCiAgICAgYWRkcCBDYWxs
RnJhbWVIZWFkZXJTbG90cywgdGVtcDIsIHRlbXAyCiAgICAgbHNoaWZ0cCAzLCB0ZW1wMgotICAg
IHN1YnAgY2ZyLCB0ZW1wMiwgdGVtcDEKKyAgICBzdWJwIHNwLCB0ZW1wMiwgdGVtcDEKIAogICAg
ICMgRW5zdXJlIHRoYXQgd2UgaGF2ZSBlbm91Z2ggYWRkaXRpb25hbCBzdGFjayBjYXBhY2l0eSBm
b3IgdGhlIGluY29taW5nIGFyZ3MsCiAgICAgIyBhbmQgdGhlIGZyYW1lIGZvciB0aGUgSlMgY29k
ZSB3ZSdyZSBleGVjdXRpbmcuIFdlIG5lZWQgdG8gZG8gdGhpcyBjaGVjawogICAgICMgYmVmb3Jl
IHdlIHN0YXJ0IGNvcHlpbmcgdGhlIGFyZ3MgZnJvbSB0aGUgcHJvdG9DYWxsRnJhbWUgYmVsb3cu
CiAgICAgYnBhZXEgdGVtcDEsIFZNOjptX2pzU3RhY2tMaW1pdFt2bV0sIC5zdGFja0hlaWdodE9L
CiAKLSAgICBtb3ZlIGNmciwgc3AKLQogICAgIGlmIENfTE9PUAogICAgICAgICBtb3ZlIGVudHJ5
LCB0ZW1wMgogICAgICAgICBtb3ZlIHZtLCB0ZW1wMwpAQCAtMjE4LDYgKzIwNSw3IEBAIG1hY3Jv
IGRvQ2FsbFRvSmF2YVNjcmlwdChtYWtlQ2FsbCkKICAgICBlbHNlCiAgICAgICAgIHN0b3JlcCBz
cCwgVk06OnRvcENhbGxGcmFtZVt2bV0KICAgICBlbmQKKyAgICBzdG9yZXAgY2ZyLCBWTTo6dG9w
SlNDYWxsaW5nRnJhbWVbdm1dCiAKICAgICBtb3ZlIDB4ZmZmZjAwMDAwMDAwMDAwMCwgY3NyMQog
ICAgIGFkZHAgMiwgY3NyMSwgY3NyMgpAQCAtMjI4LDE5ICsyMTYsMTYgQEAgbWFjcm8gZG9DYWxs
VG9KYXZhU2NyaXB0KG1ha2VDYWxsKQogCiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQo
dGVtcDMsIDB4YmFkMGRjMDMpCiAKLSAgICBicGVxIENvZGVCbG9ja1tjZnJdLCAxLCAuY2FsbGVl
RnJhbWVQb3BwZWQKLSAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIKLQotLmNhbGxlZUZy
YW1lUG9wcGVkOgotICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0ZW1wMiAjIFZNCi0gICAgbG9hZHAg
U2NvcGVDaGFpbltjZnJdLCB0ZW1wMyAjIHByZXZpb3VzIHRvcENhbGxGcmFtZQorICAgIGxvYWRw
IGVudHJ5Vk1PZmZzZXRbY2ZyXSwgdGVtcDIKKyAgICBsb2FkcCBlbnRyeVRvcENhbGxGcmFtZU9m
ZnNldFtjZnJdLCB0ZW1wMwogICAgIHN0b3JlcCB0ZW1wMywgVk06OnRvcENhbGxGcmFtZVt0ZW1w
Ml0KKyAgICBsb2FkcCBlbnRyeVRvcEpTQ2FsbGluZ0ZyYW1lT2Zmc2V0W2Nmcl0sIHRlbXAzCisg
ICAgc3RvcmVwIHRlbXAzLCBWTTo6dG9wSlNDYWxsaW5nRnJhbWVbdGVtcDJdCisKKyAgICBzdWJw
IGNmciwgY2FsbFRvSmF2YVNjcmlwdEZyYW1lU2l6ZSwgc3AKIAogICAgIGNoZWNrU3RhY2tQb2lu
dGVyQWxpZ25tZW50KHRlbXAzLCAweGJhZDBkYzA0KQogCi0gICAgaWYgWDg2XzY0Ci0gICAgICAg
IHBvcCB0NQotICAgIGVuZAogICAgIGNhbGxUb0phdmFTY3JpcHRFcGlsb2d1ZSgpCiAKICAgICBy
ZXQKQEAgLTI4MywxOCArMjY4LDE1IEBAIF9oYW5kbGVVbmNhdWdodEV4Y2VwdGlvbjoKICAgICBs
b2FkcCBNYXJrZWRCbG9jazo6bV93ZWFrU2V0ICsgV2Vha1NldDo6bV92bVt0M10sIHQzCiAgICAg
bG9hZHAgVk06OmNhbGxGcmFtZUZvclRocm93W3QzXSwgY2ZyCiAKLSAgICAjIFNvIGZhciwgd2Un
dmUgdW53b3VuZCB0aGUgc3RhY2sgdG8gdGhlIGZyYW1lIGp1c3QgYmVsb3cgdGhlIHNlbnRpbmVs
IGZyYW1lLCBleGNlcHQKLSAgICAjIGluIHRoZSBjYXNlIG9mIHN0YWNrIG92ZXJmbG93IGluIHRo
ZSBmaXJzdCBmdW5jdGlvbiBjYWxsZWQgZnJvbSBjYWxsVG9KYXZhU2NyaXB0LgotICAgICMgQ2hl
Y2sgaWYgd2UgbmVlZCB0byBwb3AgdG8gdGhlIHNlbnRpbmVsIGZyYW1lIGFuZCBkbyB0aGUgbmVj
ZXNzYXJ5IGNsZWFuIHVwIGZvcgotICAgICMgcmV0dXJuaW5nIHRvIHRoZSBjYWxsZXIgQyBmcmFt
ZS4KLSAgICBicGVxIENvZGVCbG9ja1tjZnJdLCAxLCAuaGFuZGxlVW5jYXVnaHRFeGNlcHRpb25B
bHJlYWR5SXNTZW50aW5lbAogICAgIGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIGNmcgotLmhhbmRs
ZVVuY2F1Z2h0RXhjZXB0aW9uQWxyZWFkeUlzU2VudGluZWw6Ci0KLSAgICBsb2FkcCBDYWxsZWVb
Y2ZyXSwgdDMgIyBWTQotICAgIGxvYWRwIFNjb3BlQ2hhaW5bY2ZyXSwgdDUgIyBwcmV2aW91cyB0
b3BDYWxsRnJhbWUKKyAgICBsb2FkcCBlbnRyeVZNT2Zmc2V0W2Nmcl0sIHQzCisgICAgbG9hZHAg
ZW50cnlUb3BKU0NhbGxpbmdGcmFtZU9mZnNldFtjZnJdLCB0NQorICAgIHN0b3JlcCB0NSwgVk06
OnRvcEpTQ2FsbGluZ0ZyYW1lW3QzXQorICAgIGxvYWRwIGVudHJ5VG9wQ2FsbEZyYW1lT2Zmc2V0
W2Nmcl0sIHQ1CiAgICAgc3RvcmVwIHQ1LCBWTTo6dG9wQ2FsbEZyYW1lW3QzXQogCisgICAgc3Vi
cCBjZnIsIGNhbGxUb0phdmFTY3JpcHRGcmFtZVNpemUsIHNwCisKICAgICBjYWxsVG9KYXZhU2Ny
aXB0RXBpbG9ndWUoKQogICAgIHJldAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxNzA1NTcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdv
cmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDMwIEBAIGNvbnN0IEFyZ3VtZW50Q291bnQgPSBDYWxs
ZWUgKyBTbG90U2l6ZQogY29uc3QgVGhpc0FyZ3VtZW50T2Zmc2V0ID0gQXJndW1lbnRDb3VudCAr
IFNsb3RTaXplCiBjb25zdCBDYWxsRnJhbWVIZWFkZXJTaXplID0gVGhpc0FyZ3VtZW50T2Zmc2V0
CiAKKyMgc3RydWN0IEVudHJ5RnJhbWVTdGF0ZSBpcyBwbGFjZWQgYXQgdGhlIGJlZ2lubmluZyBv
ZiB0aGUgc3RhY2sgZnJhbWUgaW4gY2FsbFRvSmF2YVNjcmlwdCBhbmQgaXMgYWNjZXNzCisjIHZp
YSB0aGUgY2ZyIHVzaW5nIG5lZ2F0aXZlIGFkZHJlc3Nlcy4KK2NvbnN0IGVudHJ5Vk1PZmZzZXQg
PSAtMyAqUHRyU2l6ZQorY29uc3QgZW50cnlUb3BKU0NhbGxpbmdGcmFtZU9mZnNldCA9IC0yICog
UHRyU2l6ZQorY29uc3QgZW50cnlUb3BDYWxsRnJhbWVPZmZzZXQgPSAtMSAqIFB0clNpemUKK2Nv
bnN0IEVudHJ5RnJhbWVTdGF0ZVNpemUgPSA0ICogUHRyU2l6ZQorCisjIGNhbGxUb0phdmFTY3Jp
cHRGcmFtZVNpemUgaW5jbHVkZXMgdGhlIHNwYWNlIGZvciBzdHJ1Y3QgRW50cnlGcmFtZVN0YXRl
IGFuZCB0aGUgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzCitpZiBYODZfNjQKKyAgICBjb25zdCBjYWxs
VG9KYXZhU2NyaXB0RnJhbWVTaXplID0gMTAgKiBQdHJTaXplCitlbHNpZiBBUk02NAorICAgIGNv
bnN0IGNhbGxUb0phdmFTY3JpcHRGcmFtZVNpemUgPSAxMCAqIFB0clNpemUgIyAmJiYmIEZpeAor
ZWxzaWYgWDg2CisgICAgY29uc3QgY2FsbFRvSmF2YVNjcmlwdEZyYW1lU2l6ZSA9IDggKiBQdHJT
aXplCitlbHNpZiBYODZfV0lOCisgICAgY29uc3QgY2FsbFRvSmF2YVNjcmlwdEZyYW1lU2l6ZSA9
IDEwICogUHRyU2l6ZSAjICYmJiYgRml4CitlbHNpZiBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJB
RElUSU9OQUwKKyAgICBjb25zdCBjYWxsVG9KYXZhU2NyaXB0RnJhbWVTaXplID0gMTAgKiBQdHJT
aXplICMgJiYmJiBGaXgKK2Vsc2lmIE1JUFMgb3IgU0g0CisgICAgY29uc3QgY2FsbFRvSmF2YVNj
cmlwdEZyYW1lU2l6ZSA9IDEwICogUHRyU2l6ZSAjICYmJiYgRml4CitlbHNpZiBDX0xPT1AKKyAg
ICBjb25zdCBjYWxsVG9KYXZhU2NyaXB0RnJhbWVTaXplID0gMTAgKiBQdHJTaXplICMgJiYmJiBG
aXgKK2VuZAorCiAjIFNvbWUgdmFsdWUgcmVwcmVzZW50YXRpb24gY29uc3RhbnRzLgogaWYgSlNW
QUxVRTY0CiBjb25zdCBUYWdCaXRUeXBlT3RoZXIgPSAweDIKQEAgLTMxOCw3ICszNDIsNiBAQCBl
bmQKIG1hY3JvIGNhbGxUb0phdmFTY3JpcHRQcm9sb2d1ZSgpCiAgICAgaWYgWDg2XzY0CiAgICAg
ICAgIHB1c2ggY2ZyCi0gICAgICAgIHB1c2ggdDAKICAgICBlbHNpZiBYODYgb3IgWDg2X1dJTgog
ICAgICAgICBwdXNoIGNmcgogICAgIGVsc2lmIEFSTTY0CkBAIC0zMjcsOSArMzUwLDE0IEBAIG1h
Y3JvIGNhbGxUb0phdmFTY3JpcHRQcm9sb2d1ZSgpCiAgICAgICAgIHB1c2ggbHIKICAgICAgICAg
cHVzaCBjZnIKICAgICBlbmQKKyAgICBtb3ZlIHNwLCBjZnIKKyAgICBzdWJwIEVudHJ5RnJhbWVT
dGF0ZVNpemUsIHNwICMgTGVhdmUgc3BhY2UgZm9yIGVudHJ5IGZyYW1lIGluZm8KKyAgICBpZiBY
ODZfNjQKKyAgICAgICBwdXNoIHQwCisgICAgZW5kCiAgICAgcHVzaENhbGxlZVNhdmVzCiAgICAg
aWYgWDg2Ci0gICAgICAgIHN1YnAgMTIsIHNwCisgICAgICAgIHN1YnAgNCwgc3AKICAgICBlbHNp
ZiBYODZfV0lOCiAgICAgICAgIHN1YnAgMTYsIHNwCiAgICAgICAgIG1vdmUgc3AsIHQ0CkBAIC0z
NDksMTcgKzM3Nyw4IEBAIG1hY3JvIGNhbGxUb0phdmFTY3JpcHRQcm9sb2d1ZSgpCiBlbmQKIAog
bWFjcm8gY2FsbFRvSmF2YVNjcmlwdEVwaWxvZ3VlKCkKLSAgICBpZiBBUk12NwotICAgICAgICBh
ZGRwIENhbGxGcmFtZUhlYWRlclNsb3RzICogOCwgY2ZyLCB0NAotICAgICAgICBtb3ZlIHQ0LCBz
cAotICAgIGVsc2UKLSAgICAgICAgYWRkcCBDYWxsRnJhbWVIZWFkZXJTbG90cyAqIDgsIGNmciwg
c3AKLSAgICBlbmQKLQotICAgIGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIGNmcgotCiAgICAgaWYg
WDg2Ci0gICAgICAgIGFkZHAgMTIsIHNwCisgICAgICAgIGFkZHAgNCwgc3AKICAgICBlbHNpZiBY
ODZfV0lOCiAgICAgICAgIHBvcCB0NAogICAgICAgICBtb3ZlIHQ0LCBzcApAQCAtMzczLDYgKzM5
Miw5IEBAIG1hY3JvIGNhbGxUb0phdmFTY3JpcHRFcGlsb2d1ZSgpCiAgICAgcG9wQ2FsbGVlU2F2
ZXMKICAgICBpZiBYODZfNjQKICAgICAgICAgcG9wIHQyCisgICAgZW5kCisgICAgYWRkcCBFbnRy
eUZyYW1lU3RhdGVTaXplLCBzcAorICAgIGlmIFg4Nl82NAogICAgICAgICBwb3AgY2ZyCiAgICAg
ZWxzaWYgWDg2IG9yIFg4Nl9XSU4KICAgICAgICAgcG9wIGNmcgpAQCAtNjI2LDggKzY0OCw4IEBA
IG1hY3JvIGRvUmV0dXJuKCkKIGVuZAogCiAjIHN0dWIgdG8gY2FsbCBpbnRvIEphdmFTY3JpcHQg
b3IgTmF0aXZlIGZ1bmN0aW9ucwotIyBFbmNvZGVkSlNWYWx1ZSBjYWxsVG9KYXZhU2NyaXB0KHZv
aWQqIGNvZGUsIEV4ZWNTdGF0ZSoqIHZtVG9wQ2FsbEZyYW1lLCBQcm90b0NhbGxGcmFtZSogcHJv
dG9GcmFtZSkKLSMgRW5jb2RlZEpTVmFsdWUgY2FsbFRvTmF0aXZlRnVuY3Rpb24odm9pZCogY29k
ZSwgRXhlY1N0YXRlKiogdm1Ub3BDYWxsRnJhbWUsIFByb3RvQ2FsbEZyYW1lKiBwcm90b0ZyYW1l
KQorIyBFbmNvZGVkSlNWYWx1ZSBjYWxsVG9KYXZhU2NyaXB0KHZvaWQqIGNvZGUsIFZNKiB2bSwg
UHJvdG9DYWxsRnJhbWUqIHByb3RvRnJhbWUpCisjIEVuY29kZWRKU1ZhbHVlIGNhbGxUb05hdGl2
ZUZ1bmN0aW9uKHZvaWQqIGNvZGUsIFZNKiB2bSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvRnJhbWUp
CiAKIGlmIENfTE9PUAogX2xsaW50X2NhbGxfdG9famF2YXNjcmlwdDoKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE3MDU1NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDYgKzE3Nyw3
IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIGhlYXAo
dGhpcywgaGVhcFR5cGUpCiAgICAgLCB2bVR5cGUodm1UeXBlKQogICAgICwgY2xpZW50RGF0YSgw
KQorICAgICwgdG9wSlNDYWxsaW5nRnJhbWUoQ2FsbEZyYW1lOjpub0NhbGxlcigpKQogICAgICwg
dG9wQ2FsbEZyYW1lKENhbGxGcmFtZTo6bm9DYWxsZXIoKSkKICAgICAsIGFycmF5Q29uc3RydWN0
b3JUYWJsZShhZG9wdFB0cihuZXcgSGFzaFRhYmxlKEpTQzo6YXJyYXlDb25zdHJ1Y3RvclRhYmxl
KSkpCiAgICAgLCBhcnJheVByb3RvdHlwZVRhYmxlKGFkb3B0UHRyKG5ldyBIYXNoVGFibGUoSlND
OjphcnJheVByb3RvdHlwZVRhYmxlKSkpCkBAIC03MDUsOSArNzA2LDEwIEBAIEpTVmFsdWUgVk06
OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXgKICAgICBpZiAoZXhjZXB0aW9uLT5pc0Vycm9y
SW5zdGFuY2UoKSAmJiBzdGF0aWNfY2FzdDxFcnJvckluc3RhbmNlKj4oZXhjZXB0aW9uKS0+YXBw
ZW5kU291cmNlVG9NZXNzYWdlKCkpIHsKICAgICAgICAgdW5zaWduZWQgc3RhY2tJbmRleCA9IDA7
CiAgICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lOworICAgICAgICBDYWxsRnJhbWUqIGVudHJ5
RnJhbWUgPSBleGVjLT52bSgpLnRvcENhbGxGcmFtZTsKICAgICAgICAgZm9yIChjYWxsRnJhbWUg
PSBleGVjOyBjYWxsRnJhbWUgJiYgIWNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7ICkgewogICAgICAg
ICAgICAgc3RhY2tJbmRleCsrOwotICAgICAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLT5j
YWxsZXJGcmFtZVNraXBwaW5nVk1FbnRyeVNlbnRpbmVsKCk7CisgICAgICAgICAgICBjYWxsRnJh
bWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lVW53aW5kKGVudHJ5RnJhbWUpOwogICAgICAgICB9
CiAgICAgICAgIGlmIChjYWxsRnJhbWUgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2soKSkgewogICAg
ICAgICAgICAgc3RhY2tGcmFtZSA9IHN0YWNrVHJhY2UuYXQoc3RhY2tJbmRleCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE3MDU1NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNSw2ICsyMzUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBWTVR5cGUgdm1UeXBlOwogICAgICAgICBD
bGllbnREYXRhKiBjbGllbnREYXRhOworICAgICAgICBFeGVjU3RhdGUqIHRvcEpTQ2FsbGluZ0Zy
YW1lOwogICAgICAgICBFeGVjU3RhdGUqIHRvcENhbGxGcmFtZTsKICAgICAgICAgV2F0Y2hkb2cg
d2F0Y2hkb2c7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236236</attachid>
            <date>2014-08-07 15:32:30 -0700</date>
            <delta_ts>2014-08-07 20:43:33 -0700</delta_ts>
            <desc>Updated patch addressing prior review concerns.</desc>
            <filename>131578.patch</filename>
            <type>text/plain</type>
            <size>52350</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyMjYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBA
QAorMjAxNC0wOC0wNyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAg
ICAgICBDaGFuZ2UgY2FsbFRvSmF2YVNjcmlwdCBhbmQgY2FsbFRvTmF0aXZlRnVuY3Rpb24gc28g
dGhlaXIgY2FsbEZyYW1lcyBtYXRjaCB0aGUgbmF0aXZlIGNhbGxpbmcgY29udmVudGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTU3OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVsaW1pbmF0ZWQg
dGhlIHNlbnRpbmVsIGZyYW1lIGFuZCByZXBsYWNlZCBpdCB3aXRoIHRoZSBzdHJ1Y3R1cmUgQ2Fs
bFRvSmF2YVNjcmlwdEZyYW1lIHRoYXQKKyAgICAgICAgYXBwZWFycyBpbiB0aGUgImxvY2FscyIg
YXJlYSBvZiBhIGNhbGxUb0phdmFTY3JpcHQgc3RhY2sgZnJhbWUuICBDaGFuZ2VkIHRoZSBvcmRl
ciB0aGF0CisgICAgICAgIGNhbGxUb0phdmFTY3JpcHQvY2FsbFRvTmF0aXZlRnVuY3Rpb24gY3Jl
YXRlcyBpdHMgc3RhY2sgZnJhbWUgdG8gYmUgbmF0aXZlIGNhbGxpbmcgY29udmVudGlvbgorICAg
ICAgICBjb21wbGlhbnQuICBUaGF0IGlzIHRvIHNhdmUgcHJpb3IgZnJhbWUgcG9pbnRlciwgc2F2
ZSBjYWxsZWUgc2F2ZSByZWdpc3RlcnMsIHRoZW4gYWxsb2NhdGUgYW5kCisgICAgICAgIHBvcHVs
YXRlIHRoZSBDYWxsVG9KYXZhU2NyaXB0RnJhbWUsIGFuZCB0aGVuIGFsbG9jYXRlIGEgQ2FsbEZy
YW1lIGZvciB0aGUgSlMgZnVuY3Rpb24gdGhhdAorICAgICAgICBjYWxsVG9KYXZhU2NyaXB0IHdp
bGwgaW52b2tlLiAgVGhlIHRvcCBtb3N0IEpTIGVudHJ5IENhbGxGcmFtZSBpcyBzYXZlZCBpbgor
ICAgICAgICBWTTo6Y2FsbFRvSmF2YVNjcmlwdEZyYW1lUG9pbnRlci4gIFRoZSBwcmlvciBjb250
ZW50cyBvZiBWTTo6Y2FsbFRvSmF2YVNjcmlwdEZyYW1lUG9pbnRlciBhcmUKKyAgICAgICAgc2F2
ZWQgaW4gdGhlIENhbGxUb0phdmFTY3JpcHRGcmFtZSBzdHJ1Y3QgYWxvbmcgd2l0aCBhIHBvaW50
ZXIgdG8gdGhlIGN1cnJlbnQgVk0gYW5kCisgICAgICAgIFZNOjp0b3BDYWxsRnJhbWUuICBUaGlz
IGFsbG93cyBsaW5raW5nIGJhY2sgdG8gYSBwcmlvciBzZXQgb2YgSlMgZnJhbWVzIGZvciB1bndp
bmRpbmcgYXJvdW5kCisgICAgICAgIGFueSBpbnRlcm1lYW5pbmcgQysrIGZyYW1lcy4KKworICAg
ICAgICBBcmJpdHJhcnkgc3RhY2sgdW53aW5kaW5nIGlzIG5vdyBoYW5kbGVkIHVzaW5nIFN0YWNr
VmlzaXRvciBhbmQgdGhlIGFkZGl0aW9uIG9mIHJlbGF0ZWQgZnVuY3RvcgorICAgICAgICBjbGFz
c2VzLgorCisgICAgICAgIEFkZGVkIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUg
Q2FsbFRvSmF2YVNjcmlwdEZyYW1lIHBvaW50ZXIgd2hlbiBwcmVzZW50ZWQgdGhlCisgICAgICAg
IENhbGxGcmFtZSBmb3IgYSBjYWxsZWUgb2YgY2FsbFRvSmF2YVNjcmlwdC4KKworICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6UmVjdXJzaW9uQ2hlY2tGdW5jdG9y
OjpSZWN1cnNpb25DaGVja0Z1bmN0b3IpOgorICAgICAgICAoSlNDOjpSZWN1cnNpb25DaGVja0Z1
bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpSZWN1cnNpb25DaGVja0Z1bmN0b3I6
OmRpZFJlY3Vyc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om5vdGljZUluY29taW5nQ2Fs
bCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlcjo6c3RlcE91dE9mRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cmV0dXJu
RXZlbnQpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6ZGlkRXhlY3V0ZVByb2dyYW0pOgorICAg
ICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Rmlu
ZENhbGxlck1pZFN0YWNrRnVuY3Rvcjo6RmluZENhbGxlck1pZFN0YWNrRnVuY3Rvcik6CisgICAg
ICAgIChKU0M6OkZpbmRDYWxsZXJNaWRTdGFja0Z1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAg
ICAoSlNDOjpGaW5kQ2FsbGVyTWlkU3RhY2tGdW5jdG9yOjpnZXRDYWxsZXJGcmFtZSk6CisgICAg
ICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjpjYWxsZXJGcmFtZSk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6dG9wT2ZGcmFt
ZSk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y3VycmVudFZQQyk6CisgICAgICAgIChKU0M6
OkV4ZWNTdGF0ZTo6c2V0Q3VycmVudFZQQyk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6aW5p
dCk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6aXNUb3BKYXZhU2NyaXB0RW50cnlGcmFtZSk6
CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y2FsbGVyRnJhbWVVbndpbmQpOgorICAgICAgICAo
SlNDOjpFeGVjU3RhdGU6OmNhbGxlckZyYW1lU2tpcHBpbmdUb3BNb3N0SmF2YVNjcmlwdEVudHJ5
RnJhbWUpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnZtUHJpb3JUb3BDYWxsRnJhbWUpOgor
ICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmlzVk1FbnRyeVNlbnRpbmVsKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RXhlY1N0YXRlOjp2bUVudHJ5U2VudGluZWxDYWxsZXJGcmFtZSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6aW5pdGlhbGl6ZVZNRW50cnlTZW50aW5lbEZy
YW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjYWxsZXJGcmFtZVNraXBw
aW5nVk1FbnRyeVNlbnRpbmVsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjp2
bUVudHJ5U2VudGluZWxDb2RlQmxvY2spOiBEZWxldGVkLgorICAgICAgICAqIGludGVycHJldGVy
L0NhbGxUb0phdmFTY3JpcHRGcmFtZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbFRvSmF2
YVNjcmlwdEZyYW1lOjp2bSk6CisgICAgICAgIChKU0M6OkNhbGxUb0phdmFTY3JpcHRGcmFtZTo6
c2V0Vk0pOgorICAgICAgICAoSlNDOjpDYWxsVG9KYXZhU2NyaXB0RnJhbWU6OnRvcENhbGxGcmFt
ZSk6CisgICAgICAgIChKU0M6OkNhbGxUb0phdmFTY3JpcHRGcmFtZTo6c2V0VG9wQ2FsbEZyYW1l
KToKKyAgICAgICAgKEpTQzo6Q2FsbFRvSmF2YVNjcmlwdEZyYW1lOjpwcmV2Q2FsbFRvSmF2YVNj
cmlwdEZyYW1lKToKKyAgICAgICAgKEpTQzo6Q2FsbFRvSmF2YVNjcmlwdEZyYW1lOjpzZXRQcmV2
Q2FsbFRvSmF2YVNjcmlwdEZyYW1lKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHA6CisgICAgICAgIChKU0M6OnVud2luZENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnVu
d2luZCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpT
Qzo6VG9wQ2FsbEZyYW1lU2V0dGVyOjpUb3BDYWxsRnJhbWVTZXR0ZXIpOgorICAgICAgICAoSlND
OjpUb3BDYWxsRnJhbWVTZXR0ZXI6On5Ub3BDYWxsRnJhbWVTZXR0ZXIpOgorICAgICAgICAoSlND
OjpOYXRpdmVDYWxsRnJhbWVUcmFjZXI6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlcik6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNp
dG9yOjpTdGFja1Zpc2l0b3IpOgorICAgICAgICAoSlNDOjpTdGFja1Zpc2l0b3I6OnJlYWRGcmFt
ZSk6CisgICAgICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6cmVhZE5vbklubGluZWRGcmFtZSk6Cisg
ICAgICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6cmVhZElubGluZWRGcmFtZSk6CisgICAgICAgIChK
U0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OnByaW50KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9T
dGFja1Zpc2l0b3IuaDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6Y2FsbGVy
RnJhbWVJc0VudHJ5RnJhbWUpOgorICAgICAgICAqIGludGVycHJldGVyL1ZNSW5zcGVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6Q291bnRGcmFtZXNGdW5jdG9yOjpDb3VudEZyYW1lc0Z1bmN0b3Ip
OgorICAgICAgICAoSlNDOjpDb3VudEZyYW1lc0Z1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAg
ICAoSlNDOjpDb3VudEZyYW1lc0Z1bmN0b3I6OmNvdW50KToKKyAgICAgICAgKEpTQzo6Vk1JbnNw
ZWN0b3I6OmNvdW50RnJhbWVzKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRHVtcENhbGxGcmFtZSk6CisgICAg
ICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9M
TEludFRodW5rcy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNw
cDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVy
RnJhbWVXaXRoQ29kZWJsb2NrRnVuY3Rvcjo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJs
b2NrRnVuY3Rvcik6CisgICAgICAgIChKU0M6OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVi
bG9ja0Z1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpGaW5kRmlyc3RDYWxsZXJG
cmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjpmb3VuZENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6
OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6OmluZGV4KToKKyAgICAg
ICAgKEpTQzo6Vk06OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisK
IDIwMTQtMDgtMDcgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgR2V0IHJpZCBvZiBJTlBVVF9TUEVFQ0gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShy
ZXZpc2lvbiAxNzIxODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjg3LDggKzY4Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25QcmkKICNpZm5kZWYgTkRFQlVHCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRHVtcENhbGxGcmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgaWYgKCFleGVj
LT5jYWxsZXJGcmFtZSgpLT5pc1ZNRW50cnlTZW50aW5lbCgpKQotICAgICAgICBleGVjLT52bSgp
LmludGVycHJldGVyLT5kdW1wQ2FsbEZyYW1lKGV4ZWMtPmNhbGxlckZyYW1lKCkpOworICAgIGV4
ZWMtPnZtKCkuaW50ZXJwcmV0ZXItPmR1bXBDYWxsRnJhbWUoZXhlYy0+Y2FsbGVyRnJhbWUoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KICNlbmRpZgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3MjE4OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTU2LDYgKzExNTYsNyBAQAogCQk2NTUzQTMzMTE3QTFG
MUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTUzQTMyRjE3QTFGMUVFMDA4Q0Y2
RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAgKi87IH07CiAJCTY1NTNBMzMyMTdB
MUYxRUUwMDhDRjZGMyAvKiBDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTUzQTMzMDE3QTFGMUVFMDA4Q0Y2
RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5oICovOyB9OwogCQk2NTVFQjI5QjEwQ0Uy
NTgxMDAxQTk5MEUgLyogTm9kZXNDb2RlZ2VuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NUVCMjlBMTBDRTI1ODEwMDFBOTkwRSAvKiBOb2Rlc0Nv
ZGVnZW4uY3BwICovOyB9OworCQk2NThEM0E1NjE5NjM4MjY4MDAzQzQ1RDYgLyogQ2FsbFRvSmF2
YVNjcmlwdEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NThEM0E1NTE5NjM4MjY4MDAzQzQ1RDYgLyogQ2FsbFRvSmF2YVNjcmlwdEZyYW1lLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjVDMDI4
NTAxNzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QzAyODRGMTcxNzk1RTIwMDM1MUUz
NSAvKiBBUk12N0Rpc2Fzc2VtYmxlci5jcHAgKi87IH07CiAJCTY1QzAyODVDMTcxNzk2NjgwMDM1
MUUzNSAvKiBBUk12N0RPcGNvZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjVDMDI4NUExNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5j
cHAgKi87IH07CiAJCTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QzAyODVCMTcx
Nzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuaCAqLzsgfTsKQEAgLTMwNjIsNiArMzA2Myw3
IEBACiAJCTY1NjIxRTZCMDg5RTg1OTcwMDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvcGVy
dHlTbG90LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQk2
NTYyMUU2QzA4OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3BlcnR5U2xvdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTY1ODYwMTc3MTg1QThGNUUw
MDAzMEVFRSAvKiBNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NThEM0E1NTE5NjM4MjY4MDAzQzQ1RDYgLyogQ2Fs
bFRvSmF2YVNjcmlwdEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
bGxUb0phdmFTY3JpcHRGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTk4
N0YyQzE2N0ZFODRCMDAzQzJGOEQgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmg7
IHBhdGggPSBkZmcvREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2NTk4N0YyRjE2ODI4QTdFMDAzQzJGOEQgLyogVW51c2VkUG9pbnRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbnVzZWRQb2ludGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1QzAyODRGMTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12
N0Rpc2Fzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBB
Uk12N0Rpc2Fzc2VtYmxlci5jcHA7IHBhdGggPSBkaXNhc3NlbWJsZXIvQVJNdjdEaXNhc3NlbWJs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE1Nyw2ICs0MTU5LDcgQEAK
IAkJMTQyOUQ3N0EwRUQyMEQ3MzAwQjg5NjE5IC8qIGludGVycHJldGVyICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk2NThEM0E1NTE5NjM4MjY4MDAzQzQ1
RDYgLyogQ2FsbFRvSmF2YVNjcmlwdEZyYW1lLmggKi8sCiAJCQkJMEY1NUYwRjExNEQxMDYzNjAw
QUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovLAogCQkJCTBGNTVGMEYyMTREMTA2MzYwMEFDNzY0
OSAvKiBBYnN0cmFjdFBDLmggKi8sCiAJCQkJQTdGODY5MEUwRjk1ODRBMTAwNTU4Njk3IC8qIENh
Y2hlZENhbGwuaCAqLywKQEAgLTU5ODMsNiArNTk4Niw3IEBACiAJCQkJMEY2QjFDQjkxODYxMjQ0
QzAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUEwMDlD
MTE4MzFBMjZFMDBDRjg3MTEgLyogQVJNNjRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2RDNCMkM0MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTY1OEQzQTU2MTk2MzgyNjgwMDNDNDVENiAvKiBDYWxsVG9KYXZhU2NyaXB0RnJhbWUu
aCBpbiBIZWFkZXJzICovLAogIAkJCQkyQUQyRURGQjE5Nzk5RTM4MDA0RDY0NzggLyogRW51bWVy
YXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODNBQzBFNkRCOEM5MDA0Nzc1QTQg
LyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBMTEx
MjQ2MTkyRkNFNzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuaCBpbiBIZWFkZXJzICov
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJ
KHJldmlzaW9uIDE3MjE4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiUmVw
YXRjaC5oIgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJTbG90VmlzaXRv
cklubGluZXMuaCIKKyNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKICNpbmNsdWRlICJVbmxpbmtl
ZEluc3RydWN0aW9uU3RyZWFtLmgiCiAjaW5jbHVkZSA8d3RmL0JhZ1RvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KQEAgLTMxNTEsNiArMzE1Miw0NiBAQCBKU0dsb2Jh
bE9iamVjdCogQ29kZUJsb2NrOjpnbG9iYWxPYmplY3RGCiAgICAgcmV0dXJuIGpzQ2FzdDxGdW5j
dGlvbkV4ZWN1dGFibGUqPihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5n
ZXQoKSktPmVpdGhlckNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3QoKTsKIH0KIAorY2xhc3MgUmVj
dXJzaW9uQ2hlY2tGdW5jdG9yIHsKK3B1YmxpYzoKKyAgICBSZWN1cnNpb25DaGVja0Z1bmN0b3Io
Q2FsbEZyYW1lKiBzdGFydENhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVk
IGRlcHRoVG9DaGVjaykKKyAgICAgICAgOiBtX3N0YXJ0Q2FsbEZyYW1lKHN0YXJ0Q2FsbEZyYW1l
KQorICAgICAgICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykKKyAgICAgICAgLCBtX2RlcHRoVG9D
aGVjayhkZXB0aFRvQ2hlY2spCisgICAgICAgICwgbV9mb3VuZFN0YXJ0Q2FsbEZyYW1lKGZhbHNl
KQorICAgICAgICAsIG1fZGlkUmVjdXJzZShmYWxzZSkKKyAgICB7IH0KKyAgICAKKyAgICBTdGFj
a1Zpc2l0b3I6OlN0YXR1cyBvcGVyYXRvcigpKFN0YWNrVmlzaXRvciYgdmlzaXRvcikKKyAgICB7
CisgICAgICAgIENhbGxGcmFtZSogY3VycmVudENhbGxGcmFtZSA9IHZpc2l0b3ItPmNhbGxGcmFt
ZSgpOworCisgICAgICAgIGlmIChjdXJyZW50Q2FsbEZyYW1lID09IG1fc3RhcnRDYWxsRnJhbWUp
CisgICAgICAgICAgICBtX2ZvdW5kU3RhcnRDYWxsRnJhbWUgPSB0cnVlOworCisgICAgICAgIGlm
IChtX2ZvdW5kU3RhcnRDYWxsRnJhbWUpIHsKKyAgICAgICAgICAgIGlmICh2aXNpdG9yLT5jYWxs
RnJhbWUoKS0+Y29kZUJsb2NrKCkgPT0gbV9jb2RlQmxvY2spIHsKKyAgICAgICAgICAgICAgICBt
X2RpZFJlY3Vyc2UgPSB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6
OkRvbmU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghbV9kZXB0aFRvQ2hlY2st
LSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CisgICAgfQorICAgIAor
ICAgIGJvb2wgZGlkUmVjdXJzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlkUmVjdXJzZTsgfQorICAg
IAorcHJpdmF0ZToKKyAgICBDYWxsRnJhbWUqIG1fc3RhcnRDYWxsRnJhbWU7CisgICAgQ29kZUJs
b2NrKiBtX2NvZGVCbG9jazsKKyAgICB1bnNpZ25lZCBtX2RlcHRoVG9DaGVjazsKKyAgICBib29s
IG1fZm91bmRTdGFydENhbGxGcmFtZTsKKyAgICBib29sIG1fZGlkUmVjdXJzZTsKK307CisKIHZv
aWQgQ29kZUJsb2NrOjpub3RpY2VJbmNvbWluZ0NhbGwoRXhlY1N0YXRlKiBjYWxsZXJGcmFtZSkK
IHsKICAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGNhbGxlckZyYW1lLT5jb2RlQmxv
Y2soKTsKQEAgLTMxOTgsMjAgKzMyMzksMTggQEAgdm9pZCBDb2RlQmxvY2s6Om5vdGljZUluY29t
aW5nQ2FsbChFeGVjUwogICAgICAgICAgICAgZGF0YUxvZygiICAgIENsZWFyaW5nIFNBQkkgYmVj
YXVzZSBjYWxsZXIgaXMgbm90IGEgZnVuY3Rpb24uXG4iKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICAKLSAgICBFeGVjU3RhdGUqIGZyYW1lID0gY2FsbGVyRnJhbWU7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gT3B0aW9uczo6bWF4aW11bUlubGluaW5nRGVwdGgoKTsgaS0tOyBmcmFtZSA9
IGZyYW1lLT5jYWxsZXJGcmFtZSgpKSB7Ci0gICAgICAgIGlmIChmcmFtZS0+aXNWTUVudHJ5U2Vu
dGluZWwoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAoZnJhbWUtPmNvZGVCbG9j
aygpID09IHRoaXMpIHsKLSAgICAgICAgICAgIC8vIFJlY3Vyc2l2ZSBjYWxscyB3b24ndCBiZSBp
bmxpbmVkLgotICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VDYWxsTGluaygpKQotICAg
ICAgICAgICAgICAgIGRhdGFMb2coIiAgICBDbGVhcmluZyBTQUJJIGJlY2F1c2UgcmVjdXJzaW9u
IHdhcyBkZXRlY3RlZC5cbiIpOwotICAgICAgICAgICAgbV9zaG91bGRBbHdheXNCZUlubGluZWQg
PSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorCisgICAgLy8gUmVjdXJz
aXZlIGNhbGxzIHdvbid0IGJlIGlubGluZWQuCisgICAgUmVjdXJzaW9uQ2hlY2tGdW5jdG9yIGZ1
bmN0b3IoY2FsbGVyRnJhbWUsIHRoaXMsIE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ0RlcHRoKCkp
OworICAgIHZtKCktPnRvcENhbGxGcmFtZS0+aXRlcmF0ZShmdW5jdG9yKTsKKworICAgIGlmIChm
dW5jdG9yLmRpZFJlY3Vyc2UoKSkgeworICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUNhbGxM
aW5rKCkpCisgICAgICAgICAgICBkYXRhTG9nKCIgICAgQ2xlYXJpbmcgU0FCSSBiZWNhdXNlIHJl
Y3Vyc2lvbiB3YXMgZGV0ZWN0ZWQuXG4iKTsKKyAgICAgICAgbV9zaG91bGRBbHdheXNCZUlubGlu
ZWQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIFJFTEVBU0Vf
QVNTRVJUKGNhbGxlckNvZGVCbG9jay0+bV9jYXBhYmlsaXR5TGV2ZWxTdGF0ZSAhPSBERkc6OkNh
cGFiaWxpdHlMZXZlbE5vdFNldCk7CiAgICAgCiAgICAgaWYgKGNhbkNvbXBpbGUoY2FsbGVyQ29k
ZUJsb2NrLT5tX2NhcGFiaWxpdHlMZXZlbFN0YXRlKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkocmV2aXNpb24gMTcyMTg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjAxLDcgKzYwMSw3IEBAIHZvaWQgRGVidWdnZXI6OnN0ZXBPdXRPZkZ1bmN0aW9uKCkKICAgICBp
ZiAoIW1faXNQYXVzZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGF1c2VPbkNhbGxGcmFt
ZSA9IG1fY3VycmVudENhbGxGcmFtZSA/IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVyRnJhbWVT
a2lwcGluZ1ZNRW50cnlTZW50aW5lbCgpIDogMDsKKyAgICBtX3BhdXNlT25DYWxsRnJhbWUgPSBt
X2N1cnJlbnRDYWxsRnJhbWUgPyBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlckZyYW1lU2tpcHBp
bmdUb3BNb3N0SmF2YVNjcmlwdEVudHJ5RnJhbWUoKSA6IDA7CiAgICAgbm90aWZ5RG9uZVByb2Nl
c3NpbmdEZWJ1Z2dlckV2ZW50cygpOwogfQogCkBAIC03MTgsOSArNzE4LDkgQEAgdm9pZCBEZWJ1
Z2dlcjo6cmV0dXJuRXZlbnQoQ2FsbEZyYW1lKiBjYQogCiAgICAgLy8gVHJlYXQgc3RlcHBpbmcg
b3ZlciBhIHJldHVybiBzdGF0ZW1lbnQgbGlrZSBzdGVwcGluZyBvdXQuCiAgICAgaWYgKG1fY3Vy
cmVudENhbGxGcmFtZSA9PSBtX3BhdXNlT25DYWxsRnJhbWUpCi0gICAgICAgIG1fcGF1c2VPbkNh
bGxGcmFtZSA9IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVyRnJhbWVTa2lwcGluZ1ZNRW50cnlT
ZW50aW5lbCgpOworICAgICAgICBtX3BhdXNlT25DYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJh
bWUtPmNhbGxlckZyYW1lU2tpcHBpbmdUb3BNb3N0SmF2YVNjcmlwdEVudHJ5RnJhbWUoKTsKIAot
ICAgIG1fY3VycmVudENhbGxGcmFtZSA9IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVyRnJhbWVT
a2lwcGluZ1ZNRW50cnlTZW50aW5lbCgpOworICAgIG1fY3VycmVudENhbGxGcmFtZSA9IG1fY3Vy
cmVudENhbGxGcmFtZS0+Y2FsbGVyRnJhbWVTa2lwcGluZ1RvcE1vc3RKYXZhU2NyaXB0RW50cnlG
cmFtZSgpOwogfQogCiB2b2lkIERlYnVnZ2VyOjp3aWxsRXhlY3V0ZVByb2dyYW0oQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCkBAIC03NTAsMTEgKzc1MCwxMSBAQCB2b2lkIERlYnVnZ2VyOjpkaWRFeGVj
dXRlUHJvZ3JhbShDYWxsRnJhCiAgICAgaWYgKCFtX2N1cnJlbnRDYWxsRnJhbWUpCiAgICAgICAg
IHJldHVybjsKICAgICBpZiAobV9jdXJyZW50Q2FsbEZyYW1lID09IG1fcGF1c2VPbkNhbGxGcmFt
ZSkgewotICAgICAgICBtX3BhdXNlT25DYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNh
bGxlckZyYW1lU2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKTsKKyAgICAgICAgbV9wYXVzZU9uQ2Fs
bEZyYW1lID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5jYWxsZXJGcmFtZVNraXBwaW5nVG9wTW9zdEph
dmFTY3JpcHRFbnRyeUZyYW1lKCk7CiAgICAgICAgIGlmICghbV9jdXJyZW50Q2FsbEZyYW1lKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2N1cnJlbnRDYWxsRnJhbWUgPSBtX2N1
cnJlbnRDYWxsRnJhbWUtPmNhbGxlckZyYW1lU2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKTsKKyAg
ICBtX2N1cnJlbnRDYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlckZyYW1lU2tp
cHBpbmdUb3BNb3N0SmF2YVNjcmlwdEVudHJ5RnJhbWUoKTsKIH0KIAogdm9pZCBEZWJ1Z2dlcjo6
ZGlkUmVhY2hCcmVha3BvaW50KENhbGxGcmFtZSogY2FsbEZyYW1lKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCShy
ZXZpc2lvbiAxNzIxODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJDYWxsRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1NywyOSBAQCBwcml2YXRl
OgogICAgIHVuc2lnbmVkIG1fY29sdW1uOwogfTsKIAorY2xhc3MgRmluZENhbGxlck1pZFN0YWNr
RnVuY3RvciB7CitwdWJsaWM6CisgICAgRmluZENhbGxlck1pZFN0YWNrRnVuY3RvcihDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKKyAgICAgICAgOiBtX2NhbGxGcmFtZShjYWxsRnJhbWUpCisgICAgICAg
ICwgbV9jYWxsZXJGcmFtZShudWxscHRyKQorICAgIHsgfQorCisgICAgU3RhY2tWaXNpdG9yOjpT
dGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpCisgICAgeworICAgICAgICBp
ZiAodmlzaXRvci0+Y2FsbEZyYW1lKCkgPT0gbV9jYWxsRnJhbWUpIHsKKyAgICAgICAgICAgIG1f
Y2FsbGVyRnJhbWUgPSB2aXNpdG9yLT5jYWxsZXJGcmFtZSgpOworICAgICAgICAgICAgcmV0dXJu
IFN0YWNrVmlzaXRvcjo6RG9uZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gU3RhY2tWaXNp
dG9yOjpDb250aW51ZTsKKyAgICB9CisKKyAgICBDYWxsRnJhbWUqIGdldENhbGxlckZyYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9jYWxsZXJGcmFtZTsgfQorCitwcml2YXRlOgorICAgIENhbGxGcmFt
ZSogbV9jYWxsRnJhbWU7CisgICAgQ2FsbEZyYW1lKiBtX2NhbGxlckZyYW1lOworfTsKKwogRGVi
dWdnZXJDYWxsRnJhbWU6OkRlYnVnZ2VyQ2FsbEZyYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ICAgIDogbV9jYWxsRnJhbWUoY2FsbEZyYW1lKQogewpAQCAtNzIsNyArOTUsMTAgQEAgUGFzc1Jl
ZlB0cjxEZWJ1Z2dlckNhbGxGcmFtZT4gRGVidWdnZXJDYQogICAgIGlmIChtX2NhbGxlcikKICAg
ICAgICAgcmV0dXJuIG1fY2FsbGVyOwogCi0gICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IG1f
Y2FsbEZyYW1lLT5jYWxsZXJGcmFtZVNraXBwaW5nVk1FbnRyeVNlbnRpbmVsKCk7CisgICAgRmlu
ZENhbGxlck1pZFN0YWNrRnVuY3RvciBmdW5jdG9yKG1fY2FsbEZyYW1lKTsKKyAgICBtX2NhbGxG
cmFtZS0+dm0oKS50b3BDYWxsRnJhbWUtPml0ZXJhdGUoZnVuY3Rvcik7CisKKyAgICBDYWxsRnJh
bWUqIGNhbGxlckZyYW1lID0gZnVuY3Rvci5nZXRDYWxsZXJGcmFtZSgpOwogICAgIGlmICghY2Fs
bGVyRnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAxNzIxODgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI0LDYgKzI0LDcgQEAKICNkZWZpbmUgQ2FsbEZyYW1lX2gKIAogI2luY2x1ZGUgIkFic3Ry
YWN0UEMuaCIKKyNpbmNsdWRlICJDYWxsVG9KYXZhU2NyaXB0RnJhbWUuaCIKICNpbmNsdWRlICJW
TS5oIgogI2luY2x1ZGUgIkpTU3RhY2suaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYuaCIKQEAgLTE2MSw3ICsxNjIsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAKICAgICAgICAgUmVn
aXN0ZXIqIHRvcE9mRnJhbWUoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaXNWTUVudHJ5
U2VudGluZWwoKSB8fCAhY29kZUJsb2NrKCkpCisgICAgICAgICAgICBpZiAoIWNvZGVCbG9jaygp
KQogICAgICAgICAgICAgICAgIHJldHVybiByZWdpc3RlcnMoKTsKICAgICAgICAgICAgIHJldHVy
biB0b3BPZkZyYW1lSW50ZXJuYWwoKTsKICAgICAgICAgfQpAQCAtMTY5LDEyICsxNzAsMTAgQEAg
bmFtZXNwYWNlIEpTQyAgewogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIEluc3RydWN0
aW9uKiBjdXJyZW50VlBDKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCFp
c1ZNRW50cnlTZW50aW5lbCgpKTsKICAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SW5z
dHJ1Y3Rpb24qPih0aGlzW0pTU3RhY2s6OkFyZ3VtZW50Q291bnRdLnRhZygpKTsKICAgICAgICAg
fQogICAgICAgICB2b2lkIHNldEN1cnJlbnRWUEMoSW5zdHJ1Y3Rpb24qIHZwYykKICAgICAgICAg
ewotICAgICAgICAgICAgQVNTRVJUKCFpc1ZNRW50cnlTZW50aW5lbCgpKTsKICAgICAgICAgICAg
IHRoaXNbSlNTdGFjazo6QXJndW1lbnRDb3VudF0udGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJf
dD4odnBjKTsKICAgICAgICAgfQogI2Vsc2UKQEAgLTE4OSw3ICsxODgsNyBAQCBuYW1lc3BhY2Ug
SlNDICB7CiAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBpbml0KENvZGVCbG9jayogY29kZUJs
b2NrLCBJbnN0cnVjdGlvbiogdlBDLCBKU1Njb3BlKiBzY29wZSwKICAgICAgICAgICAgIENhbGxG
cmFtZSogY2FsbGVyRnJhbWUsIGludCBhcmdjLCBKU09iamVjdCogY2FsbGVlKQogICAgICAgICB7
Ci0gICAgICAgICAgICBBU1NFUlQoY2FsbGVyRnJhbWUgPT0gbm9DYWxsZXIoKSB8fCBjYWxsZXJG
cmFtZS0+aXNWTUVudHJ5U2VudGluZWwoKSB8fCBjYWxsZXJGcmFtZS0+c3RhY2soKS0+Y29udGFp
bnNBZGRyZXNzKHRoaXMpKTsKKyAgICAgICAgICAgIEFTU0VSVChjYWxsZXJGcmFtZSA9PSBub0Nh
bGxlcigpIHx8IGNhbGxlckZyYW1lLT5zdGFjaygpLT5jb250YWluc0FkZHJlc3ModGhpcykpOwog
CiAgICAgICAgICAgICBzZXRDb2RlQmxvY2soY29kZUJsb2NrKTsKICAgICAgICAgICAgIHNldFNj
b3BlKHNjb3BlKTsKQEAgLTI0NSwzMyArMjQ0LDMxIEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAg
ICAgICBzdGF0aWMgQ2FsbEZyYW1lKiBub0NhbGxlcigpIHsgcmV0dXJuIDA7IH0KIAotICAgICAg
ICBib29sIGlzVk1FbnRyeVNlbnRpbmVsKCkgY29uc3QKKyAgICAgICAgYm9vbCBpc1RvcEphdmFT
Y3JpcHRFbnRyeUZyYW1lKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEh
dGhpcyAmJiBjb2RlQmxvY2soKSA9PSB2bUVudHJ5U2VudGluZWxDb2RlQmxvY2soKTsKKyAgICAg
ICAgICAgIHJldHVybiBjYWxsZXJGcmFtZSgpID09IHZtKCkuY2FsbFRvSmF2YVNjcmlwdEZyYW1l
UG9pbnRlcjsKICAgICAgICAgfQogCi0gICAgICAgIENhbGxGcmFtZSogdm1FbnRyeVNlbnRpbmVs
Q2FsbGVyRnJhbWUoKSBjb25zdAorICAgICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lVW53aW5k
KENhbGxGcmFtZSomIGN1cnJKU0VudHJ5RnJhbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFT
U0VSVChpc1ZNRW50cnlTZW50aW5lbCgpKTsKLSAgICAgICAgICAgIHJldHVybiB0aGlzW0pTU3Rh
Y2s6OlNjb3BlQ2hhaW5dLmNhbGxGcmFtZSgpOworICAgICAgICAgICAgaWYgKGN1cnJKU0VudHJ5
RnJhbWUgPT0gY2FsbGVyRnJhbWUoKSkgeworICAgICAgICAgICAgICAgIENhbGxUb0phdmFTY3Jp
cHRGcmFtZSogY2FsbFRvSmF2YVNjcmlwdEZyYW1lID0gY2FsbFRvSmF2YVNjcmlwdEZyYW1lRnJv
bUZyYW1lUG9pbnRlcihjdXJySlNFbnRyeUZyYW1lKTsKKyAgICAgICAgICAgICAgICBjdXJySlNF
bnRyeUZyYW1lID0gY2FsbFRvSmF2YVNjcmlwdEZyYW1lLT5wcmV2Q2FsbFRvSmF2YVNjcmlwdEZy
YW1lKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxUb0phdmFTY3JpcHRGcmFtZS0+dG9w
Q2FsbEZyYW1lKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gY2FsbGVyRnJh
bWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgaW5pdGlhbGl6ZVZNRW50cnlTZW50aW5l
bEZyYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lKQorICAgICAgICAvLyBUaGlzIG9ubHkgd29ya3Mg
Zm9yIHRoZSB0b3AgbW9zdCBjb250aWd1b3VzIHNldCBvZiBKUyBmcmFtZXMgaW5jbHVkaW5nIHRo
ZSBjYWxsZWUKKyAgICAgICAgLy8gZnJhbWUgb2YgdGhlIHRvcCBtb3N0IGNhbGxUb0phdmFTY3Jp
cHQvY2FsbFRvTmF0aXZlRnVuY3Rpb24uICBJbiB0aGUgbGF0dGVyIGNhc2UsCisgICAgICAgIC8v
IGl0IHJldHVybnMgdGhlIHByaW9yIEpTIENhbGxGcmFtZSwgc2tpcHBpbmcgaG9zdCBmcmFtZXMs
IG9yIG51bGxwdHIgaWYgdGhlcmUgaXNuJ3QKKyAgICAgICAgLy8gYSBwcmlvciBKUyBjYWxsZXIu
CisgICAgICAgIC8vIEdlbmVyYWwgdW53aW5kaW5nIG11c3QgdXNlIFN0YWNrVmlzaXRvci4KKyAg
ICAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZVNraXBwaW5nVG9wTW9zdEphdmFTY3JpcHRFbnRy
eUZyYW1lKCkKICAgICAgICAgewotICAgICAgICAgICAgc2V0Q2FsbGVyRnJhbWUobm9DYWxsZXIo
KSk7Ci0gICAgICAgICAgICBzZXRSZXR1cm5QQygwKTsKLSAgICAgICAgICAgIHNldENvZGVCbG9j
ayh2bUVudHJ5U2VudGluZWxDb2RlQmxvY2soKSk7Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxS
ZWdpc3Rlcio+KHRoaXMpW0pTU3RhY2s6OlNjb3BlQ2hhaW5dID0gY2FsbEZyYW1lOwotICAgICAg
ICAgICAgc2V0Q2FsbGVlKDApOwotICAgICAgICAgICAgc2V0QXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMoMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lU2tp
cHBpbmdWTUVudHJ5U2VudGluZWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICBDYWxsRnJhbWUq
IGNhbGxlciA9IGNhbGxlckZyYW1lKCk7Ci0gICAgICAgICAgICBpZiAoY2FsbGVyLT5pc1ZNRW50
cnlTZW50aW5lbCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjYWxsZXItPnZtRW50cnlTZW50
aW5lbENhbGxlckZyYW1lKCk7Ci0gICAgICAgICAgICByZXR1cm4gY2FsbGVyOworICAgICAgICAg
ICAgaWYgKGlzVG9wSmF2YVNjcmlwdEVudHJ5RnJhbWUoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdm1QcmlvclRvcENhbGxGcmFtZSgpOworICAgICAgICAgICAgcmV0dXJuIGNhbGxlckZyYW1l
KCk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKGludCBjb3VudCkgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW0pTU3RhY2s6OkFy
Z3VtZW50Q291bnRdLnBheWxvYWQoKSA9IGNvdW50OyB9CkBAIC0yOTEsNyArMjg4LDYgQEAgbmFt
ZXNwYWNlIEpTQyAgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBjaGFyKiBkZXNj
cmliZUZyYW1lKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgY29uc3QgaW50cHRy
X3Qgc19WTUVudHJ5U2VudGluZWwgPSAxOwogCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBKU1N0
YWNrKiBzdGFjaygpOwpAQCAtMzMwLDExICszMjYsMTUgQEAgbmFtZXNwYWNlIEpTQyAgewogICAg
ICAgICAgICAgcmV0dXJuIHRoaXNbYXJndW1lbnRPZmZzZXQoYXJnSW5kZXgpXS5qc1ZhbHVlKCk7
CiAgICAgICAgIH0KIAorICAgICAgICBDYWxsRnJhbWUqIHZtUHJpb3JUb3BDYWxsRnJhbWUoKSBj
b25zdAorICAgICAgICB7CisgICAgICAgICAgICBDYWxsVG9KYXZhU2NyaXB0RnJhbWUqIGNhbGxU
b0phdmFTY3JpcHRGcmFtZSA9IGNhbGxUb0phdmFTY3JpcHRGcmFtZUZyb21GcmFtZVBvaW50ZXIo
dGhpcyk7CisgICAgICAgICAgICByZXR1cm4gY2FsbFRvSmF2YVNjcmlwdEZyYW1lLT50b3BDYWxs
RnJhbWUoKTsKKyAgICAgICAgfQorCiAgICAgICAgIENhbGxlckZyYW1lQW5kUEMmIGNhbGxlckZy
YW1lQW5kUEMoKSB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxDYWxsZXJGcmFtZUFuZFBDKj4o
dGhpcyk7IH0KICAgICAgICAgY29uc3QgQ2FsbGVyRnJhbWVBbmRQQyYgY2FsbGVyRnJhbWVBbmRQ
QygpIGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IENhbGxlckZyYW1lQW5k
UEMqPih0aGlzKTsgfQogCi0gICAgICAgIHN0YXRpYyBDb2RlQmxvY2sqIHZtRW50cnlTZW50aW5l
bENvZGVCbG9jaygpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q29kZUJsb2NrKj4oc19WTUVu
dHJ5U2VudGluZWwpOyB9Ci0KICAgICAgICAgZnJpZW5kIGNsYXNzIEpTU3RhY2s7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBWTUluc3BlY3RvcjsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhbGxUb0phdmFTY3JpcHRGcmFtZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsVG9KYXZhU2NyaXB0RnJhbWUu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
VG9KYXZhU2NyaXB0RnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDYWxsVG9K
YXZhU2NyaXB0RnJhbWVfaAorI2RlZmluZSBDYWxsVG9KYXZhU2NyaXB0RnJhbWVfaAorCisjaW5j
bHVkZSAiU3RhY2tWaXNpdG9yLmgiCisKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBDYWxs
VG9KYXZhU2NyaXB0RnJhbWUgeworICAgIC8qCisgICAgICogVGhpcyBpcyB0aGUgbGF5b3V0IG9m
IGEgY2FsbFRvSmF2YVNjcmlwdCBhbGxvY2F0ZWQgZnJhbWUuICBJdCBpcyBhbGxvY2F0ZWQgb24g
dGhlIHN0YWNrCisgICAgICogYWZ0ZXIgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzIHdoZXJlIGxvY2Fs
IHZhcmlhYmxlcyB3b3VsZCBnby4KKyAgICAgKi8KKyAgICBWTSogbV92bTsKKyAgICBDYWxsRnJh
bWUqIG1fdG9wQ2FsbEZyYW1lOworICAgIENhbGxGcmFtZSogbV9wcmV2Q2FsbFRvSmF2YVNjcmlw
dEZyYW1lOworICAgIAorICAgIFZNKiB2bSgpIHsgcmV0dXJuIG1fdm07IH0KKyAgICB2b2lkIHNl
dFZNKFZNKiB2bSkgeyBtX3ZtID0gdm07IH0KKyAgICAKKyAgICBDYWxsRnJhbWUqIHRvcENhbGxG
cmFtZSgpIHsgcmV0dXJuIG1fdG9wQ2FsbEZyYW1lOyB9CisgICAgdm9pZCBzZXRUb3BDYWxsRnJh
bWUoQ2FsbEZyYW1lKiB0b3BDYWxsRnJhbWUpIHsgbV90b3BDYWxsRnJhbWUgPSB0b3BDYWxsRnJh
bWU7IH0KKyAgICAKKyAgICBDYWxsRnJhbWUqIHByZXZDYWxsVG9KYXZhU2NyaXB0RnJhbWUoKSB7
IHJldHVybiBtX3ByZXZDYWxsVG9KYXZhU2NyaXB0RnJhbWU7IH0KKyAgICB2b2lkIHNldFByZXZD
YWxsVG9KYXZhU2NyaXB0RnJhbWUoQ2FsbEZyYW1lKiBwcmV2Q2FsbFRvSmF2YVNjcmlwdEZyYW1l
KQorICAgIHsKKyAgICAgICAgbV9wcmV2Q2FsbFRvSmF2YVNjcmlwdEZyYW1lID0gcHJldkNhbGxU
b0phdmFTY3JpcHRGcmFtZTsKKyAgICB9Cit9OworICAgIAorZXh0ZXJuICJDIiBDYWxsVG9KYXZh
U2NyaXB0RnJhbWUqIGNhbGxUb0phdmFTY3JpcHRGcmFtZUZyb21GcmFtZVBvaW50ZXIoY29uc3Qg
Q2FsbEZyYW1lKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ2FsbFRvSmF2
YVNjcmlwdEZyYW1lX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTcyMTg4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDc5LDggKzQ3OSw3IEBAIHN0YXRpYyBib29sIHVud2luZENhbGxGcmFtZShTdGFja1Zpc2l0b3IK
ICAgICAgICAgfQogICAgIH0KIAotICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBjYWxsRnJh
bWUtPmNhbGxlckZyYW1lKCk7Ci0gICAgcmV0dXJuICFjYWxsZXJGcmFtZS0+aXNWTUVudHJ5U2Vu
dGluZWwoKTsKKyAgICByZXR1cm4gISh2aXNpdG9yLT5jYWxsZXJGcmFtZUlzRW50cnlGcmFtZSgp
KTsKIH0KIAogc3RhdGljIFN0YWNrRnJhbWVDb2RlVHlwZSBnZXRTdGFja0ZyYW1lQ29kZVR5cGUo
U3RhY2tWaXNpdG9yJiB2aXNpdG9yKQpAQCAtNTk3LDcgKzU5Niw2IEBAIHByaXZhdGU6CiB2b2lk
IEludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0cywg
c2l6ZV90IG1heFN0YWNrU2l6ZSkKIHsKICAgICBWTSYgdm0gPSBtX3ZtOwotICAgIEFTU0VSVCgh
dm0udG9wQ2FsbEZyYW1lLT5pc1ZNRW50cnlTZW50aW5lbCgpKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IHZtLnRvcENhbGxGcmFtZTsKICAgICBpZiAoIWNhbGxGcmFtZSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNjgzLDE1ICs2ODEsNiBAQCBwcml2YXRlOgogCiBORVZFUl9JTkxJTkUgSGFu
ZGxlckluZm8qIEludGVycHJldGVyOjp1bndpbmQoQ2FsbEZyYW1lKiYgY2FsbEZyYW1lLCBKU1Zh
bHVlJiBleGNlcHRpb25WYWx1ZSkKIHsKLSAgICBpZiAoY2FsbEZyYW1lLT5pc1ZNRW50cnlTZW50
aW5lbCgpKSB7Ci0gICAgICAgIC8vIFRoaXMgaGFwcGVucyB3aGVuIHdlIHRocm93IHN0YWNrIG92
ZXJmbG93IGluIGEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQKLSAgICAgICAgLy8gZGlyZWN0bHkg
ZnJvbSBjYWxsVG9KYXZhU2NyaXB0LiBTdGFjayBvdmVyZmxvdyB0aHJvd3MgdGhlIGV4Y2VwdGlv
biBpbiB0aGUKLSAgICAgICAgLy8gY29udGV4dCBvZiB0aGUgY2FsbGVyLiBJbiB0aGF0IGNhc2Ug
dGhlIGNhbGxlciBpcyB0aGUgc2VudGluZWwgZnJhbWUuIFRoZQotICAgICAgICAvLyByaWdodCB0
aGluZyB0byBkbyBpcyB0byBwcmV0ZW5kIHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyB1bmNhdWdodCBz
byB0aGF0IHdlCi0gICAgICAgIC8vIGdvIHRvIHRoZSB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxl
ciwgd2hpY2ggcmV0dXJucyB0aHJvdWdoIGNhbGxUb0phdmFTY3JpcHQuCi0gICAgICAgIHJldHVy
biAwOwotICAgIH0KLSAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCk7CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAgICAgYm9vbCBpc1Rlcm1pbmF0
aW9uID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTcyMTg4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NywxMyAr
MTU3LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgOiB2bShjdXJyZW50Vk0pCiAg
ICAgICAgICAgICAsIG9sZENhbGxGcmFtZShjdXJyZW50Vk0udG9wQ2FsbEZyYW1lKSAKICAgICAg
ICAgewotICAgICAgICAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPmlzVk1FbnRyeVNlbnRpbmVsKCkp
OwogICAgICAgICAgICAgY3VycmVudFZNLnRvcENhbGxGcmFtZSA9IGNhbGxGcmFtZTsKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgflRvcENhbGxGcmFtZVNldHRlcigpIAogICAgICAgICB7
Ci0gICAgICAgICAgICBBU1NFUlQoIW9sZENhbGxGcmFtZS0+aXNWTUVudHJ5U2VudGluZWwoKSk7
CiAgICAgICAgICAgICB2bS50b3BDYWxsRnJhbWUgPSBvbGRDYWxsRnJhbWU7CiAgICAgICAgIH0K
ICAgICBwcml2YXRlOgpAQCAtMTc3LDE4ICsxNzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgewogICAgICAgICAgICAgQVNTRVJUKHZtKTsKICAgICAgICAgICAgIEFTU0VSVChjYWxsRnJh
bWUpOwotICAgICAgICAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPmlzVk1FbnRyeVNlbnRpbmVsKCkp
OwogICAgICAgICAgICAgdm0tPnRvcENhbGxGcmFtZSA9IGNhbGxGcmFtZTsKICAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgZW51bSBWTUVudHJ5U2VudGluZWxPS1RhZyB7IFZNRW50cnlTZW50
aW5lbE9LIH07Ci0gICAgICAgIEFMV0FZU19JTkxJTkUgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyKFZN
KiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNRW50cnlTZW50aW5lbE9LVGFnKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBBU1NFUlQodm0pOwotICAgICAgICAgICAgQVNTRVJUKGNhbGxGcmFt
ZSk7Ci0gICAgICAgICAgICBpZiAoIWNhbGxGcmFtZS0+aXNWTUVudHJ5U2VudGluZWwoKSkKLSAg
ICAgICAgICAgICAgICB2bS0+dG9wQ2FsbEZyYW1lID0gY2FsbEZyYW1lOwotICAgICAgICB9CiAg
ICAgfTsKIAogICAgIGNsYXNzIEludGVycHJldGVyIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCShyZXZpc2lvbiAxNzIx
ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiBTdGFj
a1Zpc2l0b3I6OlN0YWNrVmlzaXRvcihDYWxsRnJhbWUqIHN0YXJ0RnJhbWUpCiB7CiAgICAgbV9m
cmFtZS5tX2luZGV4ID0gMDsKKyAgICBpZiAoc3RhcnRGcmFtZSkKKyAgICAgICAgbV9mcmFtZS5t
X0pTQ2FsbGluZ0ZyYW1lID0gc3RhcnRGcmFtZS0+dm0oKS5jYWxsVG9KYXZhU2NyaXB0RnJhbWVQ
b2ludGVyOworICAgIGVsc2UKKyAgICAgICAgbV9mcmFtZS5tX0pTQ2FsbGluZ0ZyYW1lID0gMDsK
KyAgICBtX2ZyYW1lLm1fY2FsbGVyRnJhbWVJc0VudHJ5RnJhbWUgPSAwOwogICAgIHJlYWRGcmFt
ZShzdGFydEZyYW1lKTsKIH0KIApAQCAtNTYsNyArNjEsNiBAQCB2b2lkIFN0YWNrVmlzaXRvcjo6
Z290b05leHRGcmFtZSgpCiAKIHZvaWQgU3RhY2tWaXNpdG9yOjpyZWFkRnJhbWUoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNTRVJUKCFjYWxsRnJhbWUtPmlzVk1FbnRyeVNlbnRpbmVs
KCkpOwogICAgIGlmICghY2FsbEZyYW1lKSB7CiAgICAgICAgIG1fZnJhbWUuc2V0VG9FbmQoKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTA0LDcgKzEwOCw5IEBAIHZvaWQgU3RhY2tWaXNpdG9yOjpy
ZWFkTm9uSW5saW5lZEZyYW1lKEMKIHsKICAgICBtX2ZyYW1lLm1fY2FsbEZyYW1lID0gY2FsbEZy
YW1lOwogICAgIG1fZnJhbWUubV9hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKLSAgICBtX2ZyYW1lLm1fY2FsbGVyRnJh
bWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lU2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKTsKKyAg
ICBDYWxsRnJhbWUqIGN1cnJlbnRKU0NhbGxpbmdGcmFtZSA9IG1fZnJhbWUubV9KU0NhbGxpbmdG
cmFtZTsKKyAgICBtX2ZyYW1lLm1fY2FsbGVyRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1l
VW53aW5kKG1fZnJhbWUubV9KU0NhbGxpbmdGcmFtZSk7CisgICAgbV9mcmFtZS5tX2NhbGxlckZy
YW1lSXNFbnRyeUZyYW1lID0gY3VycmVudEpTQ2FsbGluZ0ZyYW1lICE9IG1fZnJhbWUubV9KU0Nh
bGxpbmdGcmFtZTsKICAgICBtX2ZyYW1lLm1fY2FsbGVlID0gY2FsbEZyYW1lLT5jYWxsZWUoKTsK
ICAgICBtX2ZyYW1lLm1fc2NvcGUgPSBjYWxsRnJhbWUtPnNjb3BlKCk7CiAgICAgbV9mcmFtZS5t
X2NvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBAIC0xMjcsNyArMTMzLDYgQEAg
c3RhdGljIGludCBpbmxpbmVkRnJhbWVPZmZzZXQoQ29kZU9yaWdpbgogdm9pZCBTdGFja1Zpc2l0
b3I6OnJlYWRJbmxpbmVkRnJhbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVPcmlnaW4qIGNv
ZGVPcmlnaW4pCiB7CiAgICAgQVNTRVJUKGNvZGVPcmlnaW4pOwotICAgIEFTU0VSVCghY2FsbEZy
YW1lLT5pc1ZNRW50cnlTZW50aW5lbCgpKTsKIAogICAgIGludCBmcmFtZU9mZnNldCA9IGlubGlu
ZWRGcmFtZU9mZnNldChjb2RlT3JpZ2luKTsKICAgICBib29sIGlzSW5saW5lZCA9ICEhZnJhbWVP
ZmZzZXQ7CkBAIC0zODAsNyArMzg1LDYgQEAgdm9pZCBTdGFja1Zpc2l0b3I6OkZyYW1lOjpwcmlu
dChpbnQgaW5kZQogCiAgICAgcHJpbnRpZihpLCAiICAgbmFtZSAnJXMnXG4iLCBmdW5jdGlvbk5h
bWUoKS51dGY4KCkuZGF0YSgpKTsKICAgICBwcmludGlmKGksICIgICBzb3VyY2VVUkwgJyVzJ1xu
Iiwgc291cmNlVVJMKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgcHJpbnRpZihpLCAiICAgaXNWTUVu
dHJ5U2VudGluZWwgJWRcbiIsIGNhbGxlckZyYW1lLT5pc1ZNRW50cnlTZW50aW5lbCgpKTsKIAog
I2lmIEVOQUJMRShERkdfSklUKQogICAgIHByaW50aWYoaSwgIiAgIGlzSW5saW5lZEZyYW1lICVk
XG4iLCBpc0lubGluZWRGcmFtZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9TdGFja1Zpc2l0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgJKHJldmlzaW9uIDE3MjE4OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgc2l6ZV90IGluZGV4KCkgY29u
c3QgeyByZXR1cm4gbV9pbmRleDsgfQogICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyB9
CisgICAgICAgIGJvb2wgY2FsbGVyRnJhbWVJc0VudHJ5RnJhbWUoKSBjb25zdCB7IHJldHVybiBt
X2NhbGxlckZyYW1lSXNFbnRyeUZyYW1lOyB9CiAgICAgICAgIENhbGxGcmFtZSogY2FsbGVyRnJh
bWUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlckZyYW1lOyB9CiAgICAgICAgIEpTT2JqZWN0KiBj
YWxsZWUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZTsgfQogICAgICAgICBKU1Njb3BlKiBzY29w
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGU7IH0KQEAgLTk0LDExICs5NSwxMyBAQCBwdWJsaWM6
CiAKICAgICAgICAgc2l6ZV90IG1faW5kZXg7CiAgICAgICAgIHNpemVfdCBtX2FyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzOworICAgICAgICBDYWxsRnJhbWUqIG1fSlNDYWxsaW5nRnJhbWU7CiAg
ICAgICAgIENhbGxGcmFtZSogbV9jYWxsZXJGcmFtZTsKICAgICAgICAgSlNPYmplY3QqIG1fY2Fs
bGVlOwogICAgICAgICBKU1Njb3BlKiBtX3Njb3BlOwogICAgICAgICBDb2RlQmxvY2sqIG1fY29k
ZUJsb2NrOwogICAgICAgICB1bnNpZ25lZCBtX2J5dGVjb2RlT2Zmc2V0OworICAgICAgICBib29s
IG1fY2FsbGVyRnJhbWVJc0VudHJ5RnJhbWU7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAg
IElubGluZUNhbGxGcmFtZSogbV9pbmxpbmVDYWxsRnJhbWU7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUluc3BlY3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9yLmNwcAkocmV2
aXNpb24gMTcyMTg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5z
cGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShW
TUlOU1BFQ1RPUikKIAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJTdGFja1Zp
c2l0b3IuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCkBAIC05OSwxNCArMTAwLDMwIEBAIHZvaWQgVk1JbnNwZWN0b3I6OmR1
bXBGcmFtZShDYWxsRnJhbWUqIGYKICAgICBwcmludGYoIlxuIik7CiB9CiAKK2NsYXNzIENvdW50
RnJhbWVzRnVuY3RvciB7CitwdWJsaWM6CisgICAgQ291bnRGcmFtZXNGdW5jdG9yKCkKKyAgICAg
ICAgOiBtX2NvdW50KC0xKQorICAgIHsgfQorCisgICAgU3RhY2tWaXNpdG9yOjpTdGF0dXMgb3Bl
cmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpCisgICAgeworICAgICAgICBtX2NvdW50Kys7
CisgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOworICAgIH0KKyAgICAKKyAg
ICBpbnQgY291bnQoKSBjb25zdCB7IHJldHVybiBtX2NvdW50OyB9CisgICAgCitwcml2YXRlOgor
ICAgIHVuc2lnbmVkIG1fY291bnQ7Cit9OworCiBpbnQgVk1JbnNwZWN0b3I6OmNvdW50RnJhbWVz
KENhbGxGcmFtZSogZnJhbWUpCiB7Ci0gICAgaW50IGNvdW50ID0gLTE7Ci0gICAgd2hpbGUgKGZy
YW1lICYmICFmcmFtZS0+aXNWTUVudHJ5U2VudGluZWwoKSkgewotICAgICAgICBjb3VudCsrOwot
ICAgICAgICBmcmFtZSA9IGZyYW1lLT5jYWxsZXJGcmFtZSgpOwotICAgIH0KLSAgICByZXR1cm4g
Y291bnQ7CisgICAgQ291bnRGcmFtZXNGdW5jdG9yIGZ1bmN0b3IoKTsKKyAgICBTdGFja1Zpc2l0
b3I6OnZpc2l0KGZyYW1lLCBmdW5jdG9yKTsKKworICAgIHJldHVybiBmdW5jdG9yLmNvdW50KCk7
CiB9CiAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCShyZXZpc2lvbiAxNzIxODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3YKIHsKICAgICAvLyBXZSBwYXNzIGluIG91ciBv
d24gY29kZSBibG9jaywgYmVjYXVzZSB0aGUgY2FsbGZyYW1lIGhhc24ndCBiZWVuIHBvcHVsYXRl
ZC4KICAgICBWTSogdm0gPSBjb2RlQmxvY2stPnZtKCk7Ci0gICAgQ2FsbEZyYW1lKiBjYWxsZXJG
cmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lU2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKTsKKyAgICBD
YWxsRnJhbWUqIGNhbGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWVTa2lwcGluZ1RvcE1vc3RK
YXZhU2NyaXB0RW50cnlGcmFtZSgpOwogICAgIGlmICghY2FsbGVyRnJhbWUpCiAgICAgICAgIGNh
bGxlckZyYW1lID0gZXhlYzsKIApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVGhyb3dTdGFja092CiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2Fs
bEFyaXR5Q2hlY2soRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OwotICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZVNraXBwaW5n
Vk1FbnRyeVNlbnRpbmVsKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNh
bGxlckZyYW1lU2tpcHBpbmdUb3BNb3N0SmF2YVNjcmlwdEVudHJ5RnJhbWUoKTsKICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsZXJGcmFtZSk7CiAKICAgICBKU1N0YWNr
JiBzdGFjayA9IHZtLT5pbnRlcnByZXRlci0+c3RhY2soKTsKQEAgLTEwNiw3ICsxMDYsNyBAQCBp
bnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEFyaXR5CiBpbnQzMl90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4
ZWMtPmNhbGxlckZyYW1lU2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKTsKKyAgICBDYWxsRnJhbWUq
IGNhbGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWVTa2lwcGluZ1RvcE1vc3RKYXZhU2NyaXB0
RW50cnlGcmFtZSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxl
ckZyYW1lKTsKIAogICAgIEpTU3RhY2smIHN0YWNrID0gdm0tPmludGVycHJldGVyLT5zdGFjaygp
OwpAQCAtMTgyMiw3ICsxODIyLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluaXRH
bG9iYWxDbwogCiB2b2lkIEpJVF9PUEVSQVRJT04gbG9va3VwRXhjZXB0aW9uSGFuZGxlcihWTSog
dm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjLCBOYXRpdmVDYWxsRnJhbWVUcmFjZXI6OlZNRW50cnlTZW50aW5lbE9LKTsKKyAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAogICAgIEpTVmFsdWUg
ZXhjZXB0aW9uVmFsdWUgPSB2bS0+ZXhjZXB0aW9uKCk7CiAgICAgQVNTRVJUKGV4Y2VwdGlvblZh
bHVlKTsKQEAgLTE4MzYsNyArMTgzNiw2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25W
TUhhbmRsZUV4Y2UKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAotICAgIEFTU0VSVCghZXhlYy0+aXNWTUVudHJ5
U2VudGluZWwoKSk7CiAgICAgZ2VuZXJpY1Vud2luZCh2bSwgZXhlYywgdm0tPmV4Y2VwdGlvbigp
KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDE3MjE4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJBcnJh
eVByb2ZpbGUuaCIKKyNpbmNsdWRlICJDYWxsVG9KYXZhU2NyaXB0RnJhbWUuaCIKICNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKICNpbmNsdWRlICJE
ZWJ1Z2dlci5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtz
LmgJKHJldmlzaW9uIDE3MjE4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFRodW5rcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIHN0cnVjdCBQcm90b0Nh
bGxGcmFtZTsKIGV4dGVybiAiQyIgewogICAgIEVuY29kZWRKU1ZhbHVlIGNhbGxUb0phdmFTY3Jp
cHQodm9pZCosIFZNKiwgUHJvdG9DYWxsRnJhbWUqKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBjYWxs
VG9OYXRpdmVGdW5jdGlvbih2b2lkKiwgVk0qLCBQcm90b0NhbGxGcmFtZSopOworICAgIHZvaWQg
Z2V0UmV0dXJuUEMoKTsKIH0KIAogbmFtZXNwYWNlIExMSW50IHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCShyZXZpc2lvbiAxNzIxODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMjA2LDYwICsyMDYs
MzQgQEAgbWFjcm8gZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VDYWxsKQogICAgIGNhbGxUb0phdmFT
Y3JpcHRQcm9sb2d1ZSgpCiAKICAgICBpZiBYODYKLSAgICAgICAgbG9hZHAgMzZbc3BdLCB2bQot
ICAgICAgICBsb2FkcCAzMltzcF0sIGVudHJ5Ci0gICAgZWxzaWYgWDg2X1dJTgotICAgICAgICBs
b2FkcCA0MFtzcCwgdGVtcDNdLCB2bQotICAgICAgICBsb2FkcCAzNltzcCwgdGVtcDNdLCBlbnRy
eQorICAgICAgICBsb2FkcCAxMltjZnJdLCB2bQorICAgICAgICBsb2FkcCA4W2Nmcl0sIGVudHJ5
CiAgICAgZWxzZQogICAgICAgICBtb3ZlIGNmciwgcHJldmlvdXNDRlIKICAgICBlbmQKIAotICAg
IGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHRlbXAyLCAweGJhZDBkYzAxKQorICAgIENhbGxU
b0phdmFTY3JpcHRGcmFtZUZyb21GcmFtZVBvaW50ZXIoY2ZyLCBzcCkKIAotICAgICMgVGhlIHN0
YWNrIHJlc2VydmVkIHpvbmUgZW5zdXJlcyB0aGF0IHdlIGhhdmUgYWRlcXVhdGUgc3BhY2UgZm9y
IHRoZQotICAgICMgVk1FbnRyeVNlbnRpbmVsRnJhbWUuIFByb2NlZWQgd2l0aCBhbGxvY2F0aW5n
IGFuZCBpbml0aWFsaXppbmcgdGhlCi0gICAgIyBzZW50aW5lbCBmcmFtZS4KLSAgICBtb3ZlIHNw
LCBjZnIKLSAgICBzdWJwIENhbGxGcmFtZUhlYWRlclNsb3RzICogOCwgY2ZyCi0gICAgc3RvcmVw
IDAsIEFyZ3VtZW50Q291bnRbY2ZyXQotICAgIHN0b3JlcCB2bSwgQ2FsbGVlW2Nmcl0KKyAgICBz
dG9yZXAgdm0sIENhbGxUb0phdmFTY3JpcHRGcmFtZTo6bV92bVtzcF0KICAgICBsb2FkcCBWTTo6
dG9wQ2FsbEZyYW1lW3ZtXSwgdGVtcDIKLSAgICBzdG9yZXAgdGVtcDIsIFNjb3BlQ2hhaW5bY2Zy
XQotICAgIHN0b3JlcCAxLCBDb2RlQmxvY2tbY2ZyXQotICAgIGlmIFg4NgotICAgICAgICBsb2Fk
cCAyOFtzcF0sIHByZXZpb3VzUEMKLSAgICAgICAgbG9hZHAgMjRbc3BdLCBwcmV2aW91c0NGUgot
ICAgIGVsc2lmIFg4Nl9XSU4KLSAgICAgICAgbG9hZHAgMzJbc3AsIHRlbXAzXSwgcHJldmlvdXNQ
QwotICAgICAgICBsb2FkcCAyOFtzcCwgdGVtcDNdLCBwcmV2aW91c0NGUgotICAgIGVuZAotICAg
IHN0b3JlcCBwcmV2aW91c1BDLCBSZXR1cm5QQ1tjZnJdCi0gICAgc3RvcmVwIHByZXZpb3VzQ0ZS
LCBDYWxsZXJGcmFtZVtjZnJdCisgICAgc3RvcmVwIHRlbXAyLCBDYWxsVG9KYXZhU2NyaXB0RnJh
bWU6Om1fdG9wQ2FsbEZyYW1lW3NwXQorICAgIGxvYWRwIFZNOjpjYWxsVG9KYXZhU2NyaXB0RnJh
bWVQb2ludGVyW3ZtXSwgdGVtcDIKKyAgICBzdG9yZXAgdGVtcDIsIENhbGxUb0phdmFTY3JpcHRG
cmFtZTo6bV9wcmV2Q2FsbFRvSmF2YVNjcmlwdEZyYW1lW3NwXQogCiAgICAgaWYgWDg2Ci0gICAg
ICAgIGxvYWRwIDQwW3NwXSwgcHJvdG9DYWxsRnJhbWUKLSAgICBlbHNpZiBYODZfV0lOCi0gICAg
ICAgIGxvYWRwIDQ0W3NwLCB0ZW1wM10sIHByb3RvQ2FsbEZyYW1lCisgICAgICAgIGxvYWRwIDE2
W2Nmcl0sIHByb3RvQ2FsbEZyYW1lCiAgICAgZW5kCiAKICAgICBsb2FkaSBQcm90b0NhbGxGcmFt
ZTo6cGFkZGVkQXJnQ291bnRbcHJvdG9DYWxsRnJhbWVdLCB0ZW1wMgogICAgIGFkZHAgQ2FsbEZy
YW1lSGVhZGVyU2xvdHMsIHRlbXAyLCB0ZW1wMgogICAgIGxzaGlmdHAgMywgdGVtcDIKLSAgICBz
dWJwIGNmciwgdGVtcDIsIHRlbXAxCisgICAgc3VicCBzcCwgdGVtcDIsIHRlbXAxCiAKICAgICAj
IEVuc3VyZSB0aGF0IHdlIGhhdmUgZW5vdWdoIGFkZGl0aW9uYWwgc3RhY2sgY2FwYWNpdHkgZm9y
IHRoZSBpbmNvbWluZyBhcmdzLAogICAgICMgYW5kIHRoZSBmcmFtZSBmb3IgdGhlIEpTIGNvZGUg
d2UncmUgZXhlY3V0aW5nLiBXZSBuZWVkIHRvIGRvIHRoaXMgY2hlY2sKICAgICAjIGJlZm9yZSB3
ZSBzdGFydCBjb3B5aW5nIHRoZSBhcmdzIGZyb20gdGhlIHByb3RvQ2FsbEZyYW1lIGJlbG93Lgog
ICAgIGJwYWVxIHRlbXAxLCBWTTo6bV9qc1N0YWNrTGltaXRbdm1dLCAuc3RhY2tIZWlnaHRPSwog
Ci0gICAgaWYgQVJNdjcKLSAgICAgICAgc3VicCBjZnIsIDgsIHRlbXAyCi0gICAgICAgIG1vdmUg
dGVtcDIsIHNwCi0gICAgZWxzZQotICAgICAgICBzdWJwIGNmciwgOCwgc3AKLSAgICBlbmQKLQog
ICAgIGlmIENfTE9PUAogICAgICAgICBtb3ZlIGVudHJ5LCB0ZW1wMgogICAgICAgICBtb3ZlIHZt
LCB0ZW1wMwpAQCAtMjc1LDYgKzI0OSwxNyBAQCBtYWNybyBkb0NhbGxUb0phdmFTY3JpcHQobWFr
ZUNhbGwpCiAgICAgZW5kCiAKICAgICBjQ2FsbDIoX2xsaW50X3Rocm93X3N0YWNrX292ZXJmbG93
X2Vycm9yLCB2bSwgcHJvdG9DYWxsRnJhbWUpCisKKyAgICBDYWxsVG9KYXZhU2NyaXB0RnJhbWVG
cm9tRnJhbWVQb2ludGVyKGNmciwgc3ApCisKKyAgICBsb2FkcCBDYWxsVG9KYXZhU2NyaXB0RnJh
bWU6Om1fdm1bc3BdLCB0ZW1wMworICAgIGxvYWRwIENhbGxUb0phdmFTY3JpcHRGcmFtZTo6bV90
b3BDYWxsRnJhbWVbc3BdLCB0ZW1wNAorICAgIHN0b3JlcCB0ZW1wNCwgVk06OnRvcENhbGxGcmFt
ZVt0ZW1wM10KKyAgICBsb2FkcCBDYWxsVG9KYXZhU2NyaXB0RnJhbWU6Om1fcHJldkNhbGxUb0ph
dmFTY3JpcHRGcmFtZVtzcF0sIHRlbXA0CisgICAgc3RvcmVwIHRlbXA0LCBWTTo6Y2FsbFRvSmF2
YVNjcmlwdEZyYW1lUG9pbnRlclt0ZW1wM10KKworICAgIHN1YnAgY2ZyLCBDYWxsZWVSZWdpc3Rl
clNhdmVTaXplLCBzcAorCiAgICAgY2FsbFRvSmF2YVNjcmlwdEVwaWxvZ3VlKCkKICAgICByZXQK
IApAQCAtMzE2LDE2ICszMDEsMTkgQEAgbWFjcm8gZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VDYWxs
KQogCiAuY29weUFyZ3NEb25lOgogICAgIHN0b3JlcCBzcCwgVk06OnRvcENhbGxGcmFtZVt2bV0K
KyAgICBzdG9yZXAgY2ZyLCBWTTo6Y2FsbFRvSmF2YVNjcmlwdEZyYW1lUG9pbnRlclt2bV0KIAog
ICAgIG1ha2VDYWxsKGVudHJ5LCB0ZW1wMSwgdGVtcDIpCiAKLSAgICBicGVxIENvZGVCbG9ja1tj
ZnJdLCAxLCAuY2FsbGVlRnJhbWVQb3BwZWQKLSAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBj
ZnIKKyAgICBDYWxsVG9KYXZhU2NyaXB0RnJhbWVGcm9tRnJhbWVQb2ludGVyKGNmciwgc3ApCiAK
LS5jYWxsZWVGcmFtZVBvcHBlZDoKLSAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGVtcDMgIyBWTQot
ICAgIGxvYWRwIFNjb3BlQ2hhaW5bY2ZyXSwgdGVtcDQgIyBwcmV2aW91cyB0b3BDYWxsRnJhbWUK
KyAgICBsb2FkcCBDYWxsVG9KYXZhU2NyaXB0RnJhbWU6Om1fdm1bc3BdLCB0ZW1wMworICAgIGxv
YWRwIENhbGxUb0phdmFTY3JpcHRGcmFtZTo6bV90b3BDYWxsRnJhbWVbc3BdLCB0ZW1wNAogICAg
IHN0b3JlcCB0ZW1wNCwgVk06OnRvcENhbGxGcmFtZVt0ZW1wM10KKyAgICBsb2FkcCBDYWxsVG9K
YXZhU2NyaXB0RnJhbWU6Om1fcHJldkNhbGxUb0phdmFTY3JpcHRGcmFtZVtzcF0sIHRlbXA0Cisg
ICAgc3RvcmVwIHRlbXA0LCBWTTo6Y2FsbFRvSmF2YVNjcmlwdEZyYW1lUG9pbnRlclt0ZW1wM10K
KworICAgIHN1YnAgY2ZyLCBDYWxsZWVSZWdpc3RlclNhdmVTaXplLCBzcAogCiAgICAgY2FsbFRv
SmF2YVNjcmlwdEVwaWxvZ3VlKCkKICAgICByZXQKQEAgLTM3OCwxNyArMzY2LDE2IEBAIF9oYW5k
bGVVbmNhdWdodEV4Y2VwdGlvbjoKICAgICBsb2FkcCBNYXJrZWRCbG9jazo6bV93ZWFrU2V0ICsg
V2Vha1NldDo6bV92bVt0M10sIHQzCiAgICAgbG9hZHAgVk06OmNhbGxGcmFtZUZvclRocm93W3Qz
XSwgY2ZyCiAKLSAgICAjIFNvIGZhciwgd2UndmUgdW53b3VuZCB0aGUgc3RhY2sgdG8gdGhlIGZy
YW1lIGp1c3QgYmVsb3cgdGhlIHNlbnRpbmVsIGZyYW1lLCBleGNlcHQKLSAgICAjIGluIHRoZSBj
YXNlIG9mIHN0YWNrIG92ZXJmbG93IGluIHRoZSBmaXJzdCBmdW5jdGlvbiBjYWxsZWQgZnJvbSBj
YWxsVG9KYXZhU2NyaXB0LgotICAgICMgQ2hlY2sgaWYgd2UgbmVlZCB0byBwb3AgdG8gdGhlIHNl
bnRpbmVsIGZyYW1lIGFuZCBkbyB0aGUgbmVjZXNzYXJ5IGNsZWFuIHVwIGZvcgotICAgICMgcmV0
dXJuaW5nIHRvIHRoZSBjYWxsZXIgQyBmcmFtZS4KLSAgICBicGVxIENvZGVCbG9ja1tjZnJdLCAx
LCAuaGFuZGxlVW5jYXVnaHRFeGNlcHRpb25BbHJlYWR5SXNTZW50aW5lbAogICAgIGxvYWRwIENh
bGxlckZyYW1lICsgUGF5bG9hZE9mZnNldFtjZnJdLCBjZnIKLS5oYW5kbGVVbmNhdWdodEV4Y2Vw
dGlvbkFscmVhZHlJc1NlbnRpbmVsOgorICAgIENhbGxUb0phdmFTY3JpcHRGcmFtZUZyb21GcmFt
ZVBvaW50ZXIoY2ZyLCBzcCkKIAotICAgIGxvYWRwIENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2Zy
XSwgdDMgIyBWTQotICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQ1
ICMgcHJldmlvdXMgdG9wQ2FsbEZyYW1lCisgICAgbG9hZHAgQ2FsbFRvSmF2YVNjcmlwdEZyYW1l
OjptX3ZtW3NwXSwgdDMKKyAgICBsb2FkcCBDYWxsVG9KYXZhU2NyaXB0RnJhbWU6Om1fdG9wQ2Fs
bEZyYW1lW3NwXSwgdDUKICAgICBzdG9yZXAgdDUsIFZNOjp0b3BDYWxsRnJhbWVbdDNdCisgICAg
bG9hZHAgQ2FsbFRvSmF2YVNjcmlwdEZyYW1lOjptX3ByZXZDYWxsVG9KYXZhU2NyaXB0RnJhbWVb
c3BdLCB0NQorICAgIHN0b3JlcCB0NSwgVk06OmNhbGxUb0phdmFTY3JpcHRGcmFtZVBvaW50ZXJb
dDNdCisKKyAgICBzdWJwIGNmciwgQ2FsbGVlUmVnaXN0ZXJTYXZlU2l6ZSwgc3AKIAogICAgIGNh
bGxUb0phdmFTY3JpcHRFcGlsb2d1ZSgpCiAgICAgcmV0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNp
b24gMTcyMTg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE3Myw0NSArMTczLDI2IEBAIG1hY3JvIGRv
Q2FsbFRvSmF2YVNjcmlwdChtYWtlQ2FsbCkKIAogICAgIGNhbGxUb0phdmFTY3JpcHRQcm9sb2d1
ZSgpCiAKLSAgICBpZiBYODZfNjQKLSAgICAgICAgbG9hZHAgNyo4W3NwXSwgcHJldmlvdXNQQwot
ICAgICAgICBtb3ZlIDYqOFtzcF0sIHByZXZpb3VzQ0ZSCi0gICAgZWxzaWYgWDg2XzY0X1dJTgot
ICAgICAgICAjIFdpbjY0IHB1c2hlcyB0d28gbW9yZSByZWdpc3RlcnMKLSAgICAgICAgbG9hZHAg
OSo4W3NwXSwgcHJldmlvdXNQQwotICAgICAgICBtb3ZlIDgqOFtzcF0sIHByZXZpb3VzQ0ZSCi0g
ICAgZWxzaWYgQVJNNjQKLSAgICAgICAgbW92ZSBjZnIsIHByZXZpb3VzQ0ZSCi0gICAgZW5kCisg
ICAgQ2FsbFRvSmF2YVNjcmlwdEZyYW1lRnJvbUZyYW1lUG9pbnRlcihjZnIsIHNwKQogCiAgICAg
Y2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodGVtcDIsIDB4YmFkMGRjMDEpCiAKLSAgICAjIFRo
ZSBzdGFjayByZXNlcnZlZCB6b25lIGVuc3VyZXMgdGhhdCB3ZSBoYXZlIGFkZXF1YXRlIHNwYWNl
IGZvciB0aGUKLSAgICAjIFZNRW50cnlTZW50aW5lbEZyYW1lLiBQcm9jZWVkIHdpdGggYWxsb2Nh
dGluZyBhbmQgaW5pdGlhbGl6aW5nIHRoZQotICAgICMgc2VudGluZWwgZnJhbWUuCi0gICAgbW92
ZSBzcCwgY2ZyCi0gICAgc3VicCBDYWxsRnJhbWVIZWFkZXJTbG90cyAqIDgsIGNmcgotICAgIHN0
b3JlcCAwLCBBcmd1bWVudENvdW50W2Nmcl0KLSAgICBzdG9yZXAgdm0sIENhbGxlZVtjZnJdCisg
ICAgc3RvcmVwIHZtLCBDYWxsVG9KYXZhU2NyaXB0RnJhbWU6Om1fdm1bc3BdCiAgICAgbG9hZHAg
Vk06OnRvcENhbGxGcmFtZVt2bV0sIHRlbXAyCi0gICAgc3RvcmVwIHRlbXAyLCBTY29wZUNoYWlu
W2Nmcl0KLSAgICBzdG9yZXAgMSwgQ29kZUJsb2NrW2Nmcl0KLQotICAgIHN0b3JlcCBwcmV2aW91
c1BDLCBSZXR1cm5QQ1tjZnJdCi0gICAgc3RvcmVwIHByZXZpb3VzQ0ZSLCBDYWxsZXJGcmFtZVtj
ZnJdCisgICAgc3RvcmVwIHRlbXAyLCBDYWxsVG9KYXZhU2NyaXB0RnJhbWU6Om1fdG9wQ2FsbEZy
YW1lW3NwXQorICAgIGxvYWRwIFZNOjpjYWxsVG9KYXZhU2NyaXB0RnJhbWVQb2ludGVyW3ZtXSwg
dGVtcDIKKyAgICBzdG9yZXAgdGVtcDIsIENhbGxUb0phdmFTY3JpcHRGcmFtZTo6bV9wcmV2Q2Fs
bFRvSmF2YVNjcmlwdEZyYW1lW3NwXQogCiAgICAgbG9hZGkgUHJvdG9DYWxsRnJhbWU6OnBhZGRl
ZEFyZ0NvdW50W3Byb3RvQ2FsbEZyYW1lXSwgdGVtcDIKICAgICBhZGRwIENhbGxGcmFtZUhlYWRl
clNsb3RzLCB0ZW1wMiwgdGVtcDIKICAgICBsc2hpZnRwIDMsIHRlbXAyCi0gICAgc3VicCBjZnIs
IHRlbXAyLCB0ZW1wMQorICAgIHN1YnAgc3AsIHRlbXAyLCB0ZW1wMQogCiAgICAgIyBFbnN1cmUg
dGhhdCB3ZSBoYXZlIGVub3VnaCBhZGRpdGlvbmFsIHN0YWNrIGNhcGFjaXR5IGZvciB0aGUgaW5j
b21pbmcgYXJncywKICAgICAjIGFuZCB0aGUgZnJhbWUgZm9yIHRoZSBKUyBjb2RlIHdlJ3JlIGV4
ZWN1dGluZy4gV2UgbmVlZCB0byBkbyB0aGlzIGNoZWNrCiAgICAgIyBiZWZvcmUgd2Ugc3RhcnQg
Y29weWluZyB0aGUgYXJncyBmcm9tIHRoZSBwcm90b0NhbGxGcmFtZSBiZWxvdy4KICAgICBicGFl
cSB0ZW1wMSwgVk06Om1fanNTdGFja0xpbWl0W3ZtXSwgLnN0YWNrSGVpZ2h0T0sKIAotICAgIG1v
dmUgY2ZyLCBzcAotCiAgICAgaWYgQ19MT09QCiAgICAgICAgIG1vdmUgZW50cnksIHRlbXAyCiAg
ICAgICAgIG1vdmUgdm0sIHRlbXAzCkBAIC0yMjcsNiArMjA4LDE3IEBAIG1hY3JvIGRvQ2FsbFRv
SmF2YVNjcmlwdChtYWtlQ2FsbCkKICAgICBlbmQKIAogICAgIGNDYWxsMihfbGxpbnRfdGhyb3df
c3RhY2tfb3ZlcmZsb3dfZXJyb3IsIHZtLCBwcm90b0NhbGxGcmFtZSkKKworICAgIENhbGxUb0ph
dmFTY3JpcHRGcmFtZUZyb21GcmFtZVBvaW50ZXIoY2ZyLCB0ZW1wMikKKworICAgIGxvYWRwIENh
bGxUb0phdmFTY3JpcHRGcmFtZTo6bV92bVt0ZW1wMl0sIHZtCisgICAgbG9hZHAgQ2FsbFRvSmF2
YVNjcmlwdEZyYW1lOjptX3RvcENhbGxGcmFtZVt0ZW1wMl0sIHRlbXAzCisgICAgc3RvcmVwIHRl
bXAzLCBWTTo6dG9wQ2FsbEZyYW1lW3ZtXQorICAgIGxvYWRwIENhbGxUb0phdmFTY3JpcHRGcmFt
ZTo6bV9wcmV2Q2FsbFRvSmF2YVNjcmlwdEZyYW1lW3RlbXAyXSwgdGVtcDMKKyAgICBzdG9yZXAg
dGVtcDMsIFZNOjpjYWxsVG9KYXZhU2NyaXB0RnJhbWVQb2ludGVyW3ZtXQorCisgICAgc3VicCBj
ZnIsIENhbGxlZVJlZ2lzdGVyU2F2ZVNpemUsIHNwCisKICAgICBjYWxsVG9KYXZhU2NyaXB0RXBp
bG9ndWUoKQogICAgIHJldAogCkBAIC0yNjksNiArMjYxLDcgQEAgbWFjcm8gZG9DYWxsVG9KYXZh
U2NyaXB0KG1ha2VDYWxsKQogICAgIGVsc2UKICAgICAgICAgc3RvcmVwIHNwLCBWTTo6dG9wQ2Fs
bEZyYW1lW3ZtXQogICAgIGVuZAorICAgIHN0b3JlcCBjZnIsIFZNOjpjYWxsVG9KYXZhU2NyaXB0
RnJhbWVQb2ludGVyW3ZtXQogCiAgICAgbW92ZSAweGZmZmYwMDAwMDAwMDAwMDAsIGNzcjEKICAg
ICBhZGRwIDIsIGNzcjEsIGNzcjIKQEAgLTI3OSwxOSArMjcyLDE2IEBAIG1hY3JvIGRvQ2FsbFRv
SmF2YVNjcmlwdChtYWtlQ2FsbCkKIAogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHRl
bXAzLCAweGJhZDBkYzAzKQogCi0gICAgYnBlcSBDb2RlQmxvY2tbY2ZyXSwgMSwgLmNhbGxlZUZy
YW1lUG9wcGVkCi0gICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgY2ZyCisgICAgQ2FsbFRvSmF2
YVNjcmlwdEZyYW1lRnJvbUZyYW1lUG9pbnRlcihjZnIsIHRlbXAyKQogCi0uY2FsbGVlRnJhbWVQ
b3BwZWQ6Ci0gICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRlbXAyICMgVk0KLSAgICBsb2FkcCBTY29w
ZUNoYWluW2Nmcl0sIHRlbXAzICMgcHJldmlvdXMgdG9wQ2FsbEZyYW1lCi0gICAgc3RvcmVwIHRl
bXAzLCBWTTo6dG9wQ2FsbEZyYW1lW3RlbXAyXQorICAgIGxvYWRwIENhbGxUb0phdmFTY3JpcHRG
cmFtZTo6bV92bVt0ZW1wMl0sIHZtCisgICAgbG9hZHAgQ2FsbFRvSmF2YVNjcmlwdEZyYW1lOjpt
X3RvcENhbGxGcmFtZVt0ZW1wMl0sIHRlbXAzCisgICAgc3RvcmVwIHRlbXAzLCBWTTo6dG9wQ2Fs
bEZyYW1lW3ZtXQorICAgIGxvYWRwIENhbGxUb0phdmFTY3JpcHRGcmFtZTo6bV9wcmV2Q2FsbFRv
SmF2YVNjcmlwdEZyYW1lW3RlbXAyXSwgdGVtcDMKKyAgICBzdG9yZXAgdGVtcDMsIFZNOjpjYWxs
VG9KYXZhU2NyaXB0RnJhbWVQb2ludGVyW3ZtXQogCi0gICAgY2hlY2tTdGFja1BvaW50ZXJBbGln
bm1lbnQodGVtcDMsIDB4YmFkMGRjMDQpCisgICAgc3VicCBjZnIsIENhbGxlZVJlZ2lzdGVyU2F2
ZVNpemUsIHNwCiAKLSAgICBpZiBYODZfNjQgb3IgWDg2XzY0X1dJTgotICAgICAgICBwb3AgdDUK
LSAgICBlbmQKICAgICBjYWxsVG9KYXZhU2NyaXB0RXBpbG9ndWUoKQogCiAgICAgcmV0CkBAIC0z
NDYsMTcgKzMzNiwxNiBAQCBfaGFuZGxlVW5jYXVnaHRFeGNlcHRpb246CiAgICAgbG9hZHAgTWFy
a2VkQmxvY2s6Om1fd2Vha1NldCArIFdlYWtTZXQ6Om1fdm1bdDNdLCB0MwogICAgIGxvYWRwIFZN
OjpjYWxsRnJhbWVGb3JUaHJvd1t0M10sIGNmcgogCi0gICAgIyBTbyBmYXIsIHdlJ3ZlIHVud291
bmQgdGhlIHN0YWNrIHRvIHRoZSBmcmFtZSBqdXN0IGJlbG93IHRoZSBzZW50aW5lbCBmcmFtZSwg
ZXhjZXB0Ci0gICAgIyBpbiB0aGUgY2FzZSBvZiBzdGFjayBvdmVyZmxvdyBpbiB0aGUgZmlyc3Qg
ZnVuY3Rpb24gY2FsbGVkIGZyb20gY2FsbFRvSmF2YVNjcmlwdC4KLSAgICAjIENoZWNrIGlmIHdl
IG5lZWQgdG8gcG9wIHRvIHRoZSBzZW50aW5lbCBmcmFtZSBhbmQgZG8gdGhlIG5lY2Vzc2FyeSBj
bGVhbiB1cCBmb3IKLSAgICAjIHJldHVybmluZyB0byB0aGUgY2FsbGVyIEMgZnJhbWUuCi0gICAg
YnBlcSBDb2RlQmxvY2tbY2ZyXSwgMSwgLmhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uQWxyZWFkeUlz
U2VudGluZWwKICAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIKLS5oYW5kbGVVbmNhdWdo
dEV4Y2VwdGlvbkFscmVhZHlJc1NlbnRpbmVsOgorICAgIENhbGxUb0phdmFTY3JpcHRGcmFtZUZy
b21GcmFtZVBvaW50ZXIoY2ZyLCB0MikKIAotICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MyAjIFZN
Ci0gICAgbG9hZHAgU2NvcGVDaGFpbltjZnJdLCB0NSAjIHByZXZpb3VzIHRvcENhbGxGcmFtZQor
ICAgIGxvYWRwIENhbGxUb0phdmFTY3JpcHRGcmFtZTo6bV92bVt0Ml0sIHQzCisgICAgbG9hZHAg
Q2FsbFRvSmF2YVNjcmlwdEZyYW1lOjptX3RvcENhbGxGcmFtZVt0Ml0sIHQ1CiAgICAgc3RvcmVw
IHQ1LCBWTTo6dG9wQ2FsbEZyYW1lW3QzXQorICAgIGxvYWRwIENhbGxUb0phdmFTY3JpcHRGcmFt
ZTo6bV9wcmV2Q2FsbFRvSmF2YVNjcmlwdEZyYW1lW3QyXSwgdDUKKyAgICBzdG9yZXAgdDUsIFZN
OjpjYWxsVG9KYXZhU2NyaXB0RnJhbWVQb2ludGVyW3QzXQorCisgICAgc3VicCBjZnIsIENhbGxl
ZVJlZ2lzdGVyU2F2ZVNpemUsIHNwCiAKICAgICBjYWxsVG9KYXZhU2NyaXB0RXBpbG9ndWUoKQog
ICAgIHJldApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTcyMTg4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw2ICs0Miw5IEBAIGNvbnN0IENhbGxGcmFtZUFsaWduU2xvdHMgPSAxCiBlbmQKIGNvbnN0IFNs
b3RTaXplID0gOAogCitjb25zdCBTdGFja0FsaWdubWVudCA9IDE2Citjb25zdCBTdGFja0FsaWdu
bWVudE1hc2sgPSBTdGFja0FsaWdubWVudCAtIDEKKwogY29uc3QgQ2FsbGVyRnJhbWVBbmRQQ1Np
emUgPSAyICogUHRyU2l6ZQogCiBjb25zdCBDYWxsZXJGcmFtZSA9IDAKQEAgLTUzLDYgKzU2LDI0
IEBAIGNvbnN0IEFyZ3VtZW50Q291bnQgPSBDYWxsZWUgKyBTbG90U2l6ZQogY29uc3QgVGhpc0Fy
Z3VtZW50T2Zmc2V0ID0gQXJndW1lbnRDb3VudCArIFNsb3RTaXplCiBjb25zdCBDYWxsRnJhbWVI
ZWFkZXJTaXplID0gVGhpc0FyZ3VtZW50T2Zmc2V0CiAKK2lmIENfTE9PUAorICAgIGNvbnN0IENh
bGxlZVNhdmVSZWdpc3RlckNvdW50ID0gMAorZWxzaWYgWDg2IG9yIFg4Nl9XSU4KKyAgICBjb25z
dCBDYWxsZWVTYXZlUmVnaXN0ZXJDb3VudCA9IDMKK2Vsc2lmIFg4Nl82NCBvciBTSDQKKyAgICBj
b25zdCBDYWxsZWVTYXZlUmVnaXN0ZXJDb3VudCA9IDUKK2Vsc2lmIEFSTSBvciBBUk12NyBvciBB
Uk12N19UUkFESVRJT05BTAorICAgIGNvbnN0IENhbGxlZVNhdmVSZWdpc3RlckNvdW50ID0gNwor
ZWxzaWYgQVJNNjQgb3IgTUlQUworICAgIGNvbnN0IENhbGxlZVNhdmVSZWdpc3RlckNvdW50ID0g
MTAKK2VuZAorCitjb25zdCBDYWxsZWVSZWdpc3RlclNhdmVTaXplID0gQ2FsbGVlU2F2ZVJlZ2lz
dGVyQ291bnQgKiBQdHJTaXplCisKKyMgQ2FsbFRvSmF2YVNjcmlwdFRvdGFsRnJhbWVTaXplIGlu
Y2x1ZGVzIHRoZSBzcGFjZSBmb3Igc3RydWN0IENhbGxUb0phdmFTY3JpcHRGcmFtZSBhbmQgdGhl
CisjIGNhbGxlZSBzYXZlIHJlZ2lzdGVycyByb3VuZGVkIHVwIHRvIGtlZXAgdGhlIHN0YWNrIGFs
aWduZWQKK2NvbnN0IENhbGxUb0phdmFTY3JpcHRUb3RhbEZyYW1lU2l6ZSA9IChDYWxsZWVSZWdp
c3RlclNhdmVTaXplICsgc2l6ZW9mIENhbGxUb0phdmFTY3JpcHRGcmFtZSArIFN0YWNrQWxpZ25t
ZW50IC0gMSkgJiB+U3RhY2tBbGlnbm1lbnRNYXNrCisKICMgU29tZSB2YWx1ZSByZXByZXNlbnRh
dGlvbiBjb25zdGFudHMuCiBpZiBKU1ZBTFVFNjQKIGNvbnN0IFRhZ0JpdFR5cGVPdGhlciA9IDB4
MgpAQCAtMjM1LDkgKzI1Niw5IEBAIG1hY3JvIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHRl
bXBSZWcKICAgICAgICAgaWYgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMCiAgICAg
ICAgICAgICAjIEFSTSBjYW4ndCBkbyBsb2dpY2FsIG9wcyB3aXRoIHRoZSBzcCBhcyBhIHNvdXJj
ZQogICAgICAgICAgICAgbW92ZSBzcCwgdGVtcFJlZwotICAgICAgICAgICAgYW5kcCAweGYsIHRl
bXBSZWcKKyAgICAgICAgICAgIGFuZHAgU3RhY2tBbGlnbm1lbnRNYXNrLCB0ZW1wUmVnCiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGFuZHAgc3AsIDB4ZiwgdGVtcFJlZworICAgICAgICAgICAg
YW5kcCBzcCwgU3RhY2tBbGlnbm1lbnRNYXNrLCB0ZW1wUmVnCiAgICAgICAgIGVuZAogICAgICAg
ICBidHB6IHRlbXBSZWcsIC5zdGFja1BvaW50ZXJPa2F5CiAgICAgICAgIG1vdmUgbG9jYXRpb24s
IHRlbXBSZWcKQEAgLTMyMCw3ICszNDEsNiBAQCBlbmQKIG1hY3JvIGNhbGxUb0phdmFTY3JpcHRQ
cm9sb2d1ZSgpCiAgICAgaWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4KICAgICAgICAgcHVzaCBjZnIK
LSAgICAgICAgcHVzaCB0MAogICAgIGVsc2lmIFg4NiBvciBYODZfV0lOCiAgICAgICAgIHB1c2gg
Y2ZyCiAgICAgZWxzaWYgQVJNNjQKQEAgLTMyOSw0MCArMzQ5LDI4IEBAIG1hY3JvIGNhbGxUb0ph
dmFTY3JpcHRQcm9sb2d1ZSgpCiAgICAgICAgIHB1c2ggbHIKICAgICAgICAgcHVzaCBjZnIKICAg
ICBlbmQKKyAgICBtb3ZlIHNwLCBjZnIKICAgICBwdXNoQ2FsbGVlU2F2ZXMKLSAgICBpZiBYODYK
LSAgICAgICAgc3VicCAxMiwgc3AKLSAgICBlbHNpZiBYODZfV0lOCi0gICAgICAgIHN1YnAgMTYs
IHNwCisgICAgaWYgWDg2X1dJTgorICAgICAgICBzdWJwIFN0YWNrQWxpZ25tZW50LCBzcAogICAg
ICAgICBtb3ZlIHNwLCB0NAogICAgICAgICBtb3ZlIHQ0LCB0MAogICAgICAgICBtb3ZlIHQ0LCB0
MgotICAgICAgICBhbmRwIDB4ZiwgdDIKKyAgICAgICAgYW5kcCBTdGFja0FsaWdubWVudE1hc2ss
IHQyCiAgICAgICAgIGFuZHAgMHhmZmZmZmZmMCwgdDAKICAgICAgICAgbW92ZSB0MCwgc3AKICAg
ICAgICAgc3RvcmVwIHQ0LCBbc3BdCiAgICAgZWxzaWYgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RS
QURJVElPTkFMCiAgICAgICAgIHN1YnAgNCwgc3AKICAgICAgICAgbW92ZSBzcCwgdDQKLSAgICAg
ICAgY2xyYnAgdDQsIDB4ZiwgdDUKKyAgICAgICAgY2xyYnAgdDQsIFN0YWNrQWxpZ25tZW50TWFz
aywgdDUKICAgICAgICAgbW92ZSB0NSwgc3AKICAgICAgICAgc3RvcmVwIHQ0LCBbc3BdCiAgICAg
ZW5kCiBlbmQKIAogbWFjcm8gY2FsbFRvSmF2YVNjcmlwdEVwaWxvZ3VlKCkKLSAgICBpZiBBUk12
NwotICAgICAgICBhZGRwIENhbGxGcmFtZUhlYWRlclNsb3RzICogOCwgY2ZyLCB0NAotICAgICAg
ICBtb3ZlIHQ0LCBzcAotICAgIGVsc2UKLSAgICAgICAgYWRkcCBDYWxsRnJhbWVIZWFkZXJTbG90
cyAqIDgsIGNmciwgc3AKLSAgICBlbmQKLQotICAgIGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIGNm
cgotCi0gICAgaWYgWDg2Ci0gICAgICAgIGFkZHAgMTIsIHNwCi0gICAgZWxzaWYgWDg2X1dJTgor
ICAgIGlmIFg4Nl9XSU4KICAgICAgICAgcG9wIHQ0CiAgICAgICAgIG1vdmUgdDQsIHNwCiAgICAg
ICAgIGFkZHAgMTYsIHNwCkBAIC0zNzEsMTAgKzM3OSw4IEBAIG1hY3JvIGNhbGxUb0phdmFTY3Jp
cHRFcGlsb2d1ZSgpCiAgICAgICAgIG1vdmUgdDQsIHNwCiAgICAgICAgIGFkZHAgNCwgc3AKICAg
ICBlbmQKLQogICAgIHBvcENhbGxlZVNhdmVzCiAgICAgaWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4K
LSAgICAgICAgcG9wIHQyCiAgICAgICAgIHBvcCBjZnIKICAgICBlbHNpZiBYODYgb3IgWDg2X1dJ
TgogICAgICAgICBwb3AgY2ZyCkBAIC0zODYsNiArMzkyLDEwIEBAIG1hY3JvIGNhbGxUb0phdmFT
Y3JpcHRFcGlsb2d1ZSgpCiAgICAgZW5kCiBlbmQKIAorbWFjcm8gQ2FsbFRvSmF2YVNjcmlwdEZy
YW1lRnJvbUZyYW1lUG9pbnRlcihmcmFtZVBvaW50ZXIsIHJlc3VsdFJlZykKKyAgICBzdWJwIGZy
YW1lUG9pbnRlciwgQ2FsbFRvSmF2YVNjcmlwdFRvdGFsRnJhbWVTaXplLCByZXN1bHRSZWcKK2Vu
ZAorCiBtYWNybyBtb3ZlU3RhY2tQb2ludGVyRm9yQ29kZUJsb2NrKGNvZGVCbG9jaywgc2NyYXRj
aCkKICAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtQ2FsbGVlUmVnaXN0ZXJzW2NvZGVCbG9ja10s
IHNjcmF0Y2gKICAgICBsc2hpZnRwIDMsIHNjcmF0Y2gKQEAgLTYyOCw4ICs2MzgsOCBAQCBtYWNy
byBkb1JldHVybigpCiBlbmQKIAogIyBzdHViIHRvIGNhbGwgaW50byBKYXZhU2NyaXB0IG9yIE5h
dGl2ZSBmdW5jdGlvbnMKLSMgRW5jb2RlZEpTVmFsdWUgY2FsbFRvSmF2YVNjcmlwdCh2b2lkKiBj
b2RlLCBFeGVjU3RhdGUqKiB2bVRvcENhbGxGcmFtZSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvRnJh
bWUpCi0jIEVuY29kZWRKU1ZhbHVlIGNhbGxUb05hdGl2ZUZ1bmN0aW9uKHZvaWQqIGNvZGUsIEV4
ZWNTdGF0ZSoqIHZtVG9wQ2FsbEZyYW1lLCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFtZSkKKyMg
RW5jb2RlZEpTVmFsdWUgY2FsbFRvSmF2YVNjcmlwdCh2b2lkKiBjb2RlLCBWTSogdm0sIFByb3Rv
Q2FsbEZyYW1lKiBwcm90b0ZyYW1lKQorIyBFbmNvZGVkSlNWYWx1ZSBjYWxsVG9OYXRpdmVGdW5j
dGlvbih2b2lkKiBjb2RlLCBWTSogdm0sIFByb3RvQ2FsbEZyYW1lKiBwcm90b0ZyYW1lKQogCiBp
ZiBDX0xPT1AKIF9sbGludF9jYWxsX3RvX2phdmFzY3JpcHQ6CkBAIC02ODksNiArNjk5LDI4IEBA
IF9zYW5pdGl6ZVN0YWNrRm9yVk1JbXBsOgogICAgIG1vdmUgc3AsIGFkZHJlc3MKICAgICBzdG9y
ZXAgYWRkcmVzcywgVk06Om1fbGFzdFN0YWNrVG9wW3ZtXQogICAgIHJldAorCisKKyMgQ2FsbFRv
SmF2YVNjcmlwdEZyYW1lKiBjYWxsVG9KYXZhU2NyaXB0RnJhbWVGcm9tRnJhbWVQb2ludGVyKGNv
bnN0IENhbGxGcmFtZSogY2FsbEZyYW1lKQorZ2xvYmFsIF9jYWxsVG9KYXZhU2NyaXB0RnJhbWVG
cm9tRnJhbWVQb2ludGVyCitfY2FsbFRvSmF2YVNjcmlwdEZyYW1lRnJvbUZyYW1lUG9pbnRlcjoK
KyAgICBpZiBYODZfNjQKKyAgICAgICAgY29uc3QgY2FsbEZyYW1lID0gdDQKKyAgICAgICAgY29u
c3QgcmVzdWx0ID0gdDAKKyAgICBlbHNpZiBYODYgb3IgWDg2X1dJTgorICAgICAgICBjb25zdCBj
YWxsRnJhbWUgPSB0MgorICAgICAgICBjb25zdCByZXN1bHQgPSB0MAorICAgIGVsc2UKKyAgICAg
ICAgY29uc3QgY2FsbEZyYW1lID0gYTAKKyAgICAgICAgY29uc3QgcmVzdWx0ID0gdDAKKyAgICBl
bmQKKworICAgIGlmIFg4NiBvciBYODZfV0lOCisgICAgICAgIGxvYWRwIDRbc3BdLCBjYWxsRnJh
bWUKKyAgICBlbmQKKworICAgIENhbGxUb0phdmFTY3JpcHRGcmFtZUZyb21GcmFtZVBvaW50ZXIo
Y2FsbEZyYW1lLCByZXN1bHQpCisgICAgcmV0CiBlbmQKIAogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAxNzIxODgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDcgQEAKICNp
bmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJTaW1wbGVUeXBlZEFycmF5Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyQ2FjaGUuaCIKKyNpbmNsdWRlICJTdGFj
a1Zpc2l0b3IuaCIKICNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUg
IlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCkBAIC0xNDgs
NiArMTQ5LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAg
ICwgaGVhcCh0aGlzLCBoZWFwVHlwZSkKICAgICAsIHZtVHlwZSh2bVR5cGUpCiAgICAgLCBjbGll
bnREYXRhKDApCisgICAgLCBjYWxsVG9KYXZhU2NyaXB0RnJhbWVQb2ludGVyKDApCiAgICAgLCB0
b3BDYWxsRnJhbWUoQ2FsbEZyYW1lOjpub0NhbGxlcigpKQogICAgICwgbV9hdG9taWNTdHJpbmdU
YWJsZSh2bVR5cGUgPT0gRGVmYXVsdCA/IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJs
ZSgpIDogbmV3IEF0b21pY1N0cmluZ1RhYmxlKQogICAgICwgcHJvcGVydHlOYW1lcyhudWxscHRy
KQpAQCAtNTkzLDcgKzU5NSw0MyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9yKENh
bGxGcmFtCiAgICAgCiAgICAgZXhjZXB0aW9uLT5wdXREaXJlY3QoKnZtLCB2bS0+cHJvcGVydHlO
YW1lcy0+bWVzc2FnZSwganNTdHJpbmcodm0sIG1lc3NhZ2UpKTsKIH0KKworY2xhc3MgRmluZEZp
cnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3RvciB7CitwdWJsaWM6CisgICAgRmluZEZp
cnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3RvcihDYWxsRnJhbWUqIHN0YXJ0Q2FsbEZy
YW1lKQorICAgICAgICA6IG1fc3RhcnRDYWxsRnJhbWUoc3RhcnRDYWxsRnJhbWUpCisgICAgICAg
ICwgbV9mb3VuZENhbGxGcmFtZShudWxscHRyKQorICAgICAgICAsIG1fZm91bmRTdGFydENhbGxG
cmFtZShmYWxzZSkKKyAgICAgICAgLCBtX2luZGV4KDApCisgICAgeyB9CisgICAgCisgICAgU3Rh
Y2tWaXNpdG9yOjpTdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpCisgICAg
eworICAgICAgICBpZiAoIW1fZm91bmRTdGFydENhbGxGcmFtZSAmJiAodmlzaXRvci0+Y2FsbEZy
YW1lKCkgPT0gbV9zdGFydENhbGxGcmFtZSkpCisgICAgICAgICAgICBtX2ZvdW5kU3RhcnRDYWxs
RnJhbWUgPSB0cnVlOworICAgICAgICAKKyAgICAgICAgaWYgKG1fZm91bmRTdGFydENhbGxGcmFt
ZSkgeworICAgICAgICAgICAgaWYgKHZpc2l0b3ItPmNhbGxGcmFtZSgpLT5jb2RlQmxvY2soKSkg
eworICAgICAgICAgICAgICAgIG1fZm91bmRDYWxsRnJhbWUgPSB2aXNpdG9yLT5jYWxsRnJhbWUo
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgbV9pbmRleCsrOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IFN0YWNrVmlzaXRvcjo6Q29udGludWU7CisgICAgfQogICAgIAorICAgIENhbGxGcmFtZSogZm91
bmRDYWxsRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZvdW5kQ2FsbEZyYW1lOyB9CisgICAgdW5z
aWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisgICAgCitwcml2YXRlOgor
ICAgIENhbGxGcmFtZSogbV9zdGFydENhbGxGcmFtZTsKKyAgICBDYWxsRnJhbWUqIG1fZm91bmRD
YWxsRnJhbWU7CisgICAgYm9vbCBtX2ZvdW5kU3RhcnRDYWxsRnJhbWU7CisgICAgdW5zaWduZWQg
bV9pbmRleDsKK307CisgICAgCisKIEpTVmFsdWUgVk06OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBlcnJvcikKIHsKICAgICBpZiAoT3B0aW9uczo6YnJlYWtPblRocm93
KCkpIHsKQEAgLTYzMSwxMiArNjY5LDExIEBAIEpTVmFsdWUgVk06OnRocm93RXhjZXB0aW9uKEV4
ZWNTdGF0ZSogZXgKICAgICAgICAgICAgIGV4Y2VwdGlvbi0+cHV0RGlyZWN0KCp0aGlzLCBJZGVu
dGlmaWVyKHRoaXMsICJzb3VyY2VVUkwiKSwganNTdHJpbmcodGhpcywgc3RhY2tGcmFtZS5zb3Vy
Y2VVUkwpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwogICAgIH0KICAgICBpZiAoZXhjZXB0aW9u
LT5pc0Vycm9ySW5zdGFuY2UoKSAmJiBzdGF0aWNfY2FzdDxFcnJvckluc3RhbmNlKj4oZXhjZXB0
aW9uKS0+YXBwZW5kU291cmNlVG9NZXNzYWdlKCkpIHsKLSAgICAgICAgdW5zaWduZWQgc3RhY2tJ
bmRleCA9IDA7Ci0gICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lOwotICAgICAgICBmb3IgKGNh
bGxGcmFtZSA9IGV4ZWM7IGNhbGxGcmFtZSAmJiAhY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsgKSB7
Ci0gICAgICAgICAgICBzdGFja0luZGV4Kys7Ci0gICAgICAgICAgICBjYWxsRnJhbWUgPSBjYWxs
RnJhbWUtPmNhbGxlckZyYW1lU2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKTsKLSAgICAgICAgfQor
ICAgICAgICBGaW5kRmlyc3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yIGZ1bmN0b3Io
ZXhlYyk7CisgICAgICAgIHRvcENhbGxGcmFtZS0+aXRlcmF0ZShmdW5jdG9yKTsKKyAgICAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBmdW5jdG9yLmZvdW5kQ2FsbEZyYW1lKCk7CisgICAgICAg
IHVuc2lnbmVkIHN0YWNrSW5kZXggPSBmdW5jdG9yLmluZGV4KCk7CisKICAgICAgICAgaWYgKGNh
bGxGcmFtZSAmJiBjYWxsRnJhbWUtPmNvZGVCbG9jaygpKSB7CiAgICAgICAgICAgICBzdGFja0Zy
YW1lID0gc3RhY2tUcmFjZS5hdChzdGFja0luZGV4KTsKICAgICAgICAgICAgIGJ5dGVjb2RlT2Zm
c2V0ID0gc3RhY2tGcmFtZS5ieXRlY29kZU9mZnNldDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAkocmV2aXNpb24gMTcyMTg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDYgKzIzNSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIFZNVHlwZSB2bVR5cGU7CiAgICAgICAgIENsaWVudERhdGEqIGNsaWVu
dERhdGE7CisgICAgICAgIEV4ZWNTdGF0ZSogY2FsbFRvSmF2YVNjcmlwdEZyYW1lUG9pbnRlcjsK
ICAgICAgICAgRXhlY1N0YXRlKiB0b3BDYWxsRnJhbWU7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxXYXRjaGRvZz4gd2F0Y2hkb2c7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236259</attachid>
            <date>2014-08-07 20:43:33 -0700</date>
            <delta_ts>2014-08-08 13:59:41 -0700</delta_ts>
            <desc>Updated with fixes for arm on iOS.</desc>
            <filename>131578-2.patch</filename>
            <type>text/plain</type>
            <size>54497</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyMjYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBA
QAorMjAxNC0wOC0wNyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAg
ICAgICBDaGFuZ2UgY2FsbFRvSmF2YVNjcmlwdCBhbmQgY2FsbFRvTmF0aXZlRnVuY3Rpb24gc28g
dGhlaXIgY2FsbEZyYW1lcyBtYXRjaCB0aGUgbmF0aXZlIGNhbGxpbmcgY29udmVudGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTU3OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVsaW1pbmF0ZWQg
dGhlIHNlbnRpbmVsIGZyYW1lIGFuZCByZXBsYWNlZCBpdCB3aXRoIHRoZSBzdHJ1Y3R1cmUgQ2Fs
bFRvSmF2YVNjcmlwdEZyYW1lIHRoYXQKKyAgICAgICAgYXBwZWFycyBpbiB0aGUgImxvY2FscyIg
YXJlYSBvZiBhIGNhbGxUb0phdmFTY3JpcHQgc3RhY2sgZnJhbWUuICBDaGFuZ2VkIHRoZSBvcmRl
ciB0aGF0CisgICAgICAgIGNhbGxUb0phdmFTY3JpcHQvY2FsbFRvTmF0aXZlRnVuY3Rpb24gY3Jl
YXRlcyBpdHMgc3RhY2sgZnJhbWUgdG8gYmUgbmF0aXZlIGNhbGxpbmcgY29udmVudGlvbgorICAg
ICAgICBjb21wbGlhbnQuICBUaGF0IGlzIHRvIHNhdmUgcHJpb3IgZnJhbWUgcG9pbnRlciwgc2F2
ZSBjYWxsZWUgc2F2ZSByZWdpc3RlcnMsIHRoZW4gYWxsb2NhdGUgYW5kCisgICAgICAgIHBvcHVs
YXRlIHRoZSBDYWxsVG9KYXZhU2NyaXB0RnJhbWUsIGFuZCB0aGVuIGFsbG9jYXRlIGEgQ2FsbEZy
YW1lIGZvciB0aGUgSlMgZnVuY3Rpb24gdGhhdAorICAgICAgICBjYWxsVG9KYXZhU2NyaXB0IHdp
bGwgaW52b2tlLiAgVGhlIHRvcCBtb3N0IEpTIGVudHJ5IENhbGxGcmFtZSBpcyBzYXZlZCBpbgor
ICAgICAgICBWTTo6Y2FsbFRvSmF2YVNjcmlwdEZyYW1lUG9pbnRlci4gIFRoZSBwcmlvciBjb250
ZW50cyBvZiBWTTo6Y2FsbFRvSmF2YVNjcmlwdEZyYW1lUG9pbnRlciBhcmUKKyAgICAgICAgc2F2
ZWQgaW4gdGhlIENhbGxUb0phdmFTY3JpcHRGcmFtZSBzdHJ1Y3QgYWxvbmcgd2l0aCBhIHBvaW50
ZXIgdG8gdGhlIGN1cnJlbnQgVk0gYW5kCisgICAgICAgIFZNOjp0b3BDYWxsRnJhbWUuICBUaGlz
IGFsbG93cyBsaW5raW5nIGJhY2sgdG8gYSBwcmlvciBzZXQgb2YgSlMgZnJhbWVzIGZvciB1bndp
bmRpbmcgYXJvdW5kCisgICAgICAgIGFueSBpbnRlcm1lYW5pbmcgQysrIGZyYW1lcy4KKworICAg
ICAgICBBcmJpdHJhcnkgc3RhY2sgdW53aW5kaW5nIGlzIG5vdyBoYW5kbGVkIHVzaW5nIFN0YWNr
VmlzaXRvciBhbmQgdGhlIGFkZGl0aW9uIG9mIHJlbGF0ZWQgZnVuY3RvcgorICAgICAgICBjbGFz
c2VzLgorCisgICAgICAgIEFkZGVkIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUg
Q2FsbFRvSmF2YVNjcmlwdEZyYW1lIHBvaW50ZXIgd2hlbiBwcmVzZW50ZWQgdGhlCisgICAgICAg
IENhbGxGcmFtZSBmb3IgYSBjYWxsZWUgb2YgY2FsbFRvSmF2YVNjcmlwdC4KKworICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6UmVjdXJzaW9uQ2hlY2tGdW5jdG9y
OjpSZWN1cnNpb25DaGVja0Z1bmN0b3IpOgorICAgICAgICAoSlNDOjpSZWN1cnNpb25DaGVja0Z1
bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpSZWN1cnNpb25DaGVja0Z1bmN0b3I6
OmRpZFJlY3Vyc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om5vdGljZUluY29taW5nQ2Fs
bCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlcjo6c3RlcE91dE9mRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cmV0dXJu
RXZlbnQpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6ZGlkRXhlY3V0ZVByb2dyYW0pOgorICAg
ICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Rmlu
ZENhbGxlck1pZFN0YWNrRnVuY3Rvcjo6RmluZENhbGxlck1pZFN0YWNrRnVuY3Rvcik6CisgICAg
ICAgIChKU0M6OkZpbmRDYWxsZXJNaWRTdGFja0Z1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAg
ICAoSlNDOjpGaW5kQ2FsbGVyTWlkU3RhY2tGdW5jdG9yOjpnZXRDYWxsZXJGcmFtZSk6CisgICAg
ICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjpjYWxsZXJGcmFtZSk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6dG9wT2ZGcmFt
ZSk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y3VycmVudFZQQyk6CisgICAgICAgIChKU0M6
OkV4ZWNTdGF0ZTo6c2V0Q3VycmVudFZQQyk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6aW5p
dCk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6aXNUb3BKYXZhU2NyaXB0RW50cnlGcmFtZSk6
CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y2FsbGVyRnJhbWVVbndpbmQpOgorICAgICAgICAo
SlNDOjpFeGVjU3RhdGU6OmNhbGxlckZyYW1lU2tpcHBpbmdUb3BNb3N0SmF2YVNjcmlwdEVudHJ5
RnJhbWUpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnZtUHJpb3JUb3BDYWxsRnJhbWUpOgor
ICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmlzVk1FbnRyeVNlbnRpbmVsKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RXhlY1N0YXRlOjp2bUVudHJ5U2VudGluZWxDYWxsZXJGcmFtZSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6aW5pdGlhbGl6ZVZNRW50cnlTZW50aW5lbEZy
YW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjYWxsZXJGcmFtZVNraXBw
aW5nVk1FbnRyeVNlbnRpbmVsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjp2
bUVudHJ5U2VudGluZWxDb2RlQmxvY2spOiBEZWxldGVkLgorICAgICAgICAqIGludGVycHJldGVy
L0NhbGxUb0phdmFTY3JpcHRGcmFtZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbFRvSmF2
YVNjcmlwdEZyYW1lOjp2bSk6CisgICAgICAgIChKU0M6OkNhbGxUb0phdmFTY3JpcHRGcmFtZTo6
c2V0Vk0pOgorICAgICAgICAoSlNDOjpDYWxsVG9KYXZhU2NyaXB0RnJhbWU6OnRvcENhbGxGcmFt
ZSk6CisgICAgICAgIChKU0M6OkNhbGxUb0phdmFTY3JpcHRGcmFtZTo6c2V0VG9wQ2FsbEZyYW1l
KToKKyAgICAgICAgKEpTQzo6Q2FsbFRvSmF2YVNjcmlwdEZyYW1lOjpwcmV2Q2FsbFRvSmF2YVNj
cmlwdEZyYW1lKToKKyAgICAgICAgKEpTQzo6Q2FsbFRvSmF2YVNjcmlwdEZyYW1lOjpzZXRQcmV2
Q2FsbFRvSmF2YVNjcmlwdEZyYW1lKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHA6CisgICAgICAgIChKU0M6OnVud2luZENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnVu
d2luZCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpT
Qzo6VG9wQ2FsbEZyYW1lU2V0dGVyOjpUb3BDYWxsRnJhbWVTZXR0ZXIpOgorICAgICAgICAoSlND
OjpUb3BDYWxsRnJhbWVTZXR0ZXI6On5Ub3BDYWxsRnJhbWVTZXR0ZXIpOgorICAgICAgICAoSlND
OjpOYXRpdmVDYWxsRnJhbWVUcmFjZXI6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlcik6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNp
dG9yOjpTdGFja1Zpc2l0b3IpOgorICAgICAgICAoSlNDOjpTdGFja1Zpc2l0b3I6OnJlYWRGcmFt
ZSk6CisgICAgICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6cmVhZE5vbklubGluZWRGcmFtZSk6Cisg
ICAgICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6cmVhZElubGluZWRGcmFtZSk6CisgICAgICAgIChK
U0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OnByaW50KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9T
dGFja1Zpc2l0b3IuaDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6Y2FsbGVy
RnJhbWVJc0VudHJ5RnJhbWUpOgorICAgICAgICAqIGludGVycHJldGVyL1ZNSW5zcGVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6Q291bnRGcmFtZXNGdW5jdG9yOjpDb3VudEZyYW1lc0Z1bmN0b3Ip
OgorICAgICAgICAoSlNDOjpDb3VudEZyYW1lc0Z1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAg
ICAoSlNDOjpDb3VudEZyYW1lc0Z1bmN0b3I6OmNvdW50KToKKyAgICAgICAgKEpTQzo6Vk1JbnNw
ZWN0b3I6OmNvdW50RnJhbWVzKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRHVtcENhbGxGcmFtZSk6CisgICAg
ICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9M
TEludFRodW5rcy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNw
cDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVy
RnJhbWVXaXRoQ29kZWJsb2NrRnVuY3Rvcjo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJs
b2NrRnVuY3Rvcik6CisgICAgICAgIChKU0M6OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVi
bG9ja0Z1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpGaW5kRmlyc3RDYWxsZXJG
cmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjpmb3VuZENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6
OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6OmluZGV4KToKKyAgICAg
ICAgKEpTQzo6Vk06OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisK
IDIwMTQtMDgtMDcgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgR2V0IHJpZCBvZiBJTlBVVF9TUEVFQ0gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShy
ZXZpc2lvbiAxNzIxODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjg3LDggKzY4Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25QcmkKICNpZm5kZWYgTkRFQlVHCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRHVtcENhbGxGcmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgaWYgKCFleGVj
LT5jYWxsZXJGcmFtZSgpLT5pc1ZNRW50cnlTZW50aW5lbCgpKQotICAgICAgICBleGVjLT52bSgp
LmludGVycHJldGVyLT5kdW1wQ2FsbEZyYW1lKGV4ZWMtPmNhbGxlckZyYW1lKCkpOworICAgIGV4
ZWMtPnZtKCkuaW50ZXJwcmV0ZXItPmR1bXBDYWxsRnJhbWUoZXhlYy0+Y2FsbGVyRnJhbWUoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KICNlbmRpZgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3MjE4OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTU2LDYgKzExNTYsNyBAQAogCQk2NTUzQTMzMTE3QTFG
MUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTUzQTMyRjE3QTFGMUVFMDA4Q0Y2
RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAgKi87IH07CiAJCTY1NTNBMzMyMTdB
MUYxRUUwMDhDRjZGMyAvKiBDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTUzQTMzMDE3QTFGMUVFMDA4Q0Y2
RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5oICovOyB9OwogCQk2NTVFQjI5QjEwQ0Uy
NTgxMDAxQTk5MEUgLyogTm9kZXNDb2RlZ2VuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NUVCMjlBMTBDRTI1ODEwMDFBOTkwRSAvKiBOb2Rlc0Nv
ZGVnZW4uY3BwICovOyB9OworCQk2NThEM0E1NjE5NjM4MjY4MDAzQzQ1RDYgLyogQ2FsbFRvSmF2
YVNjcmlwdEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NThEM0E1NTE5NjM4MjY4MDAzQzQ1RDYgLyogQ2FsbFRvSmF2YVNjcmlwdEZyYW1lLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjVDMDI4
NTAxNzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QzAyODRGMTcxNzk1RTIwMDM1MUUz
NSAvKiBBUk12N0Rpc2Fzc2VtYmxlci5jcHAgKi87IH07CiAJCTY1QzAyODVDMTcxNzk2NjgwMDM1
MUUzNSAvKiBBUk12N0RPcGNvZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjVDMDI4NUExNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5j
cHAgKi87IH07CiAJCTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QzAyODVCMTcx
Nzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuaCAqLzsgfTsKQEAgLTMwNjIsNiArMzA2Myw3
IEBACiAJCTY1NjIxRTZCMDg5RTg1OTcwMDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvcGVy
dHlTbG90LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQk2
NTYyMUU2QzA4OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3BlcnR5U2xvdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTY1ODYwMTc3MTg1QThGNUUw
MDAzMEVFRSAvKiBNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NThEM0E1NTE5NjM4MjY4MDAzQzQ1RDYgLyogQ2Fs
bFRvSmF2YVNjcmlwdEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
bGxUb0phdmFTY3JpcHRGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTk4
N0YyQzE2N0ZFODRCMDAzQzJGOEQgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmg7
IHBhdGggPSBkZmcvREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2NTk4N0YyRjE2ODI4QTdFMDAzQzJGOEQgLyogVW51c2VkUG9pbnRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbnVzZWRQb2ludGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1QzAyODRGMTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12
N0Rpc2Fzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBB
Uk12N0Rpc2Fzc2VtYmxlci5jcHA7IHBhdGggPSBkaXNhc3NlbWJsZXIvQVJNdjdEaXNhc3NlbWJs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE1Nyw2ICs0MTU5LDcgQEAK
IAkJMTQyOUQ3N0EwRUQyMEQ3MzAwQjg5NjE5IC8qIGludGVycHJldGVyICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk2NThEM0E1NTE5NjM4MjY4MDAzQzQ1
RDYgLyogQ2FsbFRvSmF2YVNjcmlwdEZyYW1lLmggKi8sCiAJCQkJMEY1NUYwRjExNEQxMDYzNjAw
QUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovLAogCQkJCTBGNTVGMEYyMTREMTA2MzYwMEFDNzY0
OSAvKiBBYnN0cmFjdFBDLmggKi8sCiAJCQkJQTdGODY5MEUwRjk1ODRBMTAwNTU4Njk3IC8qIENh
Y2hlZENhbGwuaCAqLywKQEAgLTU5ODMsNiArNTk4Niw3IEBACiAJCQkJMEY2QjFDQjkxODYxMjQ0
QzAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUEwMDlD
MTE4MzFBMjZFMDBDRjg3MTEgLyogQVJNNjRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2RDNCMkM0MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTY1OEQzQTU2MTk2MzgyNjgwMDNDNDVENiAvKiBDYWxsVG9KYXZhU2NyaXB0RnJhbWUu
aCBpbiBIZWFkZXJzICovLAogIAkJCQkyQUQyRURGQjE5Nzk5RTM4MDA0RDY0NzggLyogRW51bWVy
YXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODNBQzBFNkRCOEM5MDA0Nzc1QTQg
LyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBMTEx
MjQ2MTkyRkNFNzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuaCBpbiBIZWFkZXJzICov
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJ
KHJldmlzaW9uIDE3MjE4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiUmVw
YXRjaC5oIgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJTbG90VmlzaXRv
cklubGluZXMuaCIKKyNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKICNpbmNsdWRlICJVbmxpbmtl
ZEluc3RydWN0aW9uU3RyZWFtLmgiCiAjaW5jbHVkZSA8d3RmL0JhZ1RvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KQEAgLTMxNTEsNiArMzE1Miw0NiBAQCBKU0dsb2Jh
bE9iamVjdCogQ29kZUJsb2NrOjpnbG9iYWxPYmplY3RGCiAgICAgcmV0dXJuIGpzQ2FzdDxGdW5j
dGlvbkV4ZWN1dGFibGUqPihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5n
ZXQoKSktPmVpdGhlckNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3QoKTsKIH0KIAorY2xhc3MgUmVj
dXJzaW9uQ2hlY2tGdW5jdG9yIHsKK3B1YmxpYzoKKyAgICBSZWN1cnNpb25DaGVja0Z1bmN0b3Io
Q2FsbEZyYW1lKiBzdGFydENhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVk
IGRlcHRoVG9DaGVjaykKKyAgICAgICAgOiBtX3N0YXJ0Q2FsbEZyYW1lKHN0YXJ0Q2FsbEZyYW1l
KQorICAgICAgICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykKKyAgICAgICAgLCBtX2RlcHRoVG9D
aGVjayhkZXB0aFRvQ2hlY2spCisgICAgICAgICwgbV9mb3VuZFN0YXJ0Q2FsbEZyYW1lKGZhbHNl
KQorICAgICAgICAsIG1fZGlkUmVjdXJzZShmYWxzZSkKKyAgICB7IH0KKyAgICAKKyAgICBTdGFj
a1Zpc2l0b3I6OlN0YXR1cyBvcGVyYXRvcigpKFN0YWNrVmlzaXRvciYgdmlzaXRvcikKKyAgICB7
CisgICAgICAgIENhbGxGcmFtZSogY3VycmVudENhbGxGcmFtZSA9IHZpc2l0b3ItPmNhbGxGcmFt
ZSgpOworCisgICAgICAgIGlmIChjdXJyZW50Q2FsbEZyYW1lID09IG1fc3RhcnRDYWxsRnJhbWUp
CisgICAgICAgICAgICBtX2ZvdW5kU3RhcnRDYWxsRnJhbWUgPSB0cnVlOworCisgICAgICAgIGlm
IChtX2ZvdW5kU3RhcnRDYWxsRnJhbWUpIHsKKyAgICAgICAgICAgIGlmICh2aXNpdG9yLT5jYWxs
RnJhbWUoKS0+Y29kZUJsb2NrKCkgPT0gbV9jb2RlQmxvY2spIHsKKyAgICAgICAgICAgICAgICBt
X2RpZFJlY3Vyc2UgPSB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6
OkRvbmU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghbV9kZXB0aFRvQ2hlY2st
LSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CisgICAgfQorICAgIAor
ICAgIGJvb2wgZGlkUmVjdXJzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlkUmVjdXJzZTsgfQorICAg
IAorcHJpdmF0ZToKKyAgICBDYWxsRnJhbWUqIG1fc3RhcnRDYWxsRnJhbWU7CisgICAgQ29kZUJs
b2NrKiBtX2NvZGVCbG9jazsKKyAgICB1bnNpZ25lZCBtX2RlcHRoVG9DaGVjazsKKyAgICBib29s
IG1fZm91bmRTdGFydENhbGxGcmFtZTsKKyAgICBib29sIG1fZGlkUmVjdXJzZTsKK307CisKIHZv
aWQgQ29kZUJsb2NrOjpub3RpY2VJbmNvbWluZ0NhbGwoRXhlY1N0YXRlKiBjYWxsZXJGcmFtZSkK
IHsKICAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGNhbGxlckZyYW1lLT5jb2RlQmxv
Y2soKTsKQEAgLTMxOTgsMjAgKzMyMzksMTggQEAgdm9pZCBDb2RlQmxvY2s6Om5vdGljZUluY29t
aW5nQ2FsbChFeGVjUwogICAgICAgICAgICAgZGF0YUxvZygiICAgIENsZWFyaW5nIFNBQkkgYmVj
YXVzZSBjYWxsZXIgaXMgbm90IGEgZnVuY3Rpb24uXG4iKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICAKLSAgICBFeGVjU3RhdGUqIGZyYW1lID0gY2FsbGVyRnJhbWU7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gT3B0aW9uczo6bWF4aW11bUlubGluaW5nRGVwdGgoKTsgaS0tOyBmcmFtZSA9
IGZyYW1lLT5jYWxsZXJGcmFtZSgpKSB7Ci0gICAgICAgIGlmIChmcmFtZS0+aXNWTUVudHJ5U2Vu
dGluZWwoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAoZnJhbWUtPmNvZGVCbG9j
aygpID09IHRoaXMpIHsKLSAgICAgICAgICAgIC8vIFJlY3Vyc2l2ZSBjYWxscyB3b24ndCBiZSBp
bmxpbmVkLgotICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VDYWxsTGluaygpKQotICAg
ICAgICAgICAgICAgIGRhdGFMb2coIiAgICBDbGVhcmluZyBTQUJJIGJlY2F1c2UgcmVjdXJzaW9u
IHdhcyBkZXRlY3RlZC5cbiIpOwotICAgICAgICAgICAgbV9zaG91bGRBbHdheXNCZUlubGluZWQg
PSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorCisgICAgLy8gUmVjdXJz
aXZlIGNhbGxzIHdvbid0IGJlIGlubGluZWQuCisgICAgUmVjdXJzaW9uQ2hlY2tGdW5jdG9yIGZ1
bmN0b3IoY2FsbGVyRnJhbWUsIHRoaXMsIE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ0RlcHRoKCkp
OworICAgIHZtKCktPnRvcENhbGxGcmFtZS0+aXRlcmF0ZShmdW5jdG9yKTsKKworICAgIGlmIChm
dW5jdG9yLmRpZFJlY3Vyc2UoKSkgeworICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUNhbGxM
aW5rKCkpCisgICAgICAgICAgICBkYXRhTG9nKCIgICAgQ2xlYXJpbmcgU0FCSSBiZWNhdXNlIHJl
Y3Vyc2lvbiB3YXMgZGV0ZWN0ZWQuXG4iKTsKKyAgICAgICAgbV9zaG91bGRBbHdheXNCZUlubGlu
ZWQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIFJFTEVBU0Vf
QVNTRVJUKGNhbGxlckNvZGVCbG9jay0+bV9jYXBhYmlsaXR5TGV2ZWxTdGF0ZSAhPSBERkc6OkNh
cGFiaWxpdHlMZXZlbE5vdFNldCk7CiAgICAgCiAgICAgaWYgKGNhbkNvbXBpbGUoY2FsbGVyQ29k
ZUJsb2NrLT5tX2NhcGFiaWxpdHlMZXZlbFN0YXRlKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkocmV2aXNpb24gMTcyMTg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjAxLDcgKzYwMSw3IEBAIHZvaWQgRGVidWdnZXI6OnN0ZXBPdXRPZkZ1bmN0aW9uKCkKICAgICBp
ZiAoIW1faXNQYXVzZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGF1c2VPbkNhbGxGcmFt
ZSA9IG1fY3VycmVudENhbGxGcmFtZSA/IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVyRnJhbWVT
a2lwcGluZ1ZNRW50cnlTZW50aW5lbCgpIDogMDsKKyAgICBtX3BhdXNlT25DYWxsRnJhbWUgPSBt
X2N1cnJlbnRDYWxsRnJhbWUgPyBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlckZyYW1lU2tpcHBp
bmdUb3BNb3N0SmF2YVNjcmlwdEVudHJ5RnJhbWUoKSA6IDA7CiAgICAgbm90aWZ5RG9uZVByb2Nl
c3NpbmdEZWJ1Z2dlckV2ZW50cygpOwogfQogCkBAIC03MTgsOSArNzE4LDkgQEAgdm9pZCBEZWJ1
Z2dlcjo6cmV0dXJuRXZlbnQoQ2FsbEZyYW1lKiBjYQogCiAgICAgLy8gVHJlYXQgc3RlcHBpbmcg
b3ZlciBhIHJldHVybiBzdGF0ZW1lbnQgbGlrZSBzdGVwcGluZyBvdXQuCiAgICAgaWYgKG1fY3Vy
cmVudENhbGxGcmFtZSA9PSBtX3BhdXNlT25DYWxsRnJhbWUpCi0gICAgICAgIG1fcGF1c2VPbkNh
bGxGcmFtZSA9IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVyRnJhbWVTa2lwcGluZ1ZNRW50cnlT
ZW50aW5lbCgpOworICAgICAgICBtX3BhdXNlT25DYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJh
bWUtPmNhbGxlckZyYW1lU2tpcHBpbmdUb3BNb3N0SmF2YVNjcmlwdEVudHJ5RnJhbWUoKTsKIAot
ICAgIG1fY3VycmVudENhbGxGcmFtZSA9IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVyRnJhbWVT
a2lwcGluZ1ZNRW50cnlTZW50aW5lbCgpOworICAgIG1fY3VycmVudENhbGxGcmFtZSA9IG1fY3Vy
cmVudENhbGxGcmFtZS0+Y2FsbGVyRnJhbWVTa2lwcGluZ1RvcE1vc3RKYXZhU2NyaXB0RW50cnlG
cmFtZSgpOwogfQogCiB2b2lkIERlYnVnZ2VyOjp3aWxsRXhlY3V0ZVByb2dyYW0oQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCkBAIC03NTAsMTEgKzc1MCwxMSBAQCB2b2lkIERlYnVnZ2VyOjpkaWRFeGVj
dXRlUHJvZ3JhbShDYWxsRnJhCiAgICAgaWYgKCFtX2N1cnJlbnRDYWxsRnJhbWUpCiAgICAgICAg
IHJldHVybjsKICAgICBpZiAobV9jdXJyZW50Q2FsbEZyYW1lID09IG1fcGF1c2VPbkNhbGxGcmFt
ZSkgewotICAgICAgICBtX3BhdXNlT25DYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNh
bGxlckZyYW1lU2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKTsKKyAgICAgICAgbV9wYXVzZU9uQ2Fs
bEZyYW1lID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5jYWxsZXJGcmFtZVNraXBwaW5nVG9wTW9zdEph
dmFTY3JpcHRFbnRyeUZyYW1lKCk7CiAgICAgICAgIGlmICghbV9jdXJyZW50Q2FsbEZyYW1lKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2N1cnJlbnRDYWxsRnJhbWUgPSBtX2N1
cnJlbnRDYWxsRnJhbWUtPmNhbGxlckZyYW1lU2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKTsKKyAg
ICBtX2N1cnJlbnRDYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlckZyYW1lU2tp
cHBpbmdUb3BNb3N0SmF2YVNjcmlwdEVudHJ5RnJhbWUoKTsKIH0KIAogdm9pZCBEZWJ1Z2dlcjo6
ZGlkUmVhY2hCcmVha3BvaW50KENhbGxGcmFtZSogY2FsbEZyYW1lKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCShy
ZXZpc2lvbiAxNzIxODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJDYWxsRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1NywyOSBAQCBwcml2YXRl
OgogICAgIHVuc2lnbmVkIG1fY29sdW1uOwogfTsKIAorY2xhc3MgRmluZENhbGxlck1pZFN0YWNr
RnVuY3RvciB7CitwdWJsaWM6CisgICAgRmluZENhbGxlck1pZFN0YWNrRnVuY3RvcihDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKKyAgICAgICAgOiBtX2NhbGxGcmFtZShjYWxsRnJhbWUpCisgICAgICAg
ICwgbV9jYWxsZXJGcmFtZShudWxscHRyKQorICAgIHsgfQorCisgICAgU3RhY2tWaXNpdG9yOjpT
dGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpCisgICAgeworICAgICAgICBp
ZiAodmlzaXRvci0+Y2FsbEZyYW1lKCkgPT0gbV9jYWxsRnJhbWUpIHsKKyAgICAgICAgICAgIG1f
Y2FsbGVyRnJhbWUgPSB2aXNpdG9yLT5jYWxsZXJGcmFtZSgpOworICAgICAgICAgICAgcmV0dXJu
IFN0YWNrVmlzaXRvcjo6RG9uZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gU3RhY2tWaXNp
dG9yOjpDb250aW51ZTsKKyAgICB9CisKKyAgICBDYWxsRnJhbWUqIGdldENhbGxlckZyYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9jYWxsZXJGcmFtZTsgfQorCitwcml2YXRlOgorICAgIENhbGxGcmFt
ZSogbV9jYWxsRnJhbWU7CisgICAgQ2FsbEZyYW1lKiBtX2NhbGxlckZyYW1lOworfTsKKwogRGVi
dWdnZXJDYWxsRnJhbWU6OkRlYnVnZ2VyQ2FsbEZyYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ICAgIDogbV9jYWxsRnJhbWUoY2FsbEZyYW1lKQogewpAQCAtNzIsNyArOTUsMTAgQEAgUGFzc1Jl
ZlB0cjxEZWJ1Z2dlckNhbGxGcmFtZT4gRGVidWdnZXJDYQogICAgIGlmIChtX2NhbGxlcikKICAg
ICAgICAgcmV0dXJuIG1fY2FsbGVyOwogCi0gICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IG1f
Y2FsbEZyYW1lLT5jYWxsZXJGcmFtZVNraXBwaW5nVk1FbnRyeVNlbnRpbmVsKCk7CisgICAgRmlu
ZENhbGxlck1pZFN0YWNrRnVuY3RvciBmdW5jdG9yKG1fY2FsbEZyYW1lKTsKKyAgICBtX2NhbGxG
cmFtZS0+dm0oKS50b3BDYWxsRnJhbWUtPml0ZXJhdGUoZnVuY3Rvcik7CisKKyAgICBDYWxsRnJh
bWUqIGNhbGxlckZyYW1lID0gZnVuY3Rvci5nZXRDYWxsZXJGcmFtZSgpOwogICAgIGlmICghY2Fs
bGVyRnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAxNzIxODgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI0LDYgKzI0LDcgQEAKICNkZWZpbmUgQ2FsbEZyYW1lX2gKIAogI2luY2x1ZGUgIkFic3Ry
YWN0UEMuaCIKKyNpbmNsdWRlICJDYWxsVG9KYXZhU2NyaXB0RnJhbWUuaCIKICNpbmNsdWRlICJW
TS5oIgogI2luY2x1ZGUgIkpTU3RhY2suaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYuaCIKQEAgLTE2MSw3ICsxNjIsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAKICAgICAgICAgUmVn
aXN0ZXIqIHRvcE9mRnJhbWUoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaXNWTUVudHJ5
U2VudGluZWwoKSB8fCAhY29kZUJsb2NrKCkpCisgICAgICAgICAgICBpZiAoIWNvZGVCbG9jaygp
KQogICAgICAgICAgICAgICAgIHJldHVybiByZWdpc3RlcnMoKTsKICAgICAgICAgICAgIHJldHVy
biB0b3BPZkZyYW1lSW50ZXJuYWwoKTsKICAgICAgICAgfQpAQCAtMTY5LDEyICsxNzAsMTAgQEAg
bmFtZXNwYWNlIEpTQyAgewogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIEluc3RydWN0
aW9uKiBjdXJyZW50VlBDKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCFp
c1ZNRW50cnlTZW50aW5lbCgpKTsKICAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SW5z
dHJ1Y3Rpb24qPih0aGlzW0pTU3RhY2s6OkFyZ3VtZW50Q291bnRdLnRhZygpKTsKICAgICAgICAg
fQogICAgICAgICB2b2lkIHNldEN1cnJlbnRWUEMoSW5zdHJ1Y3Rpb24qIHZwYykKICAgICAgICAg
ewotICAgICAgICAgICAgQVNTRVJUKCFpc1ZNRW50cnlTZW50aW5lbCgpKTsKICAgICAgICAgICAg
IHRoaXNbSlNTdGFjazo6QXJndW1lbnRDb3VudF0udGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJf
dD4odnBjKTsKICAgICAgICAgfQogI2Vsc2UKQEAgLTE4OSw3ICsxODgsNyBAQCBuYW1lc3BhY2Ug
SlNDICB7CiAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBpbml0KENvZGVCbG9jayogY29kZUJs
b2NrLCBJbnN0cnVjdGlvbiogdlBDLCBKU1Njb3BlKiBzY29wZSwKICAgICAgICAgICAgIENhbGxG
cmFtZSogY2FsbGVyRnJhbWUsIGludCBhcmdjLCBKU09iamVjdCogY2FsbGVlKQogICAgICAgICB7
Ci0gICAgICAgICAgICBBU1NFUlQoY2FsbGVyRnJhbWUgPT0gbm9DYWxsZXIoKSB8fCBjYWxsZXJG
cmFtZS0+aXNWTUVudHJ5U2VudGluZWwoKSB8fCBjYWxsZXJGcmFtZS0+c3RhY2soKS0+Y29udGFp
bnNBZGRyZXNzKHRoaXMpKTsKKyAgICAgICAgICAgIEFTU0VSVChjYWxsZXJGcmFtZSA9PSBub0Nh
bGxlcigpIHx8IGNhbGxlckZyYW1lLT5zdGFjaygpLT5jb250YWluc0FkZHJlc3ModGhpcykpOwog
CiAgICAgICAgICAgICBzZXRDb2RlQmxvY2soY29kZUJsb2NrKTsKICAgICAgICAgICAgIHNldFNj
b3BlKHNjb3BlKTsKQEAgLTI0NSwzMyArMjQ0LDMxIEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAg
ICAgICBzdGF0aWMgQ2FsbEZyYW1lKiBub0NhbGxlcigpIHsgcmV0dXJuIDA7IH0KIAotICAgICAg
ICBib29sIGlzVk1FbnRyeVNlbnRpbmVsKCkgY29uc3QKKyAgICAgICAgYm9vbCBpc1RvcEphdmFT
Y3JpcHRFbnRyeUZyYW1lKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEh
dGhpcyAmJiBjb2RlQmxvY2soKSA9PSB2bUVudHJ5U2VudGluZWxDb2RlQmxvY2soKTsKKyAgICAg
ICAgICAgIHJldHVybiBjYWxsZXJGcmFtZSgpID09IHZtKCkuY2FsbFRvSmF2YVNjcmlwdEZyYW1l
UG9pbnRlcjsKICAgICAgICAgfQogCi0gICAgICAgIENhbGxGcmFtZSogdm1FbnRyeVNlbnRpbmVs
Q2FsbGVyRnJhbWUoKSBjb25zdAorICAgICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lVW53aW5k
KENhbGxGcmFtZSomIGN1cnJKU0VudHJ5RnJhbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFT
U0VSVChpc1ZNRW50cnlTZW50aW5lbCgpKTsKLSAgICAgICAgICAgIHJldHVybiB0aGlzW0pTU3Rh
Y2s6OlNjb3BlQ2hhaW5dLmNhbGxGcmFtZSgpOworICAgICAgICAgICAgaWYgKGN1cnJKU0VudHJ5
RnJhbWUgPT0gY2FsbGVyRnJhbWUoKSkgeworICAgICAgICAgICAgICAgIENhbGxUb0phdmFTY3Jp
cHRGcmFtZSogY2FsbFRvSmF2YVNjcmlwdEZyYW1lID0gY2FsbFRvSmF2YVNjcmlwdEZyYW1lRnJv
bUZyYW1lUG9pbnRlcihjdXJySlNFbnRyeUZyYW1lKTsKKyAgICAgICAgICAgICAgICBjdXJySlNF
bnRyeUZyYW1lID0gY2FsbFRvSmF2YVNjcmlwdEZyYW1lLT5wcmV2Q2FsbFRvSmF2YVNjcmlwdEZy
YW1lKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxUb0phdmFTY3JpcHRGcmFtZS0+dG9w
Q2FsbEZyYW1lKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gY2FsbGVyRnJh
bWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgaW5pdGlhbGl6ZVZNRW50cnlTZW50aW5l
bEZyYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lKQorICAgICAgICAvLyBUaGlzIG9ubHkgd29ya3Mg
Zm9yIHRoZSB0b3AgbW9zdCBjb250aWd1b3VzIHNldCBvZiBKUyBmcmFtZXMgaW5jbHVkaW5nIHRo
ZSBjYWxsZWUKKyAgICAgICAgLy8gZnJhbWUgb2YgdGhlIHRvcCBtb3N0IGNhbGxUb0phdmFTY3Jp
cHQvY2FsbFRvTmF0aXZlRnVuY3Rpb24uIEluIHRoZSBsYXR0ZXIgY2FzZSwKKyAgICAgICAgLy8g
aXQgcmV0dXJucyB0aGUgcHJpb3IgSlMgQ2FsbEZyYW1lLCBza2lwcGluZyBob3N0IGZyYW1lcywg
b3IgbnVsbHB0ciBpZiB0aGVyZSBpc24ndAorICAgICAgICAvLyBhIHByaW9yIEpTIGNhbGxlci4K
KyAgICAgICAgLy8gR2VuZXJhbCB1bndpbmRpbmcgbXVzdCB1c2UgU3RhY2tWaXNpdG9yLgorICAg
ICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lU2tpcHBpbmdUb3BNb3N0SmF2YVNjcmlwdEVudHJ5
RnJhbWUoKQogICAgICAgICB7Ci0gICAgICAgICAgICBzZXRDYWxsZXJGcmFtZShub0NhbGxlcigp
KTsKLSAgICAgICAgICAgIHNldFJldHVyblBDKDApOwotICAgICAgICAgICAgc2V0Q29kZUJsb2Nr
KHZtRW50cnlTZW50aW5lbENvZGVCbG9jaygpKTsKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PFJl
Z2lzdGVyKj4odGhpcylbSlNTdGFjazo6U2NvcGVDaGFpbl0gPSBjYWxsRnJhbWU7Ci0gICAgICAg
ICAgICBzZXRDYWxsZWUoMCk7Ci0gICAgICAgICAgICBzZXRBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcygwKTsKLSAgICAgICAgfQotCi0gICAgICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWVTa2lw
cGluZ1ZNRW50cnlTZW50aW5lbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIENhbGxGcmFtZSog
Y2FsbGVyID0gY2FsbGVyRnJhbWUoKTsKLSAgICAgICAgICAgIGlmIChjYWxsZXItPmlzVk1FbnRy
eVNlbnRpbmVsKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxlci0+dm1FbnRyeVNlbnRp
bmVsQ2FsbGVyRnJhbWUoKTsKLSAgICAgICAgICAgIHJldHVybiBjYWxsZXI7CisgICAgICAgICAg
ICBpZiAoaXNUb3BKYXZhU2NyaXB0RW50cnlGcmFtZSgpKQorICAgICAgICAgICAgICAgIHJldHVy
biB2bVByaW9yVG9wQ2FsbEZyYW1lKCk7CisgICAgICAgICAgICByZXR1cm4gY2FsbGVyRnJhbWUo
KTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgc2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMoaW50IGNvdW50KSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbSlNTdGFjazo6QXJn
dW1lbnRDb3VudF0ucGF5bG9hZCgpID0gY291bnQ7IH0KQEAgLTI5MSw3ICsyODgsNiBAQCBuYW1l
c3BhY2UgSlNDICB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIqIGRlc2Ny
aWJlRnJhbWUoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnRwdHJf
dCBzX1ZNRW50cnlTZW50aW5lbCA9IDE7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIEpTU3Rh
Y2sqIHN0YWNrKCk7CkBAIC0zMzAsMTEgKzMyNiwxNSBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAg
ICAgICAgICByZXR1cm4gdGhpc1thcmd1bWVudE9mZnNldChhcmdJbmRleCldLmpzVmFsdWUoKTsK
ICAgICAgICAgfQogCisgICAgICAgIENhbGxGcmFtZSogdm1QcmlvclRvcENhbGxGcmFtZSgpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIENhbGxUb0phdmFTY3JpcHRGcmFtZSogY2FsbFRv
SmF2YVNjcmlwdEZyYW1lID0gY2FsbFRvSmF2YVNjcmlwdEZyYW1lRnJvbUZyYW1lUG9pbnRlcih0
aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBjYWxsVG9KYXZhU2NyaXB0RnJhbWUtPnRvcENhbGxG
cmFtZSgpOworICAgICAgICB9CisKICAgICAgICAgQ2FsbGVyRnJhbWVBbmRQQyYgY2FsbGVyRnJh
bWVBbmRQQygpIHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PENhbGxlckZyYW1lQW5kUEMqPih0
aGlzKTsgfQogICAgICAgICBjb25zdCBDYWxsZXJGcmFtZUFuZFBDJiBjYWxsZXJGcmFtZUFuZFBD
KCkgY29uc3QgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQ2FsbGVyRnJhbWVBbmRQ
Qyo+KHRoaXMpOyB9CiAKLSAgICAgICAgc3RhdGljIENvZGVCbG9jayogdm1FbnRyeVNlbnRpbmVs
Q29kZUJsb2NrKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDb2RlQmxvY2sqPihzX1ZNRW50
cnlTZW50aW5lbCk7IH0KLQogICAgICAgICBmcmllbmQgY2xhc3MgSlNTdGFjazsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIFZNSW5zcGVjdG9yOwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbFRvSmF2YVNjcmlwdEZyYW1lLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxUb0phdmFTY3JpcHRGcmFtZS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxU
b0phdmFTY3JpcHRGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENhbGxUb0ph
dmFTY3JpcHRGcmFtZV9oCisjZGVmaW5lIENhbGxUb0phdmFTY3JpcHRGcmFtZV9oCisKKyNpbmNs
dWRlICJTdGFja1Zpc2l0b3IuaCIKKworCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IENhbGxU
b0phdmFTY3JpcHRGcmFtZSB7CisgICAgLyoKKyAgICAgKiBUaGlzIGlzIHRoZSBsYXlvdXQgb2Yg
YSBjYWxsVG9KYXZhU2NyaXB0IGFsbG9jYXRlZCBmcmFtZS4gIEl0IGlzIGFsbG9jYXRlZCBvbiB0
aGUgc3RhY2sKKyAgICAgKiBhZnRlciBjYWxsZWUgc2F2ZSByZWdpc3RlcnMgd2hlcmUgbG9jYWwg
dmFyaWFibGVzIHdvdWxkIGdvLgorICAgICAqLworICAgIFZNKiBtX3ZtOworICAgIENhbGxGcmFt
ZSogbV90b3BDYWxsRnJhbWU7CisgICAgQ2FsbEZyYW1lKiBtX3ByZXZDYWxsVG9KYXZhU2NyaXB0
RnJhbWU7CisgICAgCisgICAgVk0qIHZtKCkgeyByZXR1cm4gbV92bTsgfQorICAgIHZvaWQgc2V0
Vk0oVk0qIHZtKSB7IG1fdm0gPSB2bTsgfQorICAgIAorICAgIENhbGxGcmFtZSogdG9wQ2FsbEZy
YW1lKCkgeyByZXR1cm4gbV90b3BDYWxsRnJhbWU7IH0KKyAgICB2b2lkIHNldFRvcENhbGxGcmFt
ZShDYWxsRnJhbWUqIHRvcENhbGxGcmFtZSkgeyBtX3RvcENhbGxGcmFtZSA9IHRvcENhbGxGcmFt
ZTsgfQorICAgIAorICAgIENhbGxGcmFtZSogcHJldkNhbGxUb0phdmFTY3JpcHRGcmFtZSgpIHsg
cmV0dXJuIG1fcHJldkNhbGxUb0phdmFTY3JpcHRGcmFtZTsgfQorICAgIHZvaWQgc2V0UHJldkNh
bGxUb0phdmFTY3JpcHRGcmFtZShDYWxsRnJhbWUqIHByZXZDYWxsVG9KYXZhU2NyaXB0RnJhbWUp
CisgICAgeworICAgICAgICBtX3ByZXZDYWxsVG9KYXZhU2NyaXB0RnJhbWUgPSBwcmV2Q2FsbFRv
SmF2YVNjcmlwdEZyYW1lOworICAgIH0KK307CisgICAgCitleHRlcm4gIkMiIENhbGxUb0phdmFT
Y3JpcHRGcmFtZSogY2FsbFRvSmF2YVNjcmlwdEZyYW1lRnJvbUZyYW1lUG9pbnRlcihjb25zdCBD
YWxsRnJhbWUqKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDYWxsVG9KYXZh
U2NyaXB0RnJhbWVfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxNzIxODgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NzksOCArNDc5LDcgQEAgc3RhdGljIGJvb2wgdW53aW5kQ2FsbEZyYW1lKFN0YWNrVmlzaXRvcgog
ICAgICAgICB9CiAgICAgfQogCi0gICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFt
ZS0+Y2FsbGVyRnJhbWUoKTsKLSAgICByZXR1cm4gIWNhbGxlckZyYW1lLT5pc1ZNRW50cnlTZW50
aW5lbCgpOworICAgIHJldHVybiAhKHZpc2l0b3ItPmNhbGxlckZyYW1lSXNFbnRyeUZyYW1lKCkp
OwogfQogCiBzdGF0aWMgU3RhY2tGcmFtZUNvZGVUeXBlIGdldFN0YWNrRnJhbWVDb2RlVHlwZShT
dGFja1Zpc2l0b3ImIHZpc2l0b3IpCkBAIC01OTcsNyArNTk2LDYgQEAgcHJpdmF0ZToKIHZvaWQg
SW50ZXJwcmV0ZXI6OmdldFN0YWNrVHJhY2UoVmVjdG9yPFN0YWNrRnJhbWU+JiByZXN1bHRzLCBz
aXplX3QgbWF4U3RhY2tTaXplKQogewogICAgIFZNJiB2bSA9IG1fdm07Ci0gICAgQVNTRVJUKCF2
bS50b3BDYWxsRnJhbWUtPmlzVk1FbnRyeVNlbnRpbmVsKCkpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gdm0udG9wQ2FsbEZyYW1lOwogICAgIGlmICghY2FsbEZyYW1lKQogICAgICAgICBy
ZXR1cm47CkBAIC02ODMsMTUgKzY4MSw2IEBAIHByaXZhdGU6CiAKIE5FVkVSX0lOTElORSBIYW5k
bGVySW5mbyogSW50ZXJwcmV0ZXI6OnVud2luZChDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpTVmFs
dWUmIGV4Y2VwdGlvblZhbHVlKQogewotICAgIGlmIChjYWxsRnJhbWUtPmlzVk1FbnRyeVNlbnRp
bmVsKCkpIHsKLSAgICAgICAgLy8gVGhpcyBoYXBwZW5zIHdoZW4gd2UgdGhyb3cgc3RhY2sgb3Zl
cmZsb3cgaW4gYSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZAotICAgICAgICAvLyBkaXJlY3RseSBm
cm9tIGNhbGxUb0phdmFTY3JpcHQuIFN0YWNrIG92ZXJmbG93IHRocm93cyB0aGUgZXhjZXB0aW9u
IGluIHRoZQotICAgICAgICAvLyBjb250ZXh0IG9mIHRoZSBjYWxsZXIuIEluIHRoYXQgY2FzZSB0
aGUgY2FsbGVyIGlzIHRoZSBzZW50aW5lbCBmcmFtZS4gVGhlCi0gICAgICAgIC8vIHJpZ2h0IHRo
aW5nIHRvIGRvIGlzIHRvIHByZXRlbmQgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIHVuY2F1Z2h0IHNv
IHRoYXQgd2UKLSAgICAgICAgLy8gZ28gdG8gdGhlIHVuY2F1Z2h0IGV4Y2VwdGlvbiBoYW5kbGVy
LCB3aGljaCByZXR1cm5zIHRocm91Z2ggY2FsbFRvSmF2YVNjcmlwdC4KLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgfQotICAgIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5j
b2RlQmxvY2soKTsKICAgICBBU1NFUlQoY29kZUJsb2NrKTsKICAgICBib29sIGlzVGVybWluYXRp
b24gPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxNzIxODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDEzICsx
NTcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICA6IHZtKGN1cnJlbnRWTSkKICAg
ICAgICAgICAgICwgb2xkQ2FsbEZyYW1lKGN1cnJlbnRWTS50b3BDYWxsRnJhbWUpIAogICAgICAg
ICB7Ci0gICAgICAgICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+aXNWTUVudHJ5U2VudGluZWwoKSk7
CiAgICAgICAgICAgICBjdXJyZW50Vk0udG9wQ2FsbEZyYW1lID0gY2FsbEZyYW1lOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICB+VG9wQ2FsbEZyYW1lU2V0dGVyKCkgCiAgICAgICAgIHsK
LSAgICAgICAgICAgIEFTU0VSVCghb2xkQ2FsbEZyYW1lLT5pc1ZNRW50cnlTZW50aW5lbCgpKTsK
ICAgICAgICAgICAgIHZtLnRvcENhbGxGcmFtZSA9IG9sZENhbGxGcmFtZTsKICAgICAgICAgfQog
ICAgIHByaXZhdGU6CkBAIC0xNzcsMTggKzE3NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB7CiAgICAgICAgICAgICBBU1NFUlQodm0pOwogICAgICAgICAgICAgQVNTRVJUKGNhbGxGcmFt
ZSk7Ci0gICAgICAgICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+aXNWTUVudHJ5U2VudGluZWwoKSk7
CiAgICAgICAgICAgICB2bS0+dG9wQ2FsbEZyYW1lID0gY2FsbEZyYW1lOwogICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICBlbnVtIFZNRW50cnlTZW50aW5lbE9LVGFnIHsgVk1FbnRyeVNlbnRp
bmVsT0sgfTsKLSAgICAgICAgQUxXQVlTX0lOTElORSBOYXRpdmVDYWxsRnJhbWVUcmFjZXIoVk0q
IHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk1FbnRyeVNlbnRpbmVsT0tUYWcpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEFTU0VSVCh2bSk7Ci0gICAgICAgICAgICBBU1NFUlQoY2FsbEZyYW1l
KTsKLSAgICAgICAgICAgIGlmICghY2FsbEZyYW1lLT5pc1ZNRW50cnlTZW50aW5lbCgpKQotICAg
ICAgICAgICAgICAgIHZtLT50b3BDYWxsRnJhbWUgPSBjYWxsRnJhbWU7Ci0gICAgICAgIH0KICAg
ICB9OwogCiAgICAgY2xhc3MgSW50ZXJwcmV0ZXIgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAJKHJldmlzaW9uIDE3MjE4
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIFN0YWNr
VmlzaXRvcjo6U3RhY2tWaXNpdG9yKENhbGxGcmFtZSogc3RhcnRGcmFtZSkKIHsKICAgICBtX2Zy
YW1lLm1faW5kZXggPSAwOworICAgIGlmIChzdGFydEZyYW1lKQorICAgICAgICBtX2ZyYW1lLm1f
SlNDYWxsaW5nRnJhbWUgPSBzdGFydEZyYW1lLT52bSgpLmNhbGxUb0phdmFTY3JpcHRGcmFtZVBv
aW50ZXI7CisgICAgZWxzZQorICAgICAgICBtX2ZyYW1lLm1fSlNDYWxsaW5nRnJhbWUgPSAwOwor
ICAgIG1fZnJhbWUubV9jYWxsZXJGcmFtZUlzRW50cnlGcmFtZSA9IDA7CiAgICAgcmVhZEZyYW1l
KHN0YXJ0RnJhbWUpOwogfQogCkBAIC01Niw3ICs2MSw2IEBAIHZvaWQgU3RhY2tWaXNpdG9yOjpn
b3RvTmV4dEZyYW1lKCkKIAogdm9pZCBTdGFja1Zpc2l0b3I6OnJlYWRGcmFtZShDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKLSAgICBBU1NFUlQoIWNhbGxGcmFtZS0+aXNWTUVudHJ5U2VudGluZWwo
KSk7CiAgICAgaWYgKCFjYWxsRnJhbWUpIHsKICAgICAgICAgbV9mcmFtZS5zZXRUb0VuZCgpOwog
ICAgICAgICByZXR1cm47CkBAIC0xMDQsNyArMTA4LDkgQEAgdm9pZCBTdGFja1Zpc2l0b3I6OnJl
YWROb25JbmxpbmVkRnJhbWUoQwogewogICAgIG1fZnJhbWUubV9jYWxsRnJhbWUgPSBjYWxsRnJh
bWU7CiAgICAgbV9mcmFtZS5tX2FyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOwotICAgIG1fZnJhbWUubV9jYWxsZXJGcmFt
ZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWVTa2lwcGluZ1ZNRW50cnlTZW50aW5lbCgpOworICAg
IENhbGxGcmFtZSogY3VycmVudEpTQ2FsbGluZ0ZyYW1lID0gbV9mcmFtZS5tX0pTQ2FsbGluZ0Zy
YW1lOworICAgIG1fZnJhbWUubV9jYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWVV
bndpbmQobV9mcmFtZS5tX0pTQ2FsbGluZ0ZyYW1lKTsKKyAgICBtX2ZyYW1lLm1fY2FsbGVyRnJh
bWVJc0VudHJ5RnJhbWUgPSBjdXJyZW50SlNDYWxsaW5nRnJhbWUgIT0gbV9mcmFtZS5tX0pTQ2Fs
bGluZ0ZyYW1lOwogICAgIG1fZnJhbWUubV9jYWxsZWUgPSBjYWxsRnJhbWUtPmNhbGxlZSgpOwog
ICAgIG1fZnJhbWUubV9zY29wZSA9IGNhbGxGcmFtZS0+c2NvcGUoKTsKICAgICBtX2ZyYW1lLm1f
Y29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKQEAgLTEyNyw3ICsxMzMsNiBAQCBz
dGF0aWMgaW50IGlubGluZWRGcmFtZU9mZnNldChDb2RlT3JpZ2luCiB2b2lkIFN0YWNrVmlzaXRv
cjo6cmVhZElubGluZWRGcmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZU9yaWdpbiogY29k
ZU9yaWdpbikKIHsKICAgICBBU1NFUlQoY29kZU9yaWdpbik7Ci0gICAgQVNTRVJUKCFjYWxsRnJh
bWUtPmlzVk1FbnRyeVNlbnRpbmVsKCkpOwogCiAgICAgaW50IGZyYW1lT2Zmc2V0ID0gaW5saW5l
ZEZyYW1lT2Zmc2V0KGNvZGVPcmlnaW4pOwogICAgIGJvb2wgaXNJbmxpbmVkID0gISFmcmFtZU9m
ZnNldDsKQEAgLTM4MCw3ICszODUsNiBAQCB2b2lkIFN0YWNrVmlzaXRvcjo6RnJhbWU6OnByaW50
KGludCBpbmRlCiAKICAgICBwcmludGlmKGksICIgICBuYW1lICclcydcbiIsIGZ1bmN0aW9uTmFt
ZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgIHByaW50aWYoaSwgIiAgIHNvdXJjZVVSTCAnJXMnXG4i
LCBzb3VyY2VVUkwoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBwcmludGlmKGksICIgICBpc1ZNRW50
cnlTZW50aW5lbCAlZFxuIiwgY2FsbGVyRnJhbWUtPmlzVk1FbnRyeVNlbnRpbmVsKCkpOwogCiAj
aWYgRU5BQkxFKERGR19KSVQpCiAgICAgcHJpbnRpZihpLCAiICAgaXNJbmxpbmVkRnJhbWUgJWRc
biIsIGlzSW5saW5lZEZyYW1lKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1N0YWNrVmlzaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaAkocmV2aXNpb24gMTcyMTg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgICAgICBzaXplX3QgaW5kZXgoKSBjb25z
dCB7IHJldHVybiBtX2luZGV4OyB9CiAgICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcygpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7IH0K
KyAgICAgICAgYm9vbCBjYWxsZXJGcmFtZUlzRW50cnlGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FsbGVyRnJhbWVJc0VudHJ5RnJhbWU7IH0KICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVyRnJhbWU7IH0KICAgICAgICAgSlNPYmplY3QqIGNh
bGxlZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVlOyB9CiAgICAgICAgIEpTU2NvcGUqIHNjb3Bl
KCkgY29uc3QgeyByZXR1cm4gbV9zY29wZTsgfQpAQCAtOTQsMTEgKzk1LDEzIEBAIHB1YmxpYzoK
IAogICAgICAgICBzaXplX3QgbV9pbmRleDsKICAgICAgICAgc2l6ZV90IG1fYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXM7CisgICAgICAgIENhbGxGcmFtZSogbV9KU0NhbGxpbmdGcmFtZTsKICAg
ICAgICAgQ2FsbEZyYW1lKiBtX2NhbGxlckZyYW1lOwogICAgICAgICBKU09iamVjdCogbV9jYWxs
ZWU7CiAgICAgICAgIEpTU2NvcGUqIG1fc2NvcGU7CiAgICAgICAgIENvZGVCbG9jayogbV9jb2Rl
QmxvY2s7CiAgICAgICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgIGJvb2wg
bV9jYWxsZXJGcmFtZUlzRW50cnlGcmFtZTsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAg
SW5saW5lQ2FsbEZyYW1lKiBtX2lubGluZUNhbGxGcmFtZTsKICNlbmRpZgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1JbnNwZWN0b3IuY3BwCShyZXZp
c2lvbiAxNzIxODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1JbnNw
ZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFZN
SU5TUEVDVE9SKQogCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlN0YWNrVmlz
aXRvci5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKQEAgLTk5LDE0ICsxMDAsMzAgQEAgdm9pZCBWTUluc3BlY3Rvcjo6ZHVt
cEZyYW1lKENhbGxGcmFtZSogZgogICAgIHByaW50ZigiXG4iKTsKIH0KIAorY2xhc3MgQ291bnRG
cmFtZXNGdW5jdG9yIHsKK3B1YmxpYzoKKyAgICBDb3VudEZyYW1lc0Z1bmN0b3IoKQorICAgICAg
ICA6IG1fY291bnQoLTEpCisgICAgeyB9CisKKyAgICBTdGFja1Zpc2l0b3I6OlN0YXR1cyBvcGVy
YXRvcigpKFN0YWNrVmlzaXRvciYgdmlzaXRvcikKKyAgICB7CisgICAgICAgIG1fY291bnQrKzsK
KyAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CisgICAgfQorICAgIAorICAg
IGludCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KKyAgICAKK3ByaXZhdGU6Cisg
ICAgdW5zaWduZWQgbV9jb3VudDsKK307CisKIGludCBWTUluc3BlY3Rvcjo6Y291bnRGcmFtZXMo
Q2FsbEZyYW1lKiBmcmFtZSkKIHsKLSAgICBpbnQgY291bnQgPSAtMTsKLSAgICB3aGlsZSAoZnJh
bWUgJiYgIWZyYW1lLT5pc1ZNRW50cnlTZW50aW5lbCgpKSB7Ci0gICAgICAgIGNvdW50Kys7Ci0g
ICAgICAgIGZyYW1lID0gZnJhbWUtPmNhbGxlckZyYW1lKCk7Ci0gICAgfQotICAgIHJldHVybiBj
b3VudDsKKyAgICBDb3VudEZyYW1lc0Z1bmN0b3IgZnVuY3RvcigpOworICAgIFN0YWNrVmlzaXRv
cjo6dmlzaXQoZnJhbWUsIGZ1bmN0b3IpOworCisgICAgcmV0dXJuIGZ1bmN0b3IuY291bnQoKTsK
IH0KIAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAJKHJldmlzaW9uIDE3MjE4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdgogewogICAgIC8vIFdlIHBhc3MgaW4gb3VyIG93
biBjb2RlIGJsb2NrLCBiZWNhdXNlIHRoZSBjYWxsZnJhbWUgaGFzbid0IGJlZW4gcG9wdWxhdGVk
LgogICAgIFZNKiB2bSA9IGNvZGVCbG9jay0+dm0oKTsKLSAgICBDYWxsRnJhbWUqIGNhbGxlckZy
YW1lID0gZXhlYy0+Y2FsbGVyRnJhbWVTa2lwcGluZ1ZNRW50cnlTZW50aW5lbCgpOworICAgIENh
bGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZVNraXBwaW5nVG9wTW9zdEph
dmFTY3JpcHRFbnRyeUZyYW1lKCk7CiAgICAgaWYgKCFjYWxsZXJGcmFtZSkKICAgICAgICAgY2Fs
bGVyRnJhbWUgPSBleGVjOwogCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25UaHJvd1N0YWNrT3YKIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxs
QXJpdHlDaGVjayhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
Ci0gICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lU2tpcHBpbmdW
TUVudHJ5U2VudGluZWwoKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gZXhlYy0+Y2Fs
bGVyRnJhbWVTa2lwcGluZ1RvcE1vc3RKYXZhU2NyaXB0RW50cnlGcmFtZSgpOwogICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxlckZyYW1lKTsKIAogICAgIEpTU3RhY2sm
IHN0YWNrID0gdm0tPmludGVycHJldGVyLT5zdGFjaygpOwpAQCAtMTA2LDcgKzEwNiw3IEBAIGlu
dDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsQXJpdHkKIGludDMyX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gZXhl
Yy0+Y2FsbGVyRnJhbWVTa2lwcGluZ1ZNRW50cnlTZW50aW5lbCgpOworICAgIENhbGxGcmFtZSog
Y2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZVNraXBwaW5nVG9wTW9zdEphdmFTY3JpcHRF
bnRyeUZyYW1lKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbGVy
RnJhbWUpOwogCiAgICAgSlNTdGFjayYgc3RhY2sgPSB2bS0+aW50ZXJwcmV0ZXItPnN0YWNrKCk7
CkBAIC0xODIyLDcgKzE4MjIsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5pdEds
b2JhbENvCiAKIHZvaWQgSklUX09QRVJBVElPTiBsb29rdXBFeGNlcHRpb25IYW5kbGVyKFZNKiB2
bSwgRXhlY1N0YXRlKiBleGVjKQogewotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMsIE5hdGl2ZUNhbGxGcmFtZVRyYWNlcjo6Vk1FbnRyeVNlbnRpbmVsT0spOworICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCiAgICAgSlNWYWx1ZSBl
eGNlcHRpb25WYWx1ZSA9IHZtLT5leGNlcHRpb24oKTsKICAgICBBU1NFUlQoZXhjZXB0aW9uVmFs
dWUpOwpAQCAtMTgzNiw3ICsxODM2LDYgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZN
SGFuZGxlRXhjZQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCi0gICAgQVNTRVJUKCFleGVjLT5pc1ZNRW50cnlT
ZW50aW5lbCgpKTsKICAgICBnZW5lcmljVW53aW5kKHZtLCBleGVjLCB2bS0+ZXhjZXB0aW9uKCkp
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0
cmFjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMTcyMTg4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIkFycmF5
UHJvZmlsZS5oIgorI2luY2x1ZGUgIkNhbGxUb0phdmFTY3JpcHRGcmFtZS5oIgogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgogI2luY2x1ZGUgIkRl
YnVnZ2VyLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3Mu
aAkocmV2aXNpb24gMTcyMTg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
VGh1bmtzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAgc3RydWN0IFByb3RvQ2Fs
bEZyYW1lOwogZXh0ZXJuICJDIiB7CiAgICAgRW5jb2RlZEpTVmFsdWUgY2FsbFRvSmF2YVNjcmlw
dCh2b2lkKiwgVk0qLCBQcm90b0NhbGxGcmFtZSopOwogICAgIEVuY29kZWRKU1ZhbHVlIGNhbGxU
b05hdGl2ZUZ1bmN0aW9uKHZvaWQqLCBWTSosIFByb3RvQ2FsbEZyYW1lKik7CisgICAgdm9pZCBn
ZXRSZXR1cm5QQygpOwogfQogCiBuYW1lc3BhY2UgTExJbnQgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20JKHJldmlzaW9uIDE3MjE4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsMTAgKzE2MSw4
IEBAIG1hY3JvIGRvQ2FsbFRvSmF2YVNjcmlwdChtYWtlQ2FsbCkKICAgICAgICAgY29uc3Qgdm0g
PSB0MwogICAgICAgICBjb25zdCBwcm90b0NhbGxGcmFtZSA9IHQ1CiAKLSAgICAgICAgY29uc3Qg
cHJldmlvdXNDRlIgPSB0MAotICAgICAgICBjb25zdCBwcmV2aW91c1BDID0gdDEKLSAgICAgICAg
Y29uc3QgdGVtcDEgPSB0MCAjIFNhbWUgYXMgcHJldmlvdXNDRlIKLSAgICAgICAgY29uc3QgdGVt
cDIgPSB0MSAjIFNhbWUgYXMgcHJldmlvdXNQQworICAgICAgICBjb25zdCB0ZW1wMSA9IHQwCisg
ICAgICAgIGNvbnN0IHRlbXAyID0gdDEKICAgICAgICAgY29uc3QgdGVtcDMgPSB0MgogICAgICAg
ICBjb25zdCB0ZW1wNCA9IHQzICMgc2FtZSBhcyB2bQogICAgIGVsc2lmIEFSTSBvciBBUk12NyBv
ciBBUk12N19UUkFESVRJT05BTCBvciBDX0xPT1AKQEAgLTE3Miw5ICsxNzAsNyBAQCBtYWNybyBk
b0NhbGxUb0phdmFTY3JpcHQobWFrZUNhbGwpCiAgICAgICAgIGNvbnN0IHZtID0gYTEKICAgICAg
ICAgY29uc3QgcHJvdG9DYWxsRnJhbWUgPSBhMgogCi0gICAgICAgIGNvbnN0IHByZXZpb3VzQ0ZS
ID0gdDMKLSAgICAgICAgY29uc3QgcHJldmlvdXNQQyA9IGxyCi0gICAgICAgIGNvbnN0IHRlbXAx
ID0gdDMgIyBTYW1lIGFzIHByZXZpb3VzQ0ZSCisgICAgICAgIGNvbnN0IHRlbXAxID0gdDMKICAg
ICAgICAgY29uc3QgdGVtcDIgPSB0NAogICAgICAgICBjb25zdCB0ZW1wMyA9IHQ1CiAgICAgICAg
IGNvbnN0IHRlbXA0ID0gdDQgIyBTYW1lIGFzIHRlbXAyCkBAIC0xODQsOCArMTgwLDYgQEAgbWFj
cm8gZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VDYWxsKQogICAgICAgICBjb25zdCBwcm90b0NhbGxG
cmFtZSA9IGEyCiAgICAgICAgIGNvbnN0IHRvcE9mU3RhY2sgPSBhMwogCi0gICAgICAgIGNvbnN0
IHByZXZpb3VzQ0ZSID0gdDIKLSAgICAgICAgY29uc3QgcHJldmlvdXNQQyA9IGxyCiAgICAgICAg
IGNvbnN0IHRlbXAxID0gdDMKICAgICAgICAgY29uc3QgdGVtcDIgPSB0NQogICAgICAgICBjb25z
dCB0ZW1wMyA9IHQ0CkBAIC0xOTUsNzEgKzE4OSw1MyBAQCBtYWNybyBkb0NhbGxUb0phdmFTY3Jp
cHQobWFrZUNhbGwpCiAgICAgICAgIGNvbnN0IHZtID0gYTEKICAgICAgICAgY29uc3QgcHJvdG9D
YWxsRnJhbWUgPSBhMgogCi0gICAgICAgIGNvbnN0IHByZXZpb3VzQ0ZSID0gdDMKLSAgICAgICAg
Y29uc3QgcHJldmlvdXNQQyA9IGxyCi0gICAgICAgIGNvbnN0IHRlbXAxID0gdDMgIyBTYW1lIGFz
IHByZXZpb3VzQ0ZSCisgICAgICAgIGNvbnN0IHRlbXAxID0gdDMKICAgICAgICAgY29uc3QgdGVt
cDIgPSBhMwogICAgICAgICBjb25zdCB0ZW1wMyA9IHQ4CiAgICAgICAgIGNvbnN0IHRlbXA0ID0g
dDkKICAgICBlbmQKIAotICAgIGNhbGxUb0phdmFTY3JpcHRQcm9sb2d1ZSgpCisgICAgZnVuY3Rp
b25Qcm9sb2d1ZSgpCisgICAgcHVzaENhbGxlZVNhdmVzCiAKICAgICBpZiBYODYKLSAgICAgICAg
bG9hZHAgMzZbc3BdLCB2bQotICAgICAgICBsb2FkcCAzMltzcF0sIGVudHJ5Ci0gICAgZWxzaWYg
WDg2X1dJTgotICAgICAgICBsb2FkcCA0MFtzcCwgdGVtcDNdLCB2bQotICAgICAgICBsb2FkcCAz
NltzcCwgdGVtcDNdLCBlbnRyeQotICAgIGVsc2UKLSAgICAgICAgbW92ZSBjZnIsIHByZXZpb3Vz
Q0ZSCisgICAgICAgIGxvYWRwIDEyW2Nmcl0sIHZtCisgICAgICAgIGxvYWRwIDhbY2ZyXSwgZW50
cnkKICAgICBlbmQKIAotICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHRlbXAyLCAweGJh
ZDBkYzAxKQorICAgIENhbGxUb0phdmFTY3JpcHRGcmFtZUZyb21GcmFtZVBvaW50ZXIoY2ZyLCBz
cCkKIAotICAgICMgVGhlIHN0YWNrIHJlc2VydmVkIHpvbmUgZW5zdXJlcyB0aGF0IHdlIGhhdmUg
YWRlcXVhdGUgc3BhY2UgZm9yIHRoZQotICAgICMgVk1FbnRyeVNlbnRpbmVsRnJhbWUuIFByb2Nl
ZWQgd2l0aCBhbGxvY2F0aW5nIGFuZCBpbml0aWFsaXppbmcgdGhlCi0gICAgIyBzZW50aW5lbCBm
cmFtZS4KLSAgICBtb3ZlIHNwLCBjZnIKLSAgICBzdWJwIENhbGxGcmFtZUhlYWRlclNsb3RzICog
OCwgY2ZyCi0gICAgc3RvcmVwIDAsIEFyZ3VtZW50Q291bnRbY2ZyXQotICAgIHN0b3JlcCB2bSwg
Q2FsbGVlW2Nmcl0KKyAgICBzdG9yZXAgdm0sIENhbGxUb0phdmFTY3JpcHRGcmFtZTo6bV92bVtz
cF0KICAgICBsb2FkcCBWTTo6dG9wQ2FsbEZyYW1lW3ZtXSwgdGVtcDIKLSAgICBzdG9yZXAgdGVt
cDIsIFNjb3BlQ2hhaW5bY2ZyXQotICAgIHN0b3JlcCAxLCBDb2RlQmxvY2tbY2ZyXQotICAgIGlm
IFg4NgotICAgICAgICBsb2FkcCAyOFtzcF0sIHByZXZpb3VzUEMKLSAgICAgICAgbG9hZHAgMjRb
c3BdLCBwcmV2aW91c0NGUgotICAgIGVsc2lmIFg4Nl9XSU4KLSAgICAgICAgbG9hZHAgMzJbc3As
IHRlbXAzXSwgcHJldmlvdXNQQwotICAgICAgICBsb2FkcCAyOFtzcCwgdGVtcDNdLCBwcmV2aW91
c0NGUgorICAgIHN0b3JlcCB0ZW1wMiwgQ2FsbFRvSmF2YVNjcmlwdEZyYW1lOjptX3RvcENhbGxG
cmFtZVtzcF0KKyAgICBsb2FkcCBWTTo6Y2FsbFRvSmF2YVNjcmlwdEZyYW1lUG9pbnRlclt2bV0s
IHRlbXAyCisgICAgc3RvcmVwIHRlbXAyLCBDYWxsVG9KYXZhU2NyaXB0RnJhbWU6Om1fcHJldkNh
bGxUb0phdmFTY3JpcHRGcmFtZVtzcF0KKworICAgICMgQWxpZ24gc3RhY2sgcG9pbnRlcgorICAg
IGlmIFg4Nl9XSU4KKyAgICAgICAgYWRkcCBDYWxsRnJhbWVBbGlnblNsb3RzICogU2xvdFNpemUs
IHNwLCB0ZW1wMQorICAgICAgICBhbmRwIH5TdGFja0FsaWdubWVudE1hc2ssIHRlbXAxCisgICAg
ICAgIHN1YnAgdGVtcDEsIENhbGxGcmFtZUFsaWduU2xvdHMgKiBTbG90U2l6ZSwgc3AKKyAgICBl
bHNpZiBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwKKyAgICAgICAgYWRkcCBDYWxs
RnJhbWVBbGlnblNsb3RzICogU2xvdFNpemUsIHNwLCB0ZW1wMQorICAgICAgICBjbHJicCB0ZW1w
MSwgU3RhY2tBbGlnbm1lbnRNYXNrLCB0ZW1wMQorICAgICAgICBzdWJwIHRlbXAxLCBDYWxsRnJh
bWVBbGlnblNsb3RzICogU2xvdFNpemUsIHNwCiAgICAgZW5kCi0gICAgc3RvcmVwIHByZXZpb3Vz
UEMsIFJldHVyblBDW2Nmcl0KLSAgICBzdG9yZXAgcHJldmlvdXNDRlIsIENhbGxlckZyYW1lW2Nm
cl0KIAogICAgIGlmIFg4NgotICAgICAgICBsb2FkcCA0MFtzcF0sIHByb3RvQ2FsbEZyYW1lCi0g
ICAgZWxzaWYgWDg2X1dJTgotICAgICAgICBsb2FkcCA0NFtzcCwgdGVtcDNdLCBwcm90b0NhbGxG
cmFtZQorICAgICAgICBsb2FkcCAxNltjZnJdLCBwcm90b0NhbGxGcmFtZQogICAgIGVuZAogCiAg
ICAgbG9hZGkgUHJvdG9DYWxsRnJhbWU6OnBhZGRlZEFyZ0NvdW50W3Byb3RvQ2FsbEZyYW1lXSwg
dGVtcDIKICAgICBhZGRwIENhbGxGcmFtZUhlYWRlclNsb3RzLCB0ZW1wMiwgdGVtcDIKICAgICBs
c2hpZnRwIDMsIHRlbXAyCi0gICAgc3VicCBjZnIsIHRlbXAyLCB0ZW1wMQorICAgIHN1YnAgc3As
IHRlbXAyLCB0ZW1wMQogCiAgICAgIyBFbnN1cmUgdGhhdCB3ZSBoYXZlIGVub3VnaCBhZGRpdGlv
bmFsIHN0YWNrIGNhcGFjaXR5IGZvciB0aGUgaW5jb21pbmcgYXJncywKICAgICAjIGFuZCB0aGUg
ZnJhbWUgZm9yIHRoZSBKUyBjb2RlIHdlJ3JlIGV4ZWN1dGluZy4gV2UgbmVlZCB0byBkbyB0aGlz
IGNoZWNrCiAgICAgIyBiZWZvcmUgd2Ugc3RhcnQgY29weWluZyB0aGUgYXJncyBmcm9tIHRoZSBw
cm90b0NhbGxGcmFtZSBiZWxvdy4KICAgICBicGFlcSB0ZW1wMSwgVk06Om1fanNTdGFja0xpbWl0
W3ZtXSwgLnN0YWNrSGVpZ2h0T0sKIAotICAgIGlmIEFSTXY3Ci0gICAgICAgIHN1YnAgY2ZyLCA4
LCB0ZW1wMgotICAgICAgICBtb3ZlIHRlbXAyLCBzcAotICAgIGVsc2UKLSAgICAgICAgc3VicCBj
ZnIsIDgsIHNwCi0gICAgZW5kCi0KICAgICBpZiBDX0xPT1AKICAgICAgICAgbW92ZSBlbnRyeSwg
dGVtcDIKICAgICAgICAgbW92ZSB2bSwgdGVtcDMKQEAgLTI3NSw3ICsyNTEsMTkgQEAgbWFjcm8g
ZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VDYWxsKQogICAgIGVuZAogCiAgICAgY0NhbGwyKF9sbGlu
dF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvciwgdm0sIHByb3RvQ2FsbEZyYW1lKQotICAgIGNh
bGxUb0phdmFTY3JpcHRFcGlsb2d1ZSgpCisKKyAgICBDYWxsVG9KYXZhU2NyaXB0RnJhbWVGcm9t
RnJhbWVQb2ludGVyKGNmciwgc3ApCisKKyAgICBsb2FkcCBDYWxsVG9KYXZhU2NyaXB0RnJhbWU6
Om1fdm1bc3BdLCB0ZW1wMworICAgIGxvYWRwIENhbGxUb0phdmFTY3JpcHRGcmFtZTo6bV90b3BD
YWxsRnJhbWVbc3BdLCB0ZW1wNAorICAgIHN0b3JlcCB0ZW1wNCwgVk06OnRvcENhbGxGcmFtZVt0
ZW1wM10KKyAgICBsb2FkcCBDYWxsVG9KYXZhU2NyaXB0RnJhbWU6Om1fcHJldkNhbGxUb0phdmFT
Y3JpcHRGcmFtZVtzcF0sIHRlbXA0CisgICAgc3RvcmVwIHRlbXA0LCBWTTo6Y2FsbFRvSmF2YVNj
cmlwdEZyYW1lUG9pbnRlclt0ZW1wM10KKworICAgIHN1YnAgY2ZyLCBDYWxsZWVSZWdpc3RlclNh
dmVTaXplLCBzcAorCisgICAgcG9wQ2FsbGVlU2F2ZXMKKyAgICBmdW5jdGlvbkVwaWxvZ3VlKCkK
ICAgICByZXQKIAogLnN0YWNrSGVpZ2h0T0s6CkBAIC0zMTYsMTggKzMwNCwyMiBAQCBtYWNybyBk
b0NhbGxUb0phdmFTY3JpcHQobWFrZUNhbGwpCiAKIC5jb3B5QXJnc0RvbmU6CiAgICAgc3RvcmVw
IHNwLCBWTTo6dG9wQ2FsbEZyYW1lW3ZtXQorICAgIHN0b3JlcCBjZnIsIFZNOjpjYWxsVG9KYXZh
U2NyaXB0RnJhbWVQb2ludGVyW3ZtXQogCiAgICAgbWFrZUNhbGwoZW50cnksIHRlbXAxLCB0ZW1w
MikKIAotICAgIGJwZXEgQ29kZUJsb2NrW2Nmcl0sIDEsIC5jYWxsZWVGcmFtZVBvcHBlZAotICAg
IGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIGNmcgorICAgIENhbGxUb0phdmFTY3JpcHRGcmFtZUZy
b21GcmFtZVBvaW50ZXIoY2ZyLCBzcCkKIAotLmNhbGxlZUZyYW1lUG9wcGVkOgotICAgIGxvYWRw
IENhbGxlZVtjZnJdLCB0ZW1wMyAjIFZNCi0gICAgbG9hZHAgU2NvcGVDaGFpbltjZnJdLCB0ZW1w
NCAjIHByZXZpb3VzIHRvcENhbGxGcmFtZQorICAgIGxvYWRwIENhbGxUb0phdmFTY3JpcHRGcmFt
ZTo6bV92bVtzcF0sIHRlbXAzCisgICAgbG9hZHAgQ2FsbFRvSmF2YVNjcmlwdEZyYW1lOjptX3Rv
cENhbGxGcmFtZVtzcF0sIHRlbXA0CiAgICAgc3RvcmVwIHRlbXA0LCBWTTo6dG9wQ2FsbEZyYW1l
W3RlbXAzXQorICAgIGxvYWRwIENhbGxUb0phdmFTY3JpcHRGcmFtZTo6bV9wcmV2Q2FsbFRvSmF2
YVNjcmlwdEZyYW1lW3NwXSwgdGVtcDQKKyAgICBzdG9yZXAgdGVtcDQsIFZNOjpjYWxsVG9KYXZh
U2NyaXB0RnJhbWVQb2ludGVyW3RlbXAzXQorCisgICAgc3VicCBjZnIsIENhbGxlZVJlZ2lzdGVy
U2F2ZVNpemUsIHNwCiAKLSAgICBjYWxsVG9KYXZhU2NyaXB0RXBpbG9ndWUoKQorICAgIHBvcENh
bGxlZVNhdmVzCisgICAgZnVuY3Rpb25FcGlsb2d1ZSgpCiAgICAgcmV0CiBlbmQKIApAQCAtMzc4
LDE5ICszNzAsMjAgQEAgX2hhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uOgogICAgIGxvYWRwIE1hcmtl
ZEJsb2NrOjptX3dlYWtTZXQgKyBXZWFrU2V0OjptX3ZtW3QzXSwgdDMKICAgICBsb2FkcCBWTTo6
Y2FsbEZyYW1lRm9yVGhyb3dbdDNdLCBjZnIKIAotICAgICMgU28gZmFyLCB3ZSd2ZSB1bndvdW5k
IHRoZSBzdGFjayB0byB0aGUgZnJhbWUganVzdCBiZWxvdyB0aGUgc2VudGluZWwgZnJhbWUsIGV4
Y2VwdAotICAgICMgaW4gdGhlIGNhc2Ugb2Ygc3RhY2sgb3ZlcmZsb3cgaW4gdGhlIGZpcnN0IGZ1
bmN0aW9uIGNhbGxlZCBmcm9tIGNhbGxUb0phdmFTY3JpcHQuCi0gICAgIyBDaGVjayBpZiB3ZSBu
ZWVkIHRvIHBvcCB0byB0aGUgc2VudGluZWwgZnJhbWUgYW5kIGRvIHRoZSBuZWNlc3NhcnkgY2xl
YW4gdXAgZm9yCi0gICAgIyByZXR1cm5pbmcgdG8gdGhlIGNhbGxlciBDIGZyYW1lLgotICAgIGJw
ZXEgQ29kZUJsb2NrW2Nmcl0sIDEsIC5oYW5kbGVVbmNhdWdodEV4Y2VwdGlvbkFscmVhZHlJc1Nl
bnRpbmVsCiAgICAgbG9hZHAgQ2FsbGVyRnJhbWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIGNmcgot
LmhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uQWxyZWFkeUlzU2VudGluZWw6CiAKLSAgICBsb2FkcCBD
YWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQzICMgVk0KLSAgICBsb2FkcCBTY29wZUNoYWlu
ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0NSAjIHByZXZpb3VzIHRvcENhbGxGcmFtZQorICAgIENh
bGxUb0phdmFTY3JpcHRGcmFtZUZyb21GcmFtZVBvaW50ZXIoY2ZyLCBzcCkKKworICAgIGxvYWRw
IENhbGxUb0phdmFTY3JpcHRGcmFtZTo6bV92bVtzcF0sIHQzCisgICAgbG9hZHAgQ2FsbFRvSmF2
YVNjcmlwdEZyYW1lOjptX3RvcENhbGxGcmFtZVtzcF0sIHQ1CiAgICAgc3RvcmVwIHQ1LCBWTTo6
dG9wQ2FsbEZyYW1lW3QzXQorICAgIGxvYWRwIENhbGxUb0phdmFTY3JpcHRGcmFtZTo6bV9wcmV2
Q2FsbFRvSmF2YVNjcmlwdEZyYW1lW3NwXSwgdDUKKyAgICBzdG9yZXAgdDUsIFZNOjpjYWxsVG9K
YXZhU2NyaXB0RnJhbWVQb2ludGVyW3QzXQogCi0gICAgY2FsbFRvSmF2YVNjcmlwdEVwaWxvZ3Vl
KCkKKyAgICBzdWJwIGNmciwgQ2FsbGVlUmVnaXN0ZXJTYXZlU2l6ZSwgc3AKKworICAgIHBvcENh
bGxlZVNhdmVzCisgICAgZnVuY3Rpb25FcGlsb2d1ZSgpCiAgICAgcmV0CiAKIG1hY3JvIGRvUmV0
dXJuRnJvbUhvc3RGdW5jdGlvbihleHRyYVN0YWNrU3BhY2UpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2
aXNpb24gMTcyMTg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE3MSw0NyArMTcxLDI5IEBAIG1hY3Jv
IGRvQ2FsbFRvSmF2YVNjcmlwdChtYWtlQ2FsbCkKICAgICAgICAgY29uc3QgdGVtcDMgPSB0Ngog
ICAgIGVuZAogCi0gICAgY2FsbFRvSmF2YVNjcmlwdFByb2xvZ3VlKCkKKyAgICBmdW5jdGlvblBy
b2xvZ3VlKCkKKyAgICBwdXNoQ2FsbGVlU2F2ZXMKIAotICAgIGlmIFg4Nl82NAotICAgICAgICBs
b2FkcCA3Kjhbc3BdLCBwcmV2aW91c1BDCi0gICAgICAgIG1vdmUgNio4W3NwXSwgcHJldmlvdXND
RlIKLSAgICBlbHNpZiBYODZfNjRfV0lOCi0gICAgICAgICMgV2luNjQgcHVzaGVzIHR3byBtb3Jl
IHJlZ2lzdGVycwotICAgICAgICBsb2FkcCA5Kjhbc3BdLCBwcmV2aW91c1BDCi0gICAgICAgIG1v
dmUgOCo4W3NwXSwgcHJldmlvdXNDRlIKLSAgICBlbHNpZiBBUk02NAotICAgICAgICBtb3ZlIGNm
ciwgcHJldmlvdXNDRlIKLSAgICBlbmQKKyAgICBDYWxsVG9KYXZhU2NyaXB0RnJhbWVGcm9tRnJh
bWVQb2ludGVyKGNmciwgc3ApCiAKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0ZW1w
MiwgMHhiYWQwZGMwMSkKIAotICAgICMgVGhlIHN0YWNrIHJlc2VydmVkIHpvbmUgZW5zdXJlcyB0
aGF0IHdlIGhhdmUgYWRlcXVhdGUgc3BhY2UgZm9yIHRoZQotICAgICMgVk1FbnRyeVNlbnRpbmVs
RnJhbWUuIFByb2NlZWQgd2l0aCBhbGxvY2F0aW5nIGFuZCBpbml0aWFsaXppbmcgdGhlCi0gICAg
IyBzZW50aW5lbCBmcmFtZS4KLSAgICBtb3ZlIHNwLCBjZnIKLSAgICBzdWJwIENhbGxGcmFtZUhl
YWRlclNsb3RzICogOCwgY2ZyCi0gICAgc3RvcmVwIDAsIEFyZ3VtZW50Q291bnRbY2ZyXQotICAg
IHN0b3JlcCB2bSwgQ2FsbGVlW2Nmcl0KKyAgICBzdG9yZXAgdm0sIENhbGxUb0phdmFTY3JpcHRG
cmFtZTo6bV92bVtzcF0KICAgICBsb2FkcCBWTTo6dG9wQ2FsbEZyYW1lW3ZtXSwgdGVtcDIKLSAg
ICBzdG9yZXAgdGVtcDIsIFNjb3BlQ2hhaW5bY2ZyXQotICAgIHN0b3JlcCAxLCBDb2RlQmxvY2tb
Y2ZyXQotCi0gICAgc3RvcmVwIHByZXZpb3VzUEMsIFJldHVyblBDW2Nmcl0KLSAgICBzdG9yZXAg
cHJldmlvdXNDRlIsIENhbGxlckZyYW1lW2Nmcl0KKyAgICBzdG9yZXAgdGVtcDIsIENhbGxUb0ph
dmFTY3JpcHRGcmFtZTo6bV90b3BDYWxsRnJhbWVbc3BdCisgICAgbG9hZHAgVk06OmNhbGxUb0ph
dmFTY3JpcHRGcmFtZVBvaW50ZXJbdm1dLCB0ZW1wMgorICAgIHN0b3JlcCB0ZW1wMiwgQ2FsbFRv
SmF2YVNjcmlwdEZyYW1lOjptX3ByZXZDYWxsVG9KYXZhU2NyaXB0RnJhbWVbc3BdCiAKICAgICBs
b2FkaSBQcm90b0NhbGxGcmFtZTo6cGFkZGVkQXJnQ291bnRbcHJvdG9DYWxsRnJhbWVdLCB0ZW1w
MgogICAgIGFkZHAgQ2FsbEZyYW1lSGVhZGVyU2xvdHMsIHRlbXAyLCB0ZW1wMgogICAgIGxzaGlm
dHAgMywgdGVtcDIKLSAgICBzdWJwIGNmciwgdGVtcDIsIHRlbXAxCisgICAgc3VicCBzcCwgdGVt
cDIsIHRlbXAxCiAKICAgICAjIEVuc3VyZSB0aGF0IHdlIGhhdmUgZW5vdWdoIGFkZGl0aW9uYWwg
c3RhY2sgY2FwYWNpdHkgZm9yIHRoZSBpbmNvbWluZyBhcmdzLAogICAgICMgYW5kIHRoZSBmcmFt
ZSBmb3IgdGhlIEpTIGNvZGUgd2UncmUgZXhlY3V0aW5nLiBXZSBuZWVkIHRvIGRvIHRoaXMgY2hl
Y2sKICAgICAjIGJlZm9yZSB3ZSBzdGFydCBjb3B5aW5nIHRoZSBhcmdzIGZyb20gdGhlIHByb3Rv
Q2FsbEZyYW1lIGJlbG93LgogICAgIGJwYWVxIHRlbXAxLCBWTTo6bV9qc1N0YWNrTGltaXRbdm1d
LCAuc3RhY2tIZWlnaHRPSwogCi0gICAgbW92ZSBjZnIsIHNwCi0KICAgICBpZiBDX0xPT1AKICAg
ICAgICAgbW92ZSBlbnRyeSwgdGVtcDIKICAgICAgICAgbW92ZSB2bSwgdGVtcDMKQEAgLTIyNyw3
ICsyMDksMTkgQEAgbWFjcm8gZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VDYWxsKQogICAgIGVuZAog
CiAgICAgY0NhbGwyKF9sbGludF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvciwgdm0sIHByb3Rv
Q2FsbEZyYW1lKQotICAgIGNhbGxUb0phdmFTY3JpcHRFcGlsb2d1ZSgpCisKKyAgICBDYWxsVG9K
YXZhU2NyaXB0RnJhbWVGcm9tRnJhbWVQb2ludGVyKGNmciwgdGVtcDIpCisKKyAgICBsb2FkcCBD
YWxsVG9KYXZhU2NyaXB0RnJhbWU6Om1fdm1bdGVtcDJdLCB2bQorICAgIGxvYWRwIENhbGxUb0ph
dmFTY3JpcHRGcmFtZTo6bV90b3BDYWxsRnJhbWVbdGVtcDJdLCB0ZW1wMworICAgIHN0b3JlcCB0
ZW1wMywgVk06OnRvcENhbGxGcmFtZVt2bV0KKyAgICBsb2FkcCBDYWxsVG9KYXZhU2NyaXB0RnJh
bWU6Om1fcHJldkNhbGxUb0phdmFTY3JpcHRGcmFtZVt0ZW1wMl0sIHRlbXAzCisgICAgc3RvcmVw
IHRlbXAzLCBWTTo6Y2FsbFRvSmF2YVNjcmlwdEZyYW1lUG9pbnRlclt2bV0KKworICAgIHN1YnAg
Y2ZyLCBDYWxsZWVSZWdpc3RlclNhdmVTaXplLCBzcAorCisgICAgcG9wQ2FsbGVlU2F2ZXMKKyAg
ICBmdW5jdGlvbkVwaWxvZ3VlKCkKICAgICByZXQKIAogLnN0YWNrSGVpZ2h0T0s6CkBAIC0yNjks
NiArMjYzLDcgQEAgbWFjcm8gZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VDYWxsKQogICAgIGVsc2UK
ICAgICAgICAgc3RvcmVwIHNwLCBWTTo6dG9wQ2FsbEZyYW1lW3ZtXQogICAgIGVuZAorICAgIHN0
b3JlcCBjZnIsIFZNOjpjYWxsVG9KYXZhU2NyaXB0RnJhbWVQb2ludGVyW3ZtXQogCiAgICAgbW92
ZSAweGZmZmYwMDAwMDAwMDAwMDAsIGNzcjEKICAgICBhZGRwIDIsIGNzcjEsIGNzcjIKQEAgLTI3
OSwyMCArMjc0LDE4IEBAIG1hY3JvIGRvQ2FsbFRvSmF2YVNjcmlwdChtYWtlQ2FsbCkKIAogICAg
IGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHRlbXAzLCAweGJhZDBkYzAzKQogCi0gICAgYnBl
cSBDb2RlQmxvY2tbY2ZyXSwgMSwgLmNhbGxlZUZyYW1lUG9wcGVkCi0gICAgbG9hZHAgQ2FsbGVy
RnJhbWVbY2ZyXSwgY2ZyCisgICAgQ2FsbFRvSmF2YVNjcmlwdEZyYW1lRnJvbUZyYW1lUG9pbnRl
cihjZnIsIHRlbXAyKQogCi0uY2FsbGVlRnJhbWVQb3BwZWQ6Ci0gICAgbG9hZHAgQ2FsbGVlW2Nm
cl0sIHRlbXAyICMgVk0KLSAgICBsb2FkcCBTY29wZUNoYWluW2Nmcl0sIHRlbXAzICMgcHJldmlv
dXMgdG9wQ2FsbEZyYW1lCi0gICAgc3RvcmVwIHRlbXAzLCBWTTo6dG9wQ2FsbEZyYW1lW3RlbXAy
XQorICAgIGxvYWRwIENhbGxUb0phdmFTY3JpcHRGcmFtZTo6bV92bVt0ZW1wMl0sIHZtCisgICAg
bG9hZHAgQ2FsbFRvSmF2YVNjcmlwdEZyYW1lOjptX3RvcENhbGxGcmFtZVt0ZW1wMl0sIHRlbXAz
CisgICAgc3RvcmVwIHRlbXAzLCBWTTo6dG9wQ2FsbEZyYW1lW3ZtXQorICAgIGxvYWRwIENhbGxU
b0phdmFTY3JpcHRGcmFtZTo6bV9wcmV2Q2FsbFRvSmF2YVNjcmlwdEZyYW1lW3RlbXAyXSwgdGVt
cDMKKyAgICBzdG9yZXAgdGVtcDMsIFZNOjpjYWxsVG9KYXZhU2NyaXB0RnJhbWVQb2ludGVyW3Zt
XQogCi0gICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodGVtcDMsIDB4YmFkMGRjMDQpCisg
ICAgc3VicCBjZnIsIENhbGxlZVJlZ2lzdGVyU2F2ZVNpemUsIHNwCiAKLSAgICBpZiBYODZfNjQg
b3IgWDg2XzY0X1dJTgotICAgICAgICBwb3AgdDUKLSAgICBlbmQKLSAgICBjYWxsVG9KYXZhU2Ny
aXB0RXBpbG9ndWUoKQorICAgIHBvcENhbGxlZVNhdmVzCisgICAgZnVuY3Rpb25FcGlsb2d1ZSgp
CiAKICAgICByZXQKIGVuZApAQCAtMzQ2LDE5ICszMzksMTkgQEAgX2hhbmRsZVVuY2F1Z2h0RXhj
ZXB0aW9uOgogICAgIGxvYWRwIE1hcmtlZEJsb2NrOjptX3dlYWtTZXQgKyBXZWFrU2V0OjptX3Zt
W3QzXSwgdDMKICAgICBsb2FkcCBWTTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDNdLCBjZnIKIAotICAg
ICMgU28gZmFyLCB3ZSd2ZSB1bndvdW5kIHRoZSBzdGFjayB0byB0aGUgZnJhbWUganVzdCBiZWxv
dyB0aGUgc2VudGluZWwgZnJhbWUsIGV4Y2VwdAotICAgICMgaW4gdGhlIGNhc2Ugb2Ygc3RhY2sg
b3ZlcmZsb3cgaW4gdGhlIGZpcnN0IGZ1bmN0aW9uIGNhbGxlZCBmcm9tIGNhbGxUb0phdmFTY3Jp
cHQuCi0gICAgIyBDaGVjayBpZiB3ZSBuZWVkIHRvIHBvcCB0byB0aGUgc2VudGluZWwgZnJhbWUg
YW5kIGRvIHRoZSBuZWNlc3NhcnkgY2xlYW4gdXAgZm9yCi0gICAgIyByZXR1cm5pbmcgdG8gdGhl
IGNhbGxlciBDIGZyYW1lLgotICAgIGJwZXEgQ29kZUJsb2NrW2Nmcl0sIDEsIC5oYW5kbGVVbmNh
dWdodEV4Y2VwdGlvbkFscmVhZHlJc1NlbnRpbmVsCiAgICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2Zy
XSwgY2ZyCi0uaGFuZGxlVW5jYXVnaHRFeGNlcHRpb25BbHJlYWR5SXNTZW50aW5lbDoKKyAgICBD
YWxsVG9KYXZhU2NyaXB0RnJhbWVGcm9tRnJhbWVQb2ludGVyKGNmciwgdDIpCiAKLSAgICBsb2Fk
cCBDYWxsZWVbY2ZyXSwgdDMgIyBWTQotICAgIGxvYWRwIFNjb3BlQ2hhaW5bY2ZyXSwgdDUgIyBw
cmV2aW91cyB0b3BDYWxsRnJhbWUKKyAgICBsb2FkcCBDYWxsVG9KYXZhU2NyaXB0RnJhbWU6Om1f
dm1bdDJdLCB0MworICAgIGxvYWRwIENhbGxUb0phdmFTY3JpcHRGcmFtZTo6bV90b3BDYWxsRnJh
bWVbdDJdLCB0NQogICAgIHN0b3JlcCB0NSwgVk06OnRvcENhbGxGcmFtZVt0M10KKyAgICBsb2Fk
cCBDYWxsVG9KYXZhU2NyaXB0RnJhbWU6Om1fcHJldkNhbGxUb0phdmFTY3JpcHRGcmFtZVt0Ml0s
IHQ1CisgICAgc3RvcmVwIHQ1LCBWTTo6Y2FsbFRvSmF2YVNjcmlwdEZyYW1lUG9pbnRlclt0M10K
IAotICAgIGNhbGxUb0phdmFTY3JpcHRFcGlsb2d1ZSgpCisgICAgc3VicCBjZnIsIENhbGxlZVJl
Z2lzdGVyU2F2ZVNpemUsIHNwCisKKyAgICBwb3BDYWxsZWVTYXZlcworICAgIGZ1bmN0aW9uRXBp
bG9ndWUoKQogICAgIHJldAogCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDE3MjE4OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsNiArNDIsOSBAQCBjb25zdCBDYWxsRnJhbWVBbGlnblNsb3RzID0gMQog
ZW5kCiBjb25zdCBTbG90U2l6ZSA9IDgKIAorY29uc3QgU3RhY2tBbGlnbm1lbnQgPSAxNgorY29u
c3QgU3RhY2tBbGlnbm1lbnRNYXNrID0gU3RhY2tBbGlnbm1lbnQgLSAxCisKIGNvbnN0IENhbGxl
ckZyYW1lQW5kUENTaXplID0gMiAqIFB0clNpemUKIAogY29uc3QgQ2FsbGVyRnJhbWUgPSAwCkBA
IC01Myw2ICs1NiwyNCBAQCBjb25zdCBBcmd1bWVudENvdW50ID0gQ2FsbGVlICsgU2xvdFNpemUK
IGNvbnN0IFRoaXNBcmd1bWVudE9mZnNldCA9IEFyZ3VtZW50Q291bnQgKyBTbG90U2l6ZQogY29u
c3QgQ2FsbEZyYW1lSGVhZGVyU2l6ZSA9IFRoaXNBcmd1bWVudE9mZnNldAogCitpZiBDX0xPT1AK
KyAgICBjb25zdCBDYWxsZWVTYXZlUmVnaXN0ZXJDb3VudCA9IDAKK2Vsc2lmIFg4NiBvciBYODZf
V0lOCisgICAgY29uc3QgQ2FsbGVlU2F2ZVJlZ2lzdGVyQ291bnQgPSAzCitlbHNpZiBYODZfNjQg
b3IgU0g0CisgICAgY29uc3QgQ2FsbGVlU2F2ZVJlZ2lzdGVyQ291bnQgPSA1CitlbHNpZiBBUk0g
b3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwKKyAgICBjb25zdCBDYWxsZWVTYXZlUmVnaXN0
ZXJDb3VudCA9IDcKK2Vsc2lmIEFSTTY0IG9yIE1JUFMKKyAgICBjb25zdCBDYWxsZWVTYXZlUmVn
aXN0ZXJDb3VudCA9IDEwCitlbmQKKworY29uc3QgQ2FsbGVlUmVnaXN0ZXJTYXZlU2l6ZSA9IENh
bGxlZVNhdmVSZWdpc3RlckNvdW50ICogUHRyU2l6ZQorCisjIENhbGxUb0phdmFTY3JpcHRUb3Rh
bEZyYW1lU2l6ZSBpbmNsdWRlcyB0aGUgc3BhY2UgZm9yIHN0cnVjdCBDYWxsVG9KYXZhU2NyaXB0
RnJhbWUgYW5kIHRoZQorIyBjYWxsZWUgc2F2ZSByZWdpc3RlcnMgcm91bmRlZCB1cCB0byBrZWVw
IHRoZSBzdGFjayBhbGlnbmVkCitjb25zdCBDYWxsVG9KYXZhU2NyaXB0VG90YWxGcmFtZVNpemUg
PSAoQ2FsbGVlUmVnaXN0ZXJTYXZlU2l6ZSArIHNpemVvZiBDYWxsVG9KYXZhU2NyaXB0RnJhbWUg
KyBTdGFja0FsaWdubWVudCAtIDEpICYgflN0YWNrQWxpZ25tZW50TWFzaworCiAjIFNvbWUgdmFs
dWUgcmVwcmVzZW50YXRpb24gY29uc3RhbnRzLgogaWYgSlNWQUxVRTY0CiBjb25zdCBUYWdCaXRU
eXBlT3RoZXIgPSAweDIKQEAgLTIzNSw5ICsyNTYsOSBAQCBtYWNybyBjaGVja1N0YWNrUG9pbnRl
ckFsaWdubWVudCh0ZW1wUmVnCiAgICAgICAgIGlmIEFSTSBvciBBUk12NyBvciBBUk12N19UUkFE
SVRJT05BTAogICAgICAgICAgICAgIyBBUk0gY2FuJ3QgZG8gbG9naWNhbCBvcHMgd2l0aCB0aGUg
c3AgYXMgYSBzb3VyY2UKICAgICAgICAgICAgIG1vdmUgc3AsIHRlbXBSZWcKLSAgICAgICAgICAg
IGFuZHAgMHhmLCB0ZW1wUmVnCisgICAgICAgICAgICBhbmRwIFN0YWNrQWxpZ25tZW50TWFzaywg
dGVtcFJlZwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhbmRwIHNwLCAweGYsIHRlbXBSZWcK
KyAgICAgICAgICAgIGFuZHAgc3AsIFN0YWNrQWxpZ25tZW50TWFzaywgdGVtcFJlZwogICAgICAg
ICBlbmQKICAgICAgICAgYnRweiB0ZW1wUmVnLCAuc3RhY2tQb2ludGVyT2theQogICAgICAgICBt
b3ZlIGxvY2F0aW9uLCB0ZW1wUmVnCkBAIC0zMTcsNzMgKzMzOCw4IEBAIG1hY3JvIGZ1bmN0aW9u
RXBpbG9ndWUoKQogICAgIGVuZAogZW5kCiAKLW1hY3JvIGNhbGxUb0phdmFTY3JpcHRQcm9sb2d1
ZSgpCi0gICAgaWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4KLSAgICAgICAgcHVzaCBjZnIKLSAgICAg
ICAgcHVzaCB0MAotICAgIGVsc2lmIFg4NiBvciBYODZfV0lOCi0gICAgICAgIHB1c2ggY2ZyCi0g
ICAgZWxzaWYgQVJNNjQKLSAgICAgICAgcHVzaExSQW5kRlAKLSAgICBlbHNpZiBDX0xPT1Agb3Ig
QVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIE1JUFMgb3IgU0g0Ci0gICAgICAg
IHB1c2ggbHIKLSAgICAgICAgcHVzaCBjZnIKLSAgICBlbmQKLSAgICBwdXNoQ2FsbGVlU2F2ZXMK
LSAgICBpZiBYODYKLSAgICAgICAgc3VicCAxMiwgc3AKLSAgICBlbHNpZiBYODZfV0lOCi0gICAg
ICAgIHN1YnAgMTYsIHNwCi0gICAgICAgIG1vdmUgc3AsIHQ0Ci0gICAgICAgIG1vdmUgdDQsIHQw
Ci0gICAgICAgIG1vdmUgdDQsIHQyCi0gICAgICAgIGFuZHAgMHhmLCB0MgotICAgICAgICBhbmRw
IDB4ZmZmZmZmZjAsIHQwCi0gICAgICAgIG1vdmUgdDAsIHNwCi0gICAgICAgIHN0b3JlcCB0NCwg
W3NwXQotICAgIGVsc2lmIEFSTSBvciBBUk12NyBvciBBUk12N19UUkFESVRJT05BTAotICAgICAg
ICBzdWJwIDQsIHNwCi0gICAgICAgIG1vdmUgc3AsIHQ0Ci0gICAgICAgIGNscmJwIHQ0LCAweGYs
IHQ1Ci0gICAgICAgIG1vdmUgdDUsIHNwCi0gICAgICAgIHN0b3JlcCB0NCwgW3NwXQotICAgIGVu
ZAotZW5kCi0KLW1hY3JvIGNhbGxUb0phdmFTY3JpcHRFcGlsb2d1ZSgpCi0gICAgaWYgQVJNdjcK
LSAgICAgICAgYWRkcCBDYWxsRnJhbWVIZWFkZXJTbG90cyAqIDgsIGNmciwgdDQKLSAgICAgICAg
bW92ZSB0NCwgc3AKLSAgICBlbHNlCi0gICAgICAgIGFkZHAgQ2FsbEZyYW1lSGVhZGVyU2xvdHMg
KiA4LCBjZnIsIHNwCi0gICAgZW5kCi0KLSAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIK
LQotICAgIGlmIFg4NgotICAgICAgICBhZGRwIDEyLCBzcAotICAgIGVsc2lmIFg4Nl9XSU4KLSAg
ICAgICAgcG9wIHQ0Ci0gICAgICAgIG1vdmUgdDQsIHNwCi0gICAgICAgIGFkZHAgMTYsIHNwCi0g
ICAgZWxzaWYgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMCi0gICAgICAgIHBvcCB0
NAotICAgICAgICBtb3ZlIHQ0LCBzcAotICAgICAgICBhZGRwIDQsIHNwCi0gICAgZW5kCi0KLSAg
ICBwb3BDYWxsZWVTYXZlcwotICAgIGlmIFg4Nl82NCBvciBYODZfNjRfV0lOCi0gICAgICAgIHBv
cCB0MgotICAgICAgICBwb3AgY2ZyCi0gICAgZWxzaWYgWDg2IG9yIFg4Nl9XSU4KLSAgICAgICAg
cG9wIGNmcgotICAgIGVsc2lmIEFSTTY0Ci0gICAgICAgIHBvcExSQW5kRlAKLSAgICBlbHNpZiBD
X0xPT1Agb3IgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIE1JUFMgb3IgU0g0
Ci0gICAgICAgIHBvcCBjZnIKLSAgICAgICAgcG9wIGxyCi0gICAgZW5kCittYWNybyBDYWxsVG9K
YXZhU2NyaXB0RnJhbWVGcm9tRnJhbWVQb2ludGVyKGZyYW1lUG9pbnRlciwgcmVzdWx0UmVnKQor
ICAgIHN1YnAgZnJhbWVQb2ludGVyLCBDYWxsVG9KYXZhU2NyaXB0VG90YWxGcmFtZVNpemUsIHJl
c3VsdFJlZwogZW5kCiAKIG1hY3JvIG1vdmVTdGFja1BvaW50ZXJGb3JDb2RlQmxvY2soY29kZUJs
b2NrLCBzY3JhdGNoKQpAQCAtNjI4LDggKzU4NCw4IEBAIG1hY3JvIGRvUmV0dXJuKCkKIGVuZAog
CiAjIHN0dWIgdG8gY2FsbCBpbnRvIEphdmFTY3JpcHQgb3IgTmF0aXZlIGZ1bmN0aW9ucwotIyBF
bmNvZGVkSlNWYWx1ZSBjYWxsVG9KYXZhU2NyaXB0KHZvaWQqIGNvZGUsIEV4ZWNTdGF0ZSoqIHZt
VG9wQ2FsbEZyYW1lLCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFtZSkKLSMgRW5jb2RlZEpTVmFs
dWUgY2FsbFRvTmF0aXZlRnVuY3Rpb24odm9pZCogY29kZSwgRXhlY1N0YXRlKiogdm1Ub3BDYWxs
RnJhbWUsIFByb3RvQ2FsbEZyYW1lKiBwcm90b0ZyYW1lKQorIyBFbmNvZGVkSlNWYWx1ZSBjYWxs
VG9KYXZhU2NyaXB0KHZvaWQqIGNvZGUsIFZNKiB2bSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvRnJh
bWUpCisjIEVuY29kZWRKU1ZhbHVlIGNhbGxUb05hdGl2ZUZ1bmN0aW9uKHZvaWQqIGNvZGUsIFZN
KiB2bSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvRnJhbWUpCiAKIGlmIENfTE9PUAogX2xsaW50X2Nh
bGxfdG9famF2YXNjcmlwdDoKQEAgLTY4OSw2ICs2NDUsMjggQEAgX3Nhbml0aXplU3RhY2tGb3JW
TUltcGw6CiAgICAgbW92ZSBzcCwgYWRkcmVzcwogICAgIHN0b3JlcCBhZGRyZXNzLCBWTTo6bV9s
YXN0U3RhY2tUb3Bbdm1dCiAgICAgcmV0CisKKworIyBDYWxsVG9KYXZhU2NyaXB0RnJhbWUqIGNh
bGxUb0phdmFTY3JpcHRGcmFtZUZyb21GcmFtZVBvaW50ZXIoY29uc3QgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCitnbG9iYWwgX2NhbGxUb0phdmFTY3JpcHRGcmFtZUZyb21GcmFtZVBvaW50ZXIKK19j
YWxsVG9KYXZhU2NyaXB0RnJhbWVGcm9tRnJhbWVQb2ludGVyOgorICAgIGlmIFg4Nl82NAorICAg
ICAgICBjb25zdCBjYWxsRnJhbWUgPSB0NAorICAgICAgICBjb25zdCByZXN1bHQgPSB0MAorICAg
IGVsc2lmIFg4NiBvciBYODZfV0lOCisgICAgICAgIGNvbnN0IGNhbGxGcmFtZSA9IHQyCisgICAg
ICAgIGNvbnN0IHJlc3VsdCA9IHQwCisgICAgZWxzZQorICAgICAgICBjb25zdCBjYWxsRnJhbWUg
PSBhMAorICAgICAgICBjb25zdCByZXN1bHQgPSB0MAorICAgIGVuZAorCisgICAgaWYgWDg2IG9y
IFg4Nl9XSU4KKyAgICAgICAgbG9hZHAgNFtzcF0sIGNhbGxGcmFtZQorICAgIGVuZAorCisgICAg
Q2FsbFRvSmF2YVNjcmlwdEZyYW1lRnJvbUZyYW1lUG9pbnRlcihjYWxsRnJhbWUsIHJlc3VsdCkK
KyAgICByZXQKIGVuZAogCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJ
KHJldmlzaW9uIDE3MjE4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksNyBAQAogI2luY2x1ZGUgIlJlZ0V4cE9iamVj
dC5oIgogI2luY2x1ZGUgIlNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
U291cmNlUHJvdmlkZXJDYWNoZS5oIgorI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgogI2luY2x1
ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKQEAgLTE0OCw2ICsxNDksNyBAQCBWTTo6Vk0o
Vk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBoZWFwKHRoaXMsIGhlYXBU
eXBlKQogICAgICwgdm1UeXBlKHZtVHlwZSkKICAgICAsIGNsaWVudERhdGEoMCkKKyAgICAsIGNh
bGxUb0phdmFTY3JpcHRGcmFtZVBvaW50ZXIoMCkKICAgICAsIHRvcENhbGxGcmFtZShDYWxsRnJh
bWU6Om5vQ2FsbGVyKCkpCiAgICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlKHZtVHlwZSA9PSBEZWZh
dWx0ID8gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgOiBuZXcgQXRvbWljU3Ry
aW5nVGFibGUpCiAgICAgLCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIpCkBAIC01OTMsNyArNTk1LDQz
IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJjZVRvRXJyb3IoQ2FsbEZyYW0KICAgICAKICAgICBl
eGNlcHRpb24tPnB1dERpcmVjdCgqdm0sIHZtLT5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlLCBqc1N0
cmluZyh2bSwgbWVzc2FnZSkpOwogfQorCitjbGFzcyBGaW5kRmlyc3RDYWxsZXJGcmFtZVdpdGhD
b2RlYmxvY2tGdW5jdG9yIHsKK3B1YmxpYzoKKyAgICBGaW5kRmlyc3RDYWxsZXJGcmFtZVdpdGhD
b2RlYmxvY2tGdW5jdG9yKENhbGxGcmFtZSogc3RhcnRDYWxsRnJhbWUpCisgICAgICAgIDogbV9z
dGFydENhbGxGcmFtZShzdGFydENhbGxGcmFtZSkKKyAgICAgICAgLCBtX2ZvdW5kQ2FsbEZyYW1l
KG51bGxwdHIpCisgICAgICAgICwgbV9mb3VuZFN0YXJ0Q2FsbEZyYW1lKGZhbHNlKQorICAgICAg
ICAsIG1faW5kZXgoMCkKKyAgICB7IH0KKyAgICAKKyAgICBTdGFja1Zpc2l0b3I6OlN0YXR1cyBv
cGVyYXRvcigpKFN0YWNrVmlzaXRvciYgdmlzaXRvcikKKyAgICB7CisgICAgICAgIGlmICghbV9m
b3VuZFN0YXJ0Q2FsbEZyYW1lICYmICh2aXNpdG9yLT5jYWxsRnJhbWUoKSA9PSBtX3N0YXJ0Q2Fs
bEZyYW1lKSkKKyAgICAgICAgICAgIG1fZm91bmRTdGFydENhbGxGcmFtZSA9IHRydWU7CisgICAg
ICAgIAorICAgICAgICBpZiAobV9mb3VuZFN0YXJ0Q2FsbEZyYW1lKSB7CisgICAgICAgICAgICBp
ZiAodmlzaXRvci0+Y2FsbEZyYW1lKCktPmNvZGVCbG9jaygpKSB7CisgICAgICAgICAgICAgICAg
bV9mb3VuZENhbGxGcmFtZSA9IHZpc2l0b3ItPmNhbGxGcmFtZSgpOworICAgICAgICAgICAgICAg
IHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBt
X2luZGV4Kys7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250
aW51ZTsKKyAgICB9CiAgICAgCisgICAgQ2FsbEZyYW1lKiBmb3VuZENhbGxGcmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZm91bmRDYWxsRnJhbWU7IH0KKyAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgQ2FsbEZyYW1lKiBtX3N0
YXJ0Q2FsbEZyYW1lOworICAgIENhbGxGcmFtZSogbV9mb3VuZENhbGxGcmFtZTsKKyAgICBib29s
IG1fZm91bmRTdGFydENhbGxGcmFtZTsKKyAgICB1bnNpZ25lZCBtX2luZGV4OworfTsKKyAgICAK
KwogSlNWYWx1ZSBWTTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGVy
cm9yKQogewogICAgIGlmIChPcHRpb25zOjpicmVha09uVGhyb3coKSkgewpAQCAtNjMxLDEyICs2
NjksMTEgQEAgSlNWYWx1ZSBWTTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleAogICAgICAg
ICAgICAgZXhjZXB0aW9uLT5wdXREaXJlY3QoKnRoaXMsIElkZW50aWZpZXIodGhpcywgInNvdXJj
ZVVSTCIpLCBqc1N0cmluZyh0aGlzLCBzdGFja0ZyYW1lLnNvdXJjZVVSTCksIFJlYWRPbmx5IHwg
RG9udERlbGV0ZSk7CiAgICAgfQogICAgIGlmIChleGNlcHRpb24tPmlzRXJyb3JJbnN0YW5jZSgp
ICYmIHN0YXRpY19jYXN0PEVycm9ySW5zdGFuY2UqPihleGNlcHRpb24pLT5hcHBlbmRTb3VyY2VU
b01lc3NhZ2UoKSkgewotICAgICAgICB1bnNpZ25lZCBzdGFja0luZGV4ID0gMDsKLSAgICAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWU7Ci0gICAgICAgIGZvciAoY2FsbEZyYW1lID0gZXhlYzsgY2Fs
bEZyYW1lICYmICFjYWxsRnJhbWUtPmNvZGVCbG9jaygpOyApIHsKLSAgICAgICAgICAgIHN0YWNr
SW5kZXgrKzsKLSAgICAgICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWVT
a2lwcGluZ1ZNRW50cnlTZW50aW5lbCgpOwotICAgICAgICB9CisgICAgICAgIEZpbmRGaXJzdENh
bGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3IgZnVuY3RvcihleGVjKTsKKyAgICAgICAgdG9w
Q2FsbEZyYW1lLT5pdGVyYXRlKGZ1bmN0b3IpOworICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IGZ1bmN0b3IuZm91bmRDYWxsRnJhbWUoKTsKKyAgICAgICAgdW5zaWduZWQgc3RhY2tJbmRl
eCA9IGZ1bmN0b3IuaW5kZXgoKTsKKwogICAgICAgICBpZiAoY2FsbEZyYW1lICYmIGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCkpIHsKICAgICAgICAgICAgIHN0YWNrRnJhbWUgPSBzdGFja1RyYWNlLmF0
KHN0YWNrSW5kZXgpOwogICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBzdGFja0ZyYW1lLmJ5
dGVjb2RlT2Zmc2V0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lv
biAxNzIxODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzUsNiArMjM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgVk1U
eXBlIHZtVHlwZTsKICAgICAgICAgQ2xpZW50RGF0YSogY2xpZW50RGF0YTsKKyAgICAgICAgRXhl
Y1N0YXRlKiBjYWxsVG9KYXZhU2NyaXB0RnJhbWVQb2ludGVyOwogICAgICAgICBFeGVjU3RhdGUq
IHRvcENhbGxGcmFtZTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdhdGNoZG9nPiB3YXRjaGRv
ZzsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236301</attachid>
            <date>2014-08-08 13:59:41 -0700</date>
            <delta_ts>2014-08-15 12:07:59 -0700</delta_ts>
            <desc>Updated with speculative Windows changes and fix for patch to apply cleanly</desc>
            <filename>131578-3.patch</filename>
            <type>text/plain</type>
            <size>56379</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyMzUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBA
QAorMjAxNC0wOC0wNyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAg
ICAgICBDaGFuZ2UgY2FsbFRvSmF2YVNjcmlwdCBhbmQgY2FsbFRvTmF0aXZlRnVuY3Rpb24gc28g
dGhlaXIgY2FsbEZyYW1lcyBtYXRjaCB0aGUgbmF0aXZlIGNhbGxpbmcgY29udmVudGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTU3OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVsaW1pbmF0ZWQg
dGhlIHNlbnRpbmVsIGZyYW1lIGFuZCByZXBsYWNlZCBpdCB3aXRoIHRoZSBzdHJ1Y3R1cmUgQ2Fs
bFRvSmF2YVNjcmlwdEZyYW1lIHRoYXQKKyAgICAgICAgYXBwZWFycyBpbiB0aGUgImxvY2FscyIg
YXJlYSBvZiBhIGNhbGxUb0phdmFTY3JpcHQgc3RhY2sgZnJhbWUuICBDaGFuZ2VkIHRoZSBvcmRl
ciB0aGF0CisgICAgICAgIGNhbGxUb0phdmFTY3JpcHQvY2FsbFRvTmF0aXZlRnVuY3Rpb24gY3Jl
YXRlcyBpdHMgc3RhY2sgZnJhbWUgdG8gYmUgbmF0aXZlIGNhbGxpbmcgY29udmVudGlvbgorICAg
ICAgICBjb21wbGlhbnQuICBUaGF0IGlzIHRvIHNhdmUgcHJpb3IgZnJhbWUgcG9pbnRlciwgc2F2
ZSBjYWxsZWUgc2F2ZSByZWdpc3RlcnMsIHRoZW4gYWxsb2NhdGUgYW5kCisgICAgICAgIHBvcHVs
YXRlIHRoZSBDYWxsVG9KYXZhU2NyaXB0RnJhbWUsIGFuZCB0aGVuIGFsbG9jYXRlIGEgQ2FsbEZy
YW1lIGZvciB0aGUgSlMgZnVuY3Rpb24gdGhhdAorICAgICAgICBjYWxsVG9KYXZhU2NyaXB0IHdp
bGwgaW52b2tlLiAgVGhlIHRvcCBtb3N0IEpTIGVudHJ5IENhbGxGcmFtZSBpcyBzYXZlZCBpbgor
ICAgICAgICBWTTo6Y2FsbFRvSmF2YVNjcmlwdEZyYW1lUG9pbnRlci4gIFRoZSBwcmlvciBjb250
ZW50cyBvZiBWTTo6Y2FsbFRvSmF2YVNjcmlwdEZyYW1lUG9pbnRlciBhcmUKKyAgICAgICAgc2F2
ZWQgaW4gdGhlIENhbGxUb0phdmFTY3JpcHRGcmFtZSBzdHJ1Y3QgYWxvbmcgd2l0aCBhIHBvaW50
ZXIgdG8gdGhlIGN1cnJlbnQgVk0gYW5kCisgICAgICAgIFZNOjp0b3BDYWxsRnJhbWUuICBUaGlz
IGFsbG93cyBsaW5raW5nIGJhY2sgdG8gYSBwcmlvciBzZXQgb2YgSlMgZnJhbWVzIGZvciB1bndp
bmRpbmcgYXJvdW5kCisgICAgICAgIGFueSBpbnRlcm1lYW5pbmcgQysrIGZyYW1lcy4KKworICAg
ICAgICBBcmJpdHJhcnkgc3RhY2sgdW53aW5kaW5nIGlzIG5vdyBoYW5kbGVkIHVzaW5nIFN0YWNr
VmlzaXRvciBhbmQgdGhlIGFkZGl0aW9uIG9mIHJlbGF0ZWQgZnVuY3RvcgorICAgICAgICBjbGFz
c2VzLgorCisgICAgICAgIEFkZGVkIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUg
Q2FsbFRvSmF2YVNjcmlwdEZyYW1lIHBvaW50ZXIgd2hlbiBwcmVzZW50ZWQgdGhlCisgICAgICAg
IENhbGxGcmFtZSBmb3IgYSBjYWxsZWUgb2YgY2FsbFRvSmF2YVNjcmlwdC4KKworICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6UmVjdXJzaW9uQ2hlY2tGdW5jdG9y
OjpSZWN1cnNpb25DaGVja0Z1bmN0b3IpOgorICAgICAgICAoSlNDOjpSZWN1cnNpb25DaGVja0Z1
bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpSZWN1cnNpb25DaGVja0Z1bmN0b3I6
OmRpZFJlY3Vyc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om5vdGljZUluY29taW5nQ2Fs
bCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlcjo6c3RlcE91dE9mRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cmV0dXJu
RXZlbnQpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6ZGlkRXhlY3V0ZVByb2dyYW0pOgorICAg
ICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Rmlu
ZENhbGxlck1pZFN0YWNrRnVuY3Rvcjo6RmluZENhbGxlck1pZFN0YWNrRnVuY3Rvcik6CisgICAg
ICAgIChKU0M6OkZpbmRDYWxsZXJNaWRTdGFja0Z1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAg
ICAoSlNDOjpGaW5kQ2FsbGVyTWlkU3RhY2tGdW5jdG9yOjpnZXRDYWxsZXJGcmFtZSk6CisgICAg
ICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjpjYWxsZXJGcmFtZSk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6dG9wT2ZGcmFt
ZSk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y3VycmVudFZQQyk6CisgICAgICAgIChKU0M6
OkV4ZWNTdGF0ZTo6c2V0Q3VycmVudFZQQyk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6aW5p
dCk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6aXNUb3BKYXZhU2NyaXB0RW50cnlGcmFtZSk6
CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y2FsbGVyRnJhbWVVbndpbmQpOgorICAgICAgICAo
SlNDOjpFeGVjU3RhdGU6OmNhbGxlckZyYW1lU2tpcHBpbmdUb3BNb3N0SmF2YVNjcmlwdEVudHJ5
RnJhbWUpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnZtUHJpb3JUb3BDYWxsRnJhbWUpOgor
ICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmlzVk1FbnRyeVNlbnRpbmVsKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RXhlY1N0YXRlOjp2bUVudHJ5U2VudGluZWxDYWxsZXJGcmFtZSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6aW5pdGlhbGl6ZVZNRW50cnlTZW50aW5lbEZy
YW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjYWxsZXJGcmFtZVNraXBw
aW5nVk1FbnRyeVNlbnRpbmVsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjp2
bUVudHJ5U2VudGluZWxDb2RlQmxvY2spOiBEZWxldGVkLgorICAgICAgICAqIGludGVycHJldGVy
L0NhbGxUb0phdmFTY3JpcHRGcmFtZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbFRvSmF2
YVNjcmlwdEZyYW1lOjp2bSk6CisgICAgICAgIChKU0M6OkNhbGxUb0phdmFTY3JpcHRGcmFtZTo6
c2V0Vk0pOgorICAgICAgICAoSlNDOjpDYWxsVG9KYXZhU2NyaXB0RnJhbWU6OnRvcENhbGxGcmFt
ZSk6CisgICAgICAgIChKU0M6OkNhbGxUb0phdmFTY3JpcHRGcmFtZTo6c2V0VG9wQ2FsbEZyYW1l
KToKKyAgICAgICAgKEpTQzo6Q2FsbFRvSmF2YVNjcmlwdEZyYW1lOjpwcmV2Q2FsbFRvSmF2YVNj
cmlwdEZyYW1lKToKKyAgICAgICAgKEpTQzo6Q2FsbFRvSmF2YVNjcmlwdEZyYW1lOjpzZXRQcmV2
Q2FsbFRvSmF2YVNjcmlwdEZyYW1lKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHA6CisgICAgICAgIChKU0M6OnVud2luZENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnVu
d2luZCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpT
Qzo6VG9wQ2FsbEZyYW1lU2V0dGVyOjpUb3BDYWxsRnJhbWVTZXR0ZXIpOgorICAgICAgICAoSlND
OjpUb3BDYWxsRnJhbWVTZXR0ZXI6On5Ub3BDYWxsRnJhbWVTZXR0ZXIpOgorICAgICAgICAoSlND
OjpOYXRpdmVDYWxsRnJhbWVUcmFjZXI6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlcik6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNp
dG9yOjpTdGFja1Zpc2l0b3IpOgorICAgICAgICAoSlNDOjpTdGFja1Zpc2l0b3I6OnJlYWRGcmFt
ZSk6CisgICAgICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6cmVhZE5vbklubGluZWRGcmFtZSk6Cisg
ICAgICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6cmVhZElubGluZWRGcmFtZSk6CisgICAgICAgIChK
U0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OnByaW50KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9T
dGFja1Zpc2l0b3IuaDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6Y2FsbGVy
RnJhbWVJc0VudHJ5RnJhbWUpOgorICAgICAgICAqIGludGVycHJldGVyL1ZNSW5zcGVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6Q291bnRGcmFtZXNGdW5jdG9yOjpDb3VudEZyYW1lc0Z1bmN0b3Ip
OgorICAgICAgICAoSlNDOjpDb3VudEZyYW1lc0Z1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAg
ICAoSlNDOjpDb3VudEZyYW1lc0Z1bmN0b3I6OmNvdW50KToKKyAgICAgICAgKEpTQzo6Vk1JbnNw
ZWN0b3I6OmNvdW50RnJhbWVzKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRHVtcENhbGxGcmFtZSk6CisgICAg
ICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9M
TEludFRodW5rcy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNw
cDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVy
RnJhbWVXaXRoQ29kZWJsb2NrRnVuY3Rvcjo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJs
b2NrRnVuY3Rvcik6CisgICAgICAgIChKU0M6OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVi
bG9ja0Z1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpGaW5kRmlyc3RDYWxsZXJG
cmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjpmb3VuZENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6
OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6OmluZGV4KToKKyAgICAg
ICAgKEpTQzo6Vk06OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisK
IDIwMTQtMDgtMDcgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
Q3JlYXRlIGEgbW9yZSBnZW5lcmljIHdheSBmb3IgVk1FbnRyeVNjb3BlIHRvIG5vdGlmeSB0aG9z
ZSBpbnRlcmVzdGVkIHRoYXQgaXQgd2lsbCBiZSBkZXN0cm95ZWQKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwCShyZXZpc2lvbiAxNzIzNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjg3LDggKzY4Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25QcmkKICNpZm5kZWYgTkRFQlVHCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRHVtcENhbGxGcmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAg
aWYgKCFleGVjLT5jYWxsZXJGcmFtZSgpLT5pc1ZNRW50cnlTZW50aW5lbCgpKQotICAgICAgICBl
eGVjLT52bSgpLmludGVycHJldGVyLT5kdW1wQ2FsbEZyYW1lKGV4ZWMtPmNhbGxlckZyYW1lKCkp
OworICAgIGV4ZWMtPnZtKCkuaW50ZXJwcmV0ZXItPmR1bXBDYWxsRnJhbWUoZXhlYy0+Y2FsbGVy
RnJhbWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
ICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZp
c2lvbiAxNzIzNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcxLDYgKzEy
NzEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcQ2FsbEZyYW1l
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxDYWxsRnJhbWVJ
bmxpbmVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxDYWxs
RnJhbWVDbG9zdXJlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRl
clxDYWxsVG9KYXZhU2NyaXB0RnJhbWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGludGVycHJldGVyXEludGVycHJldGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxpbnRlcnByZXRlclxKU1N0YWNrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxp
bnRlcnByZXRlclxKU1N0YWNrSW5saW5lcy5oIiAvPgpAQCAtMTY0Niw0ICsxNjQ3LDQgQEAKICAg
PEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgICA8SW1wb3J0IFByb2pl
Y3Q9IiQoVkNUYXJnZXRzUGF0aClcQnVpbGRDdXN0b21pemF0aW9uc1xtYXNtLnRhcmdldHMiIC8+
CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQorPC9Qcm9qZWN0PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTcyMzUwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTU5LDYgKzIxNTksOSBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW50ZXJwcmV0ZXJcQ2FsbEZyYW1lQ2xvc3VyZS5oIj4KICAgICAgIDxGaWx0ZXI+
aW50ZXJwcmV0ZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGludGVycHJldGVyXENhbGxUb0phdmFTY3JpcHRGcmFtZS5oIj4KKyAgICAgIDxG
aWx0ZXI+aW50ZXJwcmV0ZXI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXEludGVycHJldGVyLmgiPgogICAgICAgPEZpbHRl
cj5pbnRlcnByZXRlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMzk3Miw0ICszOTc1
LDQgQEAKICAgICAgIDxGaWx0ZXI+aml0PC9GaWx0ZXI+CiAgICAgPC9NQVNNPgogICA8L0l0ZW1H
cm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTcyMzUwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExNTYsNiArMTE1Niw3IEBACiAJCTY1NTNBMzMxMTdB
MUYxRUUwMDhDRjZGMyAvKiBDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NTNBMzJGMTdBMUYxRUUwMDhD
RjZGMyAvKiBDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcCAqLzsgfTsKIAkJNjU1M0EzMzIx
N0ExRjFFRTAwOENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NTNBMzMwMTdBMUYxRUUwMDhD
RjZGMyAvKiBDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmggKi87IH07CiAJCTY1NUVCMjlCMTBD
RTI1ODEwMDFBOTkwRSAvKiBOb2Rlc0NvZGVnZW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU1RUIyOUExMENFMjU4MTAwMUE5OTBFIC8qIE5vZGVz
Q29kZWdlbi5jcHAgKi87IH07CisJCTY1OEQzQTU2MTk2MzgyNjgwMDNDNDVENiAvKiBDYWxsVG9K
YXZhU2NyaXB0RnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1OEQzQTU1MTk2MzgyNjgwMDNDNDVENiAvKiBDYWxsVG9KYXZhU2NyaXB0RnJhbWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NUMw
Mjg1MDE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDMDI4NEYxNzE3OTVFMjAwMzUx
RTM1IC8qIEFSTXY3RGlzYXNzZW1ibGVyLmNwcCAqLzsgfTsKIAkJNjVDMDI4NUMxNzE3OTY2ODAw
MzUxRTM1IC8qIEFSTXY3RE9wY29kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NUMwMjg1QTE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2Rl
LmNwcCAqLzsgfTsKIAkJNjVDMDI4NUQxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDMDI4NUIx
NzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oICovOyB9OwpAQCAtMzA2Miw2ICszMDYz
LDcgQEAKIAkJNjU2MjFFNkIwODlFODU5NzAwNzYwRjM1IC8qIFByb3BlcnR5U2xvdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9w
ZXJ0eVNsb3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJ
CTY1NjIxRTZDMDg5RTg1OTcwMDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvcGVydHlTbG90Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJNjU4NjAxNzcxODVBOEY1
RTAwMDMwRUVFIC8qIE1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1OEQzQTU1MTk2MzgyNjgwMDNDNDVENiAvKiBD
YWxsVG9KYXZhU2NyaXB0RnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2FsbFRvSmF2YVNjcmlwdEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1
OTg3RjJDMTY3RkU4NEIwMDNDMkY4RCAvKiBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09TUkV4aXRDb21waWxhdGlvbkluZm8u
aDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTY1OTg3RjJGMTY4MjhBN0UwMDNDMkY4RCAvKiBVbnVzZWRQb2ludGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVudXNlZFBvaW50ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVDMDI4NEYxNzE3OTVFMjAwMzUxRTM1IC8qIEFS
TXY3RGlzYXNzZW1ibGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEFSTXY3RGlzYXNzZW1ibGVyLmNwcDsgcGF0aCA9IGRpc2Fzc2VtYmxlci9BUk12N0Rpc2Fzc2Vt
Ymxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTU3LDYgKzQxNTksNyBA
QAogCQkxNDI5RDc3QTBFRDIwRDczMDBCODk2MTkgLyogaW50ZXJwcmV0ZXIgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTY1OEQzQTU1MTk2MzgyNjgwMDND
NDVENiAvKiBDYWxsVG9KYXZhU2NyaXB0RnJhbWUuaCAqLywKIAkJCQkwRjU1RjBGMTE0RDEwNjM2
MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgKi8sCiAJCQkJMEY1NUYwRjIxNEQxMDYzNjAwQUM3
NjQ5IC8qIEFic3RyYWN0UEMuaCAqLywKIAkJCQlBN0Y4NjkwRTBGOTU4NEExMDA1NTg2OTcgLyog
Q2FjaGVkQ2FsbC5oICovLApAQCAtNTk4Miw2ICs1OTg1LDcgQEAKIAkJCQkwRjZCMUNCOTE4NjEy
NDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTAw
OUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNjU4RDNBNTYxOTYzODI2ODAwM0M0NUQ2IC8qIENhbGxUb0phdmFTY3JpcHRGcmFt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFEMkVERkIxOTc5OUUzODAwNEQ2NDc4IC8qIEVudW1l
cmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3QjgzQUMwRTZEQjhDOTAwNDc3NUE0
IC8qIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQTEx
MTI0NjE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmggaW4gSGVhZGVycyAq
LywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAxNzIzNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIlJl
cGF0Y2guaCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0
b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCiAjaW5jbHVkZSAiVW5saW5r
ZWRJbnN0cnVjdGlvblN0cmVhbS5oIgogI2luY2x1ZGUgPHd0Zi9CYWdUb0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CkBAIC0zMTUxLDYgKzMxNTIsNDYgQEAgSlNHbG9i
YWxPYmplY3QqIENvZGVCbG9jazo6Z2xvYmFsT2JqZWN0RgogICAgIHJldHVybiBqc0Nhc3Q8RnVu
Y3Rpb25FeGVjdXRhYmxlKj4oY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUu
Z2V0KCkpLT5laXRoZXJDb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0KCk7CiB9CiAKK2NsYXNzIFJl
Y3Vyc2lvbkNoZWNrRnVuY3RvciB7CitwdWJsaWM6CisgICAgUmVjdXJzaW9uQ2hlY2tGdW5jdG9y
KENhbGxGcmFtZSogc3RhcnRDYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25l
ZCBkZXB0aFRvQ2hlY2spCisgICAgICAgIDogbV9zdGFydENhbGxGcmFtZShzdGFydENhbGxGcmFt
ZSkKKyAgICAgICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgICAgICwgbV9kZXB0aFRv
Q2hlY2soZGVwdGhUb0NoZWNrKQorICAgICAgICAsIG1fZm91bmRTdGFydENhbGxGcmFtZShmYWxz
ZSkKKyAgICAgICAgLCBtX2RpZFJlY3Vyc2UoZmFsc2UpCisgICAgeyB9CisgICAgCisgICAgU3Rh
Y2tWaXNpdG9yOjpTdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpCisgICAg
eworICAgICAgICBDYWxsRnJhbWUqIGN1cnJlbnRDYWxsRnJhbWUgPSB2aXNpdG9yLT5jYWxsRnJh
bWUoKTsKKworICAgICAgICBpZiAoY3VycmVudENhbGxGcmFtZSA9PSBtX3N0YXJ0Q2FsbEZyYW1l
KQorICAgICAgICAgICAgbV9mb3VuZFN0YXJ0Q2FsbEZyYW1lID0gdHJ1ZTsKKworICAgICAgICBp
ZiAobV9mb3VuZFN0YXJ0Q2FsbEZyYW1lKSB7CisgICAgICAgICAgICBpZiAodmlzaXRvci0+Y2Fs
bEZyYW1lKCktPmNvZGVCbG9jaygpID09IG1fY29kZUJsb2NrKSB7CisgICAgICAgICAgICAgICAg
bV9kaWRSZWN1cnNlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9y
OjpEb25lOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIW1fZGVwdGhUb0NoZWNr
LS0pCisgICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOworICAgIH0KKyAgICAK
KyAgICBib29sIGRpZFJlY3Vyc2UoKSBjb25zdCB7IHJldHVybiBtX2RpZFJlY3Vyc2U7IH0KKyAg
ICAKK3ByaXZhdGU6CisgICAgQ2FsbEZyYW1lKiBtX3N0YXJ0Q2FsbEZyYW1lOworICAgIENvZGVC
bG9jayogbV9jb2RlQmxvY2s7CisgICAgdW5zaWduZWQgbV9kZXB0aFRvQ2hlY2s7CisgICAgYm9v
bCBtX2ZvdW5kU3RhcnRDYWxsRnJhbWU7CisgICAgYm9vbCBtX2RpZFJlY3Vyc2U7Cit9OworCiB2
b2lkIENvZGVCbG9jazo6bm90aWNlSW5jb21pbmdDYWxsKEV4ZWNTdGF0ZSogY2FsbGVyRnJhbWUp
CiB7CiAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBjYWxsZXJGcmFtZS0+Y29kZUJs
b2NrKCk7CkBAIC0zMTk4LDIwICszMjM5LDE4IEBAIHZvaWQgQ29kZUJsb2NrOjpub3RpY2VJbmNv
bWluZ0NhbGwoRXhlY1MKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBDbGVhcmluZyBTQUJJIGJl
Y2F1c2UgY2FsbGVyIGlzIG5vdCBhIGZ1bmN0aW9uLlxuIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgCi0gICAgRXhlY1N0YXRlKiBmcmFtZSA9IGNhbGxlckZyYW1lOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ0RlcHRoKCk7IGktLTsgZnJhbWUg
PSBmcmFtZS0+Y2FsbGVyRnJhbWUoKSkgewotICAgICAgICBpZiAoZnJhbWUtPmlzVk1FbnRyeVNl
bnRpbmVsKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKGZyYW1lLT5jb2RlQmxv
Y2soKSA9PSB0aGlzKSB7Ci0gICAgICAgICAgICAvLyBSZWN1cnNpdmUgY2FsbHMgd29uJ3QgYmUg
aW5saW5lZC4KLSAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlQ2FsbExpbmsoKSkKLSAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQ2xlYXJpbmcgU0FCSSBiZWNhdXNlIHJlY3Vyc2lv
biB3YXMgZGV0ZWN0ZWQuXG4iKTsKLSAgICAgICAgICAgIG1fc2hvdWxkQWx3YXlzQmVJbmxpbmVk
ID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKworICAgIC8vIFJlY3Vy
c2l2ZSBjYWxscyB3b24ndCBiZSBpbmxpbmVkLgorICAgIFJlY3Vyc2lvbkNoZWNrRnVuY3RvciBm
dW5jdG9yKGNhbGxlckZyYW1lLCB0aGlzLCBPcHRpb25zOjptYXhpbXVtSW5saW5pbmdEZXB0aCgp
KTsKKyAgICB2bSgpLT50b3BDYWxsRnJhbWUtPml0ZXJhdGUoZnVuY3Rvcik7CisKKyAgICBpZiAo
ZnVuY3Rvci5kaWRSZWN1cnNlKCkpIHsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VDYWxs
TGluaygpKQorICAgICAgICAgICAgZGF0YUxvZygiICAgIENsZWFyaW5nIFNBQkkgYmVjYXVzZSBy
ZWN1cnNpb24gd2FzIGRldGVjdGVkLlxuIik7CisgICAgICAgIG1fc2hvdWxkQWx3YXlzQmVJbmxp
bmVkID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBSRUxFQVNF
X0FTU0VSVChjYWxsZXJDb2RlQmxvY2stPm1fY2FwYWJpbGl0eUxldmVsU3RhdGUgIT0gREZHOjpD
YXBhYmlsaXR5TGV2ZWxOb3RTZXQpOwogICAgIAogICAgIGlmIChjYW5Db21waWxlKGNhbGxlckNv
ZGVCbG9jay0+bV9jYXBhYmlsaXR5TGV2ZWxTdGF0ZSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAJKHJldmlzaW9uIDE3MjM1MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYwNyw3ICs2MDcsNyBAQCB2b2lkIERlYnVnZ2VyOjpzdGVwT3V0T2ZGdW5jdGlvbigpCiAgICAg
aWYgKCFtX2lzUGF1c2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhdXNlT25DYWxsRnJh
bWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUgPyBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlckZyYW1l
U2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKSA6IDA7CisgICAgbV9wYXVzZU9uQ2FsbEZyYW1lID0g
bV9jdXJyZW50Q2FsbEZyYW1lID8gbV9jdXJyZW50Q2FsbEZyYW1lLT5jYWxsZXJGcmFtZVNraXBw
aW5nVG9wTW9zdEphdmFTY3JpcHRFbnRyeUZyYW1lKCkgOiAwOwogICAgIG5vdGlmeURvbmVQcm9j
ZXNzaW5nRGVidWdnZXJFdmVudHMoKTsKIH0KIApAQCAtNzI0LDkgKzcyNCw5IEBAIHZvaWQgRGVi
dWdnZXI6OnJldHVybkV2ZW50KENhbGxGcmFtZSogY2EKIAogICAgIC8vIFRyZWF0IHN0ZXBwaW5n
IG92ZXIgYSByZXR1cm4gc3RhdGVtZW50IGxpa2Ugc3RlcHBpbmcgb3V0LgogICAgIGlmIChtX2N1
cnJlbnRDYWxsRnJhbWUgPT0gbV9wYXVzZU9uQ2FsbEZyYW1lKQotICAgICAgICBtX3BhdXNlT25D
YWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlckZyYW1lU2tpcHBpbmdWTUVudHJ5
U2VudGluZWwoKTsKKyAgICAgICAgbV9wYXVzZU9uQ2FsbEZyYW1lID0gbV9jdXJyZW50Q2FsbEZy
YW1lLT5jYWxsZXJGcmFtZVNraXBwaW5nVG9wTW9zdEphdmFTY3JpcHRFbnRyeUZyYW1lKCk7CiAK
LSAgICBtX2N1cnJlbnRDYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlckZyYW1l
U2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKTsKKyAgICBtX2N1cnJlbnRDYWxsRnJhbWUgPSBtX2N1
cnJlbnRDYWxsRnJhbWUtPmNhbGxlckZyYW1lU2tpcHBpbmdUb3BNb3N0SmF2YVNjcmlwdEVudHJ5
RnJhbWUoKTsKIH0KIAogdm9pZCBEZWJ1Z2dlcjo6d2lsbEV4ZWN1dGVQcm9ncmFtKENhbGxGcmFt
ZSogY2FsbEZyYW1lKQpAQCAtNzU2LDExICs3NTYsMTEgQEAgdm9pZCBEZWJ1Z2dlcjo6ZGlkRXhl
Y3V0ZVByb2dyYW0oQ2FsbEZyYQogICAgIGlmICghbV9jdXJyZW50Q2FsbEZyYW1lKQogICAgICAg
ICByZXR1cm47CiAgICAgaWYgKG1fY3VycmVudENhbGxGcmFtZSA9PSBtX3BhdXNlT25DYWxsRnJh
bWUpIHsKLSAgICAgICAgbV9wYXVzZU9uQ2FsbEZyYW1lID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5j
YWxsZXJGcmFtZVNraXBwaW5nVk1FbnRyeVNlbnRpbmVsKCk7CisgICAgICAgIG1fcGF1c2VPbkNh
bGxGcmFtZSA9IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVyRnJhbWVTa2lwcGluZ1RvcE1vc3RK
YXZhU2NyaXB0RW50cnlGcmFtZSgpOwogICAgICAgICBpZiAoIW1fY3VycmVudENhbGxGcmFtZSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9jdXJyZW50Q2FsbEZyYW1lID0gbV9j
dXJyZW50Q2FsbEZyYW1lLT5jYWxsZXJGcmFtZVNraXBwaW5nVk1FbnRyeVNlbnRpbmVsKCk7Cisg
ICAgbV9jdXJyZW50Q2FsbEZyYW1lID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5jYWxsZXJGcmFtZVNr
aXBwaW5nVG9wTW9zdEphdmFTY3JpcHRFbnRyeUZyYW1lKCk7CiB9CiAKIHZvaWQgRGVidWdnZXI6
OmRpZFJlYWNoQnJlYWtwb2ludChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAko
cmV2aXNpb24gMTcyMzUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyQ2FsbEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsMjkgQEAgcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBtX2NvbHVtbjsKIH07CiAKK2NsYXNzIEZpbmRDYWxsZXJNaWRTdGFj
a0Z1bmN0b3IgeworcHVibGljOgorICAgIEZpbmRDYWxsZXJNaWRTdGFja0Z1bmN0b3IoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCisgICAgICAgIDogbV9jYWxsRnJhbWUoY2FsbEZyYW1lKQorICAgICAg
ICAsIG1fY2FsbGVyRnJhbWUobnVsbHB0cikKKyAgICB7IH0KKworICAgIFN0YWNrVmlzaXRvcjo6
U3RhdHVzIG9wZXJhdG9yKCkoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKQorICAgIHsKKyAgICAgICAg
aWYgKHZpc2l0b3ItPmNhbGxGcmFtZSgpID09IG1fY2FsbEZyYW1lKSB7CisgICAgICAgICAgICBt
X2NhbGxlckZyYW1lID0gdmlzaXRvci0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgICAgIHJldHVy
biBTdGFja1Zpc2l0b3I6OkRvbmU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFN0YWNrVmlz
aXRvcjo6Q29udGludWU7CisgICAgfQorCisgICAgQ2FsbEZyYW1lKiBnZXRDYWxsZXJGcmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVyRnJhbWU7IH0KKworcHJpdmF0ZToKKyAgICBDYWxsRnJh
bWUqIG1fY2FsbEZyYW1lOworICAgIENhbGxGcmFtZSogbV9jYWxsZXJGcmFtZTsKK307CisKIERl
YnVnZ2VyQ2FsbEZyYW1lOjpEZWJ1Z2dlckNhbGxGcmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
ICAgICA6IG1fY2FsbEZyYW1lKGNhbGxGcmFtZSkKIHsKQEAgLTcyLDcgKzk1LDEwIEBAIFBhc3NS
ZWZQdHI8RGVidWdnZXJDYWxsRnJhbWU+IERlYnVnZ2VyQ2EKICAgICBpZiAobV9jYWxsZXIpCiAg
ICAgICAgIHJldHVybiBtX2NhbGxlcjsKIAotICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBt
X2NhbGxGcmFtZS0+Y2FsbGVyRnJhbWVTa2lwcGluZ1ZNRW50cnlTZW50aW5lbCgpOworICAgIEZp
bmRDYWxsZXJNaWRTdGFja0Z1bmN0b3IgZnVuY3RvcihtX2NhbGxGcmFtZSk7CisgICAgbV9jYWxs
RnJhbWUtPnZtKCkudG9wQ2FsbEZyYW1lLT5pdGVyYXRlKGZ1bmN0b3IpOworCisgICAgQ2FsbEZy
YW1lKiBjYWxsZXJGcmFtZSA9IGZ1bmN0b3IuZ2V0Q2FsbGVyRnJhbWUoKTsKICAgICBpZiAoIWNh
bGxlckZyYW1lKQogICAgICAgICByZXR1cm4gMDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTcyMzUwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNCw2ICsyNCw3IEBACiAjZGVmaW5lIENhbGxGcmFtZV9oCiAKICNpbmNsdWRlICJBYnN0
cmFjdFBDLmgiCisjaW5jbHVkZSAiQ2FsbFRvSmF2YVNjcmlwdEZyYW1lLmgiCiAjaW5jbHVkZSAi
Vk0uaCIKICNpbmNsdWRlICJKU1N0YWNrLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmLmgiCkBAIC0xNjEsNyArMTYyLDcgQEAgbmFtZXNwYWNlIEpTQyAgewogCiAgICAgICAgIFJl
Z2lzdGVyKiB0b3BPZkZyYW1lKCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGlzVk1FbnRy
eVNlbnRpbmVsKCkgfHwgIWNvZGVCbG9jaygpKQorICAgICAgICAgICAgaWYgKCFjb2RlQmxvY2so
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICByZXR1
cm4gdG9wT2ZGcmFtZUludGVybmFsKCk7CiAgICAgICAgIH0KQEAgLTE2OSwxMiArMTcwLDEwIEBA
IG5hbWVzcGFjZSBKU0MgIHsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBJbnN0cnVj
dGlvbiogY3VycmVudFZQQygpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCgh
aXNWTUVudHJ5U2VudGluZWwoKSk7CiAgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PElu
c3RydWN0aW9uKj4odGhpc1tKU1N0YWNrOjpBcmd1bWVudENvdW50XS50YWcoKSk7CiAgICAgICAg
IH0KICAgICAgICAgdm9pZCBzZXRDdXJyZW50VlBDKEluc3RydWN0aW9uKiB2cGMpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIEFTU0VSVCghaXNWTUVudHJ5U2VudGluZWwoKSk7CiAgICAgICAgICAg
ICB0aGlzW0pTU3RhY2s6OkFyZ3VtZW50Q291bnRdLnRhZygpID0gYml0d2lzZV9jYXN0PGludDMy
X3Q+KHZwYyk7CiAgICAgICAgIH0KICNlbHNlCkBAIC0xODksNyArMTg4LDcgQEAgbmFtZXNwYWNl
IEpTQyAgewogICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaW5pdChDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSW5zdHJ1Y3Rpb24qIHZQQywgSlNTY29wZSogc2NvcGUsCiAgICAgICAgICAgICBDYWxs
RnJhbWUqIGNhbGxlckZyYW1lLCBpbnQgYXJnYywgSlNPYmplY3QqIGNhbGxlZSkKICAgICAgICAg
ewotICAgICAgICAgICAgQVNTRVJUKGNhbGxlckZyYW1lID09IG5vQ2FsbGVyKCkgfHwgY2FsbGVy
RnJhbWUtPmlzVk1FbnRyeVNlbnRpbmVsKCkgfHwgY2FsbGVyRnJhbWUtPnN0YWNrKCktPmNvbnRh
aW5zQWRkcmVzcyh0aGlzKSk7CisgICAgICAgICAgICBBU1NFUlQoY2FsbGVyRnJhbWUgPT0gbm9D
YWxsZXIoKSB8fCBjYWxsZXJGcmFtZS0+c3RhY2soKS0+Y29udGFpbnNBZGRyZXNzKHRoaXMpKTsK
IAogICAgICAgICAgICAgc2V0Q29kZUJsb2NrKGNvZGVCbG9jayk7CiAgICAgICAgICAgICBzZXRT
Y29wZShzY29wZSk7CkBAIC0yNDUsMzMgKzI0NCwzMSBAQCBuYW1lc3BhY2UgSlNDICB7CiAKICAg
ICAgICAgc3RhdGljIENhbGxGcmFtZSogbm9DYWxsZXIoKSB7IHJldHVybiAwOyB9CiAKLSAgICAg
ICAgYm9vbCBpc1ZNRW50cnlTZW50aW5lbCgpIGNvbnN0CisgICAgICAgIGJvb2wgaXNUb3BKYXZh
U2NyaXB0RW50cnlGcmFtZSgpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAh
IXRoaXMgJiYgY29kZUJsb2NrKCkgPT0gdm1FbnRyeVNlbnRpbmVsQ29kZUJsb2NrKCk7CisgICAg
ICAgICAgICByZXR1cm4gY2FsbGVyRnJhbWUoKSA9PSB2bSgpLmNhbGxUb0phdmFTY3JpcHRGcmFt
ZVBvaW50ZXI7CiAgICAgICAgIH0KIAotICAgICAgICBDYWxsRnJhbWUqIHZtRW50cnlTZW50aW5l
bENhbGxlckZyYW1lKCkgY29uc3QKKyAgICAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZVVud2lu
ZChDYWxsRnJhbWUqJiBjdXJySlNFbnRyeUZyYW1lKQogICAgICAgICB7Ci0gICAgICAgICAgICBB
U1NFUlQoaXNWTUVudHJ5U2VudGluZWwoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdGhpc1tKU1N0
YWNrOjpTY29wZUNoYWluXS5jYWxsRnJhbWUoKTsKKyAgICAgICAgICAgIGlmIChjdXJySlNFbnRy
eUZyYW1lID09IGNhbGxlckZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICBDYWxsVG9KYXZhU2Ny
aXB0RnJhbWUqIGNhbGxUb0phdmFTY3JpcHRGcmFtZSA9IGNhbGxUb0phdmFTY3JpcHRGcmFtZUZy
b21GcmFtZVBvaW50ZXIoY3VyckpTRW50cnlGcmFtZSk7CisgICAgICAgICAgICAgICAgY3VyckpT
RW50cnlGcmFtZSA9IGNhbGxUb0phdmFTY3JpcHRGcmFtZS0+cHJldkNhbGxUb0phdmFTY3JpcHRG
cmFtZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBjYWxsVG9KYXZhU2NyaXB0RnJhbWUtPnRv
cENhbGxGcmFtZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGNhbGxlckZy
YW1lKCk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGluaXRpYWxpemVWTUVudHJ5U2VudGlu
ZWxGcmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKKyAgICAgICAgLy8gVGhpcyBvbmx5IHdvcmtz
IGZvciB0aGUgdG9wIG1vc3QgY29udGlndW91cyBzZXQgb2YgSlMgZnJhbWVzIGluY2x1ZGluZyB0
aGUgY2FsbGVlCisgICAgICAgIC8vIGZyYW1lIG9mIHRoZSB0b3AgbW9zdCBjYWxsVG9KYXZhU2Ny
aXB0L2NhbGxUb05hdGl2ZUZ1bmN0aW9uLiBJbiB0aGUgbGF0dGVyIGNhc2UsCisgICAgICAgIC8v
IGl0IHJldHVybnMgdGhlIHByaW9yIEpTIENhbGxGcmFtZSwgc2tpcHBpbmcgaG9zdCBmcmFtZXMs
IG9yIG51bGxwdHIgaWYgdGhlcmUgaXNuJ3QKKyAgICAgICAgLy8gYSBwcmlvciBKUyBjYWxsZXIu
CisgICAgICAgIC8vIEdlbmVyYWwgdW53aW5kaW5nIG11c3QgdXNlIFN0YWNrVmlzaXRvci4KKyAg
ICAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZVNraXBwaW5nVG9wTW9zdEphdmFTY3JpcHRFbnRy
eUZyYW1lKCkKICAgICAgICAgewotICAgICAgICAgICAgc2V0Q2FsbGVyRnJhbWUobm9DYWxsZXIo
KSk7Ci0gICAgICAgICAgICBzZXRSZXR1cm5QQygwKTsKLSAgICAgICAgICAgIHNldENvZGVCbG9j
ayh2bUVudHJ5U2VudGluZWxDb2RlQmxvY2soKSk7Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxS
ZWdpc3Rlcio+KHRoaXMpW0pTU3RhY2s6OlNjb3BlQ2hhaW5dID0gY2FsbEZyYW1lOwotICAgICAg
ICAgICAgc2V0Q2FsbGVlKDApOwotICAgICAgICAgICAgc2V0QXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMoMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lU2tp
cHBpbmdWTUVudHJ5U2VudGluZWwoKQotICAgICAgICB7Ci0gICAgICAgICAgICBDYWxsRnJhbWUq
IGNhbGxlciA9IGNhbGxlckZyYW1lKCk7Ci0gICAgICAgICAgICBpZiAoY2FsbGVyLT5pc1ZNRW50
cnlTZW50aW5lbCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjYWxsZXItPnZtRW50cnlTZW50
aW5lbENhbGxlckZyYW1lKCk7Ci0gICAgICAgICAgICByZXR1cm4gY2FsbGVyOworICAgICAgICAg
ICAgaWYgKGlzVG9wSmF2YVNjcmlwdEVudHJ5RnJhbWUoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdm1QcmlvclRvcENhbGxGcmFtZSgpOworICAgICAgICAgICAgcmV0dXJuIGNhbGxlckZyYW1l
KCk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKGludCBjb3VudCkgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW0pTU3RhY2s6OkFy
Z3VtZW50Q291bnRdLnBheWxvYWQoKSA9IGNvdW50OyB9CkBAIC0yOTEsNyArMjg4LDYgQEAgbmFt
ZXNwYWNlIEpTQyAgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBjaGFyKiBkZXNj
cmliZUZyYW1lKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgY29uc3QgaW50cHRy
X3Qgc19WTUVudHJ5U2VudGluZWwgPSAxOwogCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBKU1N0
YWNrKiBzdGFjaygpOwpAQCAtMzMwLDExICszMjYsMTUgQEAgbmFtZXNwYWNlIEpTQyAgewogICAg
ICAgICAgICAgcmV0dXJuIHRoaXNbYXJndW1lbnRPZmZzZXQoYXJnSW5kZXgpXS5qc1ZhbHVlKCk7
CiAgICAgICAgIH0KIAorICAgICAgICBDYWxsRnJhbWUqIHZtUHJpb3JUb3BDYWxsRnJhbWUoKSBj
b25zdAorICAgICAgICB7CisgICAgICAgICAgICBDYWxsVG9KYXZhU2NyaXB0RnJhbWUqIGNhbGxU
b0phdmFTY3JpcHRGcmFtZSA9IGNhbGxUb0phdmFTY3JpcHRGcmFtZUZyb21GcmFtZVBvaW50ZXIo
dGhpcyk7CisgICAgICAgICAgICByZXR1cm4gY2FsbFRvSmF2YVNjcmlwdEZyYW1lLT50b3BDYWxs
RnJhbWUoKTsKKyAgICAgICAgfQorCiAgICAgICAgIENhbGxlckZyYW1lQW5kUEMmIGNhbGxlckZy
YW1lQW5kUEMoKSB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxDYWxsZXJGcmFtZUFuZFBDKj4o
dGhpcyk7IH0KICAgICAgICAgY29uc3QgQ2FsbGVyRnJhbWVBbmRQQyYgY2FsbGVyRnJhbWVBbmRQ
QygpIGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IENhbGxlckZyYW1lQW5k
UEMqPih0aGlzKTsgfQogCi0gICAgICAgIHN0YXRpYyBDb2RlQmxvY2sqIHZtRW50cnlTZW50aW5l
bENvZGVCbG9jaygpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q29kZUJsb2NrKj4oc19WTUVu
dHJ5U2VudGluZWwpOyB9Ci0KICAgICAgICAgZnJpZW5kIGNsYXNzIEpTU3RhY2s7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBWTUluc3BlY3RvcjsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhbGxUb0phdmFTY3JpcHRGcmFtZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsVG9KYXZhU2NyaXB0RnJhbWUu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
VG9KYXZhU2NyaXB0RnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDYWxsVG9K
YXZhU2NyaXB0RnJhbWVfaAorI2RlZmluZSBDYWxsVG9KYXZhU2NyaXB0RnJhbWVfaAorCisjaW5j
bHVkZSAiU3RhY2tWaXNpdG9yLmgiCisKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBDYWxs
VG9KYXZhU2NyaXB0RnJhbWUgeworICAgIC8qCisgICAgICogVGhpcyBpcyB0aGUgbGF5b3V0IG9m
IGEgY2FsbFRvSmF2YVNjcmlwdCBhbGxvY2F0ZWQgZnJhbWUuICBJdCBpcyBhbGxvY2F0ZWQgb24g
dGhlIHN0YWNrCisgICAgICogYWZ0ZXIgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzIHdoZXJlIGxvY2Fs
IHZhcmlhYmxlcyB3b3VsZCBnby4KKyAgICAgKi8KKyAgICBWTSogbV92bTsKKyAgICBDYWxsRnJh
bWUqIG1fdG9wQ2FsbEZyYW1lOworICAgIENhbGxGcmFtZSogbV9wcmV2Q2FsbFRvSmF2YVNjcmlw
dEZyYW1lOworICAgIAorICAgIFZNKiB2bSgpIHsgcmV0dXJuIG1fdm07IH0KKyAgICB2b2lkIHNl
dFZNKFZNKiB2bSkgeyBtX3ZtID0gdm07IH0KKyAgICAKKyAgICBDYWxsRnJhbWUqIHRvcENhbGxG
cmFtZSgpIHsgcmV0dXJuIG1fdG9wQ2FsbEZyYW1lOyB9CisgICAgdm9pZCBzZXRUb3BDYWxsRnJh
bWUoQ2FsbEZyYW1lKiB0b3BDYWxsRnJhbWUpIHsgbV90b3BDYWxsRnJhbWUgPSB0b3BDYWxsRnJh
bWU7IH0KKyAgICAKKyAgICBDYWxsRnJhbWUqIHByZXZDYWxsVG9KYXZhU2NyaXB0RnJhbWUoKSB7
IHJldHVybiBtX3ByZXZDYWxsVG9KYXZhU2NyaXB0RnJhbWU7IH0KKyAgICB2b2lkIHNldFByZXZD
YWxsVG9KYXZhU2NyaXB0RnJhbWUoQ2FsbEZyYW1lKiBwcmV2Q2FsbFRvSmF2YVNjcmlwdEZyYW1l
KQorICAgIHsKKyAgICAgICAgbV9wcmV2Q2FsbFRvSmF2YVNjcmlwdEZyYW1lID0gcHJldkNhbGxU
b0phdmFTY3JpcHRGcmFtZTsKKyAgICB9Cit9OworICAgIAorZXh0ZXJuICJDIiBDYWxsVG9KYXZh
U2NyaXB0RnJhbWUqIGNhbGxUb0phdmFTY3JpcHRGcmFtZUZyb21GcmFtZVBvaW50ZXIoY29uc3Qg
Q2FsbEZyYW1lKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ2FsbFRvSmF2
YVNjcmlwdEZyYW1lX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTcyMzUwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDc5LDggKzQ3OSw3IEBAIHN0YXRpYyBib29sIHVud2luZENhbGxGcmFtZShTdGFja1Zpc2l0b3IK
ICAgICAgICAgfQogICAgIH0KIAotICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBjYWxsRnJh
bWUtPmNhbGxlckZyYW1lKCk7Ci0gICAgcmV0dXJuICFjYWxsZXJGcmFtZS0+aXNWTUVudHJ5U2Vu
dGluZWwoKTsKKyAgICByZXR1cm4gISh2aXNpdG9yLT5jYWxsZXJGcmFtZUlzRW50cnlGcmFtZSgp
KTsKIH0KIAogc3RhdGljIFN0YWNrRnJhbWVDb2RlVHlwZSBnZXRTdGFja0ZyYW1lQ29kZVR5cGUo
U3RhY2tWaXNpdG9yJiB2aXNpdG9yKQpAQCAtNTk3LDcgKzU5Niw2IEBAIHByaXZhdGU6CiB2b2lk
IEludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0cywg
c2l6ZV90IG1heFN0YWNrU2l6ZSkKIHsKICAgICBWTSYgdm0gPSBtX3ZtOwotICAgIEFTU0VSVCgh
dm0udG9wQ2FsbEZyYW1lLT5pc1ZNRW50cnlTZW50aW5lbCgpKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IHZtLnRvcENhbGxGcmFtZTsKICAgICBpZiAoIWNhbGxGcmFtZSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNjgzLDE1ICs2ODEsNiBAQCBwcml2YXRlOgogCiBORVZFUl9JTkxJTkUgSGFu
ZGxlckluZm8qIEludGVycHJldGVyOjp1bndpbmQoQ2FsbEZyYW1lKiYgY2FsbEZyYW1lLCBKU1Zh
bHVlJiBleGNlcHRpb25WYWx1ZSkKIHsKLSAgICBpZiAoY2FsbEZyYW1lLT5pc1ZNRW50cnlTZW50
aW5lbCgpKSB7Ci0gICAgICAgIC8vIFRoaXMgaGFwcGVucyB3aGVuIHdlIHRocm93IHN0YWNrIG92
ZXJmbG93IGluIGEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQKLSAgICAgICAgLy8gZGlyZWN0bHkg
ZnJvbSBjYWxsVG9KYXZhU2NyaXB0LiBTdGFjayBvdmVyZmxvdyB0aHJvd3MgdGhlIGV4Y2VwdGlv
biBpbiB0aGUKLSAgICAgICAgLy8gY29udGV4dCBvZiB0aGUgY2FsbGVyLiBJbiB0aGF0IGNhc2Ug
dGhlIGNhbGxlciBpcyB0aGUgc2VudGluZWwgZnJhbWUuIFRoZQotICAgICAgICAvLyByaWdodCB0
aGluZyB0byBkbyBpcyB0byBwcmV0ZW5kIHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyB1bmNhdWdodCBz
byB0aGF0IHdlCi0gICAgICAgIC8vIGdvIHRvIHRoZSB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxl
ciwgd2hpY2ggcmV0dXJucyB0aHJvdWdoIGNhbGxUb0phdmFTY3JpcHQuCi0gICAgICAgIHJldHVy
biAwOwotICAgIH0KLSAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCk7CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAgICAgYm9vbCBpc1Rlcm1pbmF0
aW9uID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTcyMzUwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NywxMyAr
MTU3LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgOiB2bShjdXJyZW50Vk0pCiAg
ICAgICAgICAgICAsIG9sZENhbGxGcmFtZShjdXJyZW50Vk0udG9wQ2FsbEZyYW1lKSAKICAgICAg
ICAgewotICAgICAgICAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPmlzVk1FbnRyeVNlbnRpbmVsKCkp
OwogICAgICAgICAgICAgY3VycmVudFZNLnRvcENhbGxGcmFtZSA9IGNhbGxGcmFtZTsKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgflRvcENhbGxGcmFtZVNldHRlcigpIAogICAgICAgICB7
Ci0gICAgICAgICAgICBBU1NFUlQoIW9sZENhbGxGcmFtZS0+aXNWTUVudHJ5U2VudGluZWwoKSk7
CiAgICAgICAgICAgICB2bS50b3BDYWxsRnJhbWUgPSBvbGRDYWxsRnJhbWU7CiAgICAgICAgIH0K
ICAgICBwcml2YXRlOgpAQCAtMTc3LDE4ICsxNzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgewogICAgICAgICAgICAgQVNTRVJUKHZtKTsKICAgICAgICAgICAgIEFTU0VSVChjYWxsRnJh
bWUpOwotICAgICAgICAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPmlzVk1FbnRyeVNlbnRpbmVsKCkp
OwogICAgICAgICAgICAgdm0tPnRvcENhbGxGcmFtZSA9IGNhbGxGcmFtZTsKICAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgZW51bSBWTUVudHJ5U2VudGluZWxPS1RhZyB7IFZNRW50cnlTZW50
aW5lbE9LIH07Ci0gICAgICAgIEFMV0FZU19JTkxJTkUgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyKFZN
KiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNRW50cnlTZW50aW5lbE9LVGFnKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBBU1NFUlQodm0pOwotICAgICAgICAgICAgQVNTRVJUKGNhbGxGcmFt
ZSk7Ci0gICAgICAgICAgICBpZiAoIWNhbGxGcmFtZS0+aXNWTUVudHJ5U2VudGluZWwoKSkKLSAg
ICAgICAgICAgICAgICB2bS0+dG9wQ2FsbEZyYW1lID0gY2FsbEZyYW1lOwotICAgICAgICB9CiAg
ICAgfTsKIAogICAgIGNsYXNzIEludGVycHJldGVyIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCShyZXZpc2lvbiAxNzIz
NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiBTdGFj
a1Zpc2l0b3I6OlN0YWNrVmlzaXRvcihDYWxsRnJhbWUqIHN0YXJ0RnJhbWUpCiB7CiAgICAgbV9m
cmFtZS5tX2luZGV4ID0gMDsKKyAgICBpZiAoc3RhcnRGcmFtZSkKKyAgICAgICAgbV9mcmFtZS5t
X0pTQ2FsbGluZ0ZyYW1lID0gc3RhcnRGcmFtZS0+dm0oKS5jYWxsVG9KYXZhU2NyaXB0RnJhbWVQ
b2ludGVyOworICAgIGVsc2UKKyAgICAgICAgbV9mcmFtZS5tX0pTQ2FsbGluZ0ZyYW1lID0gMDsK
KyAgICBtX2ZyYW1lLm1fY2FsbGVyRnJhbWVJc0VudHJ5RnJhbWUgPSAwOwogICAgIHJlYWRGcmFt
ZShzdGFydEZyYW1lKTsKIH0KIApAQCAtNTYsNyArNjEsNiBAQCB2b2lkIFN0YWNrVmlzaXRvcjo6
Z290b05leHRGcmFtZSgpCiAKIHZvaWQgU3RhY2tWaXNpdG9yOjpyZWFkRnJhbWUoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7Ci0gICAgQVNTRVJUKCFjYWxsRnJhbWUtPmlzVk1FbnRyeVNlbnRpbmVs
KCkpOwogICAgIGlmICghY2FsbEZyYW1lKSB7CiAgICAgICAgIG1fZnJhbWUuc2V0VG9FbmQoKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTA0LDcgKzEwOCw5IEBAIHZvaWQgU3RhY2tWaXNpdG9yOjpy
ZWFkTm9uSW5saW5lZEZyYW1lKEMKIHsKICAgICBtX2ZyYW1lLm1fY2FsbEZyYW1lID0gY2FsbEZy
YW1lOwogICAgIG1fZnJhbWUubV9hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKLSAgICBtX2ZyYW1lLm1fY2FsbGVyRnJh
bWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lU2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKTsKKyAg
ICBDYWxsRnJhbWUqIGN1cnJlbnRKU0NhbGxpbmdGcmFtZSA9IG1fZnJhbWUubV9KU0NhbGxpbmdG
cmFtZTsKKyAgICBtX2ZyYW1lLm1fY2FsbGVyRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1l
VW53aW5kKG1fZnJhbWUubV9KU0NhbGxpbmdGcmFtZSk7CisgICAgbV9mcmFtZS5tX2NhbGxlckZy
YW1lSXNFbnRyeUZyYW1lID0gY3VycmVudEpTQ2FsbGluZ0ZyYW1lICE9IG1fZnJhbWUubV9KU0Nh
bGxpbmdGcmFtZTsKICAgICBtX2ZyYW1lLm1fY2FsbGVlID0gY2FsbEZyYW1lLT5jYWxsZWUoKTsK
ICAgICBtX2ZyYW1lLm1fc2NvcGUgPSBjYWxsRnJhbWUtPnNjb3BlKCk7CiAgICAgbV9mcmFtZS5t
X2NvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBAIC0xMjcsNyArMTMzLDYgQEAg
c3RhdGljIGludCBpbmxpbmVkRnJhbWVPZmZzZXQoQ29kZU9yaWdpbgogdm9pZCBTdGFja1Zpc2l0
b3I6OnJlYWRJbmxpbmVkRnJhbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVPcmlnaW4qIGNv
ZGVPcmlnaW4pCiB7CiAgICAgQVNTRVJUKGNvZGVPcmlnaW4pOwotICAgIEFTU0VSVCghY2FsbEZy
YW1lLT5pc1ZNRW50cnlTZW50aW5lbCgpKTsKIAogICAgIGludCBmcmFtZU9mZnNldCA9IGlubGlu
ZWRGcmFtZU9mZnNldChjb2RlT3JpZ2luKTsKICAgICBib29sIGlzSW5saW5lZCA9ICEhZnJhbWVP
ZmZzZXQ7CkBAIC0zODAsNyArMzg1LDYgQEAgdm9pZCBTdGFja1Zpc2l0b3I6OkZyYW1lOjpwcmlu
dChpbnQgaW5kZQogCiAgICAgcHJpbnRpZihpLCAiICAgbmFtZSAnJXMnXG4iLCBmdW5jdGlvbk5h
bWUoKS51dGY4KCkuZGF0YSgpKTsKICAgICBwcmludGlmKGksICIgICBzb3VyY2VVUkwgJyVzJ1xu
Iiwgc291cmNlVVJMKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgcHJpbnRpZihpLCAiICAgaXNWTUVu
dHJ5U2VudGluZWwgJWRcbiIsIGNhbGxlckZyYW1lLT5pc1ZNRW50cnlTZW50aW5lbCgpKTsKIAog
I2lmIEVOQUJMRShERkdfSklUKQogICAgIHByaW50aWYoaSwgIiAgIGlzSW5saW5lZEZyYW1lICVk
XG4iLCBpc0lubGluZWRGcmFtZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9TdGFja1Zpc2l0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgJKHJldmlzaW9uIDE3MjM1MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgc2l6ZV90IGluZGV4KCkgY29u
c3QgeyByZXR1cm4gbV9pbmRleDsgfQogICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyB9
CisgICAgICAgIGJvb2wgY2FsbGVyRnJhbWVJc0VudHJ5RnJhbWUoKSBjb25zdCB7IHJldHVybiBt
X2NhbGxlckZyYW1lSXNFbnRyeUZyYW1lOyB9CiAgICAgICAgIENhbGxGcmFtZSogY2FsbGVyRnJh
bWUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlckZyYW1lOyB9CiAgICAgICAgIEpTT2JqZWN0KiBj
YWxsZWUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZTsgfQogICAgICAgICBKU1Njb3BlKiBzY29w
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGU7IH0KQEAgLTk0LDExICs5NSwxMyBAQCBwdWJsaWM6
CiAKICAgICAgICAgc2l6ZV90IG1faW5kZXg7CiAgICAgICAgIHNpemVfdCBtX2FyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzOworICAgICAgICBDYWxsRnJhbWUqIG1fSlNDYWxsaW5nRnJhbWU7CiAg
ICAgICAgIENhbGxGcmFtZSogbV9jYWxsZXJGcmFtZTsKICAgICAgICAgSlNPYmplY3QqIG1fY2Fs
bGVlOwogICAgICAgICBKU1Njb3BlKiBtX3Njb3BlOwogICAgICAgICBDb2RlQmxvY2sqIG1fY29k
ZUJsb2NrOwogICAgICAgICB1bnNpZ25lZCBtX2J5dGVjb2RlT2Zmc2V0OworICAgICAgICBib29s
IG1fY2FsbGVyRnJhbWVJc0VudHJ5RnJhbWU7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAg
IElubGluZUNhbGxGcmFtZSogbV9pbmxpbmVDYWxsRnJhbWU7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUluc3BlY3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9yLmNwcAkocmV2
aXNpb24gMTcyMzUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5z
cGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShW
TUlOU1BFQ1RPUikKIAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJTdGFja1Zp
c2l0b3IuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCkBAIC05OSwxNCArMTAwLDMwIEBAIHZvaWQgVk1JbnNwZWN0b3I6OmR1
bXBGcmFtZShDYWxsRnJhbWUqIGYKICAgICBwcmludGYoIlxuIik7CiB9CiAKK2NsYXNzIENvdW50
RnJhbWVzRnVuY3RvciB7CitwdWJsaWM6CisgICAgQ291bnRGcmFtZXNGdW5jdG9yKCkKKyAgICAg
ICAgOiBtX2NvdW50KC0xKQorICAgIHsgfQorCisgICAgU3RhY2tWaXNpdG9yOjpTdGF0dXMgb3Bl
cmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpCisgICAgeworICAgICAgICBtX2NvdW50Kys7
CisgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOworICAgIH0KKyAgICAKKyAg
ICBpbnQgY291bnQoKSBjb25zdCB7IHJldHVybiBtX2NvdW50OyB9CisgICAgCitwcml2YXRlOgor
ICAgIHVuc2lnbmVkIG1fY291bnQ7Cit9OworCiBpbnQgVk1JbnNwZWN0b3I6OmNvdW50RnJhbWVz
KENhbGxGcmFtZSogZnJhbWUpCiB7Ci0gICAgaW50IGNvdW50ID0gLTE7Ci0gICAgd2hpbGUgKGZy
YW1lICYmICFmcmFtZS0+aXNWTUVudHJ5U2VudGluZWwoKSkgewotICAgICAgICBjb3VudCsrOwot
ICAgICAgICBmcmFtZSA9IGZyYW1lLT5jYWxsZXJGcmFtZSgpOwotICAgIH0KLSAgICByZXR1cm4g
Y291bnQ7CisgICAgQ291bnRGcmFtZXNGdW5jdG9yIGZ1bmN0b3IoKTsKKyAgICBTdGFja1Zpc2l0
b3I6OnZpc2l0KGZyYW1lLCBmdW5jdG9yKTsKKworICAgIHJldHVybiBmdW5jdG9yLmNvdW50KCk7
CiB9CiAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCShyZXZpc2lvbiAxNzIzNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3YKIHsKICAgICAvLyBXZSBwYXNzIGluIG91ciBv
d24gY29kZSBibG9jaywgYmVjYXVzZSB0aGUgY2FsbGZyYW1lIGhhc24ndCBiZWVuIHBvcHVsYXRl
ZC4KICAgICBWTSogdm0gPSBjb2RlQmxvY2stPnZtKCk7Ci0gICAgQ2FsbEZyYW1lKiBjYWxsZXJG
cmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lU2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKTsKKyAgICBD
YWxsRnJhbWUqIGNhbGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWVTa2lwcGluZ1RvcE1vc3RK
YXZhU2NyaXB0RW50cnlGcmFtZSgpOwogICAgIGlmICghY2FsbGVyRnJhbWUpCiAgICAgICAgIGNh
bGxlckZyYW1lID0gZXhlYzsKIApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVGhyb3dTdGFja092CiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2Fs
bEFyaXR5Q2hlY2soRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OwotICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZVNraXBwaW5n
Vk1FbnRyeVNlbnRpbmVsKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNh
bGxlckZyYW1lU2tpcHBpbmdUb3BNb3N0SmF2YVNjcmlwdEVudHJ5RnJhbWUoKTsKICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsZXJGcmFtZSk7CiAKICAgICBKU1N0YWNr
JiBzdGFjayA9IHZtLT5pbnRlcnByZXRlci0+c3RhY2soKTsKQEAgLTEwNiw3ICsxMDYsNyBAQCBp
bnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEFyaXR5CiBpbnQzMl90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4
ZWMtPmNhbGxlckZyYW1lU2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKTsKKyAgICBDYWxsRnJhbWUq
IGNhbGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWVTa2lwcGluZ1RvcE1vc3RKYXZhU2NyaXB0
RW50cnlGcmFtZSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxl
ckZyYW1lKTsKIAogICAgIEpTU3RhY2smIHN0YWNrID0gdm0tPmludGVycHJldGVyLT5zdGFjaygp
OwpAQCAtMTgyMiw3ICsxODIyLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluaXRH
bG9iYWxDbwogCiB2b2lkIEpJVF9PUEVSQVRJT04gbG9va3VwRXhjZXB0aW9uSGFuZGxlcihWTSog
dm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjLCBOYXRpdmVDYWxsRnJhbWVUcmFjZXI6OlZNRW50cnlTZW50aW5lbE9LKTsKKyAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAogICAgIEpTVmFsdWUg
ZXhjZXB0aW9uVmFsdWUgPSB2bS0+ZXhjZXB0aW9uKCk7CiAgICAgQVNTRVJUKGV4Y2VwdGlvblZh
bHVlKTsKQEAgLTE4MzYsNyArMTgzNiw2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25W
TUhhbmRsZUV4Y2UKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAotICAgIEFTU0VSVCghZXhlYy0+aXNWTUVudHJ5
U2VudGluZWwoKSk7CiAgICAgZ2VuZXJpY1Vud2luZCh2bSwgZXhlYywgdm0tPmV4Y2VwdGlvbigp
KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDE3MjM1MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJBcnJh
eVByb2ZpbGUuaCIKKyNpbmNsdWRlICJDYWxsVG9KYXZhU2NyaXB0RnJhbWUuaCIKICNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKICNpbmNsdWRlICJE
ZWJ1Z2dlci5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtz
LmgJKHJldmlzaW9uIDE3MjM1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFRodW5rcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIHN0cnVjdCBQcm90b0Nh
bGxGcmFtZTsKIGV4dGVybiAiQyIgewogICAgIEVuY29kZWRKU1ZhbHVlIGNhbGxUb0phdmFTY3Jp
cHQodm9pZCosIFZNKiwgUHJvdG9DYWxsRnJhbWUqKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBjYWxs
VG9OYXRpdmVGdW5jdGlvbih2b2lkKiwgVk0qLCBQcm90b0NhbGxGcmFtZSopOworICAgIHZvaWQg
Z2V0UmV0dXJuUEMoKTsKIH0KIAogbmFtZXNwYWNlIExMSW50IHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCShyZXZpc2lvbiAxNzIzNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTYxLDEwICsxNjEs
OCBAQCBtYWNybyBkb0NhbGxUb0phdmFTY3JpcHQobWFrZUNhbGwpCiAgICAgICAgIGNvbnN0IHZt
ID0gdDMKICAgICAgICAgY29uc3QgcHJvdG9DYWxsRnJhbWUgPSB0NQogCi0gICAgICAgIGNvbnN0
IHByZXZpb3VzQ0ZSID0gdDAKLSAgICAgICAgY29uc3QgcHJldmlvdXNQQyA9IHQxCi0gICAgICAg
IGNvbnN0IHRlbXAxID0gdDAgIyBTYW1lIGFzIHByZXZpb3VzQ0ZSCi0gICAgICAgIGNvbnN0IHRl
bXAyID0gdDEgIyBTYW1lIGFzIHByZXZpb3VzUEMKKyAgICAgICAgY29uc3QgdGVtcDEgPSB0MAor
ICAgICAgICBjb25zdCB0ZW1wMiA9IHQxCiAgICAgICAgIGNvbnN0IHRlbXAzID0gdDIKICAgICAg
ICAgY29uc3QgdGVtcDQgPSB0MyAjIHNhbWUgYXMgdm0KICAgICBlbHNpZiBBUk0gb3IgQVJNdjcg
b3IgQVJNdjdfVFJBRElUSU9OQUwgb3IgQ19MT09QCkBAIC0xNzIsOSArMTcwLDcgQEAgbWFjcm8g
ZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VDYWxsKQogICAgICAgICBjb25zdCB2bSA9IGExCiAgICAg
ICAgIGNvbnN0IHByb3RvQ2FsbEZyYW1lID0gYTIKIAotICAgICAgICBjb25zdCBwcmV2aW91c0NG
UiA9IHQzCi0gICAgICAgIGNvbnN0IHByZXZpb3VzUEMgPSBscgotICAgICAgICBjb25zdCB0ZW1w
MSA9IHQzICMgU2FtZSBhcyBwcmV2aW91c0NGUgorICAgICAgICBjb25zdCB0ZW1wMSA9IHQzCiAg
ICAgICAgIGNvbnN0IHRlbXAyID0gdDQKICAgICAgICAgY29uc3QgdGVtcDMgPSB0NQogICAgICAg
ICBjb25zdCB0ZW1wNCA9IHQ0ICMgU2FtZSBhcyB0ZW1wMgpAQCAtMTg0LDggKzE4MCw2IEBAIG1h
Y3JvIGRvQ2FsbFRvSmF2YVNjcmlwdChtYWtlQ2FsbCkKICAgICAgICAgY29uc3QgcHJvdG9DYWxs
RnJhbWUgPSBhMgogICAgICAgICBjb25zdCB0b3BPZlN0YWNrID0gYTMKIAotICAgICAgICBjb25z
dCBwcmV2aW91c0NGUiA9IHQyCi0gICAgICAgIGNvbnN0IHByZXZpb3VzUEMgPSBscgogICAgICAg
ICBjb25zdCB0ZW1wMSA9IHQzCiAgICAgICAgIGNvbnN0IHRlbXAyID0gdDUKICAgICAgICAgY29u
c3QgdGVtcDMgPSB0NApAQCAtMTk1LDcxICsxODksNTMgQEAgbWFjcm8gZG9DYWxsVG9KYXZhU2Ny
aXB0KG1ha2VDYWxsKQogICAgICAgICBjb25zdCB2bSA9IGExCiAgICAgICAgIGNvbnN0IHByb3Rv
Q2FsbEZyYW1lID0gYTIKIAotICAgICAgICBjb25zdCBwcmV2aW91c0NGUiA9IHQzCi0gICAgICAg
IGNvbnN0IHByZXZpb3VzUEMgPSBscgotICAgICAgICBjb25zdCB0ZW1wMSA9IHQzICMgU2FtZSBh
cyBwcmV2aW91c0NGUgorICAgICAgICBjb25zdCB0ZW1wMSA9IHQzCiAgICAgICAgIGNvbnN0IHRl
bXAyID0gYTMKICAgICAgICAgY29uc3QgdGVtcDMgPSB0OAogICAgICAgICBjb25zdCB0ZW1wNCA9
IHQ5CiAgICAgZW5kCiAKLSAgICBjYWxsVG9KYXZhU2NyaXB0UHJvbG9ndWUoKQorICAgIGZ1bmN0
aW9uUHJvbG9ndWUoKQorICAgIHB1c2hDYWxsZWVTYXZlcwogCiAgICAgaWYgWDg2Ci0gICAgICAg
IGxvYWRwIDM2W3NwXSwgdm0KLSAgICAgICAgbG9hZHAgMzJbc3BdLCBlbnRyeQotICAgIGVsc2lm
IFg4Nl9XSU4KLSAgICAgICAgbG9hZHAgNDBbc3AsIHRlbXAzXSwgdm0KLSAgICAgICAgbG9hZHAg
MzZbc3AsIHRlbXAzXSwgZW50cnkKLSAgICBlbHNlCi0gICAgICAgIG1vdmUgY2ZyLCBwcmV2aW91
c0NGUgorICAgICAgICBsb2FkcCAxMltjZnJdLCB2bQorICAgICAgICBsb2FkcCA4W2Nmcl0sIGVu
dHJ5CiAgICAgZW5kCiAKLSAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0ZW1wMiwgMHhi
YWQwZGMwMSkKKyAgICBDYWxsVG9KYXZhU2NyaXB0RnJhbWVGcm9tRnJhbWVQb2ludGVyKGNmciwg
c3ApCiAKLSAgICAjIFRoZSBzdGFjayByZXNlcnZlZCB6b25lIGVuc3VyZXMgdGhhdCB3ZSBoYXZl
IGFkZXF1YXRlIHNwYWNlIGZvciB0aGUKLSAgICAjIFZNRW50cnlTZW50aW5lbEZyYW1lLiBQcm9j
ZWVkIHdpdGggYWxsb2NhdGluZyBhbmQgaW5pdGlhbGl6aW5nIHRoZQotICAgICMgc2VudGluZWwg
ZnJhbWUuCi0gICAgbW92ZSBzcCwgY2ZyCi0gICAgc3VicCBDYWxsRnJhbWVIZWFkZXJTbG90cyAq
IDgsIGNmcgotICAgIHN0b3JlcCAwLCBBcmd1bWVudENvdW50W2Nmcl0KLSAgICBzdG9yZXAgdm0s
IENhbGxlZVtjZnJdCisgICAgc3RvcmVwIHZtLCBDYWxsVG9KYXZhU2NyaXB0RnJhbWU6Om1fdm1b
c3BdCiAgICAgbG9hZHAgVk06OnRvcENhbGxGcmFtZVt2bV0sIHRlbXAyCi0gICAgc3RvcmVwIHRl
bXAyLCBTY29wZUNoYWluW2Nmcl0KLSAgICBzdG9yZXAgMSwgQ29kZUJsb2NrW2Nmcl0KLSAgICBp
ZiBYODYKLSAgICAgICAgbG9hZHAgMjhbc3BdLCBwcmV2aW91c1BDCi0gICAgICAgIGxvYWRwIDI0
W3NwXSwgcHJldmlvdXNDRlIKLSAgICBlbHNpZiBYODZfV0lOCi0gICAgICAgIGxvYWRwIDMyW3Nw
LCB0ZW1wM10sIHByZXZpb3VzUEMKLSAgICAgICAgbG9hZHAgMjhbc3AsIHRlbXAzXSwgcHJldmlv
dXNDRlIKKyAgICBzdG9yZXAgdGVtcDIsIENhbGxUb0phdmFTY3JpcHRGcmFtZTo6bV90b3BDYWxs
RnJhbWVbc3BdCisgICAgbG9hZHAgVk06OmNhbGxUb0phdmFTY3JpcHRGcmFtZVBvaW50ZXJbdm1d
LCB0ZW1wMgorICAgIHN0b3JlcCB0ZW1wMiwgQ2FsbFRvSmF2YVNjcmlwdEZyYW1lOjptX3ByZXZD
YWxsVG9KYXZhU2NyaXB0RnJhbWVbc3BdCisKKyAgICAjIEFsaWduIHN0YWNrIHBvaW50ZXIKKyAg
ICBpZiBYODZfV0lOCisgICAgICAgIGFkZHAgQ2FsbEZyYW1lQWxpZ25TbG90cyAqIFNsb3RTaXpl
LCBzcCwgdGVtcDEKKyAgICAgICAgYW5kcCB+U3RhY2tBbGlnbm1lbnRNYXNrLCB0ZW1wMQorICAg
ICAgICBzdWJwIHRlbXAxLCBDYWxsRnJhbWVBbGlnblNsb3RzICogU2xvdFNpemUsIHNwCisgICAg
ZWxzaWYgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMCisgICAgICAgIGFkZHAgQ2Fs
bEZyYW1lQWxpZ25TbG90cyAqIFNsb3RTaXplLCBzcCwgdGVtcDEKKyAgICAgICAgY2xyYnAgdGVt
cDEsIFN0YWNrQWxpZ25tZW50TWFzaywgdGVtcDEKKyAgICAgICAgc3VicCB0ZW1wMSwgQ2FsbEZy
YW1lQWxpZ25TbG90cyAqIFNsb3RTaXplLCBzcAogICAgIGVuZAotICAgIHN0b3JlcCBwcmV2aW91
c1BDLCBSZXR1cm5QQ1tjZnJdCi0gICAgc3RvcmVwIHByZXZpb3VzQ0ZSLCBDYWxsZXJGcmFtZVtj
ZnJdCiAKICAgICBpZiBYODYKLSAgICAgICAgbG9hZHAgNDBbc3BdLCBwcm90b0NhbGxGcmFtZQot
ICAgIGVsc2lmIFg4Nl9XSU4KLSAgICAgICAgbG9hZHAgNDRbc3AsIHRlbXAzXSwgcHJvdG9DYWxs
RnJhbWUKKyAgICAgICAgbG9hZHAgMTZbY2ZyXSwgcHJvdG9DYWxsRnJhbWUKICAgICBlbmQKIAog
ICAgIGxvYWRpIFByb3RvQ2FsbEZyYW1lOjpwYWRkZWRBcmdDb3VudFtwcm90b0NhbGxGcmFtZV0s
IHRlbXAyCiAgICAgYWRkcCBDYWxsRnJhbWVIZWFkZXJTbG90cywgdGVtcDIsIHRlbXAyCiAgICAg
bHNoaWZ0cCAzLCB0ZW1wMgotICAgIHN1YnAgY2ZyLCB0ZW1wMiwgdGVtcDEKKyAgICBzdWJwIHNw
LCB0ZW1wMiwgdGVtcDEKIAogICAgICMgRW5zdXJlIHRoYXQgd2UgaGF2ZSBlbm91Z2ggYWRkaXRp
b25hbCBzdGFjayBjYXBhY2l0eSBmb3IgdGhlIGluY29taW5nIGFyZ3MsCiAgICAgIyBhbmQgdGhl
IGZyYW1lIGZvciB0aGUgSlMgY29kZSB3ZSdyZSBleGVjdXRpbmcuIFdlIG5lZWQgdG8gZG8gdGhp
cyBjaGVjawogICAgICMgYmVmb3JlIHdlIHN0YXJ0IGNvcHlpbmcgdGhlIGFyZ3MgZnJvbSB0aGUg
cHJvdG9DYWxsRnJhbWUgYmVsb3cuCiAgICAgYnBhZXEgdGVtcDEsIFZNOjptX2pzU3RhY2tMaW1p
dFt2bV0sIC5zdGFja0hlaWdodE9LCiAKLSAgICBpZiBBUk12NwotICAgICAgICBzdWJwIGNmciwg
OCwgdGVtcDIKLSAgICAgICAgbW92ZSB0ZW1wMiwgc3AKLSAgICBlbHNlCi0gICAgICAgIHN1YnAg
Y2ZyLCA4LCBzcAotICAgIGVuZAotCiAgICAgaWYgQ19MT09QCiAgICAgICAgIG1vdmUgZW50cnks
IHRlbXAyCiAgICAgICAgIG1vdmUgdm0sIHRlbXAzCkBAIC0yNzUsNyArMjUxLDE5IEBAIG1hY3Jv
IGRvQ2FsbFRvSmF2YVNjcmlwdChtYWtlQ2FsbCkKICAgICBlbmQKIAogICAgIGNDYWxsMihfbGxp
bnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IsIHZtLCBwcm90b0NhbGxGcmFtZSkKLSAgICBj
YWxsVG9KYXZhU2NyaXB0RXBpbG9ndWUoKQorCisgICAgQ2FsbFRvSmF2YVNjcmlwdEZyYW1lRnJv
bUZyYW1lUG9pbnRlcihjZnIsIHNwKQorCisgICAgbG9hZHAgQ2FsbFRvSmF2YVNjcmlwdEZyYW1l
OjptX3ZtW3NwXSwgdGVtcDMKKyAgICBsb2FkcCBDYWxsVG9KYXZhU2NyaXB0RnJhbWU6Om1fdG9w
Q2FsbEZyYW1lW3NwXSwgdGVtcDQKKyAgICBzdG9yZXAgdGVtcDQsIFZNOjp0b3BDYWxsRnJhbWVb
dGVtcDNdCisgICAgbG9hZHAgQ2FsbFRvSmF2YVNjcmlwdEZyYW1lOjptX3ByZXZDYWxsVG9KYXZh
U2NyaXB0RnJhbWVbc3BdLCB0ZW1wNAorICAgIHN0b3JlcCB0ZW1wNCwgVk06OmNhbGxUb0phdmFT
Y3JpcHRGcmFtZVBvaW50ZXJbdGVtcDNdCisKKyAgICBzdWJwIGNmciwgQ2FsbGVlUmVnaXN0ZXJT
YXZlU2l6ZSwgc3AKKworICAgIHBvcENhbGxlZVNhdmVzCisgICAgZnVuY3Rpb25FcGlsb2d1ZSgp
CiAgICAgcmV0CiAKIC5zdGFja0hlaWdodE9LOgpAQCAtMzE2LDE4ICszMDQsMjIgQEAgbWFjcm8g
ZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VDYWxsKQogCiAuY29weUFyZ3NEb25lOgogICAgIHN0b3Jl
cCBzcCwgVk06OnRvcENhbGxGcmFtZVt2bV0KKyAgICBzdG9yZXAgY2ZyLCBWTTo6Y2FsbFRvSmF2
YVNjcmlwdEZyYW1lUG9pbnRlclt2bV0KIAogICAgIG1ha2VDYWxsKGVudHJ5LCB0ZW1wMSwgdGVt
cDIpCiAKLSAgICBicGVxIENvZGVCbG9ja1tjZnJdLCAxLCAuY2FsbGVlRnJhbWVQb3BwZWQKLSAg
ICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIKKyAgICBDYWxsVG9KYXZhU2NyaXB0RnJhbWVG
cm9tRnJhbWVQb2ludGVyKGNmciwgc3ApCiAKLS5jYWxsZWVGcmFtZVBvcHBlZDoKLSAgICBsb2Fk
cCBDYWxsZWVbY2ZyXSwgdGVtcDMgIyBWTQotICAgIGxvYWRwIFNjb3BlQ2hhaW5bY2ZyXSwgdGVt
cDQgIyBwcmV2aW91cyB0b3BDYWxsRnJhbWUKKyAgICBsb2FkcCBDYWxsVG9KYXZhU2NyaXB0RnJh
bWU6Om1fdm1bc3BdLCB0ZW1wMworICAgIGxvYWRwIENhbGxUb0phdmFTY3JpcHRGcmFtZTo6bV90
b3BDYWxsRnJhbWVbc3BdLCB0ZW1wNAogICAgIHN0b3JlcCB0ZW1wNCwgVk06OnRvcENhbGxGcmFt
ZVt0ZW1wM10KKyAgICBsb2FkcCBDYWxsVG9KYXZhU2NyaXB0RnJhbWU6Om1fcHJldkNhbGxUb0ph
dmFTY3JpcHRGcmFtZVtzcF0sIHRlbXA0CisgICAgc3RvcmVwIHRlbXA0LCBWTTo6Y2FsbFRvSmF2
YVNjcmlwdEZyYW1lUG9pbnRlclt0ZW1wM10KKworICAgIHN1YnAgY2ZyLCBDYWxsZWVSZWdpc3Rl
clNhdmVTaXplLCBzcAogCi0gICAgY2FsbFRvSmF2YVNjcmlwdEVwaWxvZ3VlKCkKKyAgICBwb3BD
YWxsZWVTYXZlcworICAgIGZ1bmN0aW9uRXBpbG9ndWUoKQogICAgIHJldAogZW5kCiAKQEAgLTM3
OCwxOSArMzcwLDIwIEBAIF9oYW5kbGVVbmNhdWdodEV4Y2VwdGlvbjoKICAgICBsb2FkcCBNYXJr
ZWRCbG9jazo6bV93ZWFrU2V0ICsgV2Vha1NldDo6bV92bVt0M10sIHQzCiAgICAgbG9hZHAgVk06
OmNhbGxGcmFtZUZvclRocm93W3QzXSwgY2ZyCiAKLSAgICAjIFNvIGZhciwgd2UndmUgdW53b3Vu
ZCB0aGUgc3RhY2sgdG8gdGhlIGZyYW1lIGp1c3QgYmVsb3cgdGhlIHNlbnRpbmVsIGZyYW1lLCBl
eGNlcHQKLSAgICAjIGluIHRoZSBjYXNlIG9mIHN0YWNrIG92ZXJmbG93IGluIHRoZSBmaXJzdCBm
dW5jdGlvbiBjYWxsZWQgZnJvbSBjYWxsVG9KYXZhU2NyaXB0LgotICAgICMgQ2hlY2sgaWYgd2Ug
bmVlZCB0byBwb3AgdG8gdGhlIHNlbnRpbmVsIGZyYW1lIGFuZCBkbyB0aGUgbmVjZXNzYXJ5IGNs
ZWFuIHVwIGZvcgotICAgICMgcmV0dXJuaW5nIHRvIHRoZSBjYWxsZXIgQyBmcmFtZS4KLSAgICBi
cGVxIENvZGVCbG9ja1tjZnJdLCAxLCAuaGFuZGxlVW5jYXVnaHRFeGNlcHRpb25BbHJlYWR5SXNT
ZW50aW5lbAogICAgIGxvYWRwIENhbGxlckZyYW1lICsgUGF5bG9hZE9mZnNldFtjZnJdLCBjZnIK
LS5oYW5kbGVVbmNhdWdodEV4Y2VwdGlvbkFscmVhZHlJc1NlbnRpbmVsOgogCi0gICAgbG9hZHAg
Q2FsbGVlICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MyAjIFZNCi0gICAgbG9hZHAgU2NvcGVDaGFp
biArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDUgIyBwcmV2aW91cyB0b3BDYWxsRnJhbWUKKyAgICBD
YWxsVG9KYXZhU2NyaXB0RnJhbWVGcm9tRnJhbWVQb2ludGVyKGNmciwgc3ApCisKKyAgICBsb2Fk
cCBDYWxsVG9KYXZhU2NyaXB0RnJhbWU6Om1fdm1bc3BdLCB0MworICAgIGxvYWRwIENhbGxUb0ph
dmFTY3JpcHRGcmFtZTo6bV90b3BDYWxsRnJhbWVbc3BdLCB0NQogICAgIHN0b3JlcCB0NSwgVk06
OnRvcENhbGxGcmFtZVt0M10KKyAgICBsb2FkcCBDYWxsVG9KYXZhU2NyaXB0RnJhbWU6Om1fcHJl
dkNhbGxUb0phdmFTY3JpcHRGcmFtZVtzcF0sIHQ1CisgICAgc3RvcmVwIHQ1LCBWTTo6Y2FsbFRv
SmF2YVNjcmlwdEZyYW1lUG9pbnRlclt0M10KIAotICAgIGNhbGxUb0phdmFTY3JpcHRFcGlsb2d1
ZSgpCisgICAgc3VicCBjZnIsIENhbGxlZVJlZ2lzdGVyU2F2ZVNpemUsIHNwCisKKyAgICBwb3BD
YWxsZWVTYXZlcworICAgIGZ1bmN0aW9uRXBpbG9ndWUoKQogICAgIHJldAogCiBtYWNybyBkb1Jl
dHVybkZyb21Ib3N0RnVuY3Rpb24oZXh0cmFTdGFja1NwYWNlKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJl
dmlzaW9uIDE3MjM1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsNDcgKzE3MSwyOSBAQCBtYWNy
byBkb0NhbGxUb0phdmFTY3JpcHQobWFrZUNhbGwpCiAgICAgICAgIGNvbnN0IHRlbXAzID0gdDYK
ICAgICBlbmQKIAotICAgIGNhbGxUb0phdmFTY3JpcHRQcm9sb2d1ZSgpCisgICAgZnVuY3Rpb25Q
cm9sb2d1ZSgpCisgICAgcHVzaENhbGxlZVNhdmVzCiAKLSAgICBpZiBYODZfNjQKLSAgICAgICAg
bG9hZHAgNyo4W3NwXSwgcHJldmlvdXNQQwotICAgICAgICBtb3ZlIDYqOFtzcF0sIHByZXZpb3Vz
Q0ZSCi0gICAgZWxzaWYgWDg2XzY0X1dJTgotICAgICAgICAjIFdpbjY0IHB1c2hlcyB0d28gbW9y
ZSByZWdpc3RlcnMKLSAgICAgICAgbG9hZHAgOSo4W3NwXSwgcHJldmlvdXNQQwotICAgICAgICBt
b3ZlIDgqOFtzcF0sIHByZXZpb3VzQ0ZSCi0gICAgZWxzaWYgQVJNNjQKLSAgICAgICAgbW92ZSBj
ZnIsIHByZXZpb3VzQ0ZSCi0gICAgZW5kCisgICAgQ2FsbFRvSmF2YVNjcmlwdEZyYW1lRnJvbUZy
YW1lUG9pbnRlcihjZnIsIHNwKQogCiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodGVt
cDIsIDB4YmFkMGRjMDEpCiAKLSAgICAjIFRoZSBzdGFjayByZXNlcnZlZCB6b25lIGVuc3VyZXMg
dGhhdCB3ZSBoYXZlIGFkZXF1YXRlIHNwYWNlIGZvciB0aGUKLSAgICAjIFZNRW50cnlTZW50aW5l
bEZyYW1lLiBQcm9jZWVkIHdpdGggYWxsb2NhdGluZyBhbmQgaW5pdGlhbGl6aW5nIHRoZQotICAg
ICMgc2VudGluZWwgZnJhbWUuCi0gICAgbW92ZSBzcCwgY2ZyCi0gICAgc3VicCBDYWxsRnJhbWVI
ZWFkZXJTbG90cyAqIDgsIGNmcgotICAgIHN0b3JlcCAwLCBBcmd1bWVudENvdW50W2Nmcl0KLSAg
ICBzdG9yZXAgdm0sIENhbGxlZVtjZnJdCisgICAgc3RvcmVwIHZtLCBDYWxsVG9KYXZhU2NyaXB0
RnJhbWU6Om1fdm1bc3BdCiAgICAgbG9hZHAgVk06OnRvcENhbGxGcmFtZVt2bV0sIHRlbXAyCi0g
ICAgc3RvcmVwIHRlbXAyLCBTY29wZUNoYWluW2Nmcl0KLSAgICBzdG9yZXAgMSwgQ29kZUJsb2Nr
W2Nmcl0KLQotICAgIHN0b3JlcCBwcmV2aW91c1BDLCBSZXR1cm5QQ1tjZnJdCi0gICAgc3RvcmVw
IHByZXZpb3VzQ0ZSLCBDYWxsZXJGcmFtZVtjZnJdCisgICAgc3RvcmVwIHRlbXAyLCBDYWxsVG9K
YXZhU2NyaXB0RnJhbWU6Om1fdG9wQ2FsbEZyYW1lW3NwXQorICAgIGxvYWRwIFZNOjpjYWxsVG9K
YXZhU2NyaXB0RnJhbWVQb2ludGVyW3ZtXSwgdGVtcDIKKyAgICBzdG9yZXAgdGVtcDIsIENhbGxU
b0phdmFTY3JpcHRGcmFtZTo6bV9wcmV2Q2FsbFRvSmF2YVNjcmlwdEZyYW1lW3NwXQogCiAgICAg
bG9hZGkgUHJvdG9DYWxsRnJhbWU6OnBhZGRlZEFyZ0NvdW50W3Byb3RvQ2FsbEZyYW1lXSwgdGVt
cDIKICAgICBhZGRwIENhbGxGcmFtZUhlYWRlclNsb3RzLCB0ZW1wMiwgdGVtcDIKICAgICBsc2hp
ZnRwIDMsIHRlbXAyCi0gICAgc3VicCBjZnIsIHRlbXAyLCB0ZW1wMQorICAgIHN1YnAgc3AsIHRl
bXAyLCB0ZW1wMQogCiAgICAgIyBFbnN1cmUgdGhhdCB3ZSBoYXZlIGVub3VnaCBhZGRpdGlvbmFs
IHN0YWNrIGNhcGFjaXR5IGZvciB0aGUgaW5jb21pbmcgYXJncywKICAgICAjIGFuZCB0aGUgZnJh
bWUgZm9yIHRoZSBKUyBjb2RlIHdlJ3JlIGV4ZWN1dGluZy4gV2UgbmVlZCB0byBkbyB0aGlzIGNo
ZWNrCiAgICAgIyBiZWZvcmUgd2Ugc3RhcnQgY29weWluZyB0aGUgYXJncyBmcm9tIHRoZSBwcm90
b0NhbGxGcmFtZSBiZWxvdy4KICAgICBicGFlcSB0ZW1wMSwgVk06Om1fanNTdGFja0xpbWl0W3Zt
XSwgLnN0YWNrSGVpZ2h0T0sKIAotICAgIG1vdmUgY2ZyLCBzcAotCiAgICAgaWYgQ19MT09QCiAg
ICAgICAgIG1vdmUgZW50cnksIHRlbXAyCiAgICAgICAgIG1vdmUgdm0sIHRlbXAzCkBAIC0yMjcs
NyArMjA5LDE5IEBAIG1hY3JvIGRvQ2FsbFRvSmF2YVNjcmlwdChtYWtlQ2FsbCkKICAgICBlbmQK
IAogICAgIGNDYWxsMihfbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IsIHZtLCBwcm90
b0NhbGxGcmFtZSkKLSAgICBjYWxsVG9KYXZhU2NyaXB0RXBpbG9ndWUoKQorCisgICAgQ2FsbFRv
SmF2YVNjcmlwdEZyYW1lRnJvbUZyYW1lUG9pbnRlcihjZnIsIHRlbXAyKQorCisgICAgbG9hZHAg
Q2FsbFRvSmF2YVNjcmlwdEZyYW1lOjptX3ZtW3RlbXAyXSwgdm0KKyAgICBsb2FkcCBDYWxsVG9K
YXZhU2NyaXB0RnJhbWU6Om1fdG9wQ2FsbEZyYW1lW3RlbXAyXSwgdGVtcDMKKyAgICBzdG9yZXAg
dGVtcDMsIFZNOjp0b3BDYWxsRnJhbWVbdm1dCisgICAgbG9hZHAgQ2FsbFRvSmF2YVNjcmlwdEZy
YW1lOjptX3ByZXZDYWxsVG9KYXZhU2NyaXB0RnJhbWVbdGVtcDJdLCB0ZW1wMworICAgIHN0b3Jl
cCB0ZW1wMywgVk06OmNhbGxUb0phdmFTY3JpcHRGcmFtZVBvaW50ZXJbdm1dCisKKyAgICBzdWJw
IGNmciwgQ2FsbGVlUmVnaXN0ZXJTYXZlU2l6ZSwgc3AKKworICAgIHBvcENhbGxlZVNhdmVzCisg
ICAgZnVuY3Rpb25FcGlsb2d1ZSgpCiAgICAgcmV0CiAKIC5zdGFja0hlaWdodE9LOgpAQCAtMjY5
LDYgKzI2Myw3IEBAIG1hY3JvIGRvQ2FsbFRvSmF2YVNjcmlwdChtYWtlQ2FsbCkKICAgICBlbHNl
CiAgICAgICAgIHN0b3JlcCBzcCwgVk06OnRvcENhbGxGcmFtZVt2bV0KICAgICBlbmQKKyAgICBz
dG9yZXAgY2ZyLCBWTTo6Y2FsbFRvSmF2YVNjcmlwdEZyYW1lUG9pbnRlclt2bV0KIAogICAgIG1v
dmUgMHhmZmZmMDAwMDAwMDAwMDAwLCBjc3IxCiAgICAgYWRkcCAyLCBjc3IxLCBjc3IyCkBAIC0y
NzksMjAgKzI3NCwxOCBAQCBtYWNybyBkb0NhbGxUb0phdmFTY3JpcHQobWFrZUNhbGwpCiAKICAg
ICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0ZW1wMywgMHhiYWQwZGMwMykKIAotICAgIGJw
ZXEgQ29kZUJsb2NrW2Nmcl0sIDEsIC5jYWxsZWVGcmFtZVBvcHBlZAotICAgIGxvYWRwIENhbGxl
ckZyYW1lW2Nmcl0sIGNmcgorICAgIENhbGxUb0phdmFTY3JpcHRGcmFtZUZyb21GcmFtZVBvaW50
ZXIoY2ZyLCB0ZW1wMikKIAotLmNhbGxlZUZyYW1lUG9wcGVkOgotICAgIGxvYWRwIENhbGxlZVtj
ZnJdLCB0ZW1wMiAjIFZNCi0gICAgbG9hZHAgU2NvcGVDaGFpbltjZnJdLCB0ZW1wMyAjIHByZXZp
b3VzIHRvcENhbGxGcmFtZQotICAgIHN0b3JlcCB0ZW1wMywgVk06OnRvcENhbGxGcmFtZVt0ZW1w
Ml0KKyAgICBsb2FkcCBDYWxsVG9KYXZhU2NyaXB0RnJhbWU6Om1fdm1bdGVtcDJdLCB2bQorICAg
IGxvYWRwIENhbGxUb0phdmFTY3JpcHRGcmFtZTo6bV90b3BDYWxsRnJhbWVbdGVtcDJdLCB0ZW1w
MworICAgIHN0b3JlcCB0ZW1wMywgVk06OnRvcENhbGxGcmFtZVt2bV0KKyAgICBsb2FkcCBDYWxs
VG9KYXZhU2NyaXB0RnJhbWU6Om1fcHJldkNhbGxUb0phdmFTY3JpcHRGcmFtZVt0ZW1wMl0sIHRl
bXAzCisgICAgc3RvcmVwIHRlbXAzLCBWTTo6Y2FsbFRvSmF2YVNjcmlwdEZyYW1lUG9pbnRlclt2
bV0KIAotICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHRlbXAzLCAweGJhZDBkYzA0KQor
ICAgIHN1YnAgY2ZyLCBDYWxsZWVSZWdpc3RlclNhdmVTaXplLCBzcAogCi0gICAgaWYgWDg2XzY0
IG9yIFg4Nl82NF9XSU4KLSAgICAgICAgcG9wIHQ1Ci0gICAgZW5kCi0gICAgY2FsbFRvSmF2YVNj
cmlwdEVwaWxvZ3VlKCkKKyAgICBwb3BDYWxsZWVTYXZlcworICAgIGZ1bmN0aW9uRXBpbG9ndWUo
KQogCiAgICAgcmV0CiBlbmQKQEAgLTM0NiwxOSArMzM5LDE5IEBAIF9oYW5kbGVVbmNhdWdodEV4
Y2VwdGlvbjoKICAgICBsb2FkcCBNYXJrZWRCbG9jazo6bV93ZWFrU2V0ICsgV2Vha1NldDo6bV92
bVt0M10sIHQzCiAgICAgbG9hZHAgVk06OmNhbGxGcmFtZUZvclRocm93W3QzXSwgY2ZyCiAKLSAg
ICAjIFNvIGZhciwgd2UndmUgdW53b3VuZCB0aGUgc3RhY2sgdG8gdGhlIGZyYW1lIGp1c3QgYmVs
b3cgdGhlIHNlbnRpbmVsIGZyYW1lLCBleGNlcHQKLSAgICAjIGluIHRoZSBjYXNlIG9mIHN0YWNr
IG92ZXJmbG93IGluIHRoZSBmaXJzdCBmdW5jdGlvbiBjYWxsZWQgZnJvbSBjYWxsVG9KYXZhU2Ny
aXB0LgotICAgICMgQ2hlY2sgaWYgd2UgbmVlZCB0byBwb3AgdG8gdGhlIHNlbnRpbmVsIGZyYW1l
IGFuZCBkbyB0aGUgbmVjZXNzYXJ5IGNsZWFuIHVwIGZvcgotICAgICMgcmV0dXJuaW5nIHRvIHRo
ZSBjYWxsZXIgQyBmcmFtZS4KLSAgICBicGVxIENvZGVCbG9ja1tjZnJdLCAxLCAuaGFuZGxlVW5j
YXVnaHRFeGNlcHRpb25BbHJlYWR5SXNTZW50aW5lbAogICAgIGxvYWRwIENhbGxlckZyYW1lW2Nm
cl0sIGNmcgotLmhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uQWxyZWFkeUlzU2VudGluZWw6CisgICAg
Q2FsbFRvSmF2YVNjcmlwdEZyYW1lRnJvbUZyYW1lUG9pbnRlcihjZnIsIHQyKQogCi0gICAgbG9h
ZHAgQ2FsbGVlW2Nmcl0sIHQzICMgVk0KLSAgICBsb2FkcCBTY29wZUNoYWluW2Nmcl0sIHQ1ICMg
cHJldmlvdXMgdG9wQ2FsbEZyYW1lCisgICAgbG9hZHAgQ2FsbFRvSmF2YVNjcmlwdEZyYW1lOjpt
X3ZtW3QyXSwgdDMKKyAgICBsb2FkcCBDYWxsVG9KYXZhU2NyaXB0RnJhbWU6Om1fdG9wQ2FsbEZy
YW1lW3QyXSwgdDUKICAgICBzdG9yZXAgdDUsIFZNOjp0b3BDYWxsRnJhbWVbdDNdCisgICAgbG9h
ZHAgQ2FsbFRvSmF2YVNjcmlwdEZyYW1lOjptX3ByZXZDYWxsVG9KYXZhU2NyaXB0RnJhbWVbdDJd
LCB0NQorICAgIHN0b3JlcCB0NSwgVk06OmNhbGxUb0phdmFTY3JpcHRGcmFtZVBvaW50ZXJbdDNd
CiAKLSAgICBjYWxsVG9KYXZhU2NyaXB0RXBpbG9ndWUoKQorICAgIHN1YnAgY2ZyLCBDYWxsZWVS
ZWdpc3RlclNhdmVTaXplLCBzcAorCisgICAgcG9wQ2FsbGVlU2F2ZXMKKyAgICBmdW5jdGlvbkVw
aWxvZ3VlKCkKICAgICByZXQKIAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxNzIzNTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtp
bmcgY29weSkKQEAgLTQyLDYgKzQyLDkgQEAgY29uc3QgQ2FsbEZyYW1lQWxpZ25TbG90cyA9IDEK
IGVuZAogY29uc3QgU2xvdFNpemUgPSA4CiAKK2NvbnN0IFN0YWNrQWxpZ25tZW50ID0gMTYKK2Nv
bnN0IFN0YWNrQWxpZ25tZW50TWFzayA9IFN0YWNrQWxpZ25tZW50IC0gMQorCiBjb25zdCBDYWxs
ZXJGcmFtZUFuZFBDU2l6ZSA9IDIgKiBQdHJTaXplCiAKIGNvbnN0IENhbGxlckZyYW1lID0gMApA
QCAtNTMsNiArNTYsMjQgQEAgY29uc3QgQXJndW1lbnRDb3VudCA9IENhbGxlZSArIFNsb3RTaXpl
CiBjb25zdCBUaGlzQXJndW1lbnRPZmZzZXQgPSBBcmd1bWVudENvdW50ICsgU2xvdFNpemUKIGNv
bnN0IENhbGxGcmFtZUhlYWRlclNpemUgPSBUaGlzQXJndW1lbnRPZmZzZXQKIAoraWYgQ19MT09Q
CisgICAgY29uc3QgQ2FsbGVlU2F2ZVJlZ2lzdGVyQ291bnQgPSAwCitlbHNpZiBYODYgb3IgWDg2
X1dJTgorICAgIGNvbnN0IENhbGxlZVNhdmVSZWdpc3RlckNvdW50ID0gMworZWxzaWYgWDg2XzY0
IG9yIFNINAorICAgIGNvbnN0IENhbGxlZVNhdmVSZWdpc3RlckNvdW50ID0gNQorZWxzaWYgQVJN
IG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMCisgICAgY29uc3QgQ2FsbGVlU2F2ZVJlZ2lz
dGVyQ291bnQgPSA3CitlbHNpZiBBUk02NCBvciBNSVBTCisgICAgY29uc3QgQ2FsbGVlU2F2ZVJl
Z2lzdGVyQ291bnQgPSAxMAorZW5kCisKK2NvbnN0IENhbGxlZVJlZ2lzdGVyU2F2ZVNpemUgPSBD
YWxsZWVTYXZlUmVnaXN0ZXJDb3VudCAqIFB0clNpemUKKworIyBDYWxsVG9KYXZhU2NyaXB0VG90
YWxGcmFtZVNpemUgaW5jbHVkZXMgdGhlIHNwYWNlIGZvciBzdHJ1Y3QgQ2FsbFRvSmF2YVNjcmlw
dEZyYW1lIGFuZCB0aGUKKyMgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzIHJvdW5kZWQgdXAgdG8ga2Vl
cCB0aGUgc3RhY2sgYWxpZ25lZAorY29uc3QgQ2FsbFRvSmF2YVNjcmlwdFRvdGFsRnJhbWVTaXpl
ID0gKENhbGxlZVJlZ2lzdGVyU2F2ZVNpemUgKyBzaXplb2YgQ2FsbFRvSmF2YVNjcmlwdEZyYW1l
ICsgU3RhY2tBbGlnbm1lbnQgLSAxKSAmIH5TdGFja0FsaWdubWVudE1hc2sKKwogIyBTb21lIHZh
bHVlIHJlcHJlc2VudGF0aW9uIGNvbnN0YW50cy4KIGlmIEpTVkFMVUU2NAogY29uc3QgVGFnQml0
VHlwZU90aGVyID0gMHgyCkBAIC0yMzUsOSArMjU2LDkgQEAgbWFjcm8gY2hlY2tTdGFja1BvaW50
ZXJBbGlnbm1lbnQodGVtcFJlZwogICAgICAgICBpZiBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJB
RElUSU9OQUwKICAgICAgICAgICAgICMgQVJNIGNhbid0IGRvIGxvZ2ljYWwgb3BzIHdpdGggdGhl
IHNwIGFzIGEgc291cmNlCiAgICAgICAgICAgICBtb3ZlIHNwLCB0ZW1wUmVnCi0gICAgICAgICAg
ICBhbmRwIDB4ZiwgdGVtcFJlZworICAgICAgICAgICAgYW5kcCBTdGFja0FsaWdubWVudE1hc2ss
IHRlbXBSZWcKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYW5kcCBzcCwgMHhmLCB0ZW1wUmVn
CisgICAgICAgICAgICBhbmRwIHNwLCBTdGFja0FsaWdubWVudE1hc2ssIHRlbXBSZWcKICAgICAg
ICAgZW5kCiAgICAgICAgIGJ0cHogdGVtcFJlZywgLnN0YWNrUG9pbnRlck9rYXkKICAgICAgICAg
bW92ZSBsb2NhdGlvbiwgdGVtcFJlZwpAQCAtMzE3LDczICszMzgsOCBAQCBtYWNybyBmdW5jdGlv
bkVwaWxvZ3VlKCkKICAgICBlbmQKIGVuZAogCi1tYWNybyBjYWxsVG9KYXZhU2NyaXB0UHJvbG9n
dWUoKQotICAgIGlmIFg4Nl82NCBvciBYODZfNjRfV0lOCi0gICAgICAgIHB1c2ggY2ZyCi0gICAg
ICAgIHB1c2ggdDAKLSAgICBlbHNpZiBYODYgb3IgWDg2X1dJTgotICAgICAgICBwdXNoIGNmcgot
ICAgIGVsc2lmIEFSTTY0Ci0gICAgICAgIHB1c2hMUkFuZEZQCi0gICAgZWxzaWYgQ19MT09QIG9y
IEFSTSBvciBBUk12NyBvciBBUk12N19UUkFESVRJT05BTCBvciBNSVBTIG9yIFNINAotICAgICAg
ICBwdXNoIGxyCi0gICAgICAgIHB1c2ggY2ZyCi0gICAgZW5kCi0gICAgcHVzaENhbGxlZVNhdmVz
Ci0gICAgaWYgWDg2Ci0gICAgICAgIHN1YnAgMTIsIHNwCi0gICAgZWxzaWYgWDg2X1dJTgotICAg
ICAgICBzdWJwIDE2LCBzcAotICAgICAgICBtb3ZlIHNwLCB0NAotICAgICAgICBtb3ZlIHQ0LCB0
MAotICAgICAgICBtb3ZlIHQ0LCB0MgotICAgICAgICBhbmRwIDB4ZiwgdDIKLSAgICAgICAgYW5k
cCAweGZmZmZmZmYwLCB0MAotICAgICAgICBtb3ZlIHQwLCBzcAotICAgICAgICBzdG9yZXAgdDQs
IFtzcF0KLSAgICBlbHNpZiBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwKLSAgICAg
ICAgc3VicCA0LCBzcAotICAgICAgICBtb3ZlIHNwLCB0NAotICAgICAgICBjbHJicCB0NCwgMHhm
LCB0NQotICAgICAgICBtb3ZlIHQ1LCBzcAotICAgICAgICBzdG9yZXAgdDQsIFtzcF0KLSAgICBl
bmQKLWVuZAotCi1tYWNybyBjYWxsVG9KYXZhU2NyaXB0RXBpbG9ndWUoKQotICAgIGlmIEFSTXY3
Ci0gICAgICAgIGFkZHAgQ2FsbEZyYW1lSGVhZGVyU2xvdHMgKiA4LCBjZnIsIHQ0Ci0gICAgICAg
IG1vdmUgdDQsIHNwCi0gICAgZWxzZQotICAgICAgICBhZGRwIENhbGxGcmFtZUhlYWRlclNsb3Rz
ICogOCwgY2ZyLCBzcAotICAgIGVuZAotCi0gICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgY2Zy
Ci0KLSAgICBpZiBYODYKLSAgICAgICAgYWRkcCAxMiwgc3AKLSAgICBlbHNpZiBYODZfV0lOCi0g
ICAgICAgIHBvcCB0NAotICAgICAgICBtb3ZlIHQ0LCBzcAotICAgICAgICBhZGRwIDE2LCBzcAot
ICAgIGVsc2lmIEFSTSBvciBBUk12NyBvciBBUk12N19UUkFESVRJT05BTAotICAgICAgICBwb3Ag
dDQKLSAgICAgICAgbW92ZSB0NCwgc3AKLSAgICAgICAgYWRkcCA0LCBzcAotICAgIGVuZAotCi0g
ICAgcG9wQ2FsbGVlU2F2ZXMKLSAgICBpZiBYODZfNjQgb3IgWDg2XzY0X1dJTgotICAgICAgICBw
b3AgdDIKLSAgICAgICAgcG9wIGNmcgotICAgIGVsc2lmIFg4NiBvciBYODZfV0lOCi0gICAgICAg
IHBvcCBjZnIKLSAgICBlbHNpZiBBUk02NAotICAgICAgICBwb3BMUkFuZEZQCi0gICAgZWxzaWYg
Q19MT09QIG9yIEFSTSBvciBBUk12NyBvciBBUk12N19UUkFESVRJT05BTCBvciBNSVBTIG9yIFNI
NAotICAgICAgICBwb3AgY2ZyCi0gICAgICAgIHBvcCBscgotICAgIGVuZAorbWFjcm8gQ2FsbFRv
SmF2YVNjcmlwdEZyYW1lRnJvbUZyYW1lUG9pbnRlcihmcmFtZVBvaW50ZXIsIHJlc3VsdFJlZykK
KyAgICBzdWJwIGZyYW1lUG9pbnRlciwgQ2FsbFRvSmF2YVNjcmlwdFRvdGFsRnJhbWVTaXplLCBy
ZXN1bHRSZWcKIGVuZAogCiBtYWNybyBtb3ZlU3RhY2tQb2ludGVyRm9yQ29kZUJsb2NrKGNvZGVC
bG9jaywgc2NyYXRjaCkKQEAgLTYyOCw4ICs1ODQsOCBAQCBtYWNybyBkb1JldHVybigpCiBlbmQK
IAogIyBzdHViIHRvIGNhbGwgaW50byBKYXZhU2NyaXB0IG9yIE5hdGl2ZSBmdW5jdGlvbnMKLSMg
RW5jb2RlZEpTVmFsdWUgY2FsbFRvSmF2YVNjcmlwdCh2b2lkKiBjb2RlLCBFeGVjU3RhdGUqKiB2
bVRvcENhbGxGcmFtZSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvRnJhbWUpCi0jIEVuY29kZWRKU1Zh
bHVlIGNhbGxUb05hdGl2ZUZ1bmN0aW9uKHZvaWQqIGNvZGUsIEV4ZWNTdGF0ZSoqIHZtVG9wQ2Fs
bEZyYW1lLCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFtZSkKKyMgRW5jb2RlZEpTVmFsdWUgY2Fs
bFRvSmF2YVNjcmlwdCh2b2lkKiBjb2RlLCBWTSogdm0sIFByb3RvQ2FsbEZyYW1lKiBwcm90b0Zy
YW1lKQorIyBFbmNvZGVkSlNWYWx1ZSBjYWxsVG9OYXRpdmVGdW5jdGlvbih2b2lkKiBjb2RlLCBW
TSogdm0sIFByb3RvQ2FsbEZyYW1lKiBwcm90b0ZyYW1lKQogCiBpZiBDX0xPT1AKIF9sbGludF9j
YWxsX3RvX2phdmFzY3JpcHQ6CkBAIC02ODksNiArNjQ1LDI4IEBAIF9zYW5pdGl6ZVN0YWNrRm9y
Vk1JbXBsOgogICAgIG1vdmUgc3AsIGFkZHJlc3MKICAgICBzdG9yZXAgYWRkcmVzcywgVk06Om1f
bGFzdFN0YWNrVG9wW3ZtXQogICAgIHJldAorCisKKyMgQ2FsbFRvSmF2YVNjcmlwdEZyYW1lKiBj
YWxsVG9KYXZhU2NyaXB0RnJhbWVGcm9tRnJhbWVQb2ludGVyKGNvbnN0IENhbGxGcmFtZSogY2Fs
bEZyYW1lKQorZ2xvYmFsIF9jYWxsVG9KYXZhU2NyaXB0RnJhbWVGcm9tRnJhbWVQb2ludGVyCitf
Y2FsbFRvSmF2YVNjcmlwdEZyYW1lRnJvbUZyYW1lUG9pbnRlcjoKKyAgICBpZiBYODZfNjQKKyAg
ICAgICAgY29uc3QgY2FsbEZyYW1lID0gdDQKKyAgICAgICAgY29uc3QgcmVzdWx0ID0gdDAKKyAg
ICBlbHNpZiBYODYgb3IgWDg2X1dJTgorICAgICAgICBjb25zdCBjYWxsRnJhbWUgPSB0MgorICAg
ICAgICBjb25zdCByZXN1bHQgPSB0MAorICAgIGVsc2UKKyAgICAgICAgY29uc3QgY2FsbEZyYW1l
ID0gYTAKKyAgICAgICAgY29uc3QgcmVzdWx0ID0gdDAKKyAgICBlbmQKKworICAgIGlmIFg4NiBv
ciBYODZfV0lOCisgICAgICAgIGxvYWRwIDRbc3BdLCBjYWxsRnJhbWUKKyAgICBlbmQKKworICAg
IENhbGxUb0phdmFTY3JpcHRGcmFtZUZyb21GcmFtZVBvaW50ZXIoY2FsbEZyYW1lLCByZXN1bHQp
CisgICAgcmV0CiBlbmQKIAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CShyZXZpc2lvbiAxNzIzNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDcgQEAKICNpbmNsdWRlICJSZWdFeHBPYmpl
Y3QuaCIKICNpbmNsdWRlICJTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUg
IlNvdXJjZVByb3ZpZGVyQ2FjaGUuaCIKKyNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKICNpbmNs
dWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIK
ICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCkBAIC0xNDgsNiArMTQ5LDcgQEAgVk06OlZN
KFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgaGVhcCh0aGlzLCBoZWFw
VHlwZSkKICAgICAsIHZtVHlwZSh2bVR5cGUpCiAgICAgLCBjbGllbnREYXRhKDApCisgICAgLCBj
YWxsVG9KYXZhU2NyaXB0RnJhbWVQb2ludGVyKDApCiAgICAgLCB0b3BDYWxsRnJhbWUoQ2FsbEZy
YW1lOjpub0NhbGxlcigpKQogICAgICwgbV9hdG9taWNTdHJpbmdUYWJsZSh2bVR5cGUgPT0gRGVm
YXVsdCA/IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpIDogbmV3IEF0b21pY1N0
cmluZ1RhYmxlKQogICAgICwgcHJvcGVydHlOYW1lcyhudWxscHRyKQpAQCAtNTkzLDcgKzU5NSw0
MyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9yKENhbGxGcmFtCiAgICAgCiAgICAg
ZXhjZXB0aW9uLT5wdXREaXJlY3QoKnZtLCB2bS0+cHJvcGVydHlOYW1lcy0+bWVzc2FnZSwganNT
dHJpbmcodm0sIG1lc3NhZ2UpKTsKIH0KKworY2xhc3MgRmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRo
Q29kZWJsb2NrRnVuY3RvciB7CitwdWJsaWM6CisgICAgRmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRo
Q29kZWJsb2NrRnVuY3RvcihDYWxsRnJhbWUqIHN0YXJ0Q2FsbEZyYW1lKQorICAgICAgICA6IG1f
c3RhcnRDYWxsRnJhbWUoc3RhcnRDYWxsRnJhbWUpCisgICAgICAgICwgbV9mb3VuZENhbGxGcmFt
ZShudWxscHRyKQorICAgICAgICAsIG1fZm91bmRTdGFydENhbGxGcmFtZShmYWxzZSkKKyAgICAg
ICAgLCBtX2luZGV4KDApCisgICAgeyB9CisgICAgCisgICAgU3RhY2tWaXNpdG9yOjpTdGF0dXMg
b3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpCisgICAgeworICAgICAgICBpZiAoIW1f
Zm91bmRTdGFydENhbGxGcmFtZSAmJiAodmlzaXRvci0+Y2FsbEZyYW1lKCkgPT0gbV9zdGFydENh
bGxGcmFtZSkpCisgICAgICAgICAgICBtX2ZvdW5kU3RhcnRDYWxsRnJhbWUgPSB0cnVlOworICAg
ICAgICAKKyAgICAgICAgaWYgKG1fZm91bmRTdGFydENhbGxGcmFtZSkgeworICAgICAgICAgICAg
aWYgKHZpc2l0b3ItPmNhbGxGcmFtZSgpLT5jb2RlQmxvY2soKSkgeworICAgICAgICAgICAgICAg
IG1fZm91bmRDYWxsRnJhbWUgPSB2aXNpdG9yLT5jYWxsRnJhbWUoKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
bV9pbmRleCsrOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29u
dGludWU7CisgICAgfQogICAgIAorICAgIENhbGxGcmFtZSogZm91bmRDYWxsRnJhbWUoKSBjb25z
dCB7IHJldHVybiBtX2ZvdW5kQ2FsbEZyYW1lOyB9CisgICAgdW5zaWduZWQgaW5kZXgoKSBjb25z
dCB7IHJldHVybiBtX2luZGV4OyB9CisgICAgCitwcml2YXRlOgorICAgIENhbGxGcmFtZSogbV9z
dGFydENhbGxGcmFtZTsKKyAgICBDYWxsRnJhbWUqIG1fZm91bmRDYWxsRnJhbWU7CisgICAgYm9v
bCBtX2ZvdW5kU3RhcnRDYWxsRnJhbWU7CisgICAgdW5zaWduZWQgbV9pbmRleDsKK307CisgICAg
CisKIEpTVmFsdWUgVk06OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBl
cnJvcikKIHsKICAgICBpZiAoT3B0aW9uczo6YnJlYWtPblRocm93KCkpIHsKQEAgLTYzMSwxMiAr
NjY5LDExIEBAIEpTVmFsdWUgVk06OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXgKICAgICAg
ICAgICAgIGV4Y2VwdGlvbi0+cHV0RGlyZWN0KCp0aGlzLCBJZGVudGlmaWVyKHRoaXMsICJzb3Vy
Y2VVUkwiKSwganNTdHJpbmcodGhpcywgc3RhY2tGcmFtZS5zb3VyY2VVUkwpLCBSZWFkT25seSB8
IERvbnREZWxldGUpOwogICAgIH0KICAgICBpZiAoZXhjZXB0aW9uLT5pc0Vycm9ySW5zdGFuY2Uo
KSAmJiBzdGF0aWNfY2FzdDxFcnJvckluc3RhbmNlKj4oZXhjZXB0aW9uKS0+YXBwZW5kU291cmNl
VG9NZXNzYWdlKCkpIHsKLSAgICAgICAgdW5zaWduZWQgc3RhY2tJbmRleCA9IDA7Ci0gICAgICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lOwotICAgICAgICBmb3IgKGNhbGxGcmFtZSA9IGV4ZWM7IGNh
bGxGcmFtZSAmJiAhY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsgKSB7Ci0gICAgICAgICAgICBzdGFj
a0luZGV4Kys7Ci0gICAgICAgICAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1l
U2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKTsKLSAgICAgICAgfQorICAgICAgICBGaW5kRmlyc3RD
YWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yIGZ1bmN0b3IoZXhlYyk7CisgICAgICAgIHRv
cENhbGxGcmFtZS0+aXRlcmF0ZShmdW5jdG9yKTsKKyAgICAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBmdW5jdG9yLmZvdW5kQ2FsbEZyYW1lKCk7CisgICAgICAgIHVuc2lnbmVkIHN0YWNrSW5k
ZXggPSBmdW5jdG9yLmluZGV4KCk7CisKICAgICAgICAgaWYgKGNhbGxGcmFtZSAmJiBjYWxsRnJh
bWUtPmNvZGVCbG9jaygpKSB7CiAgICAgICAgICAgICBzdGFja0ZyYW1lID0gc3RhY2tUcmFjZS5h
dChzdGFja0luZGV4KTsKICAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gc3RhY2tGcmFtZS5i
eXRlY29kZU9mZnNldDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNp
b24gMTcyMzUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjM1LDYgKzIzNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFZN
VHlwZSB2bVR5cGU7CiAgICAgICAgIENsaWVudERhdGEqIGNsaWVudERhdGE7CisgICAgICAgIEV4
ZWNTdGF0ZSogY2FsbFRvSmF2YVNjcmlwdEZyYW1lUG9pbnRlcjsKICAgICAgICAgRXhlY1N0YXRl
KiB0b3BDYWxsRnJhbWU7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXRjaGRvZz4gd2F0Y2hk
b2c7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236667</attachid>
            <date>2014-08-15 12:07:59 -0700</date>
            <delta_ts>2014-08-15 13:45:33 -0700</delta_ts>
            <desc>Updated patch addressing prior concerns and with other changes from discussion with ggaren</desc>
            <filename>131578-5.patch</filename>
            <type>text/plain</type>
            <size>74579</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyNjMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MSBA
QAorMjAxNC0wOC0xNSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAg
ICAgICBDaGFuZ2UgY2FsbFRvSmF2YVNjcmlwdCBhbmQgY2FsbFRvTmF0aXZlRnVuY3Rpb24gc28g
dGhlaXIgY2FsbEZyYW1lcyBtYXRjaCB0aGUgbmF0aXZlIGNhbGxpbmcgY29udmVudGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTU3OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZWQgY2Fs
bFRvSmF2YVNjcmlwdCBhbmQgY2FsbFRvTmF0aXZlRnVuY3Rpb24gdG8gdm1FbnRyeVRvSmF2YVNj
cmlwdCBhbmQgdm1FbnRyeVRvTmF0aXZlLAorICAgICAgICByZXNwZWN0aXZlbHkuICBFbGltaW5h
dGVkIHRoZSBzZW50aW5lbCBmcmFtZSBhbmQgcmVwbGFjZWQgaXQgd2l0aCB0aGUgc3RydWN0dXJl
IFZNRW50cnlSZWNvcmQKKyAgICAgICAgdGhhdCBhcHBlYXJzIGluIHRoZSAibG9jYWxzIiBhcmVh
IG9mIGEgVk0gZW50cnkgc3RhY2sgZnJhbWUuICBDaGFuZ2VkIHRoZSBvcmRlciB0aGF0CisgICAg
ICAgIHZtRW50cnlUb0phdmFTY3JpcHQgYW5kIHZtRW50cnlUb05hdGl2ZSBjcmVhdGVzIHRoZWly
IHN0YWNrIGZyYW1lcyB0byBiZSBuYXRpdmUgY2FsbGluZworICAgICAgICBjb252ZW50aW9uIGNv
bXBsaWFudC4gIFRoYXQgaXMgdG8gc2F2ZSBwcmlvciBmcmFtZSBwb2ludGVyLCBzYXZlIGNhbGxl
ZSBzYXZlIHJlZ2lzdGVycywgdGhlbgorICAgICAgICBhbGxvY2F0ZSBhbmQgcG9wdWxhdGUgdGhl
IFZNRW50cnlSZWNvcmQsIGFuZCBmaW5hbGx5IGFsbG9jYXRlIGEgQ2FsbEZyYW1lIGZvciB0aGUg
SlMgZnVuY3Rpb24KKyAgICAgICAgdGhhdCB2bUVudHJ5VG9KYXZhU2NyaXB0IHdpbGwgaW52b2tl
LiAgVGhlIHRvcCBtb3N0IHZtIGVudHJ5IGZyYW1lIHBvaW50ZXIgaXMgc2F2ZWQgaW4KKyAgICAg
ICAgVk06OnRvcFZNRW50cnlDYWxsRnJhbWUuICBUaGUgdm1FbnRyeSBmdW5jdGlvbnMgc2F2ZSBw
cmlvciBjb250ZW50cyBvZiBWTTo6dG9wVk1FbnRyeUNhbGxGcmFtZQorICAgICAgICBhbG9uZyB3
aXRoIHRoZSBWTSBhbmQgVk06OnRvcENhbGxGcmFtZSBpbiB0aGUgVk1FbnRyeVJlY29yZCBpdCBw
bGFjZXMgb24gdGhlIHN0YWNrLiAgU3RhcnRpbmcKKyAgICAgICAgYXQgVk06OnRvcENhbGxGcmFt
ZSwgdGhlIHN0YWNrIGNhbiBiZSB3YWxrZWQgdXNpbmcgdGhlc2UgVk1FbnRyeVJlY29yZHMuCisK
KyAgICAgICAgQXJiaXRyYXJ5IHN0YWNrIHVud2luZGluZyBpcyBub3cgaGFuZGxlZCBlaXRoZXIg
aXRlcmF0aXZlbHkgYnkgbG9hZGluZyBWTTo6dG9wVk1FbnRyeUNhbGxGcmFtZQorICAgICAgICBp
bnRvIGEgbG9jYWwgdmFyaWFibGUgYW5kIHVzaW5nIENhbGxGcmFtZTo6Y2FsbGVyRnJhbWUoVk1F
bnRyeUZyYW1lKiYpIG9yIGJ5IHVzaW5nIFN0YWNrVmlzaXRvci4KKyAgICAgICAgR2l2ZW4gdGhh
dCB0aGUgc3RhY2sgaXMgZWZmZWN0aXZlbHkgYSBzaW5nbHkgbGlua2VkIGxpc3QsIGdlbmVyYWwg
c3RhY2sgdW53aW5kaW5nIG5lZWRzIHRvIHVzZQorICAgICAgICBvbmUgb2YgdGhlc2UgdHdvIG1l
dGhvZHMuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkaXRpb24gb2YgVk1FbnRyeVJlY29yZC5oCisKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgUmVuYW1pbmcgb2Yg
bGxpbnQgaGVscGVyIG9wY29kZXMgZHVlIHRvIHJlbmFtaW5nIGNhbGxUb0phdmFTY3JpcHQgYW5k
IGNhbGxUb05hdGl2ZUZ1bmN0aW9uLgorCisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuY3Bw
OgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6c3RlcE91dE9mRnVuY3Rpb24pOgorICAgICAgICAo
SlNDOjpEZWJ1Z2dlcjo6cmV0dXJuRXZlbnQpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6ZGlk
RXhlY3V0ZVByb2dyYW0pOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChmdW5jdGlvbkR1
bXBDYWxsRnJhbWUpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
Q2hhbmdlZCB1bndpbmRpbmcgdG8gdXNlIENhbGxGcmFtZTo6Y2FsbGVyRnJhbWUoVk1FbnRyeUZy
YW1lKiYpLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6UmVjdXJzaW9uQ2hlY2tGdW5jdG9yOjpSZWN1cnNpb25DaGVja0Z1bmN0b3IpOgorICAgICAg
ICAoSlNDOjpSZWN1cnNpb25DaGVja0Z1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlND
OjpSZWN1cnNpb25DaGVja0Z1bmN0b3I6OmRpZFJlY3Vyc2UpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6Om5vdGljZUluY29taW5nQ2FsbCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJD
YWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpGaW5kQ2FsbGVyTWlkU3RhY2tGdW5jdG9yOjpG
aW5kQ2FsbGVyTWlkU3RhY2tGdW5jdG9yKToKKyAgICAgICAgKEpTQzo6RmluZENhbGxlck1pZFN0
YWNrRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkZpbmRDYWxsZXJNaWRTdGFj
a0Z1bmN0b3I6OmdldENhbGxlckZyYW1lKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJh
bWU6OmNhbGxlckZyYW1lKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9WTUluc3BlY3Rvci5jcHA6
CisgICAgICAgIChKU0M6OkNvdW50RnJhbWVzRnVuY3Rvcjo6Q291bnRGcmFtZXNGdW5jdG9yKToK
KyAgICAgICAgKEpTQzo6Q291bnRGcmFtZXNGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAgICAgICAg
KEpTQzo6Q291bnRGcmFtZXNGdW5jdG9yOjpjb3VudCk6CisgICAgICAgIChKU0M6OlZNSW5zcGVj
dG9yOjpjb3VudEZyYW1lcyk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChK
U0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVi
bG9ja0Z1bmN0b3I6OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3IpOgor
ICAgICAgICAoSlNDOjpGaW5kRmlyc3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjpv
cGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJs
b2NrRnVuY3Rvcjo6Zm91bmRDYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjpGaW5kRmlyc3RDYWxs
ZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjppbmRleCk6CisgICAgICAgIChKU0M6OlZNOjp0
aHJvd0V4Y2VwdGlvbik6CisgICAgICAgIENoYW5nZWQgdW53aW5kaW5nIHRvIHVzZSBTdGFja1Zp
c2l0b3IgaW5jbHVkaW5nIGFkZGVkIGZ1bmN0b3IgY2xhc3Nlcy4KKworICAgICAgICAqIGludGVy
cHJldGVyL0NhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6Y2FsbGVyRnJh
bWUpOgorICAgICAgICBBZGRlZCBuZXcgZmxhdm9yIG9mIGNhbGxlckZyYW1lKCkgdGhhdCBjYW4g
aXRlcmF0aXZlbHkgdW53aW5kIHRoZSBzdGFjay4KKworICAgICAgICAqIGludGVycHJldGVyL0Nh
bGxGcmFtZS5oOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmNhbGxlckZyYW1lKTogQ2hhbmdl
ZCBjYWxsZXJGcmFtZSgpIHRvIHVzZSBwcml2YXRlIGNvbW1vbiBoZWxwZXIuCisgICAgICAgIChK
U0M6OkV4ZWNTdGF0ZTo6Y2FsbGVyRnJhbWVPclZNRW50cnlGcmFtZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkV4ZWNTdGF0ZTo6aXNWTUVudHJ5U2VudGluZWwpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpFeGVjU3RhdGU6OnZtRW50cnlTZW50aW5lbENhbGxlckZyYW1lKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjppbml0aWFsaXplVk1FbnRyeVNlbnRpbmVsRnJhbWUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmNhbGxlckZyYW1lU2tpcHBpbmdW
TUVudHJ5U2VudGluZWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnZtRW50
cnlTZW50aW5lbENvZGVCbG9jayk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBpbnRlcnByZXRlci9D
YWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjppbml0KToKKyAgICAgICAgKEpT
Qzo6RXhlY1N0YXRlOjp0b3BPZkZyYW1lKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJy
ZW50VlBDKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzZXRDdXJyZW50VlBDKToKKyAgICAg
ICAgRWxpbWluYXRlZCB1bm5lZGVkIGNoZWNraW5nIG9mIHNlbnRpbmVsIGZyYW1lLgorCisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjp1bndpbmRD
YWxsRnJhbWUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0U3RhY2tUcmFjZSk6IFVw
ZGF0ZWQgZm9yIHVud2lkbmluZyBjaGFuZ2VzLgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
dW53aW5kKTogRWxpbWluYXRlZCB1bm5lZWRlZCBzZW50aW5lbCBmcmFtZSBjaGVjay4KKworICAg
ICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJw
cmV0ZXI6OmV4ZWN1dGVDYWxsKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVD
b25zdHJ1Y3QpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5oOgorICAgICAgICAqIGxsaW50L0xM
SW50VGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFRvSmF2YVNjcmlwdCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OmNhbGxUb05hdGl2ZXRpb24pOiBEZWxldGVkLgorICAgICAgICAoSlND
Ojp2bUVudHJ5VG9KYXZhU2NyaXB0KToKKyAgICAgICAgKEpTQzo6dm1FbnRyeVRvTmF0aXZlKToK
KyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5oOgorICAgICAgICBVcGRhdGVkIGZvciB2bUVu
dHJ5VG9KYXZhU2NyaXB0IGFuZCB2bUVudHJ5VG9OYXRpdmUgbmFtZSBjaGFuZ2VzLgorCisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6VG9wQ2FsbEZy
YW1lU2V0dGVyOjpUb3BDYWxsRnJhbWVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpUb3BDYWxsRnJh
bWVTZXR0ZXI6On5Ub3BDYWxsRnJhbWVTZXR0ZXIpOgorICAgICAgICBFbGltaW5hdGVkIHVubmVl
ZGVkIHNlbnRpbmVsIGZyYW1lIGNoZWNrLgorCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6TmF0aXZlQ2FsbEZyYW1lVHJhY2VyOjpOYXRpdmVDYWxs
RnJhbWVUcmFjZXIpOgorICAgICAgICBSZW1vdmVkIHNlbnRpbmVsIHNwZWNpZmljIGNvbnN0cnVj
dG9yLgorCisgICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6U3RhY2tWaXNpdG9yOjpTdGFja1Zpc2l0b3IpOgorICAgICAgICAoSlNDOjpTdGFja1Zp
c2l0b3I6OnJlYWRGcmFtZSk6CisgICAgICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6cmVhZE5vbklu
bGluZWRGcmFtZSk6CisgICAgICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6cmVhZElubGluZWRGcmFt
ZSk6CisgICAgICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OnByaW50KToKKyAgICAgICAg
KiBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9y
OjpGcmFtZTo6Y2FsbGVySXNWTUVudHJ5KToKKyAgICAgICAgQ2hhbmdlcyBmb3IgdW53aW5kaW5n
IHVzaW5nIENhbGxGcmFtZTo6Y2FsbGVyRnJhbWUoVk1FbnRyeUZyYW1lKiYpLiAgQWxzbyBhZGRl
ZCBmaWVsZCB0aGF0CisgICAgICAgIGluZGljYXRlcyB3aGVuIGFib3V0IHRvIHN0ZXAgb3ZlciBh
IFZNIGVudHJ5IGZyYW1lLgorCisgICAgICAgICogaW50ZXJwcmV0ZXIvVk1FbnRyeVJlY29yZC5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Vk1FbnRyeVJlY29yZDo6cHJldlRvcENhbGxGcmFtZSk6
CisgICAgICAgIChKU0M6OlZNRW50cnlSZWNvcmQ6OnByZXZUb3BWTUVudHJ5Q2FsbEZyYW1lKToK
KyAgICAgICAgTmV3IHN0cnVjdCB0byByZWNvcmQgcHJpb3Igc3RhdGUgb2YgVk0ncyBub3Rpb24g
b2YgVk0gZW50cnkgYW5kIHRvcCBjYWxsIGZyYW1lcy4KKworICAgICAgICAqIGppdC9KSVRDb2Rl
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6ZXhlY3V0ZSk6CisgICAgICAgIFVzZSBuZXcg
dm1FbnRyeVRvSmF2YVNjcmlwdCBhbmQgdm1FbnRyeVRvTmF0aXZlIG5hbWUuCisgICAgICAgIAor
ICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6IEFkZGVkIGluY2x1ZGUg
Zm9yIFZNRW50cnlSZWNvcmQuaC4KKworICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgT2ZmbGlu
ZSBhc3NlbWJseSBpbXBsZW1lbnRhdGlvbiBvZiBjcmVhdGluZyBzdGFjayBmcmFtZSB3aXRoIFZN
RW50cnlSZWNvcmQgYW5kIHdlbGwgYXMgcmVzdG9yaW5nIAorICAgICAgICByZWxldmVudCBWTSBm
aWVsZHMgd2hlbiBleGl0aW5nIHRoZSBWTS4gIEFkZGVkIGEgaGVscGVyIHRoYXQgcmV0dXJucyBh
IFZNRW50cnlSZWNvcmQgZ2l2ZW4KKyAgICAgICAgYSBwb2ludGVyIHRvIHRoZSBWTSBlbnRyeSBm
cmFtZS4KKworICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6
dm1FbnRyeVJlY29yZEZyb21WTUVudHJ5RnJhbWUpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpDTG9vcDo6ZXhlY3V0ZSk6CisgICAgICAg
IEMgTG9vcCBjaGFuZ2VzIHRvIG1pcnJvciB0aGUgYXNzZW1ibHkgY2hhbmdlcy4KKworICAgICAg
ICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgQWRkZWQgdG9wVk1FbnRyeUNhbGxGcmFtZSBmaWVs
ZC4KKwogMjAxNC0wOC0xNCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgQWxsb2NhdGUgdGhlIHdob2xlIFJlZ0V4cE1hdGNoZXNBcnJheSBiYWNraW5nIHN0b3Jl
IHVwIGZyb250LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDE3MjU5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODcsOCAr
Njg3LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmkKICNpZm5k
ZWYgTkRFQlVHCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcENhbGxG
cmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgaWYgKCFleGVjLT5jYWxsZXJGcmFtZSgpLT5p
c1ZNRW50cnlTZW50aW5lbCgpKQotICAgICAgICBleGVjLT52bSgpLmludGVycHJldGVyLT5kdW1w
Q2FsbEZyYW1lKGV4ZWMtPmNhbGxlckZyYW1lKCkpOworICAgIFZNRW50cnlGcmFtZSogdG9wVk1F
bnRyeUNhbGxGcmFtZSA9IGV4ZWMtPnZtKCkudG9wVk1FbnRyeUNhbGxGcmFtZTsKKyAgICBFeGVj
U3RhdGUqIGNhbGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWUodG9wVk1FbnRyeUNhbGxGcmFt
ZSk7CisgICAgaWYgKGNhbGxlckZyYW1lKQorICAgICAgICBleGVjLT52bSgpLmludGVycHJldGVy
LT5kdW1wQ2FsbEZyYW1lKGNhbGxlckZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE3MjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNzEsNiArMTI3MSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxp
bnRlcnByZXRlclxDYWxsRnJhbWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGlu
dGVycHJldGVyXENhbGxGcmFtZUlubGluZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGludGVycHJldGVyXENhbGxGcmFtZUNsb3N1cmUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGludGVycHJldGVyXFZNRW50cnlSZWNvcmQuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGludGVycHJldGVyXEludGVycHJldGVyLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxKU1N0YWNrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxpbnRlcnByZXRlclxKU1N0YWNrSW5saW5lcy5oIiAvPgpAQCAtMTY0Niw0ICsx
NjQ3LDQgQEAKICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgICA8
SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcQnVpbGRDdXN0b21pemF0aW9uc1xtYXNt
LnRhcmdldHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTcyNTkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAxLDYgKzIyMDEsOSBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcQ2FsbEZyYW1lQ2xvc3VyZS5oIj4KICAg
ICAgIDxGaWx0ZXI+aW50ZXJwcmV0ZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXFZNRW50cnlSZWNvcmQuaCI+CisgICAg
ICA8RmlsdGVyPmludGVycHJldGVyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxJbnRlcnByZXRlci5oIj4KICAgICAgIDxG
aWx0ZXI+aW50ZXJwcmV0ZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTQwNTAsNCAr
NDA1Myw0IEBACiAgICAgICA8RmlsdGVyPmppdDwvRmlsdGVyPgogICAgIDwvTUFTTT4KICAgPC9J
dGVtR3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9q
ZWN0PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3MjU5MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTU2LDYgKzExNTYsNyBAQAogCQk2NTUzQTMz
MTE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTUzQTMyRjE3QTFGMUVF
MDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAgKi87IH07CiAJCTY1NTNB
MzMyMTdBMUYxRUUwMDhDRjZGMyAvKiBDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTUzQTMzMDE3QTFGMUVF
MDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5oICovOyB9OwogCQk2NTVFQjI5
QjEwQ0UyNTgxMDAxQTk5MEUgLyogTm9kZXNDb2RlZ2VuLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NUVCMjlBMTBDRTI1ODEwMDFBOTkwRSAvKiBO
b2Rlc0NvZGVnZW4uY3BwICovOyB9OworCQk2NThEM0E1NjE5NjM4MjY4MDAzQzQ1RDYgLyogVk1F
bnRyeVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjU4RDNBNTUxOTYzODI2ODAwM0M0NUQ2IC8qIFZNRW50cnlSZWNvcmQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NUMwMjg1MDE3MTc5NUUy
MDAzNTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDMDI4NEYxNzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3
RGlzYXNzZW1ibGVyLmNwcCAqLzsgfTsKIAkJNjVDMDI4NUMxNzE3OTY2ODAwMzUxRTM1IC8qIEFS
TXY3RE9wY29kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NUMwMjg1QTE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmNwcCAqLzsgfTsK
IAkJNjVDMDI4NUQxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDMDI4NUIxNzE3OTY2ODAwMzUx
RTM1IC8qIEFSTXY3RE9wY29kZS5oICovOyB9OwpAQCAtMjg3Niw3ICsyODc3LDcgQEAKIAkJMTQy
OUQ4ODMwRUQyMUMzRDAwQjg5NjE5IC8qIFNhbXBsaW5nVG9vbC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGluZ1Rvb2wuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNDI5RDg4NDBFRDIxQzNEMDBCODk2MTkgLyogU2FtcGxpbmdUb29sLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbXBsaW5nVG9vbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxNDI5RDhEQjBFRDIyMDVCMDBCODk2MTkgLyogQ2FsbEZy
YW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxGcmFtZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0MjlEOERDMEVEMjIwNUIwMEI4OTYx
OSAvKiBDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEZy
YW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MjlEOERDMEVEMjIwNUIwMEI4
OTYxOSAvKiBDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5n
ID0gMDsgcGF0aCA9IENhbGxGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1
YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKIAkJMTQy
OUQ5MkQwRUQyMkQ3MDAwQjg5NjE5IC8qIEpJVC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKSVQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDI5
RDkyRTBFRDIyRDcwMDBCODk2MTkgLyogSklULmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpJVC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDJEMzkzODEwM0U0
NTYwMDA3RENCNTIgLyogTnVtZXJpY1N0cmluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTnVtZXJpY1N0cmluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTMwNjIsNiArMzA2Myw3IEBACiAJCTY1NjIxRTZCMDg5RTg1OTcwMDc2MEYzNSAvKiBQcm9wZXJ0
eVNsb3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUHJvcGVydHlTbG90LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB9OwogCQk2NTYyMUU2QzA4OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3Bl
cnR5U2xvdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTY1
ODYwMTc3MTg1QThGNUUwMDAzMEVFRSAvKiBNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXhGcmFtZUV4dGVudEZvclNsb3dQ
YXRoQ2FsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NThEM0E1NTE5NjM4MjY4
MDAzQzQ1RDYgLyogVk1FbnRyeVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxp
bmVFbmRpbmcgPSAwOyBwYXRoID0gVk1FbnRyeVJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNw
cDsgfTsKIAkJNjU5ODdGMkMxNjdGRTg0QjAwM0MyRjhEIC8qIERGR09TUkV4aXRDb21waWxhdGlv
bkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT1NSRXhpdENvbXBp
bGF0aW9uSW5mby5oOyBwYXRoID0gZGZnL0RGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU5ODdGMkYxNjgyOEE3RTAwM0MyRjhEIC8qIFVu
dXNlZFBvaW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW51c2VkUG9p
bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUMwMjg0RjE3MTc5NUUyMDAz
NTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gQVJNdjdEaXNhc3NlbWJsZXIuY3BwOyBwYXRoID0gZGlzYXNzZW1ibGVyL0FS
TXY3RGlzYXNzZW1ibGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMxMDQs
NyArMzEwNiw3IEBACiAJCTg2MDE2MUUyMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjAzQ0VGMjE0
Qzc1NDY0MDBBRTU5RTMgLyogQ29kZVByb2ZpbGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb2RlUHJvZmlsaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODYwM0NFRjMxNEM3NTQ2NDAwQUU1OUUzIC8qIENvZGVQcm9maWxpbmcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVByb2ZpbGluZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk4NjA0RjRGMjE0M0E2QzQ0MDBCMjk1RjUgLyogQ2hhbmdlTG9n
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IENoYW5nZUxvZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYwNEY0RjIx
NDNBNkM0NDAwQjI5NUY1IC8qIENoYW5nZUxvZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gQ2hhbmdl
TG9nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjA2RERFOTE4REE0NEFCMDBBMzgz
RDAgLyogSWRlbnRpZmllcklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSWRlbnRpZmllcklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYx
MkU0Q0IxNTIyOTE4NDAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1hdGNoUmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvcGVydHlOYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zMTMzLDggKzMxMzUsOCBAQAogCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJC
OUEgLyogUHJpdmF0ZU5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJp
dmF0ZU5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY5RUJDQjYwRThDNkQ0
QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVzdWx0VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkEwNTQ0NjE1
NTY0NTFCMDA0NDUxNTcgLyogTG93TGV2ZWxJbnRlcnByZXRlci5hc20gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmFzbS5hc207IG5h
bWUgPSBMb3dMZXZlbEludGVycHJldGVyLmFzbTsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4NkEwNTQ0NzE1NTY0NTFC
MDA0NDUxNTcgLyogTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtLmFzbTsgbmFt
ZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc207IHBhdGggPSBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4NkEwNTQ0
ODE1NTY0NTFCMDA0NDUxNTcgLyogTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtLmFz
bTsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc207IHBhdGggPSBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkEwNTQ0
NzE1NTY0NTFCMDA0NDUxNTcgLyogTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNt
LmFzbTsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
OyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODZBMDU0NDgxNTU2NDUxQjAwNDQ1MTU3IC8qIExvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmFzbS5hc207IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbTsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c207IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QTkwRUNGMEVFN0Q1MUYwMEFCMzUw
RCAvKiBKSVRBcml0aG1ldGljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpJVEFyaXRobWV0aWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkFE
RDE0MzBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQVJNdjdBc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk12Ny5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzUyNSw3ICszNTI3LDcgQEAKIAkJQTdD
MUU4QzgxMTJFNzAxQzAwQTM3Rjk4IC8qIEpJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3QzFFQUVBMTc5ODdBQjYwMDI5OURC
MiAvKiBDYWxsRnJhbWVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENhbGxGcmFtZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdDMUVB
RUIxNzk4N0FCNjAwMjk5REIyIC8qIEpTU3RhY2tJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTU3RhY2tJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUE3QzFFQUVDMTc5ODdBQjYwMDI5OURCMiAvKiBTdGFja1Zpc2l0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhY2tWaXNpdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdDMUVBRUMxNzk4N0FCNjAwMjk5REIyIC8qIFN0YWNr
VmlzaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAw
OyBwYXRoID0gU3RhY2tWaXNpdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5n
dWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5jcHA7IH07CiAJCUE3QzFF
QUVEMTc5ODdBQjYwMDI5OURCMiAvKiBTdGFja1Zpc2l0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3RhY2tWaXNpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE3QzIyNUNDMTM5OTgxRjEwMEZGMTY2MiAvKiBLZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gS2V5d29yZExvb2t1cEdlbmVy
YXRvci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdDMjI1Q0QxMzk5ODQ5QzAw
RkYxNjYyIC8qIEtleXdvcmRMb29rdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gS2V5d29yZExvb2t1cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzczNSw4
ICszNzM3LDggQEAKIAkJRTEyNEE4RjYwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5n
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9wYXF1ZUpTU3RyaW5n
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3ODYzM0YwRDlCRUMwMDAwRDc0
RTc1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5pdGlhbGl6ZVRocmVhZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMTc4NjM2QzBEOUJFRUMzMDBENzRFNzUgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbml0aWFsaXplVGhyZWFkaW5nLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTE4RTNBNTYwREY5Mjc4QzAwRDkwQjM0
IC8qIFZNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZNLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWTS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUxOEUzQTU2MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk0uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNv
ZGUubGFuZy5vYmpjcHA7IH07CisJCUUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk0u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50
aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJRTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8q
IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUU0OURDMTUxMTJFRjI3MjIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZVByb3ZpZGVyQ2FjaGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ5REMxNTUxMkVGMjc3MjAwMTg0QTFGIC8qIFNv
dXJjZVByb3ZpZGVyQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU291cmNlUHJvdmlkZXJDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00MTU2LDYgKzQxNTgsNyBAQAogCQkxNDI5RDc3QTBFRDIwRDczMDBCODk2MTkgLyogaW50ZXJw
cmV0ZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTY1
OEQzQTU1MTk2MzgyNjgwMDNDNDVENiAvKiBWTUVudHJ5UmVjb3JkLmggKi8sCiAJCQkJMEY1NUYw
RjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovLAogCQkJCTBGNTVGMEYyMTRE
MTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggKi8sCiAJCQkJQTdGODY5MEUwRjk1ODRBMTAw
NTU4Njk3IC8qIENhY2hlZENhbGwuaCAqLywKQEAgLTU5ODAsNiArNTk4Myw3IEBACiAJCQkJMEY2
QjFDQjkxODYxMjQ0QzAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tNb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJNNjRBc3NlbWJsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg2RDNCMkM0MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTY1OEQzQTU2MTk2MzgyNjgwMDNDNDVENiAvKiBWTUVudHJ5UmVj
b3JkLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUQyRURGQjE5Nzk5RTM4MDA0RDY0NzggLyogRW51
bWVyYXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODNBQzBFNkRCOEM5MDA0Nzc1
QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJB
MTExMjQ2MTkyRkNFNzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuaCBpbiBIZWFkZXJz
ICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5q
c29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QuanNvbgkocmV2aXNpb24gMTcyNTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsOCArMTQxLDgg
QEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X2VudHJ5IiB9LAogICAgICAgICAgICAg
eyAibmFtZSIgOiAiZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSIgfSwKICAgICAgICAgICAgIHsgIm5h
bWUiIDogImxsaW50X3JldHVybl90b19ob3N0IiB9LAotICAgICAgICAgICAgeyAibmFtZSIgOiAi
bGxpbnRfY2FsbF90b19qYXZhc2NyaXB0IiB9LAotICAgICAgICAgICAgeyAibmFtZSIgOiAibGxp
bnRfY2FsbF90b19uYXRpdmVfZnVuY3Rpb24iIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJs
bGludF92bV9lbnRyeV90b19qYXZhc2NyaXB0IiB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAi
bGxpbnRfdm1fZW50cnlfdG9fbmF0aXZlIiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAibGxp
bnRfY2xvb3BfZGlkX3JldHVybl9mcm9tX2pzXzEiIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfMiIgfSwKICAgICAgICAgICAgIHsgIm5h
bWUiIDogImxsaW50X2Nsb29wX2RpZF9yZXR1cm5fZnJvbV9qc18zIiB9LApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE3MjU5
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiUmVwYXRjaC5oIgogI2luY2x1
ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKyNp
bmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKICNpbmNsdWRlICJVbmxpbmtlZEluc3RydWN0aW9uU3Ry
ZWFtLmgiCiAjaW5jbHVkZSA8d3RmL0JhZ1RvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Db21t
YVByaW50ZXIuaD4KQEAgLTMxNTEsNiArMzE1Miw0NiBAQCBKU0dsb2JhbE9iamVjdCogQ29kZUJs
b2NrOjpnbG9iYWxPYmplY3RGCiAgICAgcmV0dXJuIGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
Pihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKSktPmVpdGhlckNv
ZGVCbG9jaygpLT5nbG9iYWxPYmplY3QoKTsKIH0KIAorY2xhc3MgUmVjdXJzaW9uQ2hlY2tGdW5j
dG9yIHsKK3B1YmxpYzoKKyAgICBSZWN1cnNpb25DaGVja0Z1bmN0b3IoQ2FsbEZyYW1lKiBzdGFy
dENhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGRlcHRoVG9DaGVjaykK
KyAgICAgICAgOiBtX3N0YXJ0Q2FsbEZyYW1lKHN0YXJ0Q2FsbEZyYW1lKQorICAgICAgICAsIG1f
Y29kZUJsb2NrKGNvZGVCbG9jaykKKyAgICAgICAgLCBtX2RlcHRoVG9DaGVjayhkZXB0aFRvQ2hl
Y2spCisgICAgICAgICwgbV9mb3VuZFN0YXJ0Q2FsbEZyYW1lKGZhbHNlKQorICAgICAgICAsIG1f
ZGlkUmVjdXJzZShmYWxzZSkKKyAgICB7IH0KKyAgICAKKyAgICBTdGFja1Zpc2l0b3I6OlN0YXR1
cyBvcGVyYXRvcigpKFN0YWNrVmlzaXRvciYgdmlzaXRvcikKKyAgICB7CisgICAgICAgIENhbGxG
cmFtZSogY3VycmVudENhbGxGcmFtZSA9IHZpc2l0b3ItPmNhbGxGcmFtZSgpOworCisgICAgICAg
IGlmIChjdXJyZW50Q2FsbEZyYW1lID09IG1fc3RhcnRDYWxsRnJhbWUpCisgICAgICAgICAgICBt
X2ZvdW5kU3RhcnRDYWxsRnJhbWUgPSB0cnVlOworCisgICAgICAgIGlmIChtX2ZvdW5kU3RhcnRD
YWxsRnJhbWUpIHsKKyAgICAgICAgICAgIGlmICh2aXNpdG9yLT5jYWxsRnJhbWUoKS0+Y29kZUJs
b2NrKCkgPT0gbV9jb2RlQmxvY2spIHsKKyAgICAgICAgICAgICAgICBtX2RpZFJlY3Vyc2UgPSB0
cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmICghbV9kZXB0aFRvQ2hlY2stLSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CisgICAgfQorICAgIAorICAgIGJvb2wgZGlkUmVj
dXJzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlkUmVjdXJzZTsgfQorICAgIAorcHJpdmF0ZToKKyAg
ICBDYWxsRnJhbWUqIG1fc3RhcnRDYWxsRnJhbWU7CisgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9j
azsKKyAgICB1bnNpZ25lZCBtX2RlcHRoVG9DaGVjazsKKyAgICBib29sIG1fZm91bmRTdGFydENh
bGxGcmFtZTsKKyAgICBib29sIG1fZGlkUmVjdXJzZTsKK307CisKIHZvaWQgQ29kZUJsb2NrOjpu
b3RpY2VJbmNvbWluZ0NhbGwoRXhlY1N0YXRlKiBjYWxsZXJGcmFtZSkKIHsKICAgICBDb2RlQmxv
Y2sqIGNhbGxlckNvZGVCbG9jayA9IGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKTsKQEAgLTMxOTgs
MjAgKzMyMzksMTggQEAgdm9pZCBDb2RlQmxvY2s6Om5vdGljZUluY29taW5nQ2FsbChFeGVjUwog
ICAgICAgICAgICAgZGF0YUxvZygiICAgIENsZWFyaW5nIFNBQkkgYmVjYXVzZSBjYWxsZXIgaXMg
bm90IGEgZnVuY3Rpb24uXG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICBF
eGVjU3RhdGUqIGZyYW1lID0gY2FsbGVyRnJhbWU7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gT3B0
aW9uczo6bWF4aW11bUlubGluaW5nRGVwdGgoKTsgaS0tOyBmcmFtZSA9IGZyYW1lLT5jYWxsZXJG
cmFtZSgpKSB7Ci0gICAgICAgIGlmIChmcmFtZS0+aXNWTUVudHJ5U2VudGluZWwoKSkKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBpZiAoZnJhbWUtPmNvZGVCbG9jaygpID09IHRoaXMpIHsK
LSAgICAgICAgICAgIC8vIFJlY3Vyc2l2ZSBjYWxscyB3b24ndCBiZSBpbmxpbmVkLgotICAgICAg
ICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VDYWxsTGluaygpKQotICAgICAgICAgICAgICAgIGRh
dGFMb2coIiAgICBDbGVhcmluZyBTQUJJIGJlY2F1c2UgcmVjdXJzaW9uIHdhcyBkZXRlY3RlZC5c
biIpOwotICAgICAgICAgICAgbV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQorCisgICAgLy8gUmVjdXJzaXZlIGNhbGxzIHdvbid0
IGJlIGlubGluZWQuCisgICAgUmVjdXJzaW9uQ2hlY2tGdW5jdG9yIGZ1bmN0b3IoY2FsbGVyRnJh
bWUsIHRoaXMsIE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ0RlcHRoKCkpOworICAgIHZtKCktPnRv
cENhbGxGcmFtZS0+aXRlcmF0ZShmdW5jdG9yKTsKKworICAgIGlmIChmdW5jdG9yLmRpZFJlY3Vy
c2UoKSkgeworICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUNhbGxMaW5rKCkpCisgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgQ2xlYXJpbmcgU0FCSSBiZWNhdXNlIHJlY3Vyc2lvbiB3YXMgZGV0
ZWN0ZWQuXG4iKTsKKyAgICAgICAgbV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxlckNv
ZGVCbG9jay0+bV9jYXBhYmlsaXR5TGV2ZWxTdGF0ZSAhPSBERkc6OkNhcGFiaWxpdHlMZXZlbE5v
dFNldCk7CiAgICAgCiAgICAgaWYgKGNhbkNvbXBpbGUoY2FsbGVyQ29kZUJsb2NrLT5tX2NhcGFi
aWxpdHlMZXZlbFN0YXRlKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyLmNwcAkocmV2aXNpb24gMTcyNTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA3LDcgKzYwNyw4IEBA
IHZvaWQgRGVidWdnZXI6OnN0ZXBPdXRPZkZ1bmN0aW9uKCkKICAgICBpZiAoIW1faXNQYXVzZWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGF1c2VPbkNhbGxGcmFtZSA9IG1fY3VycmVudENh
bGxGcmFtZSA/IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVyRnJhbWVTa2lwcGluZ1ZNRW50cnlT
ZW50aW5lbCgpIDogMDsKKyAgICBWTUVudHJ5RnJhbWUqIHRvcFZNRW50cnlDYWxsRnJhbWUgPSBt
X3ZtLT50b3BWTUVudHJ5Q2FsbEZyYW1lOworICAgIG1fcGF1c2VPbkNhbGxGcmFtZSA9IG1fY3Vy
cmVudENhbGxGcmFtZSA/IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVyRnJhbWUodG9wVk1FbnRy
eUNhbGxGcmFtZSkgOiAwOwogICAgIG5vdGlmeURvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMo
KTsKIH0KIApAQCAtNzIzLDEwICs3MjQsMTMgQEAgdm9pZCBEZWJ1Z2dlcjo6cmV0dXJuRXZlbnQo
Q2FsbEZyYW1lKiBjYQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUcmVhdCBzdGVwcGluZyBv
dmVyIGEgcmV0dXJuIHN0YXRlbWVudCBsaWtlIHN0ZXBwaW5nIG91dC4KLSAgICBpZiAobV9jdXJy
ZW50Q2FsbEZyYW1lID09IG1fcGF1c2VPbkNhbGxGcmFtZSkKLSAgICAgICAgbV9wYXVzZU9uQ2Fs
bEZyYW1lID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5jYWxsZXJGcmFtZVNraXBwaW5nVk1FbnRyeVNl
bnRpbmVsKCk7CisgICAgaWYgKG1fY3VycmVudENhbGxGcmFtZSA9PSBtX3BhdXNlT25DYWxsRnJh
bWUpIHsKKyAgICAgICAgVk1FbnRyeUZyYW1lKiB0b3BWTUVudHJ5Q2FsbEZyYW1lID0gbV92bS0+
dG9wVk1FbnRyeUNhbGxGcmFtZTsKKyAgICAgICAgbV9wYXVzZU9uQ2FsbEZyYW1lID0gbV9jdXJy
ZW50Q2FsbEZyYW1lLT5jYWxsZXJGcmFtZSh0b3BWTUVudHJ5Q2FsbEZyYW1lKTsKKyAgICB9CiAK
LSAgICBtX2N1cnJlbnRDYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlckZyYW1l
U2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKTsKKyAgICBWTUVudHJ5RnJhbWUqIHRvcFZNRW50cnlD
YWxsRnJhbWUgPSBtX3ZtLT50b3BWTUVudHJ5Q2FsbEZyYW1lOworICAgIG1fY3VycmVudENhbGxG
cmFtZSA9IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVyRnJhbWUodG9wVk1FbnRyeUNhbGxGcmFt
ZSk7CiB9CiAKIHZvaWQgRGVidWdnZXI6OndpbGxFeGVjdXRlUHJvZ3JhbShDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKQEAgLTc1NiwxMSArNzYwLDEzIEBAIHZvaWQgRGVidWdnZXI6OmRpZEV4ZWN1dGVQ
cm9ncmFtKENhbGxGcmEKICAgICBpZiAoIW1fY3VycmVudENhbGxGcmFtZSkKICAgICAgICAgcmV0
dXJuOwogICAgIGlmIChtX2N1cnJlbnRDYWxsRnJhbWUgPT0gbV9wYXVzZU9uQ2FsbEZyYW1lKSB7
Ci0gICAgICAgIG1fcGF1c2VPbkNhbGxGcmFtZSA9IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVy
RnJhbWVTa2lwcGluZ1ZNRW50cnlTZW50aW5lbCgpOworICAgICAgICBWTUVudHJ5RnJhbWUqIHRv
cFZNRW50cnlDYWxsRnJhbWUgPSBtX3ZtLT50b3BWTUVudHJ5Q2FsbEZyYW1lOworICAgICAgICBt
X3BhdXNlT25DYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlckZyYW1lKHRvcFZN
RW50cnlDYWxsRnJhbWUpOwogICAgICAgICBpZiAoIW1fY3VycmVudENhbGxGcmFtZSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9jdXJyZW50Q2FsbEZyYW1lID0gbV9jdXJyZW50
Q2FsbEZyYW1lLT5jYWxsZXJGcmFtZVNraXBwaW5nVk1FbnRyeVNlbnRpbmVsKCk7CisgICAgVk1F
bnRyeUZyYW1lKiB0b3BWTUVudHJ5Q2FsbEZyYW1lID0gbV92bS0+dG9wVk1FbnRyeUNhbGxGcmFt
ZTsKKyAgICBtX2N1cnJlbnRDYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlckZy
YW1lKHRvcFZNRW50cnlDYWxsRnJhbWUpOwogfQogCiB2b2lkIERlYnVnZ2VyOjpkaWRSZWFjaEJy
ZWFrcG9pbnQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDE3
MjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFt
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDI5IEBAIHByaXZhdGU6CiAgICAgdW5z
aWduZWQgbV9jb2x1bW47CiB9OwogCitjbGFzcyBGaW5kQ2FsbGVyTWlkU3RhY2tGdW5jdG9yIHsK
K3B1YmxpYzoKKyAgICBGaW5kQ2FsbGVyTWlkU3RhY2tGdW5jdG9yKENhbGxGcmFtZSogY2FsbEZy
YW1lKQorICAgICAgICA6IG1fY2FsbEZyYW1lKGNhbGxGcmFtZSkKKyAgICAgICAgLCBtX2NhbGxl
ckZyYW1lKG51bGxwdHIpCisgICAgeyB9CisKKyAgICBTdGFja1Zpc2l0b3I6OlN0YXR1cyBvcGVy
YXRvcigpKFN0YWNrVmlzaXRvciYgdmlzaXRvcikKKyAgICB7CisgICAgICAgIGlmICh2aXNpdG9y
LT5jYWxsRnJhbWUoKSA9PSBtX2NhbGxGcmFtZSkgeworICAgICAgICAgICAgbV9jYWxsZXJGcmFt
ZSA9IHZpc2l0b3ItPmNhbGxlckZyYW1lKCk7CisgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNp
dG9yOjpEb25lOworICAgICAgICB9CisgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRp
bnVlOworICAgIH0KKworICAgIENhbGxGcmFtZSogZ2V0Q2FsbGVyRnJhbWUoKSBjb25zdCB7IHJl
dHVybiBtX2NhbGxlckZyYW1lOyB9CisKK3ByaXZhdGU6CisgICAgQ2FsbEZyYW1lKiBtX2NhbGxG
cmFtZTsKKyAgICBDYWxsRnJhbWUqIG1fY2FsbGVyRnJhbWU7Cit9OworCiBEZWJ1Z2dlckNhbGxG
cmFtZTo6RGVidWdnZXJDYWxsRnJhbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgOiBtX2Nh
bGxGcmFtZShjYWxsRnJhbWUpCiB7CkBAIC03MCw3ICs5MywxMCBAQCBQYXNzUmVmUHRyPERlYnVn
Z2VyQ2FsbEZyYW1lPiBEZWJ1Z2dlckNhCiAgICAgaWYgKG1fY2FsbGVyKQogICAgICAgICByZXR1
cm4gbV9jYWxsZXI7CiAKLSAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gbV9jYWxsRnJhbWUt
PmNhbGxlckZyYW1lU2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKTsKKyAgICBGaW5kQ2FsbGVyTWlk
U3RhY2tGdW5jdG9yIGZ1bmN0b3IobV9jYWxsRnJhbWUpOworICAgIG1fY2FsbEZyYW1lLT52bSgp
LnRvcENhbGxGcmFtZS0+aXRlcmF0ZShmdW5jdG9yKTsKKworICAgIENhbGxGcmFtZSogY2FsbGVy
RnJhbWUgPSBmdW5jdG9yLmdldENhbGxlckZyYW1lKCk7CiAgICAgaWYgKCFjYWxsZXJGcmFtZSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAxNzI1OTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTM2LDYgKzEzNiwxNiBAQCBKU0dsb2JhbE9iamVjdCogQ2FsbEZyYW1lOjp2bUVudHJ5R2xvYmFs
CiAgICAgcmV0dXJuIHZtKCkuZW50cnlTY29wZS0+Z2xvYmFsT2JqZWN0KCk7CiB9CiAKK0NhbGxG
cmFtZSogQ2FsbEZyYW1lOjpjYWxsZXJGcmFtZShWTUVudHJ5RnJhbWUqJiBjdXJyVk1FbnRyeUZy
YW1lKQoreworICAgIGlmIChjYWxsZXJGcmFtZU9yVk1FbnRyeUZyYW1lKCkgPT0gY3VyclZNRW50
cnlGcmFtZSkgeworICAgICAgICBWTUVudHJ5UmVjb3JkKiB2bUVudHJ5UmVjb3JkID0gdm1FbnRy
eVJlY29yZEZyb21WTUVudHJ5RnJhbWUoY3VyclZNRW50cnlGcmFtZSk7CisgICAgICAgIGN1cnJW
TUVudHJ5RnJhbWUgPSB2bUVudHJ5UmVjb3JkLT5wcmV2VG9wVk1FbnRyeUNhbGxGcmFtZSgpOwor
ICAgICAgICByZXR1cm4gdm1FbnRyeVJlY29yZC0+cHJldlRvcENhbGxGcmFtZSgpOworICAgIH0K
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FsbEZyYW1lKj4oY2FsbGVyRnJhbWVPclZNRW50cnlG
cmFtZSgpKTsKK30KKwogSlNBY3RpdmF0aW9uKiBDYWxsRnJhbWU6OmFjdGl2YXRpb24oKSBjb25z
dAogewogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gdGhpcy0+Y29kZUJsb2NrKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZp
c2lvbiAxNzI1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJNYWNyb0Fz
c2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgogI2luY2x1ZGUgIlN0YWNr
VmlzaXRvci5oIgorI2luY2x1ZGUgIlZNRW50cnlSZWNvcmQuaCIKIAogbmFtZXNwYWNlIEpTQyAg
ewogCkBAIC05NCw3ICs5NSwxMCBAQCBuYW1lc3BhY2UgSlNDICB7CiAKICAgICAgICAgQ2FsbEZy
YW1lJiBvcGVyYXRvcj0oY29uc3QgUmVnaXN0ZXImIHIpIHsgKnN0YXRpY19jYXN0PFJlZ2lzdGVy
Kj4odGhpcykgPSByOyByZXR1cm4gKnRoaXM7IH0KIAotICAgICAgICBDYWxsRnJhbWUqIGNhbGxl
ckZyYW1lKCkgY29uc3QgeyByZXR1cm4gY2FsbGVyRnJhbWVBbmRQQygpLmNhbGxlckZyYW1lOyB9
CisgICAgICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxDYWxsRnJhbWUqPihjYWxsZXJGcmFtZU9yVk1FbnRyeUZyYW1lKCkpOyB9CisKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZShWTUVudHJ5RnJhbWUq
Jik7CisKICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBjYWxsZXJGcmFtZU9mZnNldCgpIHsgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihDYWxsZXJGcmFtZUFuZFBDLCBjYWxsZXJGcmFtZSk7IH0KIAog
ICAgICAgICBSZXR1cm5BZGRyZXNzUHRyIHJldHVyblBDKCkgY29uc3QgeyByZXR1cm4gUmV0dXJu
QWRkcmVzc1B0cihjYWxsZXJGcmFtZUFuZFBDKCkucGMpOyB9CkBAIC0xNjEsNyArMTY1LDcgQEAg
bmFtZXNwYWNlIEpTQyAgewogCiAgICAgICAgIFJlZ2lzdGVyKiB0b3BPZkZyYW1lKCkKICAgICAg
ICAgewotICAgICAgICAgICAgaWYgKGlzVk1FbnRyeVNlbnRpbmVsKCkgfHwgIWNvZGVCbG9jaygp
KQorICAgICAgICAgICAgaWYgKCFjb2RlQmxvY2soKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
cmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICByZXR1cm4gdG9wT2ZGcmFtZUludGVybmFsKCk7CiAg
ICAgICAgIH0KQEAgLTE2OSwxMiArMTczLDEwIEBAIG5hbWVzcGFjZSBKU0MgIHsKICNpZiBVU0Uo
SlNWQUxVRTMyXzY0KQogICAgICAgICBJbnN0cnVjdGlvbiogY3VycmVudFZQQygpIGNvbnN0CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghaXNWTUVudHJ5U2VudGluZWwoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4odGhpc1tKU1N0YWNrOjpB
cmd1bWVudENvdW50XS50YWcoKSk7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCBzZXRDdXJyZW50
VlBDKEluc3RydWN0aW9uKiB2cGMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghaXNW
TUVudHJ5U2VudGluZWwoKSk7CiAgICAgICAgICAgICB0aGlzW0pTU3RhY2s6OkFyZ3VtZW50Q291
bnRdLnRhZygpID0gYml0d2lzZV9jYXN0PGludDMyX3Q+KHZwYyk7CiAgICAgICAgIH0KICNlbHNl
CkBAIC0xODksNyArMTkxLDcgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgaW5pdChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIHZQQywgSlNT
Y29wZSogc2NvcGUsCiAgICAgICAgICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lLCBpbnQgYXJn
YywgSlNPYmplY3QqIGNhbGxlZSkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGNhbGxl
ckZyYW1lID09IG5vQ2FsbGVyKCkgfHwgY2FsbGVyRnJhbWUtPmlzVk1FbnRyeVNlbnRpbmVsKCkg
fHwgY2FsbGVyRnJhbWUtPnN0YWNrKCktPmNvbnRhaW5zQWRkcmVzcyh0aGlzKSk7CisgICAgICAg
ICAgICBBU1NFUlQoY2FsbGVyRnJhbWUgPT0gbm9DYWxsZXIoKSB8fCBjYWxsZXJGcmFtZS0+c3Rh
Y2soKS0+Y29udGFpbnNBZGRyZXNzKHRoaXMpKTsKIAogICAgICAgICAgICAgc2V0Q29kZUJsb2Nr
KGNvZGVCbG9jayk7CiAgICAgICAgICAgICBzZXRTY29wZShzY29wZSk7CkBAIC0yNDUsMzUgKzI0
Nyw2IEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgICAgICBzdGF0aWMgQ2FsbEZyYW1lKiBub0Nh
bGxlcigpIHsgcmV0dXJuIDA7IH0KIAotICAgICAgICBib29sIGlzVk1FbnRyeVNlbnRpbmVsKCkg
Y29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEhdGhpcyAmJiBjb2RlQmxvY2so
KSA9PSB2bUVudHJ5U2VudGluZWxDb2RlQmxvY2soKTsKLSAgICAgICAgfQotCi0gICAgICAgIENh
bGxGcmFtZSogdm1FbnRyeVNlbnRpbmVsQ2FsbGVyRnJhbWUoKSBjb25zdAotICAgICAgICB7Ci0g
ICAgICAgICAgICBBU1NFUlQoaXNWTUVudHJ5U2VudGluZWwoKSk7Ci0gICAgICAgICAgICByZXR1
cm4gdGhpc1tKU1N0YWNrOjpTY29wZUNoYWluXS5jYWxsRnJhbWUoKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZvaWQgaW5pdGlhbGl6ZVZNRW50cnlTZW50aW5lbEZyYW1lKENhbGxGcmFtZSogY2Fs
bEZyYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICBzZXRDYWxsZXJGcmFtZShub0NhbGxlcigp
KTsKLSAgICAgICAgICAgIHNldFJldHVyblBDKDApOwotICAgICAgICAgICAgc2V0Q29kZUJsb2Nr
KHZtRW50cnlTZW50aW5lbENvZGVCbG9jaygpKTsKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PFJl
Z2lzdGVyKj4odGhpcylbSlNTdGFjazo6U2NvcGVDaGFpbl0gPSBjYWxsRnJhbWU7Ci0gICAgICAg
ICAgICBzZXRDYWxsZWUoMCk7Ci0gICAgICAgICAgICBzZXRBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcygwKTsKLSAgICAgICAgfQotCi0gICAgICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWVTa2lw
cGluZ1ZNRW50cnlTZW50aW5lbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIENhbGxGcmFtZSog
Y2FsbGVyID0gY2FsbGVyRnJhbWUoKTsKLSAgICAgICAgICAgIGlmIChjYWxsZXItPmlzVk1FbnRy
eVNlbnRpbmVsKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxlci0+dm1FbnRyeVNlbnRp
bmVsQ2FsbGVyRnJhbWUoKTsKLSAgICAgICAgICAgIHJldHVybiBjYWxsZXI7Ci0gICAgICAgIH0K
LQogICAgICAgICB2b2lkIHNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGludCBjb3VudCkg
eyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW0pTU3RhY2s6OkFyZ3VtZW50Q291bnRdLnBh
eWxvYWQoKSA9IGNvdW50OyB9CiAgICAgICAgIHZvaWQgc2V0Q2FsbGVlKEpTT2JqZWN0KiBjYWxs
ZWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtKU1N0YWNrOjpDYWxsZWVdID0gUmVn
aXN0ZXI6OndpdGhDYWxsZWUoY2FsbGVlKTsgfQogICAgICAgICB2b2lkIHNldENvZGVCbG9jayhD
b2RlQmxvY2sqIGNvZGVCbG9jaykgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW0pTU3Rh
Y2s6OkNvZGVCbG9ja10gPSBjb2RlQmxvY2s7IH0KQEAgLTI5MSw3ICsyNjQsNiBAQCBuYW1lc3Bh
Y2UgSlNDICB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIqIGRlc2NyaWJl
RnJhbWUoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBz
X1ZNRW50cnlTZW50aW5lbCA9IDE7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIEpTU3RhY2sq
IHN0YWNrKCk7CkBAIC0zMzAsMTEgKzMwMiwxMSBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAg
ICAgICByZXR1cm4gdGhpc1thcmd1bWVudE9mZnNldChhcmdJbmRleCldLmpzVmFsdWUoKTsKICAg
ICAgICAgfQogCisgICAgICAgIHZvaWQqIGNhbGxlckZyYW1lT3JWTUVudHJ5RnJhbWUoKSBjb25z
dCB7IHJldHVybiBjYWxsZXJGcmFtZUFuZFBDKCkuY2FsbGVyRnJhbWU7IH0KKwogICAgICAgICBD
YWxsZXJGcmFtZUFuZFBDJiBjYWxsZXJGcmFtZUFuZFBDKCkgeyByZXR1cm4gKnJlaW50ZXJwcmV0
X2Nhc3Q8Q2FsbGVyRnJhbWVBbmRQQyo+KHRoaXMpOyB9CiAgICAgICAgIGNvbnN0IENhbGxlckZy
YW1lQW5kUEMmIGNhbGxlckZyYW1lQW5kUEMoKSBjb25zdCB7IHJldHVybiAqcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBDYWxsZXJGcmFtZUFuZFBDKj4odGhpcyk7IH0KIAotICAgICAgICBzdGF0aWMg
Q29kZUJsb2NrKiB2bUVudHJ5U2VudGluZWxDb2RlQmxvY2soKSB7IHJldHVybiByZWludGVycHJl
dF9jYXN0PENvZGVCbG9jayo+KHNfVk1FbnRyeVNlbnRpbmVsKTsgfQotCiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBKU1N0YWNrOwogICAgICAgICBmcmllbmQgY2xhc3MgVk1JbnNwZWN0b3I7CiAgICAg
fTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAkocmV2aXNpb24gMTcyNTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc5LDggKzQ3OSw3
IEBAIHN0YXRpYyBib29sIHVud2luZENhbGxGcmFtZShTdGFja1Zpc2l0b3IKICAgICAgICAgfQog
ICAgIH0KIAotICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZy
YW1lKCk7Ci0gICAgcmV0dXJuICFjYWxsZXJGcmFtZS0+aXNWTUVudHJ5U2VudGluZWwoKTsKKyAg
ICByZXR1cm4gIXZpc2l0b3ItPmNhbGxlcklzVk1FbnRyeSgpOwogfQogCiBzdGF0aWMgU3RhY2tG
cmFtZUNvZGVUeXBlIGdldFN0YWNrRnJhbWVDb2RlVHlwZShTdGFja1Zpc2l0b3ImIHZpc2l0b3Ip
CkBAIC01OTcsNyArNTk2LDYgQEAgcHJpdmF0ZToKIHZvaWQgSW50ZXJwcmV0ZXI6OmdldFN0YWNr
VHJhY2UoVmVjdG9yPFN0YWNrRnJhbWU+JiByZXN1bHRzLCBzaXplX3QgbWF4U3RhY2tTaXplKQog
ewogICAgIFZNJiB2bSA9IG1fdm07Ci0gICAgQVNTRVJUKCF2bS50b3BDYWxsRnJhbWUtPmlzVk1F
bnRyeVNlbnRpbmVsKCkpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gdm0udG9wQ2FsbEZy
YW1lOwogICAgIGlmICghY2FsbEZyYW1lKQogICAgICAgICByZXR1cm47CkBAIC02ODMsMTUgKzY4
MSw2IEBAIHByaXZhdGU6CiAKIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6
OnVud2luZChDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpTVmFsdWUmIGV4Y2VwdGlvblZhbHVlKQog
ewotICAgIGlmIChjYWxsRnJhbWUtPmlzVk1FbnRyeVNlbnRpbmVsKCkpIHsKLSAgICAgICAgLy8g
VGhpcyBoYXBwZW5zIHdoZW4gd2UgdGhyb3cgc3RhY2sgb3ZlcmZsb3cgaW4gYSBmdW5jdGlvbiB0
aGF0IGlzIGNhbGxlZAotICAgICAgICAvLyBkaXJlY3RseSBmcm9tIGNhbGxUb0phdmFTY3JpcHQu
IFN0YWNrIG92ZXJmbG93IHRocm93cyB0aGUgZXhjZXB0aW9uIGluIHRoZQotICAgICAgICAvLyBj
b250ZXh0IG9mIHRoZSBjYWxsZXIuIEluIHRoYXQgY2FzZSB0aGUgY2FsbGVyIGlzIHRoZSBzZW50
aW5lbCBmcmFtZS4gVGhlCi0gICAgICAgIC8vIHJpZ2h0IHRoaW5nIHRvIGRvIGlzIHRvIHByZXRl
bmQgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIHVuY2F1Z2h0IHNvIHRoYXQgd2UKLSAgICAgICAgLy8g
Z28gdG8gdGhlIHVuY2F1Z2h0IGV4Y2VwdGlvbiBoYW5kbGVyLCB3aGljaCByZXR1cm5zIHRocm91
Z2ggY2FsbFRvSmF2YVNjcmlwdC4KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIAogICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICBBU1NF
UlQoY29kZUJsb2NrKTsKICAgICBib29sIGlzVGVybWluYXRpb24gPSBmYWxzZTsKQEAgLTk5Niw3
ICs5ODUsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAgICAg
ICAgIGlmIChpc0pTQ2FsbCkKICAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxEYXRhLmpzLmZ1bmN0
aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+ZXhlY3V0ZSgmdm0sICZw
cm90b0NhbGxGcmFtZSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmVzdWx0ID0gSlNW
YWx1ZTo6ZGVjb2RlKGNhbGxUb05hdGl2ZUZ1bmN0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiksICZ2bSwgJnByb3RvQ2FsbEZyYW1lKSk7CisgICAg
ICAgICAgICByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUodm1FbnRyeVRvTmF0aXZlKHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiksICZ2bSwgJnByb3RvQ2Fs
bEZyYW1lKSk7CiAgICAgICAgICAgICBpZiAoY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgICAgICByZXN1bHQgPSBqc051bGwoKTsKICAgICAgICAgfQpAQCAtMTA2NCw3ICsx
MDUzLDcgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAogICAgICAg
ICBpZiAoaXNKU0NvbnN0cnVjdCkKICAgICAgICAgICAgIHJlc3VsdCA9IGNvbnN0cnVjdERhdGEu
anMuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCktPmV4
ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IHJlc3VsdCA9IEpTVmFsdWU6OmRlY29kZShjYWxsVG9OYXRpdmVGdW5jdGlvbihyZWludGVycHJl
dF9jYXN0PHZvaWQqPihjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiksICZ2bSwgJnByb3Rv
Q2FsbEZyYW1lKSk7CisgICAgICAgICAgICByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUodm1FbnRy
eVRvTmF0aXZlKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1
bmN0aW9uKSwgJnZtLCAmcHJvdG9DYWxsRnJhbWUpKTsKIAogICAgICAgICAgICAgaWYgKCFjYWxs
RnJhbWUtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJl
c3VsdC5pc09iamVjdCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxNzI1OTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTU3
LDEzICsxNTcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICA6IHZtKGN1cnJlbnRW
TSkKICAgICAgICAgICAgICwgb2xkQ2FsbEZyYW1lKGN1cnJlbnRWTS50b3BDYWxsRnJhbWUpIAog
ICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+aXNWTUVudHJ5U2VudGlu
ZWwoKSk7CiAgICAgICAgICAgICBjdXJyZW50Vk0udG9wQ2FsbEZyYW1lID0gY2FsbEZyYW1lOwog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB+VG9wQ2FsbEZyYW1lU2V0dGVyKCkgCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghb2xkQ2FsbEZyYW1lLT5pc1ZNRW50cnlTZW50aW5l
bCgpKTsKICAgICAgICAgICAgIHZtLnRvcENhbGxGcmFtZSA9IG9sZENhbGxGcmFtZTsKICAgICAg
ICAgfQogICAgIHByaXZhdGU6CkBAIC0xNzcsMTggKzE3NSw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQodm0pOwogICAgICAgICAgICAgQVNTRVJUKGNh
bGxGcmFtZSk7Ci0gICAgICAgICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+aXNWTUVudHJ5U2VudGlu
ZWwoKSk7CiAgICAgICAgICAgICB2bS0+dG9wQ2FsbEZyYW1lID0gY2FsbEZyYW1lOwogICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBlbnVtIFZNRW50cnlTZW50aW5lbE9LVGFnIHsgVk1FbnRy
eVNlbnRpbmVsT0sgfTsKLSAgICAgICAgQUxXQVlTX0lOTElORSBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIoVk0qIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk1FbnRyeVNlbnRpbmVsT0tUYWcpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCh2bSk7Ci0gICAgICAgICAgICBBU1NFUlQoY2Fs
bEZyYW1lKTsKLSAgICAgICAgICAgIGlmICghY2FsbEZyYW1lLT5pc1ZNRW50cnlTZW50aW5lbCgp
KQotICAgICAgICAgICAgICAgIHZtLT50b3BDYWxsRnJhbWUgPSBjYWxsRnJhbWU7Ci0gICAgICAg
IH0KICAgICB9OwogCiAgICAgY2xhc3MgSW50ZXJwcmV0ZXIgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAJKHJldmlzaW9u
IDE3MjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsK
IFN0YWNrVmlzaXRvcjo6U3RhY2tWaXNpdG9yKENhbGxGcmFtZSogc3RhcnRGcmFtZSkKIHsKICAg
ICBtX2ZyYW1lLm1faW5kZXggPSAwOworICAgIGlmIChzdGFydEZyYW1lKQorICAgICAgICBtX2Zy
YW1lLm1fVk1FbnRyeUZyYW1lID0gc3RhcnRGcmFtZS0+dm0oKS50b3BWTUVudHJ5Q2FsbEZyYW1l
OworICAgIGVsc2UKKyAgICAgICAgbV9mcmFtZS5tX1ZNRW50cnlGcmFtZSA9IDA7CisgICAgbV9m
cmFtZS5tX2NhbGxlcklzVk1FbnRyeSA9IGZhbHNlOwogICAgIHJlYWRGcmFtZShzdGFydEZyYW1l
KTsKIH0KIApAQCAtNTYsNyArNjEsNiBAQCB2b2lkIFN0YWNrVmlzaXRvcjo6Z290b05leHRGcmFt
ZSgpCiAKIHZvaWQgU3RhY2tWaXNpdG9yOjpyZWFkRnJhbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7Ci0gICAgQVNTRVJUKCFjYWxsRnJhbWUtPmlzVk1FbnRyeVNlbnRpbmVsKCkpOwogICAgIGlm
ICghY2FsbEZyYW1lKSB7CiAgICAgICAgIG1fZnJhbWUuc2V0VG9FbmQoKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMTA0LDcgKzEwOCw5IEBAIHZvaWQgU3RhY2tWaXNpdG9yOjpyZWFkTm9uSW5saW5l
ZEZyYW1lKEMKIHsKICAgICBtX2ZyYW1lLm1fY2FsbEZyYW1lID0gY2FsbEZyYW1lOwogICAgIG1f
ZnJhbWUubV9hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMoKTsKLSAgICBtX2ZyYW1lLm1fY2FsbGVyRnJhbWUgPSBjYWxsRnJh
bWUtPmNhbGxlckZyYW1lU2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKTsKKyAgICBWTUVudHJ5RnJh
bWUqIGN1cnJlbnRWTUVudHJ5RnJhbWUgPSBtX2ZyYW1lLm1fVk1FbnRyeUZyYW1lOworICAgIG1f
ZnJhbWUubV9jYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUobV9mcmFtZS5tX1ZN
RW50cnlGcmFtZSk7CisgICAgbV9mcmFtZS5tX2NhbGxlcklzVk1FbnRyeSA9IGN1cnJlbnRWTUVu
dHJ5RnJhbWUgIT0gbV9mcmFtZS5tX1ZNRW50cnlGcmFtZTsKICAgICBtX2ZyYW1lLm1fY2FsbGVl
ID0gY2FsbEZyYW1lLT5jYWxsZWUoKTsKICAgICBtX2ZyYW1lLm1fc2NvcGUgPSBjYWxsRnJhbWUt
PnNjb3BlKCk7CiAgICAgbV9mcmFtZS5tX2NvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCk7CkBAIC0xMjcsNyArMTMzLDYgQEAgc3RhdGljIGludCBpbmxpbmVkRnJhbWVPZmZzZXQoQ29k
ZU9yaWdpbgogdm9pZCBTdGFja1Zpc2l0b3I6OnJlYWRJbmxpbmVkRnJhbWUoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIENvZGVPcmlnaW4qIGNvZGVPcmlnaW4pCiB7CiAgICAgQVNTRVJUKGNvZGVPcmln
aW4pOwotICAgIEFTU0VSVCghY2FsbEZyYW1lLT5pc1ZNRW50cnlTZW50aW5lbCgpKTsKIAogICAg
IGludCBmcmFtZU9mZnNldCA9IGlubGluZWRGcmFtZU9mZnNldChjb2RlT3JpZ2luKTsKICAgICBi
b29sIGlzSW5saW5lZCA9ICEhZnJhbWVPZmZzZXQ7CkBAIC0zODAsNyArMzg1LDYgQEAgdm9pZCBT
dGFja1Zpc2l0b3I6OkZyYW1lOjpwcmludChpbnQgaW5kZQogCiAgICAgcHJpbnRpZihpLCAiICAg
bmFtZSAnJXMnXG4iLCBmdW5jdGlvbk5hbWUoKS51dGY4KCkuZGF0YSgpKTsKICAgICBwcmludGlm
KGksICIgICBzb3VyY2VVUkwgJyVzJ1xuIiwgc291cmNlVVJMKCkudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgcHJpbnRpZihpLCAiICAgaXNWTUVudHJ5U2VudGluZWwgJWRcbiIsIGNhbGxlckZyYW1lLT5p
c1ZNRW50cnlTZW50aW5lbCgpKTsKIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIHByaW50aWYo
aSwgIiAgIGlzSW5saW5lZEZyYW1lICVkXG4iLCBpc0lubGluZWRGcmFtZSgpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgJKHJl
dmlzaW9uIDE3MjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFj
a1Zpc2l0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBTdGFj
a1Zpc2l0b3JfaAogI2RlZmluZSBTdGFja1Zpc2l0b3JfaAogCisjaW5jbHVkZSAiVk1FbnRyeVJl
Y29yZC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlND
IHsKQEAgLTU2LDYgKzU3LDcgQEAgcHVibGljOgogCiAgICAgICAgIHNpemVfdCBpbmRleCgpIGNv
bnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KICAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsg
fQorICAgICAgICBib29sIGNhbGxlcklzVk1FbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVy
SXNWTUVudHJ5OyB9CiAgICAgICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUoKSBjb25zdCB7IHJl
dHVybiBtX2NhbGxlckZyYW1lOyB9CiAgICAgICAgIEpTT2JqZWN0KiBjYWxsZWUoKSBjb25zdCB7
IHJldHVybiBtX2NhbGxlZTsgfQogICAgICAgICBKU1Njb3BlKiBzY29wZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2NvcGU7IH0KQEAgLTk0LDExICs5NiwxMyBAQCBwdWJsaWM6CiAKICAgICAgICAgc2l6
ZV90IG1faW5kZXg7CiAgICAgICAgIHNpemVfdCBtX2FyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
OworICAgICAgICBWTUVudHJ5RnJhbWUqIG1fVk1FbnRyeUZyYW1lOwogICAgICAgICBDYWxsRnJh
bWUqIG1fY2FsbGVyRnJhbWU7CiAgICAgICAgIEpTT2JqZWN0KiBtX2NhbGxlZTsKICAgICAgICAg
SlNTY29wZSogbV9zY29wZTsKICAgICAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKICAgICAg
ICAgdW5zaWduZWQgbV9ieXRlY29kZU9mZnNldDsKKyAgICAgICAgYm9vbCBtX2NhbGxlcklzVk1F
bnRyeTsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBtX2lu
bGluZUNhbGxGcmFtZTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1ZNRW50cnlSZWNvcmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvVk1FbnRyeVJlY29yZC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNRW50cnlSZWNvcmQuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBWTUVudHJ5UmVjb3JkX2gKKyNkZWZpbmUgVk1FbnRyeVJlY29yZF9oCisK
K25hbWVzcGFjZSBKU0MgeworCit0eXBlZGVmIHZvaWQgVk1FbnRyeUZyYW1lOworCitjbGFzcyBF
eGVjU3RhdGU7CitjbGFzcyBWTTsKKworc3RydWN0IFZNRW50cnlSZWNvcmQgeworICAgIC8qCisg
ICAgICogVGhpcyByZWNvcmQgc3RvcmVkIGluIGEgdm1FbnRyeVRve0phdmFTY3JpcHQsSG9zdH0g
YWxsb2NhdGVkIGZyYW1lLiBJdCBpcyBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrCisgICAgICogYWZ0
ZXIgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzIHdoZXJlIGxvY2FsIHZhcmlhYmxlcyB3b3VsZCBnby4K
KyAgICAgKi8KKyAgICBWTSogbV92bTsKKyAgICBFeGVjU3RhdGUqIG1fcHJldlRvcENhbGxGcmFt
ZTsKKyAgICBWTUVudHJ5RnJhbWUqIG1fcHJldlRvcFZNRW50cnlDYWxsRnJhbWU7CisgICAgCisg
ICAgRXhlY1N0YXRlKiBwcmV2VG9wQ2FsbEZyYW1lKCkgeyByZXR1cm4gbV9wcmV2VG9wQ2FsbEZy
YW1lOyB9CisgICAgCisgICAgVk1FbnRyeUZyYW1lKiBwcmV2VG9wVk1FbnRyeUNhbGxGcmFtZSgp
IHsgcmV0dXJuIG1fcHJldlRvcFZNRW50cnlDYWxsRnJhbWU7IH0KK307CisKK2V4dGVybiAiQyIg
Vk1FbnRyeVJlY29yZCogdm1FbnRyeVJlY29yZEZyb21WTUVudHJ5RnJhbWUoVk1FbnRyeUZyYW1l
Kik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gVk1FbnRyeVJlY29yZF9oCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1JbnNwZWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUluc3BlY3Rv
ci5jcHAJKHJldmlzaW9uIDE3MjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9WTUluc3BlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNp
ZiBFTkFCTEUoVk1JTlNQRUNUT1IpCiAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiU3RhY2tWaXNpdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtOTksMTQgKzEwMCwzMCBAQCB2b2lkIFZNSW5z
cGVjdG9yOjpkdW1wRnJhbWUoQ2FsbEZyYW1lKiBmCiAgICAgcHJpbnRmKCJcbiIpOwogfQogCitj
bGFzcyBDb3VudEZyYW1lc0Z1bmN0b3IgeworcHVibGljOgorICAgIENvdW50RnJhbWVzRnVuY3Rv
cigpCisgICAgICAgIDogbV9jb3VudCgtMSkKKyAgICB7IH0KKworICAgIFN0YWNrVmlzaXRvcjo6
U3RhdHVzIG9wZXJhdG9yKCkoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKQorICAgIHsKKyAgICAgICAg
bV9jb3VudCsrOworICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKKyAgICB9
CisgICAgCisgICAgaW50IGNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudDsgfQorICAgIAor
cHJpdmF0ZToKKyAgICB1bnNpZ25lZCBtX2NvdW50OworfTsKKwogaW50IFZNSW5zcGVjdG9yOjpj
b3VudEZyYW1lcyhDYWxsRnJhbWUqIGZyYW1lKQogewotICAgIGludCBjb3VudCA9IC0xOwotICAg
IHdoaWxlIChmcmFtZSAmJiAhZnJhbWUtPmlzVk1FbnRyeVNlbnRpbmVsKCkpIHsKLSAgICAgICAg
Y291bnQrKzsKLSAgICAgICAgZnJhbWUgPSBmcmFtZS0+Y2FsbGVyRnJhbWUoKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIGNvdW50OworICAgIENvdW50RnJhbWVzRnVuY3RvciBmdW5jdG9yKCk7CisgICAg
U3RhY2tWaXNpdG9yOjp2aXNpdChmcmFtZSwgZnVuY3Rvcik7CisKKyAgICByZXR1cm4gZnVuY3Rv
ci5jb3VudCgpOwogfQogCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29k
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNw
cAkocmV2aXNpb24gMTcyNTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2Rl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBKSVRDb2RlOjp+SklUQ29kZSgp
CiAKIEpTVmFsdWUgSklUQ29kZTo6ZXhlY3V0ZShWTSogdm0sIFByb3RvQ2FsbEZyYW1lKiBwcm90
b0NhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTVmFsdWU6OmRlY29kZShjYWxs
VG9KYXZhU2NyaXB0KGV4ZWN1dGFibGVBZGRyZXNzKCksIHZtLCBwcm90b0NhbGxGcmFtZSkpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKHZtRW50cnlUb0phdmFTY3JpcHQo
ZXhlY3V0YWJsZUFkZHJlc3MoKSwgdm0sIHByb3RvQ2FsbEZyYW1lKSk7CiAgICAgcmV0dXJuIHZt
LT5leGNlcHRpb24oKSA/IGpzTnVsbCgpIDogcmVzdWx0OwogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE3MjU5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc5LDcgKzc5LDkgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3Rh
Y2tPdgogewogICAgIC8vIFdlIHBhc3MgaW4gb3VyIG93biBjb2RlIGJsb2NrLCBiZWNhdXNlIHRo
ZSBjYWxsZnJhbWUgaGFzbid0IGJlZW4gcG9wdWxhdGVkLgogICAgIFZNKiB2bSA9IGNvZGVCbG9j
ay0+dm0oKTsKLSAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWVT
a2lwcGluZ1ZNRW50cnlTZW50aW5lbCgpOworICAgIAorICAgIFZNRW50cnlGcmFtZSogdG9wVk1F
bnRyeUNhbGxGcmFtZSA9IHZtLT50b3BWTUVudHJ5Q2FsbEZyYW1lOworICAgIENhbGxGcmFtZSog
Y2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSh0b3BWTUVudHJ5Q2FsbEZyYW1lKTsKICAg
ICBpZiAoIWNhbGxlckZyYW1lKQogICAgICAgICBjYWxsZXJGcmFtZSA9IGV4ZWM7CiAKQEAgLTkx
LDcgKzkzLDggQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdgogaW50
MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBDYWxsRnJhbWUqIGNhbGxlckZy
YW1lID0gZXhlYy0+Y2FsbGVyRnJhbWVTa2lwcGluZ1ZNRW50cnlTZW50aW5lbCgpOworICAgIFZN
RW50cnlGcmFtZSogdG9wVk1FbnRyeUNhbGxGcmFtZSA9IHZtLT50b3BWTUVudHJ5Q2FsbEZyYW1l
OworICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSh0b3BWTUVu
dHJ5Q2FsbEZyYW1lKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
ZXJGcmFtZSk7CiAKICAgICBKU1N0YWNrJiBzdGFjayA9IHZtLT5pbnRlcnByZXRlci0+c3RhY2so
KTsKQEAgLTEwNiw3ICsxMDksOCBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2Fs
bEFyaXR5CiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVj
ayhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgQ2Fs
bEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lU2tpcHBpbmdWTUVudHJ5U2Vu
dGluZWwoKTsKKyAgICBWTUVudHJ5RnJhbWUqIHRvcFZNRW50cnlDYWxsRnJhbWUgPSB2bS0+dG9w
Vk1FbnRyeUNhbGxGcmFtZTsKKyAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gZXhlYy0+Y2Fs
bGVyRnJhbWUodG9wVk1FbnRyeUNhbGxGcmFtZSk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbGVyRnJhbWUpOwogCiAgICAgSlNTdGFjayYgc3RhY2sgPSB2bS0+aW50
ZXJwcmV0ZXItPnN0YWNrKCk7CkBAIC0xODIyLDcgKzE4MjYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uSW5pdEdsb2JhbENvCiAKIHZvaWQgSklUX09QRVJBVElPTiBsb29rdXBFeGNl
cHRpb25IYW5kbGVyKFZNKiB2bSwgRXhlY1N0YXRlKiBleGVjKQogewotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIE5hdGl2ZUNhbGxGcmFtZVRyYWNlcjo6Vk1FbnRy
eVNlbnRpbmVsT0spOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OwogCiAgICAgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSA9IHZtLT5leGNlcHRpb24oKTsKICAgICBB
U1NFUlQoZXhjZXB0aW9uVmFsdWUpOwpAQCAtMTgzNiw3ICsxODQwLDYgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZNSGFuZGxlRXhjZQogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwog
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCi0gICAgQVNTRVJU
KCFleGVjLT5pc1ZNRW50cnlTZW50aW5lbCgpKTsKICAgICBnZW5lcmljVW53aW5kKHZtLCBleGVj
LCB2bS0+ZXhjZXB0aW9uKCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN0dWJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5oCShyZXZpc2lvbiAxNzI1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDggQEAgc3RydWN0IFByb3RvQ2Fs
bEZyYW1lOwogY2xhc3MgVk07CiAKIGV4dGVybiAiQyIgewotICAgIEVuY29kZWRKU1ZhbHVlIGNh
bGxUb0phdmFTY3JpcHQodm9pZCosIFZNKiwgUHJvdG9DYWxsRnJhbWUqKTsKLSAgICBFbmNvZGVk
SlNWYWx1ZSBjYWxsVG9OYXRpdmVGdW5jdGlvbih2b2lkKiwgVk0qLCBQcm90b0NhbGxGcmFtZSop
OworICAgIEVuY29kZWRKU1ZhbHVlIHZtRW50cnlUb0phdmFTY3JpcHQodm9pZCosIFZNKiwgUHJv
dG9DYWxsRnJhbWUqKTsKKyAgICBFbmNvZGVkSlNWYWx1ZSB2bUVudHJ5VG9OYXRpdmUodm9pZCos
IFZNKiwgUHJvdG9DYWxsRnJhbWUqKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2
aXNpb24gMTcyNTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRl
ICJQcm90b0NhbGxGcmFtZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0
cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAiVk1FbnRyeVJlY29yZC5oIgogI2luY2x1ZGUgIlZh
bHVlUHJvZmlsZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShyZXZpc2lvbiAx
NzI1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgog
I2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFt
ZS5oIgorI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiVk0uaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CkBAIC05MywxOCArOTQsMjcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHBy
b2dyYW1FbnRyeVRodW5rRwogCiAvLyBOb24tSklUIChpLmUuIEMgTG9vcCBMTElOVCkgY2FzZToK
IAotRW5jb2RlZEpTVmFsdWUgY2FsbFRvSmF2YVNjcmlwdCh2b2lkKiBleGVjdXRhYmxlQWRkcmVz
cywgVk0qIHZtLCBQcm90b0NhbGxGcmFtZSogcHJvdG9DYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1
ZSB2bUVudHJ5VG9KYXZhU2NyaXB0KHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzLCBWTSogdm0sIFBy
b3RvQ2FsbEZyYW1lKiBwcm90b0NhbGxGcmFtZSkKIHsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IENM
b29wOjpleGVjdXRlKGxsaW50X2NhbGxfdG9famF2YXNjcmlwdCwgZXhlY3V0YWJsZUFkZHJlc3Ms
IHZtLCBwcm90b0NhbGxGcmFtZSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDTG9vcDo6ZXhlY3V0
ZShsbGludF92bV9lbnRyeV90b19qYXZhc2NyaXB0LCBleGVjdXRhYmxlQWRkcmVzcywgdm0sIHBy
b3RvQ2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIGNhbGxUb05hdGl2ZUZ1bmN0aW9uKHZvaWQqIGV4ZWN1dGFibGVBZGRy
ZXNzLCBWTSogdm0sIFByb3RvQ2FsbEZyYW1lKiBwcm90b0NhbGxGcmFtZSkKK0VuY29kZWRKU1Zh
bHVlIHZtRW50cnlUb05hdGl2ZSh2b2lkKiBleGVjdXRhYmxlQWRkcmVzcywgVk0qIHZtLCBQcm90
b0NhbGxGcmFtZSogcHJvdG9DYWxsRnJhbWUpCiB7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBDTG9v
cDo6ZXhlY3V0ZShsbGludF9jYWxsX3RvX25hdGl2ZV9mdW5jdGlvbiwgZXhlY3V0YWJsZUFkZHJl
c3MsIHZtLCBwcm90b0NhbGxGcmFtZSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDTG9vcDo6ZXhl
Y3V0ZShsbGludF92bV9lbnRyeV90b19uYXRpdmUsIGV4ZWN1dGFibGVBZGRyZXNzLCB2bSwgcHJv
dG9DYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAor
ZXh0ZXJuICJDIiBWTUVudHJ5UmVjb3JkKiB2bUVudHJ5UmVjb3JkRnJvbVZNRW50cnlGcmFtZShW
TUVudHJ5RnJhbWUqIGVudHJ5RnJhbWUpCit7CisgICAgLy8gVGhlIEMgTG9vcCBkb2Vzbid0IGhh
dmUgYW55IGNhbGxlZSBzYXZlIHJlZ2lzdGVycywgc28gdGhlIFZNRW50cnlSZWNvcmQgaXMgYWxs
b2NhdGVkIGF0IHRoZSBiYXNlIG9mIHRoZSBmcmFtZS4KKyAgICBpbnRwdHJfdCBzdGFja0FsaWdu
bWVudCA9IHN0YWNrQWxpZ25tZW50Qnl0ZXMoKTsKKyAgICBpbnRwdHJfdCBWTUVudHJ5VG90YWxG
cmFtZVNpemUgPSAoc2l6ZW9mKFZNRW50cnlSZWNvcmQpICsgKHN0YWNrQWxpZ25tZW50IC0gMSkp
ICYgfihzdGFja0FsaWdubWVudCAtIDEpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFZN
RW50cnlSZWNvcmQqPihzdGF0aWNfY2FzdDxjaGFyKj4oZW50cnlGcmFtZSkgLSBWTUVudHJ5VG90
YWxGcmFtZVNpemUpOworfQorCisKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5o
CShyZXZpc2lvbiAxNzI1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRU
aHVua3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsOCBAQCBjbGFzcyBWTTsKIHN0cnVj
dCBQcm90b0NhbGxGcmFtZTsKIAogZXh0ZXJuICJDIiB7Ci0gICAgRW5jb2RlZEpTVmFsdWUgY2Fs
bFRvSmF2YVNjcmlwdCh2b2lkKiwgVk0qLCBQcm90b0NhbGxGcmFtZSopOwotICAgIEVuY29kZWRK
U1ZhbHVlIGNhbGxUb05hdGl2ZUZ1bmN0aW9uKHZvaWQqLCBWTSosIFByb3RvQ2FsbEZyYW1lKik7
CisgICAgRW5jb2RlZEpTVmFsdWUgdm1FbnRyeVRvSmF2YVNjcmlwdCh2b2lkKiwgVk0qLCBQcm90
b0NhbGxGcmFtZSopOworICAgIEVuY29kZWRKU1ZhbHVlIHZtRW50cnlUb05hdGl2ZSh2b2lkKiwg
Vk0qLCBQcm90b0NhbGxGcmFtZSopOwogfQogCiBuYW1lc3BhY2UgTExJbnQgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20JKHJldmlzaW9uIDE3MjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUs
MTYgKzE1NSwxNCBAQCBtYWNybyBjYWxsU2xvd1BhdGgoc2xvd1BhdGgpCiAgICAgbW92ZSB0MCwg
UEMKIGVuZAogCi1tYWNybyBkb0NhbGxUb0phdmFTY3JpcHQobWFrZUNhbGwpCittYWNybyBkb1ZN
RW50cnkobWFrZUNhbGwpCiAgICAgaWYgWDg2IG9yIFg4Nl9XSU4KICAgICAgICAgY29uc3QgZW50
cnkgPSB0NAogICAgICAgICBjb25zdCB2bSA9IHQzCiAgICAgICAgIGNvbnN0IHByb3RvQ2FsbEZy
YW1lID0gdDUKIAotICAgICAgICBjb25zdCBwcmV2aW91c0NGUiA9IHQwCi0gICAgICAgIGNvbnN0
IHByZXZpb3VzUEMgPSB0MQotICAgICAgICBjb25zdCB0ZW1wMSA9IHQwICMgU2FtZSBhcyBwcmV2
aW91c0NGUgotICAgICAgICBjb25zdCB0ZW1wMiA9IHQxICMgU2FtZSBhcyBwcmV2aW91c1BDCisg
ICAgICAgIGNvbnN0IHRlbXAxID0gdDAKKyAgICAgICAgY29uc3QgdGVtcDIgPSB0MQogICAgICAg
ICBjb25zdCB0ZW1wMyA9IHQyCiAgICAgICAgIGNvbnN0IHRlbXA0ID0gdDMgIyBzYW1lIGFzIHZt
CiAgICAgZWxzaWYgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIENfTE9PUApA
QCAtMTcyLDkgKzE3MCw3IEBAIG1hY3JvIGRvQ2FsbFRvSmF2YVNjcmlwdChtYWtlQ2FsbCkKICAg
ICAgICAgY29uc3Qgdm0gPSBhMQogICAgICAgICBjb25zdCBwcm90b0NhbGxGcmFtZSA9IGEyCiAK
LSAgICAgICAgY29uc3QgcHJldmlvdXNDRlIgPSB0MwotICAgICAgICBjb25zdCBwcmV2aW91c1BD
ID0gbHIKLSAgICAgICAgY29uc3QgdGVtcDEgPSB0MyAjIFNhbWUgYXMgcHJldmlvdXNDRlIKKyAg
ICAgICAgY29uc3QgdGVtcDEgPSB0MwogICAgICAgICBjb25zdCB0ZW1wMiA9IHQ0CiAgICAgICAg
IGNvbnN0IHRlbXAzID0gdDUKICAgICAgICAgY29uc3QgdGVtcDQgPSB0NCAjIFNhbWUgYXMgdGVt
cDIKQEAgLTE4NCw4ICsxODAsNiBAQCBtYWNybyBkb0NhbGxUb0phdmFTY3JpcHQobWFrZUNhbGwp
CiAgICAgICAgIGNvbnN0IHByb3RvQ2FsbEZyYW1lID0gYTIKICAgICAgICAgY29uc3QgdG9wT2ZT
dGFjayA9IGEzCiAKLSAgICAgICAgY29uc3QgcHJldmlvdXNDRlIgPSB0MgotICAgICAgICBjb25z
dCBwcmV2aW91c1BDID0gbHIKICAgICAgICAgY29uc3QgdGVtcDEgPSB0MwogICAgICAgICBjb25z
dCB0ZW1wMiA9IHQ1CiAgICAgICAgIGNvbnN0IHRlbXAzID0gdDQKQEAgLTE5NSw3MSArMTg5LDUz
IEBAIG1hY3JvIGRvQ2FsbFRvSmF2YVNjcmlwdChtYWtlQ2FsbCkKICAgICAgICAgY29uc3Qgdm0g
PSBhMQogICAgICAgICBjb25zdCBwcm90b0NhbGxGcmFtZSA9IGEyCiAKLSAgICAgICAgY29uc3Qg
cHJldmlvdXNDRlIgPSB0MwotICAgICAgICBjb25zdCBwcmV2aW91c1BDID0gbHIKLSAgICAgICAg
Y29uc3QgdGVtcDEgPSB0MyAjIFNhbWUgYXMgcHJldmlvdXNDRlIKKyAgICAgICAgY29uc3QgdGVt
cDEgPSB0MwogICAgICAgICBjb25zdCB0ZW1wMiA9IGEzCiAgICAgICAgIGNvbnN0IHRlbXAzID0g
dDgKICAgICAgICAgY29uc3QgdGVtcDQgPSB0OQogICAgIGVuZAogCi0gICAgY2FsbFRvSmF2YVNj
cmlwdFByb2xvZ3VlKCkKKyAgICBmdW5jdGlvblByb2xvZ3VlKCkKKyAgICBwdXNoQ2FsbGVlU2F2
ZXMoKQogCiAgICAgaWYgWDg2Ci0gICAgICAgIGxvYWRwIDM2W3NwXSwgdm0KLSAgICAgICAgbG9h
ZHAgMzJbc3BdLCBlbnRyeQotICAgIGVsc2lmIFg4Nl9XSU4KLSAgICAgICAgbG9hZHAgNDBbc3As
IHRlbXAzXSwgdm0KLSAgICAgICAgbG9hZHAgMzZbc3AsIHRlbXAzXSwgZW50cnkKLSAgICBlbHNl
Ci0gICAgICAgIG1vdmUgY2ZyLCBwcmV2aW91c0NGUgorICAgICAgICBsb2FkcCAxMltjZnJdLCB2
bQorICAgICAgICBsb2FkcCA4W2Nmcl0sIGVudHJ5CiAgICAgZW5kCiAKLSAgICBjaGVja1N0YWNr
UG9pbnRlckFsaWdubWVudCh0ZW1wMiwgMHhiYWQwZGMwMSkKKyAgICB2bUVudHJ5UmVjb3JkRnJv
bVZNRW50cnlGcmFtZShjZnIsIHNwKQogCi0gICAgIyBUaGUgc3RhY2sgcmVzZXJ2ZWQgem9uZSBl
bnN1cmVzIHRoYXQgd2UgaGF2ZSBhZGVxdWF0ZSBzcGFjZSBmb3IgdGhlCi0gICAgIyBWTUVudHJ5
U2VudGluZWxGcmFtZS4gUHJvY2VlZCB3aXRoIGFsbG9jYXRpbmcgYW5kIGluaXRpYWxpemluZyB0
aGUKLSAgICAjIHNlbnRpbmVsIGZyYW1lLgotICAgIG1vdmUgc3AsIGNmcgotICAgIHN1YnAgQ2Fs
bEZyYW1lSGVhZGVyU2xvdHMgKiA4LCBjZnIKLSAgICBzdG9yZXAgMCwgQXJndW1lbnRDb3VudFtj
ZnJdCi0gICAgc3RvcmVwIHZtLCBDYWxsZWVbY2ZyXQorICAgIHN0b3JlcCB2bSwgVk1FbnRyeVJl
Y29yZDo6bV92bVtzcF0KICAgICBsb2FkcCBWTTo6dG9wQ2FsbEZyYW1lW3ZtXSwgdGVtcDIKLSAg
ICBzdG9yZXAgdGVtcDIsIFNjb3BlQ2hhaW5bY2ZyXQotICAgIHN0b3JlcCAxLCBDb2RlQmxvY2tb
Y2ZyXQotICAgIGlmIFg4NgotICAgICAgICBsb2FkcCAyOFtzcF0sIHByZXZpb3VzUEMKLSAgICAg
ICAgbG9hZHAgMjRbc3BdLCBwcmV2aW91c0NGUgotICAgIGVsc2lmIFg4Nl9XSU4KLSAgICAgICAg
bG9hZHAgMzJbc3AsIHRlbXAzXSwgcHJldmlvdXNQQwotICAgICAgICBsb2FkcCAyOFtzcCwgdGVt
cDNdLCBwcmV2aW91c0NGUgorICAgIHN0b3JlcCB0ZW1wMiwgVk1FbnRyeVJlY29yZDo6bV9wcmV2
VG9wQ2FsbEZyYW1lW3NwXQorICAgIGxvYWRwIFZNOjp0b3BWTUVudHJ5Q2FsbEZyYW1lW3ZtXSwg
dGVtcDIKKyAgICBzdG9yZXAgdGVtcDIsIFZNRW50cnlSZWNvcmQ6Om1fcHJldlRvcFZNRW50cnlD
YWxsRnJhbWVbc3BdCisKKyAgICAjIEFsaWduIHN0YWNrIHBvaW50ZXIKKyAgICBpZiBYODZfV0lO
CisgICAgICAgIGFkZHAgQ2FsbEZyYW1lQWxpZ25TbG90cyAqIFNsb3RTaXplLCBzcCwgdGVtcDEK
KyAgICAgICAgYW5kcCB+U3RhY2tBbGlnbm1lbnRNYXNrLCB0ZW1wMQorICAgICAgICBzdWJwIHRl
bXAxLCBDYWxsRnJhbWVBbGlnblNsb3RzICogU2xvdFNpemUsIHNwCisgICAgZWxzaWYgQVJNIG9y
IEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMCisgICAgICAgIGFkZHAgQ2FsbEZyYW1lQWxpZ25T
bG90cyAqIFNsb3RTaXplLCBzcCwgdGVtcDEKKyAgICAgICAgY2xyYnAgdGVtcDEsIFN0YWNrQWxp
Z25tZW50TWFzaywgdGVtcDEKKyAgICAgICAgc3VicCB0ZW1wMSwgQ2FsbEZyYW1lQWxpZ25TbG90
cyAqIFNsb3RTaXplLCBzcAogICAgIGVuZAotICAgIHN0b3JlcCBwcmV2aW91c1BDLCBSZXR1cm5Q
Q1tjZnJdCi0gICAgc3RvcmVwIHByZXZpb3VzQ0ZSLCBDYWxsZXJGcmFtZVtjZnJdCiAKICAgICBp
ZiBYODYKLSAgICAgICAgbG9hZHAgNDBbc3BdLCBwcm90b0NhbGxGcmFtZQotICAgIGVsc2lmIFg4
Nl9XSU4KLSAgICAgICAgbG9hZHAgNDRbc3AsIHRlbXAzXSwgcHJvdG9DYWxsRnJhbWUKKyAgICAg
ICAgbG9hZHAgMTZbY2ZyXSwgcHJvdG9DYWxsRnJhbWUKICAgICBlbmQKIAogICAgIGxvYWRpIFBy
b3RvQ2FsbEZyYW1lOjpwYWRkZWRBcmdDb3VudFtwcm90b0NhbGxGcmFtZV0sIHRlbXAyCiAgICAg
YWRkcCBDYWxsRnJhbWVIZWFkZXJTbG90cywgdGVtcDIsIHRlbXAyCiAgICAgbHNoaWZ0cCAzLCB0
ZW1wMgotICAgIHN1YnAgY2ZyLCB0ZW1wMiwgdGVtcDEKKyAgICBzdWJwIHNwLCB0ZW1wMiwgdGVt
cDEKIAogICAgICMgRW5zdXJlIHRoYXQgd2UgaGF2ZSBlbm91Z2ggYWRkaXRpb25hbCBzdGFjayBj
YXBhY2l0eSBmb3IgdGhlIGluY29taW5nIGFyZ3MsCiAgICAgIyBhbmQgdGhlIGZyYW1lIGZvciB0
aGUgSlMgY29kZSB3ZSdyZSBleGVjdXRpbmcuIFdlIG5lZWQgdG8gZG8gdGhpcyBjaGVjawogICAg
ICMgYmVmb3JlIHdlIHN0YXJ0IGNvcHlpbmcgdGhlIGFyZ3MgZnJvbSB0aGUgcHJvdG9DYWxsRnJh
bWUgYmVsb3cuCiAgICAgYnBhZXEgdGVtcDEsIFZNOjptX2pzU3RhY2tMaW1pdFt2bV0sIC5zdGFj
a0hlaWdodE9LCiAKLSAgICBpZiBBUk12NwotICAgICAgICBzdWJwIGNmciwgOCwgdGVtcDIKLSAg
ICAgICAgbW92ZSB0ZW1wMiwgc3AKLSAgICBlbHNlCi0gICAgICAgIHN1YnAgY2ZyLCA4LCBzcAot
ICAgIGVuZAotCiAgICAgaWYgQ19MT09QCiAgICAgICAgIG1vdmUgZW50cnksIHRlbXAyCiAgICAg
ICAgIG1vdmUgdm0sIHRlbXAzCkBAIC0yNzUsNyArMjUxLDE5IEBAIG1hY3JvIGRvQ2FsbFRvSmF2
YVNjcmlwdChtYWtlQ2FsbCkKICAgICBlbmQKIAogICAgIGNDYWxsMihfbGxpbnRfdGhyb3dfc3Rh
Y2tfb3ZlcmZsb3dfZXJyb3IsIHZtLCBwcm90b0NhbGxGcmFtZSkKLSAgICBjYWxsVG9KYXZhU2Ny
aXB0RXBpbG9ndWUoKQorCisgICAgdm1FbnRyeVJlY29yZEZyb21WTUVudHJ5RnJhbWUoY2ZyLCBz
cCkKKworICAgIGxvYWRwIFZNRW50cnlSZWNvcmQ6Om1fdm1bc3BdLCB0ZW1wMworICAgIGxvYWRw
IFZNRW50cnlSZWNvcmQ6Om1fcHJldlRvcENhbGxGcmFtZVtzcF0sIHRlbXA0CisgICAgc3RvcmVw
IHRlbXA0LCBWTTo6dG9wQ2FsbEZyYW1lW3RlbXAzXQorICAgIGxvYWRwIFZNRW50cnlSZWNvcmQ6
Om1fcHJldlRvcFZNRW50cnlDYWxsRnJhbWVbc3BdLCB0ZW1wNAorICAgIHN0b3JlcCB0ZW1wNCwg
Vk06OnRvcFZNRW50cnlDYWxsRnJhbWVbdGVtcDNdCisKKyAgICBzdWJwIGNmciwgQ2FsbGVlUmVn
aXN0ZXJTYXZlU2l6ZSwgc3AKKworICAgIHBvcENhbGxlZVNhdmVzKCkKKyAgICBmdW5jdGlvbkVw
aWxvZ3VlKCkKICAgICByZXQKIAogLnN0YWNrSGVpZ2h0T0s6CkBAIC0zMTYsMTggKzMwNCwyMiBA
QCBtYWNybyBkb0NhbGxUb0phdmFTY3JpcHQobWFrZUNhbGwpCiAKIC5jb3B5QXJnc0RvbmU6CiAg
ICAgc3RvcmVwIHNwLCBWTTo6dG9wQ2FsbEZyYW1lW3ZtXQorICAgIHN0b3JlcCBjZnIsIFZNOjp0
b3BWTUVudHJ5Q2FsbEZyYW1lW3ZtXQogCiAgICAgbWFrZUNhbGwoZW50cnksIHRlbXAxLCB0ZW1w
MikKIAotICAgIGJwZXEgQ29kZUJsb2NrW2Nmcl0sIDEsIC5jYWxsZWVGcmFtZVBvcHBlZAotICAg
IGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIGNmcgorICAgIHZtRW50cnlSZWNvcmRGcm9tVk1FbnRy
eUZyYW1lKGNmciwgc3ApCiAKLS5jYWxsZWVGcmFtZVBvcHBlZDoKLSAgICBsb2FkcCBDYWxsZWVb
Y2ZyXSwgdGVtcDMgIyBWTQotICAgIGxvYWRwIFNjb3BlQ2hhaW5bY2ZyXSwgdGVtcDQgIyBwcmV2
aW91cyB0b3BDYWxsRnJhbWUKKyAgICBsb2FkcCBWTUVudHJ5UmVjb3JkOjptX3ZtW3NwXSwgdGVt
cDMKKyAgICBsb2FkcCBWTUVudHJ5UmVjb3JkOjptX3ByZXZUb3BDYWxsRnJhbWVbc3BdLCB0ZW1w
NAogICAgIHN0b3JlcCB0ZW1wNCwgVk06OnRvcENhbGxGcmFtZVt0ZW1wM10KKyAgICBsb2FkcCBW
TUVudHJ5UmVjb3JkOjptX3ByZXZUb3BWTUVudHJ5Q2FsbEZyYW1lW3NwXSwgdGVtcDQKKyAgICBz
dG9yZXAgdGVtcDQsIFZNOjp0b3BWTUVudHJ5Q2FsbEZyYW1lW3RlbXAzXQorCisgICAgc3VicCBj
ZnIsIENhbGxlZVJlZ2lzdGVyU2F2ZVNpemUsIHNwCiAKLSAgICBjYWxsVG9KYXZhU2NyaXB0RXBp
bG9ndWUoKQorICAgIHBvcENhbGxlZVNhdmVzKCkKKyAgICBmdW5jdGlvbkVwaWxvZ3VlKCkKICAg
ICByZXQKIGVuZAogCkBAIC0zNzgsMTkgKzM3MCwyMCBAQCBfaGFuZGxlVW5jYXVnaHRFeGNlcHRp
b246CiAgICAgbG9hZHAgTWFya2VkQmxvY2s6Om1fd2Vha1NldCArIFdlYWtTZXQ6Om1fdm1bdDNd
LCB0MwogICAgIGxvYWRwIFZNOjpjYWxsRnJhbWVGb3JUaHJvd1t0M10sIGNmcgogCi0gICAgIyBT
byBmYXIsIHdlJ3ZlIHVud291bmQgdGhlIHN0YWNrIHRvIHRoZSBmcmFtZSBqdXN0IGJlbG93IHRo
ZSBzZW50aW5lbCBmcmFtZSwgZXhjZXB0Ci0gICAgIyBpbiB0aGUgY2FzZSBvZiBzdGFjayBvdmVy
ZmxvdyBpbiB0aGUgZmlyc3QgZnVuY3Rpb24gY2FsbGVkIGZyb20gY2FsbFRvSmF2YVNjcmlwdC4K
LSAgICAjIENoZWNrIGlmIHdlIG5lZWQgdG8gcG9wIHRvIHRoZSBzZW50aW5lbCBmcmFtZSBhbmQg
ZG8gdGhlIG5lY2Vzc2FyeSBjbGVhbiB1cCBmb3IKLSAgICAjIHJldHVybmluZyB0byB0aGUgY2Fs
bGVyIEMgZnJhbWUuCi0gICAgYnBlcSBDb2RlQmxvY2tbY2ZyXSwgMSwgLmhhbmRsZVVuY2F1Z2h0
RXhjZXB0aW9uQWxyZWFkeUlzU2VudGluZWwKICAgICBsb2FkcCBDYWxsZXJGcmFtZSArIFBheWxv
YWRPZmZzZXRbY2ZyXSwgY2ZyCi0uaGFuZGxlVW5jYXVnaHRFeGNlcHRpb25BbHJlYWR5SXNTZW50
aW5lbDoKIAotICAgIGxvYWRwIENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDMgIyBWTQot
ICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQ1ICMgcHJldmlvdXMg
dG9wQ2FsbEZyYW1lCisgICAgdm1FbnRyeVJlY29yZEZyb21WTUVudHJ5RnJhbWUoY2ZyLCBzcCkK
KworICAgIGxvYWRwIFZNRW50cnlSZWNvcmQ6Om1fdm1bc3BdLCB0MworICAgIGxvYWRwIFZNRW50
cnlSZWNvcmQ6Om1fcHJldlRvcENhbGxGcmFtZVtzcF0sIHQ1CiAgICAgc3RvcmVwIHQ1LCBWTTo6
dG9wQ2FsbEZyYW1lW3QzXQorICAgIGxvYWRwIFZNRW50cnlSZWNvcmQ6Om1fcHJldlRvcFZNRW50
cnlDYWxsRnJhbWVbc3BdLCB0NQorICAgIHN0b3JlcCB0NSwgVk06OnRvcFZNRW50cnlDYWxsRnJh
bWVbdDNdCiAKLSAgICBjYWxsVG9KYXZhU2NyaXB0RXBpbG9ndWUoKQorICAgIHN1YnAgY2ZyLCBD
YWxsZWVSZWdpc3RlclNhdmVTaXplLCBzcAorCisgICAgcG9wQ2FsbGVlU2F2ZXMoKQorICAgIGZ1
bmN0aW9uRXBpbG9ndWUoKQogICAgIHJldAogCiBtYWNybyBkb1JldHVybkZyb21Ib3N0RnVuY3Rp
b24oZXh0cmFTdGFja1NwYWNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDE3MjU5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzgsNyArMTM4LDcgQEAgbWFjcm8gY0NhbGw0KGZ1bmN0aW9uLCBh
cmcxLCBhcmcyLCBhcmczLAogICAgIGVuZAogZW5kCiAKLW1hY3JvIGRvQ2FsbFRvSmF2YVNjcmlw
dChtYWtlQ2FsbCkKK21hY3JvIGRvVk1FbnRyeShtYWtlQ2FsbCkKICAgICBpZiBYODZfNjQKICAg
ICAgICAgY29uc3QgZW50cnkgPSB0NAogICAgICAgICBjb25zdCB2bSA9IHQ1CkBAIC0xNzEsNDcg
KzE3MSwyOSBAQCBtYWNybyBkb0NhbGxUb0phdmFTY3JpcHQobWFrZUNhbGwpCiAgICAgICAgIGNv
bnN0IHRlbXAzID0gdDYKICAgICBlbmQKIAotICAgIGNhbGxUb0phdmFTY3JpcHRQcm9sb2d1ZSgp
CisgICAgZnVuY3Rpb25Qcm9sb2d1ZSgpCisgICAgcHVzaENhbGxlZVNhdmVzKCkKIAotICAgIGlm
IFg4Nl82NAotICAgICAgICBsb2FkcCA3Kjhbc3BdLCBwcmV2aW91c1BDCi0gICAgICAgIG1vdmUg
Nio4W3NwXSwgcHJldmlvdXNDRlIKLSAgICBlbHNpZiBYODZfNjRfV0lOCi0gICAgICAgICMgV2lu
NjQgcHVzaGVzIHR3byBtb3JlIHJlZ2lzdGVycwotICAgICAgICBsb2FkcCA5Kjhbc3BdLCBwcmV2
aW91c1BDCi0gICAgICAgIG1vdmUgOCo4W3NwXSwgcHJldmlvdXNDRlIKLSAgICBlbHNpZiBBUk02
NAotICAgICAgICBtb3ZlIGNmciwgcHJldmlvdXNDRlIKLSAgICBlbmQKKyAgICB2bUVudHJ5UmVj
b3JkRnJvbVZNRW50cnlGcmFtZShjZnIsIHNwKQogCiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGln
bm1lbnQodGVtcDIsIDB4YmFkMGRjMDEpCiAKLSAgICAjIFRoZSBzdGFjayByZXNlcnZlZCB6b25l
IGVuc3VyZXMgdGhhdCB3ZSBoYXZlIGFkZXF1YXRlIHNwYWNlIGZvciB0aGUKLSAgICAjIFZNRW50
cnlTZW50aW5lbEZyYW1lLiBQcm9jZWVkIHdpdGggYWxsb2NhdGluZyBhbmQgaW5pdGlhbGl6aW5n
IHRoZQotICAgICMgc2VudGluZWwgZnJhbWUuCi0gICAgbW92ZSBzcCwgY2ZyCi0gICAgc3VicCBD
YWxsRnJhbWVIZWFkZXJTbG90cyAqIDgsIGNmcgotICAgIHN0b3JlcCAwLCBBcmd1bWVudENvdW50
W2Nmcl0KLSAgICBzdG9yZXAgdm0sIENhbGxlZVtjZnJdCisgICAgc3RvcmVwIHZtLCBWTUVudHJ5
UmVjb3JkOjptX3ZtW3NwXQogICAgIGxvYWRwIFZNOjp0b3BDYWxsRnJhbWVbdm1dLCB0ZW1wMgot
ICAgIHN0b3JlcCB0ZW1wMiwgU2NvcGVDaGFpbltjZnJdCi0gICAgc3RvcmVwIDEsIENvZGVCbG9j
a1tjZnJdCi0KLSAgICBzdG9yZXAgcHJldmlvdXNQQywgUmV0dXJuUENbY2ZyXQotICAgIHN0b3Jl
cCBwcmV2aW91c0NGUiwgQ2FsbGVyRnJhbWVbY2ZyXQorICAgIHN0b3JlcCB0ZW1wMiwgVk1FbnRy
eVJlY29yZDo6bV9wcmV2VG9wQ2FsbEZyYW1lW3NwXQorICAgIGxvYWRwIFZNOjp0b3BWTUVudHJ5
Q2FsbEZyYW1lW3ZtXSwgdGVtcDIKKyAgICBzdG9yZXAgdGVtcDIsIFZNRW50cnlSZWNvcmQ6Om1f
cHJldlRvcFZNRW50cnlDYWxsRnJhbWVbc3BdCiAKICAgICBsb2FkaSBQcm90b0NhbGxGcmFtZTo6
cGFkZGVkQXJnQ291bnRbcHJvdG9DYWxsRnJhbWVdLCB0ZW1wMgogICAgIGFkZHAgQ2FsbEZyYW1l
SGVhZGVyU2xvdHMsIHRlbXAyLCB0ZW1wMgogICAgIGxzaGlmdHAgMywgdGVtcDIKLSAgICBzdWJw
IGNmciwgdGVtcDIsIHRlbXAxCisgICAgc3VicCBzcCwgdGVtcDIsIHRlbXAxCiAKICAgICAjIEVu
c3VyZSB0aGF0IHdlIGhhdmUgZW5vdWdoIGFkZGl0aW9uYWwgc3RhY2sgY2FwYWNpdHkgZm9yIHRo
ZSBpbmNvbWluZyBhcmdzLAogICAgICMgYW5kIHRoZSBmcmFtZSBmb3IgdGhlIEpTIGNvZGUgd2Un
cmUgZXhlY3V0aW5nLiBXZSBuZWVkIHRvIGRvIHRoaXMgY2hlY2sKICAgICAjIGJlZm9yZSB3ZSBz
dGFydCBjb3B5aW5nIHRoZSBhcmdzIGZyb20gdGhlIHByb3RvQ2FsbEZyYW1lIGJlbG93LgogICAg
IGJwYWVxIHRlbXAxLCBWTTo6bV9qc1N0YWNrTGltaXRbdm1dLCAuc3RhY2tIZWlnaHRPSwogCi0g
ICAgbW92ZSBjZnIsIHNwCi0KICAgICBpZiBDX0xPT1AKICAgICAgICAgbW92ZSBlbnRyeSwgdGVt
cDIKICAgICAgICAgbW92ZSB2bSwgdGVtcDMKQEAgLTIyNyw3ICsyMDksMTkgQEAgbWFjcm8gZG9D
YWxsVG9KYXZhU2NyaXB0KG1ha2VDYWxsKQogICAgIGVuZAogCiAgICAgY0NhbGwyKF9sbGludF90
aHJvd19zdGFja19vdmVyZmxvd19lcnJvciwgdm0sIHByb3RvQ2FsbEZyYW1lKQotICAgIGNhbGxU
b0phdmFTY3JpcHRFcGlsb2d1ZSgpCisKKyAgICB2bUVudHJ5UmVjb3JkRnJvbVZNRW50cnlGcmFt
ZShjZnIsIHRlbXAyKQorCisgICAgbG9hZHAgVk1FbnRyeVJlY29yZDo6bV92bVt0ZW1wMl0sIHZt
CisgICAgbG9hZHAgVk1FbnRyeVJlY29yZDo6bV9wcmV2VG9wQ2FsbEZyYW1lW3RlbXAyXSwgdGVt
cDMKKyAgICBzdG9yZXAgdGVtcDMsIFZNOjp0b3BDYWxsRnJhbWVbdm1dCisgICAgbG9hZHAgVk1F
bnRyeVJlY29yZDo6bV9wcmV2VG9wVk1FbnRyeUNhbGxGcmFtZVt0ZW1wMl0sIHRlbXAzCisgICAg
c3RvcmVwIHRlbXAzLCBWTTo6dG9wVk1FbnRyeUNhbGxGcmFtZVt2bV0KKworICAgIHN1YnAgY2Zy
LCBDYWxsZWVSZWdpc3RlclNhdmVTaXplLCBzcAorCisgICAgcG9wQ2FsbGVlU2F2ZXMoKQorICAg
IGZ1bmN0aW9uRXBpbG9ndWUoKQogICAgIHJldAogCiAuc3RhY2tIZWlnaHRPSzoKQEAgLTI2OSw2
ICsyNjMsNyBAQCBtYWNybyBkb0NhbGxUb0phdmFTY3JpcHQobWFrZUNhbGwpCiAgICAgZWxzZQog
ICAgICAgICBzdG9yZXAgc3AsIFZNOjp0b3BDYWxsRnJhbWVbdm1dCiAgICAgZW5kCisgICAgc3Rv
cmVwIGNmciwgVk06OnRvcFZNRW50cnlDYWxsRnJhbWVbdm1dCiAKICAgICBtb3ZlIDB4ZmZmZjAw
MDAwMDAwMDAwMCwgY3NyMQogICAgIGFkZHAgMiwgY3NyMSwgY3NyMgpAQCAtMjc5LDIwICsyNzQs
MTggQEAgbWFjcm8gZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VDYWxsKQogCiAgICAgY2hlY2tTdGFj
a1BvaW50ZXJBbGlnbm1lbnQodGVtcDMsIDB4YmFkMGRjMDMpCiAKLSAgICBicGVxIENvZGVCbG9j
a1tjZnJdLCAxLCAuY2FsbGVlRnJhbWVQb3BwZWQKLSAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJd
LCBjZnIKKyAgICB2bUVudHJ5UmVjb3JkRnJvbVZNRW50cnlGcmFtZShjZnIsIHRlbXAyKQogCi0u
Y2FsbGVlRnJhbWVQb3BwZWQ6Ci0gICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRlbXAyICMgVk0KLSAg
ICBsb2FkcCBTY29wZUNoYWluW2Nmcl0sIHRlbXAzICMgcHJldmlvdXMgdG9wQ2FsbEZyYW1lCi0g
ICAgc3RvcmVwIHRlbXAzLCBWTTo6dG9wQ2FsbEZyYW1lW3RlbXAyXQorICAgIGxvYWRwIFZNRW50
cnlSZWNvcmQ6Om1fdm1bdGVtcDJdLCB2bQorICAgIGxvYWRwIFZNRW50cnlSZWNvcmQ6Om1fcHJl
dlRvcENhbGxGcmFtZVt0ZW1wMl0sIHRlbXAzCisgICAgc3RvcmVwIHRlbXAzLCBWTTo6dG9wQ2Fs
bEZyYW1lW3ZtXQorICAgIGxvYWRwIFZNRW50cnlSZWNvcmQ6Om1fcHJldlRvcFZNRW50cnlDYWxs
RnJhbWVbdGVtcDJdLCB0ZW1wMworICAgIHN0b3JlcCB0ZW1wMywgVk06OnRvcFZNRW50cnlDYWxs
RnJhbWVbdm1dCiAKLSAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0ZW1wMywgMHhiYWQw
ZGMwNCkKKyAgICBzdWJwIGNmciwgQ2FsbGVlUmVnaXN0ZXJTYXZlU2l6ZSwgc3AKIAotICAgIGlm
IFg4Nl82NCBvciBYODZfNjRfV0lOCi0gICAgICAgIHBvcCB0NQotICAgIGVuZAotICAgIGNhbGxU
b0phdmFTY3JpcHRFcGlsb2d1ZSgpCisgICAgcG9wQ2FsbGVlU2F2ZXMoKQorICAgIGZ1bmN0aW9u
RXBpbG9ndWUoKQogCiAgICAgcmV0CiBlbmQKQEAgLTM0NiwxOSArMzM5LDE5IEBAIF9oYW5kbGVV
bmNhdWdodEV4Y2VwdGlvbjoKICAgICBsb2FkcCBNYXJrZWRCbG9jazo6bV93ZWFrU2V0ICsgV2Vh
a1NldDo6bV92bVt0M10sIHQzCiAgICAgbG9hZHAgVk06OmNhbGxGcmFtZUZvclRocm93W3QzXSwg
Y2ZyCiAKLSAgICAjIFNvIGZhciwgd2UndmUgdW53b3VuZCB0aGUgc3RhY2sgdG8gdGhlIGZyYW1l
IGp1c3QgYmVsb3cgdGhlIHNlbnRpbmVsIGZyYW1lLCBleGNlcHQKLSAgICAjIGluIHRoZSBjYXNl
IG9mIHN0YWNrIG92ZXJmbG93IGluIHRoZSBmaXJzdCBmdW5jdGlvbiBjYWxsZWQgZnJvbSBjYWxs
VG9KYXZhU2NyaXB0LgotICAgICMgQ2hlY2sgaWYgd2UgbmVlZCB0byBwb3AgdG8gdGhlIHNlbnRp
bmVsIGZyYW1lIGFuZCBkbyB0aGUgbmVjZXNzYXJ5IGNsZWFuIHVwIGZvcgotICAgICMgcmV0dXJu
aW5nIHRvIHRoZSBjYWxsZXIgQyBmcmFtZS4KLSAgICBicGVxIENvZGVCbG9ja1tjZnJdLCAxLCAu
aGFuZGxlVW5jYXVnaHRFeGNlcHRpb25BbHJlYWR5SXNTZW50aW5lbAogICAgIGxvYWRwIENhbGxl
ckZyYW1lW2Nmcl0sIGNmcgotLmhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uQWxyZWFkeUlzU2VudGlu
ZWw6CisgICAgdm1FbnRyeVJlY29yZEZyb21WTUVudHJ5RnJhbWUoY2ZyLCB0MikKIAotICAgIGxv
YWRwIENhbGxlZVtjZnJdLCB0MyAjIFZNCi0gICAgbG9hZHAgU2NvcGVDaGFpbltjZnJdLCB0NSAj
IHByZXZpb3VzIHRvcENhbGxGcmFtZQorICAgIGxvYWRwIFZNRW50cnlSZWNvcmQ6Om1fdm1bdDJd
LCB0MworICAgIGxvYWRwIFZNRW50cnlSZWNvcmQ6Om1fcHJldlRvcENhbGxGcmFtZVt0Ml0sIHQ1
CiAgICAgc3RvcmVwIHQ1LCBWTTo6dG9wQ2FsbEZyYW1lW3QzXQorICAgIGxvYWRwIFZNRW50cnlS
ZWNvcmQ6Om1fcHJldlRvcFZNRW50cnlDYWxsRnJhbWVbdDJdLCB0NQorICAgIHN0b3JlcCB0NSwg
Vk06OnRvcFZNRW50cnlDYWxsRnJhbWVbdDNdCiAKLSAgICBjYWxsVG9KYXZhU2NyaXB0RXBpbG9n
dWUoKQorICAgIHN1YnAgY2ZyLCBDYWxsZWVSZWdpc3RlclNhdmVTaXplLCBzcAorCisgICAgcG9w
Q2FsbGVlU2F2ZXMoKQorICAgIGZ1bmN0aW9uRXBpbG9ndWUoKQogICAgIHJldAogCiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20JKHJldmlzaW9uIDE3MjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOSBAQCBj
b25zdCBDYWxsRnJhbWVBbGlnblNsb3RzID0gMQogZW5kCiBjb25zdCBTbG90U2l6ZSA9IDgKIAor
Y29uc3QgU3RhY2tBbGlnbm1lbnQgPSAxNgorY29uc3QgU3RhY2tBbGlnbm1lbnRNYXNrID0gU3Rh
Y2tBbGlnbm1lbnQgLSAxCisKIGNvbnN0IENhbGxlckZyYW1lQW5kUENTaXplID0gMiAqIFB0clNp
emUKIAogY29uc3QgQ2FsbGVyRnJhbWUgPSAwCkBAIC0yMzUsOSArMjM4LDkgQEAgbWFjcm8gY2hl
Y2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodGVtcFJlZwogICAgICAgICBpZiBBUk0gb3IgQVJNdjcg
b3IgQVJNdjdfVFJBRElUSU9OQUwKICAgICAgICAgICAgICMgQVJNIGNhbid0IGRvIGxvZ2ljYWwg
b3BzIHdpdGggdGhlIHNwIGFzIGEgc291cmNlCiAgICAgICAgICAgICBtb3ZlIHNwLCB0ZW1wUmVn
Ci0gICAgICAgICAgICBhbmRwIDB4ZiwgdGVtcFJlZworICAgICAgICAgICAgYW5kcCBTdGFja0Fs
aWdubWVudE1hc2ssIHRlbXBSZWcKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYW5kcCBzcCwg
MHhmLCB0ZW1wUmVnCisgICAgICAgICAgICBhbmRwIHNwLCBTdGFja0FsaWdubWVudE1hc2ssIHRl
bXBSZWcKICAgICAgICAgZW5kCiAgICAgICAgIGJ0cHogdGVtcFJlZywgLnN0YWNrUG9pbnRlck9r
YXkKICAgICAgICAgbW92ZSBsb2NhdGlvbiwgdGVtcFJlZwpAQCAtMjQ2LDYgKzI0OSwyNiBAQCBt
YWNybyBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0ZW1wUmVnCiAgICAgZW5kCiBlbmQKIAor
aWYgQ19MT09QCisgICAgY29uc3QgQ2FsbGVlU2F2ZVJlZ2lzdGVyQ291bnQgPSAwCitlbHNpZiBB
Uk0gb3IgQVJNdjdfVFJBRElUSU9OQUwgb3IgQVJNdjcKKyAgICBjb25zdCBDYWxsZWVTYXZlUmVn
aXN0ZXJDb3VudCA9IDcKK2Vsc2lmIEFSTTY0IG9yIE1JUFMKKyAgICBjb25zdCBDYWxsZWVTYXZl
UmVnaXN0ZXJDb3VudCA9IDEwCitlbHNpZiBTSDQgb3IgWDg2XzY0CisgICAgY29uc3QgQ2FsbGVl
U2F2ZVJlZ2lzdGVyQ291bnQgPSA1CitlbHNpZiBYODYgb3IgWDg2X1dJTgorICAgIGNvbnN0IENh
bGxlZVNhdmVSZWdpc3RlckNvdW50ID0gMworZWxzaWYgWDg2XzY0X1dJTgorICAgIGNvbnN0IENh
bGxlZVNhdmVSZWdpc3RlckNvdW50ID0gNworZW5kCisKK2NvbnN0IENhbGxlZVJlZ2lzdGVyU2F2
ZVNpemUgPSBDYWxsZWVTYXZlUmVnaXN0ZXJDb3VudCAqIFB0clNpemUKKworIyBWTUVudHJ5VG90
YWxGcmFtZVNpemUgaW5jbHVkZXMgdGhlIHNwYWNlIGZvciBzdHJ1Y3QgVk1FbnRyeVJlY29yZCBh
bmQgdGhlCisjIGNhbGxlZSBzYXZlIHJlZ2lzdGVycyByb3VuZGVkIHVwIHRvIGtlZXAgdGhlIHN0
YWNrIGFsaWduZWQKK2NvbnN0IFZNRW50cnlUb3RhbEZyYW1lU2l6ZSA9IChDYWxsZWVSZWdpc3Rl
clNhdmVTaXplICsgc2l6ZW9mIFZNRW50cnlSZWNvcmQgKyBTdGFja0FsaWdubWVudCAtIDEpICYg
flN0YWNrQWxpZ25tZW50TWFzaworCiBtYWNybyBwdXNoQ2FsbGVlU2F2ZXMoKQogICAgIGlmIENf
TE9PUAogICAgIGVsc2lmIEFSTSBvciBBUk12N19UUkFESVRJT05BTApAQCAtNDE3LDczICs0NDAs
OCBAQCBtYWNybyBmdW5jdGlvbkVwaWxvZ3VlKCkKICAgICBlbmQKIGVuZAogCi1tYWNybyBjYWxs
VG9KYXZhU2NyaXB0UHJvbG9ndWUoKQotICAgIGlmIFg4Nl82NCBvciBYODZfNjRfV0lOCi0gICAg
ICAgIHB1c2ggY2ZyCi0gICAgICAgIHB1c2ggdDAKLSAgICBlbHNpZiBYODYgb3IgWDg2X1dJTgot
ICAgICAgICBwdXNoIGNmcgotICAgIGVsc2lmIEFSTTY0Ci0gICAgICAgIHB1c2ggY2ZyLCBscgot
ICAgIGVsc2lmIENfTE9PUCBvciBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwgb3Ig
TUlQUyBvciBTSDQKLSAgICAgICAgcHVzaCBscgotICAgICAgICBwdXNoIGNmcgotICAgIGVuZAot
ICAgIHB1c2hDYWxsZWVTYXZlcygpCi0gICAgaWYgWDg2Ci0gICAgICAgIHN1YnAgMTIsIHNwCi0g
ICAgZWxzaWYgWDg2X1dJTgotICAgICAgICBzdWJwIDE2LCBzcAotICAgICAgICBtb3ZlIHNwLCB0
NAotICAgICAgICBtb3ZlIHQ0LCB0MAotICAgICAgICBtb3ZlIHQ0LCB0MgotICAgICAgICBhbmRw
IDB4ZiwgdDIKLSAgICAgICAgYW5kcCAweGZmZmZmZmYwLCB0MAotICAgICAgICBtb3ZlIHQwLCBz
cAotICAgICAgICBzdG9yZXAgdDQsIFtzcF0KLSAgICBlbHNpZiBBUk0gb3IgQVJNdjcgb3IgQVJN
djdfVFJBRElUSU9OQUwKLSAgICAgICAgc3VicCA0LCBzcAotICAgICAgICBtb3ZlIHNwLCB0NAot
ICAgICAgICBjbHJicCB0NCwgMHhmLCB0NQotICAgICAgICBtb3ZlIHQ1LCBzcAotICAgICAgICBz
dG9yZXAgdDQsIFtzcF0KLSAgICBlbmQKLWVuZAotCi1tYWNybyBjYWxsVG9KYXZhU2NyaXB0RXBp
bG9ndWUoKQotICAgIGlmIEFSTXY3Ci0gICAgICAgIGFkZHAgQ2FsbEZyYW1lSGVhZGVyU2xvdHMg
KiA4LCBjZnIsIHQ0Ci0gICAgICAgIG1vdmUgdDQsIHNwCi0gICAgZWxzZQotICAgICAgICBhZGRw
IENhbGxGcmFtZUhlYWRlclNsb3RzICogOCwgY2ZyLCBzcAotICAgIGVuZAotCi0gICAgbG9hZHAg
Q2FsbGVyRnJhbWVbY2ZyXSwgY2ZyCi0KLSAgICBpZiBYODYKLSAgICAgICAgYWRkcCAxMiwgc3AK
LSAgICBlbHNpZiBYODZfV0lOCi0gICAgICAgIHBvcCB0NAotICAgICAgICBtb3ZlIHQ0LCBzcAot
ICAgICAgICBhZGRwIDE2LCBzcAotICAgIGVsc2lmIEFSTSBvciBBUk12NyBvciBBUk12N19UUkFE
SVRJT05BTAotICAgICAgICBwb3AgdDQKLSAgICAgICAgbW92ZSB0NCwgc3AKLSAgICAgICAgYWRk
cCA0LCBzcAotICAgIGVuZAotCi0gICAgcG9wQ2FsbGVlU2F2ZXMoKQotICAgIGlmIFg4Nl82NCBv
ciBYODZfNjRfV0lOCi0gICAgICAgIHBvcCB0MgotICAgICAgICBwb3AgY2ZyCi0gICAgZWxzaWYg
WDg2IG9yIFg4Nl9XSU4KLSAgICAgICAgcG9wIGNmcgotICAgIGVsc2lmIEFSTTY0Ci0gICAgICAg
IHBvcCBsciwgY2ZyCi0gICAgZWxzaWYgQ19MT09QIG9yIEFSTSBvciBBUk12NyBvciBBUk12N19U
UkFESVRJT05BTCBvciBNSVBTIG9yIFNINAotICAgICAgICBwb3AgY2ZyCi0gICAgICAgIHBvcCBs
cgotICAgIGVuZAorbWFjcm8gdm1FbnRyeVJlY29yZEZyb21WTUVudHJ5RnJhbWUoZW50cnlGcmFt
ZVBvaW50ZXIsIHJlc3VsdFJlZykKKyAgICBzdWJwIGVudHJ5RnJhbWVQb2ludGVyLCBWTUVudHJ5
VG90YWxGcmFtZVNpemUsIHJlc3VsdFJlZwogZW5kCiAKIG1hY3JvIG1vdmVTdGFja1BvaW50ZXJG
b3JDb2RlQmxvY2soY29kZUJsb2NrLCBzY3JhdGNoKQpAQCAtNzI4LDI1ICs2ODYsMjUgQEAgbWFj
cm8gZG9SZXR1cm4oKQogZW5kCiAKICMgc3R1YiB0byBjYWxsIGludG8gSmF2YVNjcmlwdCBvciBO
YXRpdmUgZnVuY3Rpb25zCi0jIEVuY29kZWRKU1ZhbHVlIGNhbGxUb0phdmFTY3JpcHQodm9pZCog
Y29kZSwgRXhlY1N0YXRlKiogdm1Ub3BDYWxsRnJhbWUsIFByb3RvQ2FsbEZyYW1lKiBwcm90b0Zy
YW1lKQotIyBFbmNvZGVkSlNWYWx1ZSBjYWxsVG9OYXRpdmVGdW5jdGlvbih2b2lkKiBjb2RlLCBF
eGVjU3RhdGUqKiB2bVRvcENhbGxGcmFtZSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvRnJhbWUpCisj
IEVuY29kZWRKU1ZhbHVlIHZtRW50cnlUb0phdmFTY3JpcHQodm9pZCogY29kZSwgVk0qIHZtLCBQ
cm90b0NhbGxGcmFtZSogcHJvdG9GcmFtZSkKKyMgRW5jb2RlZEpTVmFsdWUgdm1FbnRyeVRvTmF0
aXZlRnVuY3Rpb24odm9pZCogY29kZSwgVk0qIHZtLCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFt
ZSkKIAogaWYgQ19MT09QCi1fbGxpbnRfY2FsbF90b19qYXZhc2NyaXB0OgorX2xsaW50X3ZtX2Vu
dHJ5X3RvX2phdmFzY3JpcHQ6CiBlbHNlCi1nbG9iYWwgX2NhbGxUb0phdmFTY3JpcHQKLV9jYWxs
VG9KYXZhU2NyaXB0OgorZ2xvYmFsIF92bUVudHJ5VG9KYXZhU2NyaXB0Citfdm1FbnRyeVRvSmF2
YVNjcmlwdDoKIGVuZAotICAgIGRvQ2FsbFRvSmF2YVNjcmlwdChtYWtlSmF2YVNjcmlwdENhbGwp
CisgICAgZG9WTUVudHJ5KG1ha2VKYXZhU2NyaXB0Q2FsbCkKIAogCiBpZiBDX0xPT1AKLV9sbGlu
dF9jYWxsX3RvX25hdGl2ZV9mdW5jdGlvbjoKK19sbGludF92bV9lbnRyeV90b19uYXRpdmU6CiBl
bHNlCi1nbG9iYWwgX2NhbGxUb05hdGl2ZUZ1bmN0aW9uCi1fY2FsbFRvTmF0aXZlRnVuY3Rpb246
CitnbG9iYWwgX3ZtRW50cnlUb05hdGl2ZQorX3ZtRW50cnlUb05hdGl2ZToKIGVuZAotICAgIGRv
Q2FsbFRvSmF2YVNjcmlwdChtYWtlSG9zdEZ1bmN0aW9uQ2FsbCkKKyAgICBkb1ZNRW50cnkobWFr
ZUhvc3RGdW5jdGlvbkNhbGwpCiAKIAogaWYgQ19MT09QCkBAIC03ODksOCArNzQ3LDMxIEBAIF9z
YW5pdGl6ZVN0YWNrRm9yVk1JbXBsOgogICAgIG1vdmUgc3AsIGFkZHJlc3MKICAgICBzdG9yZXAg
YWRkcmVzcywgVk06Om1fbGFzdFN0YWNrVG9wW3ZtXQogICAgIHJldAotZW5kCiAKK2lmIENfTE9P
UAorZWxzZQorIyBWTUVudHJ5UmVjb3JkKiB2bUVudHJ5UmVjb3JkRnJvbVZNRW50cnlGcmFtZShj
b25zdCBWTUVudHJ5RnJhbWUqIGVudHJ5RnJhbWUpCitnbG9iYWwgX3ZtRW50cnlSZWNvcmRGcm9t
Vk1FbnRyeUZyYW1lCitfdm1FbnRyeVJlY29yZEZyb21WTUVudHJ5RnJhbWU6CisgICAgaWYgWDg2
XzY0CisgICAgICAgIGNvbnN0IGVudHJ5RnJhbWUgPSB0NAorICAgICAgICBjb25zdCByZXN1bHQg
PSB0MAorICAgIGVsc2lmIFg4NiBvciBYODZfV0lOCisgICAgICAgIGNvbnN0IGVudHJ5RnJhbWUg
PSB0MgorICAgICAgICBjb25zdCByZXN1bHQgPSB0MAorICAgIGVsc2UKKyAgICAgICAgY29uc3Qg
ZW50cnlGcmFtZSA9IGEwCisgICAgICAgIGNvbnN0IHJlc3VsdCA9IHQwCisgICAgZW5kCisKKyAg
ICBpZiBYODYgb3IgWDg2X1dJTgorICAgICAgICBsb2FkcCA0W3NwXSwgZW50cnlGcmFtZQorICAg
IGVuZAorCisgICAgdm1FbnRyeVJlY29yZEZyb21WTUVudHJ5RnJhbWUoZW50cnlGcmFtZSwgcmVz
dWx0KQorICAgIHJldAorZW5kCitlbmQKIAogaWYgQ19MT09QCiAjIER1bW15IGVudHJ5IHBvaW50
IHRoZSBDIExvb3AgdXNlcyB0byBpbml0aWFsaXplLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTcy
NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzgsNyArMzM4LDcgQEAgSlNWYWx1ZSBDTG9vcDo6ZXhl
Y3V0ZShPcGNvZGVJRCBlbnRyeU9wYwogICAgIENhbGxGcmFtZSogc3RhcnRDRlIgPSBjZnIuY2Fs
bEZyYW1lOwogI2VuZGlmCiAKLSAgICAvLyBJbml0aWFsaXplIHRoZSBpbmNvbWluZyBhcmdzIGZv
ciBkb0NhbGxUb0phdmFTY3JpcHQ6CisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgaW5jb21pbmcgYXJn
cyBmb3IgZG9WTUVudHJ5VG9KYXZhU2NyaXB0OgogICAgIHQwLnZwID0gZXhlY3V0YWJsZUFkZHJl
c3M7CiAgICAgdDEudm0gPSB2bTsKICAgICB0Mi5wcm90b0NhbGxGcmFtZSA9IHByb3RvQ2FsbEZy
YW1lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTcy
NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MCw2ICs4MCw3IEBACiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRl
ckNhY2hlLmgiCisjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZh
bEFjdGl2YXRpb24uaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3Ry
dWN0dXJlSW5saW5lcy5oIgpAQCAtMTQ5LDYgKzE1MCw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBl
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIGhlYXAodGhpcywgaGVhcFR5cGUpCiAgICAgLCB2
bVR5cGUodm1UeXBlKQogICAgICwgY2xpZW50RGF0YSgwKQorICAgICwgdG9wVk1FbnRyeUNhbGxG
cmFtZShudWxscHRyKQogICAgICwgdG9wQ2FsbEZyYW1lKENhbGxGcmFtZTo6bm9DYWxsZXIoKSkK
ICAgICAsIG1fYXRvbWljU3RyaW5nVGFibGUodm1UeXBlID09IERlZmF1bHQgPyB3dGZUaHJlYWRE
YXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSA6IG5ldyBBdG9taWNTdHJpbmdUYWJsZSkKICAgICAs
IHByb3BlcnR5TmFtZXMobnVsbHB0cikKQEAgLTU5NSw3ICs1OTcsNDMgQEAgc3RhdGljIHZvaWQg
YXBwZW5kU291cmNlVG9FcnJvcihDYWxsRnJhbQogICAgIAogICAgIGV4Y2VwdGlvbi0+cHV0RGly
ZWN0KCp2bSwgdm0tPnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5nKHZtLCBtZXNzYWdl
KSk7CiB9CisKK2NsYXNzIEZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3Ig
eworcHVibGljOgorICAgIEZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3Io
Q2FsbEZyYW1lKiBzdGFydENhbGxGcmFtZSkKKyAgICAgICAgOiBtX3N0YXJ0Q2FsbEZyYW1lKHN0
YXJ0Q2FsbEZyYW1lKQorICAgICAgICAsIG1fZm91bmRDYWxsRnJhbWUobnVsbHB0cikKKyAgICAg
ICAgLCBtX2ZvdW5kU3RhcnRDYWxsRnJhbWUoZmFsc2UpCisgICAgICAgICwgbV9pbmRleCgwKQor
ICAgIHsgfQorICAgIAorICAgIFN0YWNrVmlzaXRvcjo6U3RhdHVzIG9wZXJhdG9yKCkoU3RhY2tW
aXNpdG9yJiB2aXNpdG9yKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2ZvdW5kU3RhcnRDYWxsRnJh
bWUgJiYgKHZpc2l0b3ItPmNhbGxGcmFtZSgpID09IG1fc3RhcnRDYWxsRnJhbWUpKQorICAgICAg
ICAgICAgbV9mb3VuZFN0YXJ0Q2FsbEZyYW1lID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIGlm
IChtX2ZvdW5kU3RhcnRDYWxsRnJhbWUpIHsKKyAgICAgICAgICAgIGlmICh2aXNpdG9yLT5jYWxs
RnJhbWUoKS0+Y29kZUJsb2NrKCkpIHsKKyAgICAgICAgICAgICAgICBtX2ZvdW5kQ2FsbEZyYW1l
ID0gdmlzaXRvci0+Y2FsbEZyYW1lKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlz
aXRvcjo6RG9uZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1faW5kZXgrKzsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOworICAgIH0KICAg
ICAKKyAgICBDYWxsRnJhbWUqIGZvdW5kQ2FsbEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mb3Vu
ZENhbGxGcmFtZTsgfQorICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRl
eDsgfQorICAgIAorcHJpdmF0ZToKKyAgICBDYWxsRnJhbWUqIG1fc3RhcnRDYWxsRnJhbWU7Cisg
ICAgQ2FsbEZyYW1lKiBtX2ZvdW5kQ2FsbEZyYW1lOworICAgIGJvb2wgbV9mb3VuZFN0YXJ0Q2Fs
bEZyYW1lOworICAgIHVuc2lnbmVkIG1faW5kZXg7Cit9OworICAgIAorCiBKU1ZhbHVlIFZNOjp0
aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXJyb3IpCiB7CiAgICAgaWYg
KE9wdGlvbnM6OmJyZWFrT25UaHJvdygpKSB7CkBAIC02MzMsMTIgKzY3MSwxMSBAQCBKU1ZhbHVl
IFZNOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4CiAgICAgICAgICAgICBleGNlcHRpb24t
PnB1dERpcmVjdCgqdGhpcywgSWRlbnRpZmllcih0aGlzLCAic291cmNlVVJMIiksIGpzU3RyaW5n
KHRoaXMsIHN0YWNrRnJhbWUuc291cmNlVVJMKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKICAg
ICB9CiAgICAgaWYgKGV4Y2VwdGlvbi0+aXNFcnJvckluc3RhbmNlKCkgJiYgc3RhdGljX2Nhc3Q8
RXJyb3JJbnN0YW5jZSo+KGV4Y2VwdGlvbiktPmFwcGVuZFNvdXJjZVRvTWVzc2FnZSgpKSB7Ci0g
ICAgICAgIHVuc2lnbmVkIHN0YWNrSW5kZXggPSAwOwotICAgICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZTsKLSAgICAgICAgZm9yIChjYWxsRnJhbWUgPSBleGVjOyBjYWxsRnJhbWUgJiYgIWNhbGxG
cmFtZS0+Y29kZUJsb2NrKCk7ICkgewotICAgICAgICAgICAgc3RhY2tJbmRleCsrOwotICAgICAg
ICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZVNraXBwaW5nVk1FbnRyeVNl
bnRpbmVsKCk7Ci0gICAgICAgIH0KKyAgICAgICAgRmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29k
ZWJsb2NrRnVuY3RvciBmdW5jdG9yKGV4ZWMpOworICAgICAgICB0b3BDYWxsRnJhbWUtPml0ZXJh
dGUoZnVuY3Rvcik7CisgICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gZnVuY3Rvci5mb3Vu
ZENhbGxGcmFtZSgpOworICAgICAgICB1bnNpZ25lZCBzdGFja0luZGV4ID0gZnVuY3Rvci5pbmRl
eCgpOworCiAgICAgICAgIGlmIChjYWxsRnJhbWUgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2soKSkg
ewogICAgICAgICAgICAgc3RhY2tGcmFtZSA9IHN0YWNrVHJhY2UuYXQoc3RhY2tJbmRleCk7CiAg
ICAgICAgICAgICBieXRlY29kZU9mZnNldCA9IHN0YWNrRnJhbWUuYnl0ZWNvZGVPZmZzZXQ7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE3MjU5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYg
KzQ3LDcgQEAKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJUeXBlZEFy
cmF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgorI2luY2x1ZGUgIlZN
RW50cnlSZWNvcmQuaCIKICNpbmNsdWRlICJXYXRjaGRvZy5oIgogI2luY2x1ZGUgIldhdGNocG9p
bnQuaCIKICNpbmNsdWRlICJXZWFrUmFuZG9tLmgiCkBAIC0yMzUsNiArMjM2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgVk1UeXBlIHZtVHlwZTsKICAgICAgICAgQ2xpZW50RGF0YSog
Y2xpZW50RGF0YTsKKyAgICAgICAgVk1FbnRyeUZyYW1lKiB0b3BWTUVudHJ5Q2FsbEZyYW1lOwog
ICAgICAgICBFeGVjU3RhdGUqIHRvcENhbGxGcmFtZTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFdhdGNoZG9nPiB3YXRjaGRvZzsKIAo=
</data>
<flag name="review"
          id="261338"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>236733</attachid>
            <date>2014-08-17 12:41:42 -0700</date>
            <delta_ts>2014-08-17 12:42:58 -0700</delta_ts>
            <desc>preprocessed LowLevelInterpreter.cpp</desc>
            <filename>LowLevelInterpreter.ii</filename>
            <type>text/plain</type>
            <size>1657446</size>
            <attacher name="Csaba Osztrogonác">ossy</attacher>
            
              <data encoding="base64">IyAxICIvaG9tZS93ZWJraXRidWlsZGJvdC9zbGF2ZXMvZWZsLUFSTXY3LXRodW1iMi1idWlsZC9i
dWlsZHNsYXZlL2VmbC1hcm12Ny10aHVtYjItYnVpbGQvYnVpbGQvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIgojIDEgIjxjb21tYW5kLWxpbmU+Igoj
IDEgIi9ob21lL3dlYmtpdGJ1aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1
aWxkc2xhdmUvZWZsLWFybXY3LXRodW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAiCiMgMjYgIi9ob21lL3dlYmtpdGJ1aWxk
Ym90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxkc2xhdmUvZWZsLWFybXY3LXRo
dW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5jcHAiCiMgMSAiL2hvbWUvd2Via2l0YnVpbGRib3Qvc2xhdmVzL2VmbC1BUk12Ny10
aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJtdjctdGh1bWIyLWJ1aWxkL2J1aWxkL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaCIgMQojIDIzICIvaG9tZS93ZWJraXRidWlsZGJvdC9z
bGF2ZXMvZWZsLUFSTXY3LXRodW1iMi1idWlsZC9idWlsZHNsYXZlL2VmbC1hcm12Ny10aHVtYjIt
YnVpbGQvYnVpbGQvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oIgojIDEgIi9ob21lL3dl
YmtpdGJ1aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxkc2xhdmUvZWZs
LWFybXY3LXRodW1iMi1idWlsZC9idWlsZC9XZWJLaXRCdWlsZC9SZWxlYXNlL2NtYWtlY29uZmln
LmgiIDEKIyAyNCAiL2hvbWUvd2Via2l0YnVpbGRib3Qvc2xhdmVzL2VmbC1BUk12Ny10aHVtYjIt
YnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJtdjctdGh1bWIyLWJ1aWxkL2J1aWxkL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9jb25maWcuaCIgMgoKCiMgMSAiL2hvbWUvd2Via2l0YnVpbGRib3Qvc2xhdmVz
L2VmbC1BUk12Ny10aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJtdjctdGh1bWIyLWJ1aWxk
L2J1aWxkL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgiIDEKIyAzMiAiL2hvbWUvd2Via2l0YnVp
bGRib3Qvc2xhdmVzL2VmbC1BUk12Ny10aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJtdjct
dGh1bWIyLWJ1aWxkL2J1aWxkL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgiCiMgMSAiL2hvbWUv
d2Via2l0YnVpbGRib3Qvc2xhdmVzL2VmbC1BUk12Ny10aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9l
ZmwtYXJtdjctdGh1bWIyLWJ1aWxkL2J1aWxkL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgiIDEK
IyA4MiAiL2hvbWUvd2Via2l0YnVpbGRib3Qvc2xhdmVzL2VmbC1BUk12Ny10aHVtYjItYnVpbGQv
YnVpbGRzbGF2ZS9lZmwtYXJtdjctdGh1bWIyLWJ1aWxkL2J1aWxkL1NvdXJjZS9XVEYvd3RmL0Nv
bXBpbGVyLmgiCiNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtYXliZS11bmluaXRp
YWxpemVkIgoKCgojcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLWxvY2Fs
LXR5cGVkZWZzIgojIDMzICIvaG9tZS93ZWJraXRidWlsZGJvdC9zbGF2ZXMvZWZsLUFSTXY3LXRo
dW1iMi1idWlsZC9idWlsZHNsYXZlL2VmbC1hcm12Ny10aHVtYjItYnVpbGQvYnVpbGQvU291cmNl
L1dURi93dGYvUGxhdGZvcm0uaCIgMgojIDYwNCAiL2hvbWUvd2Via2l0YnVpbGRib3Qvc2xhdmVz
L2VmbC1BUk12Ny10aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJtdjctdGh1bWIyLWJ1aWxk
L2J1aWxkL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgiCiMgMSAiL2hvbWUvd2Via2l0YnVpbGRi
b3Qvc2xhdmVzL2VmbC1BUk12Ny10aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJtdjctdGh1
bWIyLWJ1aWxkL2J1aWxkL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgiIDEKIyA2MDUg
Ii9ob21lL3dlYmtpdGJ1aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxk
c2xhdmUvZWZsLWFybXY3LXRodW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bS5oIiAyCiMgODk2ICIvaG9tZS93ZWJraXRidWlsZGJvdC9zbGF2ZXMvZWZsLUFSTXY3LXRodW1i
Mi1idWlsZC9idWlsZHNsYXZlL2VmbC1hcm12Ny10aHVtYjItYnVpbGQvYnVpbGQvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaCIKIyAxICIvaG9tZS93ZWJraXRidWlsZGJvdC9zbGF2ZXMvZWZsLUFS
TXY3LXRodW1iMi1idWlsZC9idWlsZHNsYXZlL2VmbC1hcm12Ny10aHVtYjItYnVpbGQvYnVpbGQv
U291cmNlL1dURi93dGYvZ29iamVjdC9HVHlwZWRlZnMuaCIgMQojIDI2ICIvaG9tZS93ZWJraXRi
dWlsZGJvdC9zbGF2ZXMvZWZsLUFSTXY3LXRodW1iMi1idWlsZC9idWlsZHNsYXZlL2VmbC1hcm12
Ny10aHVtYjItYnVpbGQvYnVpbGQvU291cmNlL1dURi93dGYvZ29iamVjdC9HVHlwZWRlZnMuaCIK
dHlwZWRlZiBjaGFyIGdjaGFyOwp0eXBlZGVmIGRvdWJsZSBnZG91YmxlOwp0eXBlZGVmIGZsb2F0
IGdmbG9hdDsKdHlwZWRlZiBpbnQgZ2ludDsKdHlwZWRlZiBnaW50IGdib29sZWFuOwp0eXBlZGVm
IGxvbmcgZ2xvbmc7CnR5cGVkZWYgc2hvcnQgZ3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIg
Z3VjaGFyOwp0eXBlZGVmIHVuc2lnbmVkIGludCBndWludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25n
IGd1bG9uZzsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBndXNob3J0Owp0eXBlZGVmIHZvaWQqIGdw
b2ludGVyOwoKdHlwZWRlZiBzdHJ1Y3QgX0dBc3luY1Jlc3VsdCBHQXN5bmNSZXN1bHQ7CnR5cGVk
ZWYgc3RydWN0IF9HQ2FuY2VsbGFibGUgR0NhbmNlbGxhYmxlOwp0eXBlZGVmIHN0cnVjdCBfR0No
YXJzZXRDb252ZXJ0ZXIgR0NoYXJzZXRDb252ZXJ0ZXI7CnR5cGVkZWYgc3RydWN0IF9HRGlyIEdE
aXI7CnR5cGVkZWYgc3RydWN0IF9HZGtBdG9tKiBHZGtBdG9tOwp0eXBlZGVmIHN0cnVjdCBfR2Rr
Q3Vyc29yIEdka0N1cnNvcjsKdHlwZWRlZiBzdHJ1Y3QgX0dka0RyYWdDb250ZXh0IEdka0RyYWdD
b250ZXh0Owp0eXBlZGVmIHN0cnVjdCBfR2RrRXZlbnRDb25maWd1cmUgR2RrRXZlbnRDb25maWd1
cmU7CnR5cGVkZWYgc3RydWN0IF9HZGtFdmVudEV4cG9zZSBHZGtFdmVudEV4cG9zZTsKdHlwZWRl
ZiBzdHJ1Y3QgX0dka1BpeGJ1ZiBHZGtQaXhidWY7CnR5cGVkZWYgc3RydWN0IF9HRXJyb3IgR0Vy
cm9yOwp0eXBlZGVmIHN0cnVjdCBfR0ZpbGUgR0ZpbGU7CnR5cGVkZWYgc3RydWN0IF9HSGFzaFRh
YmxlIEdIYXNoVGFibGU7CnR5cGVkZWYgc3RydWN0IF9HSW5wdXRTdHJlYW0gR0lucHV0U3RyZWFt
Owp0eXBlZGVmIHN0cnVjdCBfR0xpc3QgR0xpc3Q7CnR5cGVkZWYgc3RydWN0IF9HTWFpbkNvbnRl
eHQgR01haW5Db250ZXh0Owp0eXBlZGVmIHN0cnVjdCBfR01haW5Mb29wIEdNYWluTG9vcDsKdHlw
ZWRlZiBzdHJ1Y3QgX0dQYXR0ZXJuU3BlYyBHUGF0dGVyblNwZWM7CnR5cGVkZWYgc3RydWN0IF9H
UG9sbGFibGVPdXRwdXRTdHJlYW0gR1BvbGxhYmxlT3V0cHV0U3RyZWFtOwp0eXBlZGVmIHN0cnVj
dCBfR1NMaXN0IEdTTGlzdDsKdHlwZWRlZiBzdHJ1Y3QgX0dTb2NrZXRDbGllbnQgR1NvY2tldENs
aWVudDsKdHlwZWRlZiBzdHJ1Y3QgX0dTb2NrZXRDb25uZWN0aW9uIEdTb2NrZXRDb25uZWN0aW9u
Owp0eXBlZGVmIHN0cnVjdCBfR1NvdXJjZSBHU291cmNlOwp0eXBlZGVmIHN0cnVjdCBfR1Zhcmlh
bnQgR1ZhcmlhbnQ7CnR5cGVkZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50Owp0eXBlZGVmIHN0
cnVjdCBfR1RpbWVyIEdUaW1lcjsKdHlwZWRlZiBzdHJ1Y3QgX0dLZXlGaWxlIEdLZXlGaWxlOwp0
eXBlZGVmIHN0cnVjdCBfR1B0ckFycmF5IEdQdHJBcnJheTsKdHlwZWRlZiBzdHJ1Y3QgX0dCeXRl
QXJyYXkgR0J5dGVBcnJheTsKdHlwZWRlZiBzdHJ1Y3QgX0dCeXRlcyBHQnl0ZXM7CnR5cGVkZWYg
c3RydWN0IF9HQ2xvc3VyZSBHQ2xvc3VyZTsKCgp0eXBlZGVmIHN0cnVjdCBfY2Fpcm9fc3VyZmFj
ZSBjYWlyb19zdXJmYWNlX3Q7CnR5cGVkZWYgc3RydWN0IF9jYWlyb19yZWN0YW5nbGVfaW50IGNh
aXJvX3JlY3RhbmdsZV9pbnRfdDsKIyA4OTcgIi9ob21lL3dlYmtpdGJ1aWxkYm90L3NsYXZlcy9l
ZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxkc2xhdmUvZWZsLWFybXY3LXRodW1iMi1idWlsZC9i
dWlsZC9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIiAyCgoKCiMgMSAiL2hvbWUvd2Via2l0YnVp
bGRib3Qvc2xhdmVzL2VmbC1BUk12Ny10aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJtdjct
dGh1bWIyLWJ1aWxkL2J1aWxkL1NvdXJjZS9XVEYvd3RmL2VmbC9FZmxUeXBlZGVmcy5oIiAxCiMg
MzQgIi9ob21lL3dlYmtpdGJ1aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1
aWxkc2xhdmUvZWZsLWFybXY3LXRodW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvV1RGL3d0Zi9lZmwv
RWZsVHlwZWRlZnMuaCIKdHlwZWRlZiB1bnNpZ25lZCBFY29yZV9YX0lEOwp0eXBlZGVmIEVjb3Jl
X1hfSUQgRWNvcmVfWF9XaW5kb3c7Cgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgRWluYV9Cb29sOwp0
eXBlZGVmIHN0cnVjdCBfRXZhc19Qb2ludCBFdmFzX1BvaW50Owp0eXBlZGVmIHN0cnVjdCBfRXZh
c19HTCBFdmFzX0dMOwp0eXBlZGVmIHN0cnVjdCBfRXZhc19HTF9Db250ZXh0IEV2YXNfR0xfQ29u
dGV4dDsKdHlwZWRlZiBzdHJ1Y3QgX0V2YXNfR0xfU3VyZmFjZSBFdmFzX0dMX1N1cmZhY2U7CnR5
cGVkZWYgc3RydWN0IF9FY29yZV9FdmFzIEVjb3JlX0V2YXM7CnR5cGVkZWYgc3RydWN0IF9FY29y
ZV9GZF9IYW5kbGVyIEVjb3JlX0ZkX0hhbmRsZXI7CnR5cGVkZWYgc3RydWN0IF9FaW5hX0xpc3Qg
RWluYV9MaXN0Owp0eXBlZGVmIHN0cnVjdCBfRWluYV9Nb2R1bGUgRWluYV9Nb2R1bGU7CnR5cGVk
ZWYgc3RydWN0IF9FaW5hX1JlY3RhbmdsZSBFaW5hX1JlY3RhbmdsZTsKCnR5cGVkZWYgc3RydWN0
IF9Fb19PcGFxdWUgRXZhczsKdHlwZWRlZiBzdHJ1Y3QgX0VvX09wYXF1ZSBFdmFzX09iamVjdDsK
dHlwZWRlZiBzdHJ1Y3QgX0VvX09wYXF1ZSBFY29yZV9UaW1lcjsKIyA5MDEgIi9ob21lL3dlYmtp
dGJ1aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxkc2xhdmUvZWZsLWFy
bXY3LXRodW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIiAyCiMgMjcg
Ii9ob21lL3dlYmtpdGJ1aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxk
c2xhdmUvZWZsLWFybXY3LXRodW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Y29uZmlnLmgiIDIKIyAxICIvaG9tZS93ZWJraXRidWlsZGJvdC9zbGF2ZXMvZWZsLUFSTXY3LXRo
dW1iMi1idWlsZC9idWlsZHNsYXZlL2VmbC1hcm12Ny10aHVtYjItYnVpbGQvYnVpbGQvU291cmNl
L1dURi93dGYvRXhwb3J0TWFjcm9zLmgiIDEKIyAyOCAiL2hvbWUvd2Via2l0YnVpbGRib3Qvc2xh
dmVzL2VmbC1BUk12Ny10aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJtdjctdGh1bWIyLWJ1
aWxkL2J1aWxkL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaCIgMgoKIyAxICIvaG9tZS93
ZWJraXRidWlsZGJvdC9zbGF2ZXMvZWZsLUFSTXY3LXRodW1iMi1idWlsZC9idWlsZHNsYXZlL2Vm
bC1hcm12Ny10aHVtYjItYnVpbGQvYnVpbGQvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNFeHBvcnRNYWNyb3MuaCIgMQojIDMwICIvaG9tZS93ZWJraXRidWlsZGJvdC9zbGF2ZXMvZWZs
LUFSTXY3LXRodW1iMi1idWlsZC9idWlsZHNsYXZlL2VmbC1hcm12Ny10aHVtYjItYnVpbGQvYnVp
bGQvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oIiAyCiMgNTYgIi9ob21lL3dlYmtpdGJ1
aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxkc2xhdmUvZWZsLWFybXY3
LXRodW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgiCiMgMSAi
L2hvbWUvd2Via2l0YnVpbGRib3Qvc2xhdmVzL2VmbC1BUk12Ny10aHVtYjItYnVpbGQvYnVpbGRz
bGF2ZS9lZmwtYXJtdjctdGh1bWIyLWJ1aWxkL2J1aWxkL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxs
b2MuaCIgMQojIDI0ICIvaG9tZS93ZWJraXRidWlsZGJvdC9zbGF2ZXMvZWZsLUFSTXY3LXRodW1i
Mi1idWlsZC9idWlsZHNsYXZlL2VmbC1hcm12Ny10aHVtYjItYnVpbGQvYnVpbGQvU291cmNlL1dU
Ri93dGYvRmFzdE1hbGxvYy5oIgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9uZXciIDEgMwojIDM3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC44LjEvbmV3IiAzCiAgICAgICAKIyAzOCAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL25ldyIgMwoKIyAxICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2JpdHMvYysrY29uZmlnLmgiIDEgMwojIDE3OCAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9i
aXRzL2MrK2NvbmZpZy5oIiAzCm5hbWVzcGFjZSBzdGQKewogIHR5cGVkZWYgdW5zaWduZWQgaW50
IHNpemVfdDsKICB0eXBlZGVmIGludCBwdHJkaWZmX3Q7CgoKICB0eXBlZGVmIGRlY2x0eXBlKG51
bGxwdHIpIG51bGxwdHJfdDsKCn0KIyA0MjAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvYml0cy9jKytjb25m
aWcuaCIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvYml0cy9vc19kZWZpbmVzLmgiIDEgMwojIDM5
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2JpdHMvb3NfZGVmaW5lcy5oIiAzCiMgMSAiL21udC9zdG9yZS9j
aHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMg
NAojIDMyNCAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5j
bHVkZS9mZWF0dXJlcy5oIiAzIDQKIyAxICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdv
bGluLUFSTUhGL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy9wcmVkZWZzLmgi
IDEgMyA0CiMgMzI1ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vz
ci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMyA0CiMgMzU3ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1
bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMgNAojIDEgIi9tbnQv
c3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvYXJtLWxpbnV4
LWdudWVhYmloZi9zeXMvY2RlZnMuaCIgMSAzIDQKIyAzNzggIi9tbnQvc3RvcmUvY2hyb290cy91
YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9zeXMv
Y2RlZnMuaCIgMyA0CiMgMSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1I
Ri91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvd29yZHNpemUuaCIgMSAzIDQK
IyAzNzkgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1
ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9zeXMvY2RlZnMuaCIgMiAzIDQKIyAzNTggIi9tbnQvc3Rv
cmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIg
MiAzIDQKIyAzODkgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNy
L2luY2x1ZGUvZmVhdHVyZXMuaCIgMyA0CiMgMSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1w
YW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2dudS9zdHVicy5o
IiAxIDMgNAojIDM5MCAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91
c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMgNAojIDQwICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2JpdHMv
b3NfZGVmaW5lcy5oIiAyIDMKIyA0MjEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvYml0cy9jKytjb25maWcu
aCIgMiAzCgoKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2JpdHMvY3B1X2RlZmluZXMuaCIgMSAzCiMg
NDI0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2JpdHMvYysrY29uZmlnLmgiIDIgMwojIDQwICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvbmV3IiAyIDMKIyAxICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvZXhjZXB0aW9u
IiAxIDMKIyAzMyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OC4xL2V4Y2VwdGlvbiIgMwogICAgICAgCiMgMzQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9leGNlcHRpb24iIDMKCiNwcmFnbWEgR0NDIHZpc2liaWxp
dHkgcHVzaChkZWZhdWx0KQoKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOC4xL2JpdHMvYXRvbWljX2xvY2tmcmVlX2RlZmluZXMuaCIgMSAzCiMgMzMg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2F0
b21pY19sb2NrZnJlZV9kZWZpbmVzLmgiIDMKICAgICAgIAojIDM0ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9hdG9taWNfbG9ja2ZyZWVfZGVm
aW5lcy5oIiAzCiMgMzkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjguMS9leGNlcHRpb24iIDIgMwoKZXh0ZXJuICJDKysiIHsKCm5hbWVzcGFjZSBzdGQKewoj
IDYwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvZXhj
ZXB0aW9uIiAzCiAgY2xhc3MgZXhjZXB0aW9uCiAgewogIHB1YmxpYzoKICAgIGV4Y2VwdGlvbigp
IG5vZXhjZXB0IHsgfQogICAgdmlydHVhbCB+ZXhjZXB0aW9uKCkgbm9leGNlcHQ7CgoKCiAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIHdoYXQoKSBjb25zdCBub2V4Y2VwdDsKICB9OwoKCgogIGNsYXNz
IGJhZF9leGNlcHRpb24gOiBwdWJsaWMgZXhjZXB0aW9uCiAgewogIHB1YmxpYzoKICAgIGJhZF9l
eGNlcHRpb24oKSBub2V4Y2VwdCB7IH0KCgoKICAgIHZpcnR1YWwgfmJhZF9leGNlcHRpb24oKSBu
b2V4Y2VwdDsKCgogICAgdmlydHVhbCBjb25zdCBjaGFyKiB3aGF0KCkgY29uc3Qgbm9leGNlcHQ7
CiAgfTsKCgogIHR5cGVkZWYgdm9pZCAoKnRlcm1pbmF0ZV9oYW5kbGVyKSAoKTsKCgogIHR5cGVk
ZWYgdm9pZCAoKnVuZXhwZWN0ZWRfaGFuZGxlcikgKCk7CgoKICB0ZXJtaW5hdGVfaGFuZGxlciBz
ZXRfdGVybWluYXRlKHRlcm1pbmF0ZV9oYW5kbGVyKSBub2V4Y2VwdDsKCgoKICB2b2lkIHRlcm1p
bmF0ZSgpIG5vZXhjZXB0IF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgogIHVuZXhw
ZWN0ZWRfaGFuZGxlciBzZXRfdW5leHBlY3RlZCh1bmV4cGVjdGVkX2hhbmRsZXIpIG5vZXhjZXB0
OwoKCgogIHZvaWQgdW5leHBlY3RlZCgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsK
IyAxMTcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9l
eGNlcHRpb24iIDMKICBib29sIHVuY2F1Z2h0X2V4Y2VwdGlvbigpIG5vZXhjZXB0IF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwoKCn0KCm5hbWVzcGFjZSBfX2dudV9jeHgKewoKIyAxNDIgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9leGNlcHRpb24i
IDMKICB2b2lkIF9fdmVyYm9zZV90ZXJtaW5hdGVfaGFuZGxlcigpOwoKCn0KCn0KCiNwcmFnbWEg
R0NDIHZpc2liaWxpdHkgcG9wCgoKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC44LjEvYml0cy9leGNlcHRpb25fcHRyLmgiIDEgMwojIDM0ICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9leGNlcHRpb25f
cHRyLmgiIDMKI3ByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwdXNoKGRlZmF1bHQpCgoKIyAxICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljgu
MS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9leGNlcHRp
b25fZGVmaW5lcy5oIiAxIDMKIyAzOCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOC4xL2JpdHMvZXhjZXB0aW9uX3B0ci5oIiAyIDMKCgoKCgpleHRlcm4gIkMr
KyIgewoKbmFtZXNwYWNlIHN0ZAp7CiAgY2xhc3MgdHlwZV9pbmZvOwoKCgoKCiAgbmFtZXNwYWNl
IF9fZXhjZXB0aW9uX3B0cgogIHsKICAgIGNsYXNzIGV4Y2VwdGlvbl9wdHI7CiAgfQoKICB1c2lu
ZyBfX2V4Y2VwdGlvbl9wdHI6OmV4Y2VwdGlvbl9wdHI7CgoKCgoKICBleGNlcHRpb25fcHRyIGN1
cnJlbnRfZXhjZXB0aW9uKCkgbm9leGNlcHQ7CgoKICB2b2lkIHJldGhyb3dfZXhjZXB0aW9uKGV4
Y2VwdGlvbl9wdHIpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCiAgbmFtZXNwYWNl
IF9fZXhjZXB0aW9uX3B0cgogIHsKCgoKCiAgICBjbGFzcyBleGNlcHRpb25fcHRyCiAgICB7CiAg
ICAgIHZvaWQqIF9NX2V4Y2VwdGlvbl9vYmplY3Q7CgogICAgICBleHBsaWNpdCBleGNlcHRpb25f
cHRyKHZvaWQqIF9fZSkgbm9leGNlcHQ7CgogICAgICB2b2lkIF9NX2FkZHJlZigpIG5vZXhjZXB0
OwogICAgICB2b2lkIF9NX3JlbGVhc2UoKSBub2V4Y2VwdDsKCiAgICAgIHZvaWQgKl9NX2dldCgp
IGNvbnN0IG5vZXhjZXB0IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKICAgICAgZnJpZW5k
IGV4Y2VwdGlvbl9wdHIgc3RkOjpjdXJyZW50X2V4Y2VwdGlvbigpIG5vZXhjZXB0OwogICAgICBm
cmllbmQgdm9pZCBzdGQ6OnJldGhyb3dfZXhjZXB0aW9uKGV4Y2VwdGlvbl9wdHIpOwoKICAgIHB1
YmxpYzoKICAgICAgZXhjZXB0aW9uX3B0cigpIG5vZXhjZXB0OwoKICAgICAgZXhjZXB0aW9uX3B0
cihjb25zdCBleGNlcHRpb25fcHRyJikgbm9leGNlcHQ7CgoKICAgICAgZXhjZXB0aW9uX3B0cihu
dWxscHRyX3QpIG5vZXhjZXB0CiAgICAgIDogX01fZXhjZXB0aW9uX29iamVjdCgwKQogICAgICB7
IH0KCiAgICAgIGV4Y2VwdGlvbl9wdHIoZXhjZXB0aW9uX3B0ciYmIF9fbykgbm9leGNlcHQKICAg
ICAgOiBfTV9leGNlcHRpb25fb2JqZWN0KF9fby5fTV9leGNlcHRpb25fb2JqZWN0KQogICAgICB7
IF9fby5fTV9leGNlcHRpb25fb2JqZWN0ID0gMDsgfQojIDExMSAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvZXhjZXB0aW9uX3B0ci5oIiAzCiAg
ICAgIGV4Y2VwdGlvbl9wdHImCiAgICAgIG9wZXJhdG9yPShjb25zdCBleGNlcHRpb25fcHRyJikg
bm9leGNlcHQ7CgoKICAgICAgZXhjZXB0aW9uX3B0ciYKICAgICAgb3BlcmF0b3I9KGV4Y2VwdGlv
bl9wdHImJiBfX28pIG5vZXhjZXB0CiAgICAgIHsKICAgICAgICBleGNlcHRpb25fcHRyKHN0YXRp
Y19jYXN0PGV4Y2VwdGlvbl9wdHImJj4oX19vKSkuc3dhcCgqdGhpcyk7CiAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgICB9CgoKICAgICAgfmV4Y2VwdGlvbl9wdHIoKSBub2V4Y2VwdDsKCiAgICAg
IHZvaWQKICAgICAgc3dhcChleGNlcHRpb25fcHRyJikgbm9leGNlcHQ7CiMgMTM4ICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9leGNlcHRpb25f
cHRyLmgiIDMKICAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgIHsgcmV0
dXJuIF9NX2V4Y2VwdGlvbl9vYmplY3Q7IH0KCgogICAgICBmcmllbmQgYm9vbAogICAgICBvcGVy
YXRvcj09KGNvbnN0IGV4Y2VwdGlvbl9wdHImLCBjb25zdCBleGNlcHRpb25fcHRyJikKIG5vZXhj
ZXB0IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKICAgICAgY29uc3QgY2xhc3Mgc3RkOjp0
eXBlX2luZm8qCiAgICAgIF9fY3hhX2V4Y2VwdGlvbl90eXBlKCkgY29uc3Qgbm9leGNlcHQKIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwogICAgfTsKCiAgICBib29sCiAgICBvcGVyYXRvcj09
KGNvbnN0IGV4Y2VwdGlvbl9wdHImLCBjb25zdCBleGNlcHRpb25fcHRyJikKICAgICAgbm9leGNl
cHQgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgogICAgYm9vbAogICAgb3BlcmF0b3IhPShj
b25zdCBleGNlcHRpb25fcHRyJiwgY29uc3QgZXhjZXB0aW9uX3B0ciYpCiAgICAgIG5vZXhjZXB0
IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKICAgIGlubGluZSB2b2lkCiAgICBzd2FwKGV4
Y2VwdGlvbl9wdHImIF9fbGhzLCBleGNlcHRpb25fcHRyJiBfX3JocykKICAgIHsgX19saHMuc3dh
cChfX3Jocyk7IH0KCiAgfQoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9FeD4KICAgIGV4Y2VwdGlv
bl9wdHIKICAgIGNvcHlfZXhjZXB0aW9uKF9FeCBfX2V4KSBub2V4Y2VwdAogICAgewogICAgICBp
ZiAodHJ1ZSkKIHsKCgoKIH0KICAgICAgaWYgKGZhbHNlKQogewogICByZXR1cm4gY3VycmVudF9l
eGNlcHRpb24oKTsKIH0KICAgIH0KCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0V4PgogICAgZXhj
ZXB0aW9uX3B0cgogICAgbWFrZV9leGNlcHRpb25fcHRyKF9FeCBfX2V4KSBub2V4Y2VwdAogICAg
eyByZXR1cm4gc3RkOjpjb3B5X2V4Y2VwdGlvbjxfRXg+KF9fZXgpOyB9CgoKfQoKfQoKI3ByYWdt
YSBHQ0MgdmlzaWJpbGl0eSBwb3AKIyAxNTMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9leGNlcHRpb24iIDIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL25lc3RlZF9leGNlcHRpb24uaCIg
MSAzCiMgMzMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljgu
MS9iaXRzL25lc3RlZF9leGNlcHRpb24uaCIgMwojcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHB1c2go
ZGVmYXVsdCkKIyA0NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOC4xL2JpdHMvbmVzdGVkX2V4Y2VwdGlvbi5oIiAzCmV4dGVybiAiQysrIiB7CgpuYW1lc3Bh
Y2Ugc3RkCnsKCgoKCgoKICBjbGFzcyBuZXN0ZWRfZXhjZXB0aW9uCiAgewogICAgZXhjZXB0aW9u
X3B0ciBfTV9wdHI7CgogIHB1YmxpYzoKICAgIG5lc3RlZF9leGNlcHRpb24oKSBub2V4Y2VwdCA6
IF9NX3B0cihjdXJyZW50X2V4Y2VwdGlvbigpKSB7IH0KCiAgICBuZXN0ZWRfZXhjZXB0aW9uKGNv
bnN0IG5lc3RlZF9leGNlcHRpb24mKSA9IGRlZmF1bHQ7CgogICAgbmVzdGVkX2V4Y2VwdGlvbiYg
b3BlcmF0b3I9KGNvbnN0IG5lc3RlZF9leGNlcHRpb24mKSA9IGRlZmF1bHQ7CgogICAgdmlydHVh
bCB+bmVzdGVkX2V4Y2VwdGlvbigpIG5vZXhjZXB0OwoKICAgIHZvaWQKICAgIHJldGhyb3dfbmVz
dGVkKCkgY29uc3QgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpCiAgICB7IHJldGhyb3df
ZXhjZXB0aW9uKF9NX3B0cik7IH0KCiAgICBleGNlcHRpb25fcHRyCiAgICBuZXN0ZWRfcHRyKCkg
Y29uc3QKICAgIHsgcmV0dXJuIF9NX3B0cjsgfQogIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9F
eGNlcHQ+CiAgICBzdHJ1Y3QgX05lc3RlZF9leGNlcHRpb24gOiBwdWJsaWMgX0V4Y2VwdCwgcHVi
bGljIG5lc3RlZF9leGNlcHRpb24KICAgIHsKICAgICAgZXhwbGljaXQgX05lc3RlZF9leGNlcHRp
b24oX0V4Y2VwdCYmIF9fZXgpCiAgICAgIDogX0V4Y2VwdChzdGF0aWNfY2FzdDxfRXhjZXB0JiY+
KF9fZXgpKQogICAgICB7IH0KICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9FeD4KICAgIHN0
cnVjdCBfX2dldF9uZXN0ZWRfaGVscGVyCiAgICB7CiAgICAgIHN0YXRpYyBjb25zdCBuZXN0ZWRf
ZXhjZXB0aW9uKgogICAgICBfU19nZXQoY29uc3QgX0V4JiBfX2V4KQogICAgICB7IHJldHVybiBk
eW5hbWljX2Nhc3Q8Y29uc3QgbmVzdGVkX2V4Y2VwdGlvbio+KCZfX2V4KTsgfQogICAgfTsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0V4PgogICAgc3RydWN0IF9fZ2V0X25lc3RlZF9oZWxwZXI8X0V4
Kj4KICAgIHsKICAgICAgc3RhdGljIGNvbnN0IG5lc3RlZF9leGNlcHRpb24qCiAgICAgIF9TX2dl
dChjb25zdCBfRXgqIF9fZXgpCiAgICAgIHsgcmV0dXJuIGR5bmFtaWNfY2FzdDxjb25zdCBuZXN0
ZWRfZXhjZXB0aW9uKj4oX19leCk7IH0KICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9FeD4K
ICAgIGlubGluZSBjb25zdCBuZXN0ZWRfZXhjZXB0aW9uKgogICAgX19nZXRfbmVzdGVkX2V4Y2Vw
dGlvbihjb25zdCBfRXgmIF9fZXgpCiAgICB7IHJldHVybiBfX2dldF9uZXN0ZWRfaGVscGVyPF9F
eD46Ol9TX2dldChfX2V4KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRXg+CiAgICB2b2lkCiAg
ICBfX3Rocm93X3dpdGhfbmVzdGVkKF9FeCYmLCBjb25zdCBuZXN0ZWRfZXhjZXB0aW9uKiA9IDAp
CiAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9FeD4KICAgIHZvaWQKICAgIF9fdGhyb3dfd2l0aF9uZXN0ZWQoX0V4JiYsIC4uLikgX19hdHRy
aWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRXg+CiAg
ICBpbmxpbmUgdm9pZAogICAgX190aHJvd193aXRoX25lc3RlZChfRXgmJiBfX2V4LCBjb25zdCBu
ZXN0ZWRfZXhjZXB0aW9uKikKICAgIHsgdGhyb3cgX19leDsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRXg+CiAgICBpbmxpbmUgdm9pZAogICAgX190aHJvd193aXRoX25lc3RlZChfRXgmJiBfX2V4
LCAuLi4pCiAgICB7IHRocm93IF9OZXN0ZWRfZXhjZXB0aW9uPF9FeD4oc3RhdGljX2Nhc3Q8X0V4
JiY+KF9fZXgpKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRXg+CiAgICB2b2lkCiAgICB0aHJv
d193aXRoX25lc3RlZChfRXggX19leCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoK
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9FeD4KICAgIGlubGluZSB2b2lkCiAgICB0aHJvd193aXRo
X25lc3RlZChfRXggX19leCkKICAgIHsKICAgICAgaWYgKF9fZ2V0X25lc3RlZF9leGNlcHRpb24o
X19leCkpCiAgICAgICAgdGhyb3cgX19leDsKICAgICAgX190aHJvd193aXRoX25lc3RlZChzdGF0
aWNfY2FzdDxfRXgmJj4oX19leCksICZfX2V4KTsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9FeD4KICAgIGlubGluZSB2b2lkCiAgICByZXRocm93X2lmX25lc3RlZChjb25zdCBfRXgmIF9f
ZXgpCiAgICB7CiAgICAgIGlmIChjb25zdCBuZXN0ZWRfZXhjZXB0aW9uKiBfX25lc3RlZCA9IF9f
Z2V0X25lc3RlZF9leGNlcHRpb24oX19leCkpCiAgICAgICAgX19uZXN0ZWQtPnJldGhyb3dfbmVz
dGVkKCk7CiAgICB9CgoKICBpbmxpbmUgdm9pZAogIHJldGhyb3dfaWZfbmVzdGVkKGNvbnN0IG5l
c3RlZF9leGNlcHRpb24mIF9fZXgpCiAgeyBfX2V4LnJldGhyb3dfbmVzdGVkKCk7IH0KCgp9Cgp9
CgoKCiNwcmFnbWEgR0NDIHZpc2liaWxpdHkgcG9wCiMgMTU0ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvZXhjZXB0aW9uIiAyIDMKIyA0MSAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL25ldyIgMiAzCgojcHJh
Z21hIEdDQyB2aXNpYmlsaXR5IHB1c2goZGVmYXVsdCkKCmV4dGVybiAiQysrIiB7CgpuYW1lc3Bh
Y2Ugc3RkCnsKCgoKCgoKICBjbGFzcyBiYWRfYWxsb2MgOiBwdWJsaWMgZXhjZXB0aW9uCiAgewog
IHB1YmxpYzoKICAgIGJhZF9hbGxvYygpIHRocm93KCkgeyB9CgoKCiAgICB2aXJ0dWFsIH5iYWRf
YWxsb2MoKSB0aHJvdygpOwoKCiAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHdoYXQoKSBjb25zdCB0
aHJvdygpOwogIH07CgogIHN0cnVjdCBub3Rocm93X3QgeyB9OwoKICBleHRlcm4gY29uc3Qgbm90
aHJvd190IG5vdGhyb3c7CgoKCiAgdHlwZWRlZiB2b2lkICgqbmV3X2hhbmRsZXIpKCk7CgoKCiAg
bmV3X2hhbmRsZXIgc2V0X25ld19oYW5kbGVyKG5ld19oYW5kbGVyKSB0aHJvdygpOwp9CiMgOTEg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9uZXciIDMK
dm9pZCogb3BlcmF0b3IgbmV3KHN0ZDo6c2l6ZV90KQogIF9fYXR0cmlidXRlX18oKF9fZXh0ZXJu
YWxseV92aXNpYmxlX18pKTsKdm9pZCogb3BlcmF0b3IgbmV3W10oc3RkOjpzaXplX3QpCiAgX19h
dHRyaWJ1dGVfXygoX19leHRlcm5hbGx5X3Zpc2libGVfXykpOwp2b2lkIG9wZXJhdG9yIGRlbGV0
ZSh2b2lkKikgbm9leGNlcHQKICBfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlfdmlzaWJsZV9f
KSk7CnZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCopIG5vZXhjZXB0CiAgX19hdHRyaWJ1dGVf
XygoX19leHRlcm5hbGx5X3Zpc2libGVfXykpOwp2b2lkKiBvcGVyYXRvciBuZXcoc3RkOjpzaXpl
X3QsIGNvbnN0IHN0ZDo6bm90aHJvd190Jikgbm9leGNlcHQKICBfX2F0dHJpYnV0ZV9fKChfX2V4
dGVybmFsbHlfdmlzaWJsZV9fKSk7CnZvaWQqIG9wZXJhdG9yIG5ld1tdKHN0ZDo6c2l6ZV90LCBj
b25zdCBzdGQ6Om5vdGhyb3dfdCYpIG5vZXhjZXB0CiAgX19hdHRyaWJ1dGVfXygoX19leHRlcm5h
bGx5X3Zpc2libGVfXykpOwp2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiwgY29uc3Qgc3RkOjpu
b3Rocm93X3QmKSBub2V4Y2VwdAogIF9fYXR0cmlidXRlX18oKF9fZXh0ZXJuYWxseV92aXNpYmxl
X18pKTsKdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiwgY29uc3Qgc3RkOjpub3Rocm93X3Qm
KSBub2V4Y2VwdAogIF9fYXR0cmlidXRlX18oKF9fZXh0ZXJuYWxseV92aXNpYmxlX18pKTsKCgpp
bmxpbmUgdm9pZCogb3BlcmF0b3IgbmV3KHN0ZDo6c2l6ZV90LCB2b2lkKiBfX3ApIG5vZXhjZXB0
CnsgcmV0dXJuIF9fcDsgfQppbmxpbmUgdm9pZCogb3BlcmF0b3IgbmV3W10oc3RkOjpzaXplX3Qs
IHZvaWQqIF9fcCkgbm9leGNlcHQKeyByZXR1cm4gX19wOyB9CgoKaW5saW5lIHZvaWQgb3BlcmF0
b3IgZGVsZXRlICh2b2lkKiwgdm9pZCopIG5vZXhjZXB0IHsgfQppbmxpbmUgdm9pZCBvcGVyYXRv
ciBkZWxldGVbXSh2b2lkKiwgdm9pZCopIG5vZXhjZXB0IHsgfQoKfQoKI3ByYWdtYSBHQ0Mgdmlz
aWJpbGl0eSBwb3AKIyAyNSAiL2hvbWUvd2Via2l0YnVpbGRib3Qvc2xhdmVzL2VmbC1BUk12Ny10
aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJtdjctdGh1bWIyLWJ1aWxkL2J1aWxkL1NvdXJj
ZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaCIgMgojIDEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUt
cGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMyA0CiMgMzMgIi9tbnQvc3Rv
cmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMg
NAojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOC4xL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOC4xL2luY2x1
ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMjEyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9saWIvZ2NjL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS80LjguMS9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
c2l6ZV90OwojIDM0ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vz
ci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMgNAoKZXh0ZXJuICJDIiB7CgoKCgoKCiMgMSAiL21udC9z
dG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGludXgt
Z251ZWFiaWhmL2JpdHMvd2FpdGZsYWdzLmgiIDEgMyA0CiMgNDMgIi9tbnQvc3RvcmUvY2hyb290
cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CiMgMSAi
L21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0t
bGludXgtZ251ZWFiaWhmL2JpdHMvd2FpdHN0YXR1cy5oIiAxIDMgNAojIDY1ICIvbW50L3N0b3Jl
L2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVl
YWJpaGYvYml0cy93YWl0c3RhdHVzLmgiIDMgNAojIDEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVu
dHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEgMyA0CiMgMzcgIi9tbnQv
c3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvZW5kaWFuLmgi
IDMgNAojIDEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2lu
Y2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL2VuZGlhbi5oIiAxIDMgNAojIDM4ICIvbW50
L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL2VuZGlhbi5o
IiAyIDMgNAojIDYxICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vz
ci9pbmNsdWRlL2VuZGlhbi5oIiAzIDQKIyAxICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBh
bmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy9ieXRlc3dh
cC5oIiAxIDMgNAojIDYyICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhG
L3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMgNAojIDY2ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1
bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy93
YWl0c3RhdHVzLmgiIDIgMyA0Cgp1bmlvbiB3YWl0CiAgewogICAgaW50IHdfc3RhdHVzOwogICAg
c3RydWN0CiAgICAgIHsKCiB1bnNpZ25lZCBpbnQgX193X3Rlcm1zaWc6NzsKIHVuc2lnbmVkIGlu
dCBfX3dfY29yZWR1bXA6MTsKIHVuc2lnbmVkIGludCBfX3dfcmV0Y29kZTo4OwogdW5zaWduZWQg
aW50OjE2OwoKCgoKCgoKICAgICAgfSBfX3dhaXRfdGVybWluYXRlZDsKICAgIHN0cnVjdAogICAg
ICB7CgogdW5zaWduZWQgaW50IF9fd19zdG9wdmFsOjg7CiB1bnNpZ25lZCBpbnQgX193X3N0b3Bz
aWc6ODsKIHVuc2lnbmVkIGludDoxNjsKCgoKCgoKICAgICAgfSBfX3dhaXRfc3RvcHBlZDsKICB9
OwojIDQ0ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNs
dWRlL3N0ZGxpYi5oIiAyIDMgNAojIDk2ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdv
bGluLUFSTUhGL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKCgp0eXBlZGVmIHN0cnVjdAogIHsK
ICAgIGludCBxdW90OwogICAgaW50IHJlbTsKICB9IGRpdl90OwoKCgp0eXBlZGVmIHN0cnVjdAog
IHsKICAgIGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGludCByZW07CiAgfSBsZGl2X3Q7CgoKCgoK
CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc3RydWN0CiAgewogICAgbG9uZyBsb25nIGludCBxdW90
OwogICAgbG9uZyBsb25nIGludCByZW07CiAgfSBsbGRpdl90OwoKCiMgMTQwICIvbW50L3N0b3Jl
L2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQK
ZXh0ZXJuIHNpemVfdCBfX2N0eXBlX2dldF9tYl9jdXJfbWF4ICh2b2lkKSB0aHJvdyAoKSA7CgoK
CgpleHRlcm4gZG91YmxlIGF0b2YgKF9fY29uc3QgY2hhciAqX19ucHRyKQogICAgIHRocm93ICgp
IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo
MSkpKSA7CgpleHRlcm4gaW50IGF0b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKQogICAgIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf
XyAoMSkpKSA7CgpleHRlcm4gbG9uZyBpbnQgYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpCiAg
ICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f
bm9ubnVsbF9fICgxKSkpIDsKCgoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcgaW50
IGF0b2xsIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoKCgoKCmV4
dGVybiBkb3VibGUgc3RydG9kIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAg
ICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX25vbm51bGxfXyAoMSkpKSA7CgoKCgoKZXh0ZXJuIGZsb2F0IHN0cnRvZiAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoKZXh0ZXJu
IGxvbmcgZG91YmxlIHN0cnRvbGQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoKCgoKCmV4dGVybiBsb25nIGludCBzdHJ0b2wgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLCBpbnQgX19iYXNlKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf
XyAoMSkpKSA7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgc3RydG91bCAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu
dCBfX2Jhc2UpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkp
IDsKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9xIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLCBpbnQgX19iYXNlKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf
XyAoMSkpKSA7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0
cnRvdXEgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25n
IGxvbmcgaW50IHN0cnRvbGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg
ICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIHRocm93ICgp
IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CgpfX2V4dGVuc2lvbl9fCmV4dGVy
biB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdWxsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLAogICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CgojIDIzNiAi
L21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9zdGRs
aWIuaCIgMyA0CiMgMSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91
c3IvaW5jbHVkZS94bG9jYWxlLmgiIDEgMyA0CiMgMjggIi9tbnQvc3RvcmUvY2hyb290cy91YnVu
dHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUveGxvY2FsZS5oIiAzIDQKdHlwZWRlZiBzdHJ1
Y3QgX19sb2NhbGVfc3RydWN0CnsKCiAgc3RydWN0IF9fbG9jYWxlX2RhdGEgKl9fbG9jYWxlc1sx
M107CgoKICBjb25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9fY3R5cGVfYjsKICBjb25zdCBpbnQg
Kl9fY3R5cGVfdG9sb3dlcjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG91cHBlcjsKCgogIGNvbnN0
IGNoYXIgKl9fbmFtZXNbMTNdOwp9ICpfX2xvY2FsZV90OwoKCnR5cGVkZWYgX19sb2NhbGVfdCBs
b2NhbGVfdDsKIyAyMzcgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CgoKCmV4dGVybiBsb25nIGludCBzdHJ0b2xfbCAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwgaW50IF9fYmFzZSwKICAgICBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDQpKSkgOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcg
aW50IHN0cnRvdWxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICBpbnQgX19iYXNlLCBfX2xvY2FsZV90
IF9fbG9jKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgNCkp
KSA7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvbGxfbCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
LCBpbnQgX19iYXNlLAogICAgX19sb2NhbGVfdCBfX2xvYykKICAgICB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19ub25udWxsX18gKDEsIDQpKSkgOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5z
aWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VsbF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19ucHRyLAogICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICBpbnQgX19i
YXNlLCBfX2xvY2FsZV90IF9fbG9jKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25v
bm51bGxfXyAoMSwgNCkpKSA7CgpleHRlcm4gZG91YmxlIHN0cnRvZF9sIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLAogICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2Nh
bGVfdCBfX2xvYykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEs
IDMpKSkgOwoKZXh0ZXJuIGZsb2F0IHN0cnRvZl9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19ucHRyLAogICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBf
X2xvYykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDMpKSkg
OwoKZXh0ZXJuIGxvbmcgZG91YmxlIHN0cnRvbGRfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwKICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIF9f
bG9jYWxlX3QgX19sb2MpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f
ICgxLCAzKSkpIDsKCgoKCgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lu
bGluZV9fKSkgZG91YmxlCl9fYXR0cmlidXRlX18gKChfX2xlYWZfXykpIGF0b2YgKF9fY29uc3Qg
Y2hhciAqX19ucHRyKSB0aHJvdyAoKQp7CiAgcmV0dXJuIHN0cnRvZCAoX19ucHRyLCAoY2hhciAq
KikgX19udWxsKTsKfQpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGlu
ZV9fKSkgaW50Cl9fYXR0cmlidXRlX18gKChfX2xlYWZfXykpIGF0b2kgKF9fY29uc3QgY2hhciAq
X19ucHRyKSB0aHJvdyAoKQp7CiAgcmV0dXJuIChpbnQpIHN0cnRvbCAoX19ucHRyLCAoY2hhciAq
KikgX19udWxsLCAxMCk7Cn0KZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2dudV9p
bmxpbmVfXykpIGxvbmcgaW50Cl9fYXR0cmlidXRlX18gKChfX2xlYWZfXykpIGF0b2wgKF9fY29u
c3QgY2hhciAqX19ucHRyKSB0aHJvdyAoKQp7CiAgcmV0dXJuIHN0cnRvbCAoX19ucHRyLCAoY2hh
ciAqKikgX19udWxsLCAxMCk7Cn0KCgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIF9f
YXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykpIGxvbmcgbG9uZyBpbnQKX19hdHRyaWJ1dGVf
XyAoKF9fbGVhZl9fKSkgYXRvbGwgKF9fY29uc3QgY2hhciAqX19ucHRyKSB0aHJvdyAoKQp7CiAg
cmV0dXJuIHN0cnRvbGwgKF9fbnB0ciwgKGNoYXIgKiopIF9fbnVsbCwgMTApOwp9CgojIDMxMSAi
L21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9zdGRs
aWIuaCIgMyA0CmV4dGVybiBjaGFyICpsNjRhIChsb25nIGludCBfX24pIHRocm93ICgpIDsKCgpl
eHRlcm4gbG9uZyBpbnQgYTY0bCAoX19jb25zdCBjaGFyICpfX3MpCiAgICAgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkp
IDsKCgoKCiMgMSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3Iv
aW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3N5cy90eXBlcy5oIiAxIDMgNAojIDI4ICIvbW50
L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL2FybS1saW51
eC1nbnVlYWJpaGYvc3lzL3R5cGVzLmgiIDMgNApleHRlcm4gIkMiIHsKCiMgMSAiL21udC9zdG9y
ZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251
ZWFiaWhmL2JpdHMvdHlwZXMuaCIgMSAzIDQKIyAyOCAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50
dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvdHlw
ZXMuaCIgMyA0CiMgMSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91
c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvd29yZHNpemUuaCIgMSAzIDQKIyAy
OSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9h
cm0tbGludXgtZ251ZWFiaWhmL2JpdHMvdHlwZXMuaCIgMiAzIDQKCgp0eXBlZGVmIHVuc2lnbmVk
IGNoYXIgX191X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdV9zaG9ydDsKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX3Vf
bG9uZzsKCgp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNo
YXIgX191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBzaG9ydCBpbnQgX19pbnQxNl90Owp0eXBlZGVm
IHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90Owp0eXBlZGVmIHNpZ25lZCBpbnQgX19pbnQz
Ml90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQzMl90OwoKCgoKX19leHRlbnNpb25fXyB0
eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRfdDsKX19leHRlbnNpb25fXyB0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRfdDsKCgoKCgoKCl9fZXh0ZW5zaW9u
X18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYg
dW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VfcXVhZF90OwojIDEzMSAiL21udC9zdG9yZS9jaHJv
b3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhm
L2JpdHMvdHlwZXMuaCIgMyA0CiMgMSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xp
bi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvdHlwZXNpemVzLmgi
IDEgMyA0CiMgMTMyICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vz
ci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy90eXBlcy5oIiAyIDMgNAoKCl9fZXh0
ZW5zaW9uX18gdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgX191aWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGlu
dCBfX2dpZF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19pbm9f
dDsKX19leHRlbnNpb25fXyB0eXBlZGVmIF9fdV9xdWFkX3QgX19pbm82NF90OwpfX2V4dGVuc2lv
bl9fIHR5cGVkZWYgdW5zaWduZWQgaW50IF9fbW9kZV90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYg
dW5zaWduZWQgaW50IF9fbmxpbmtfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9f
b2ZmX3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBfX3F1YWRfdCBfX29mZjY0X3Q7Cl9fZXh0ZW5z
aW9uX18gdHlwZWRlZiBpbnQgX19waWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHN0cnVjdCB7
IGludCBfX3ZhbFsyXTsgfSBfX2ZzaWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50
IF9fY2xvY2tfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fcmxp
bV90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgX191X3F1YWRfdCBfX3JsaW02NF90OwpfX2V4dGVu
c2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgaW50IF9faWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVm
IGxvbmcgaW50IF9fdGltZV90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgaW50IF9f
dXNlY29uZHNfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7
CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgaW50IF9fZGFkZHJfdDsKX19leHRlbnNpb25fXyB0eXBl
ZGVmIGxvbmcgaW50IF9fc3dibGtfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGludCBfX2tleV90
OwoKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBpbnQgX19jbG9ja2lkX3Q7CgoKX19leHRlbnNpb25f
XyB0eXBlZGVmIHZvaWQgKiBfX3RpbWVyX3Q7CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcg
aW50IF9fYmxrc2l6ZV90OwoKCgoKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fYmxr
Y250X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgoKX19l
eHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fZnNibGtjbnRfdDsKX19leHRl
bnNpb25fXyB0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2Jsa2NudDY0X3Q7CgoKX19leHRlbnNpb25f
XyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fZnNmaWxjbnRfdDsKX19leHRlbnNpb25fXyB0
eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYg
aW50IF9fc3NpemVfdDsKCgoKdHlwZWRlZiBfX29mZjY0X3QgX19sb2ZmX3Q7CnR5cGVkZWYgX19x
dWFkX3QgKl9fcWFkZHJfdDsKdHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7CgoKX19leHRlbnNpb25f
XyB0eXBlZGVmIGludCBfX2ludHB0cl90OwoKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX19zb2NrbGVuX3Q7CiMgMzEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29s
aW4tQVJNSEYvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9zeXMvdHlwZXMuaCIgMiAz
IDQKCgoKdHlwZWRlZiBfX3VfY2hhciB1X2NoYXI7CnR5cGVkZWYgX191X3Nob3J0IHVfc2hvcnQ7
CnR5cGVkZWYgX191X2ludCB1X2ludDsKdHlwZWRlZiBfX3VfbG9uZyB1X2xvbmc7CnR5cGVkZWYg
X19xdWFkX3QgcXVhZF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgdV9xdWFkX3Q7CnR5cGVkZWYgX19m
c2lkX3QgZnNpZF90OwoKCgoKdHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19p
bm9fdCBpbm9fdDsKCgoKCgoKdHlwZWRlZiBfX2lubzY0X3QgaW5vNjRfdDsKCgoKCnR5cGVkZWYg
X19kZXZfdCBkZXZfdDsKCgoKCnR5cGVkZWYgX19naWRfdCBnaWRfdDsKCgoKCnR5cGVkZWYgX19t
b2RlX3QgbW9kZV90OwoKCgoKdHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKCgoKCnR5cGVkZWYg
X191aWRfdCB1aWRfdDsKCgoKCgp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CgoKCgoKCnR5cGVkZWYg
X19vZmY2NF90IG9mZjY0X3Q7CgoKCgp0eXBlZGVmIF9fcGlkX3QgcGlkX3Q7CgoKCgoKdHlwZWRl
ZiBfX2lkX3QgaWRfdDsKCgoKCnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7CgoKCgoKdHlwZWRl
ZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJfdDsKCgoKCgp0eXBl
ZGVmIF9fa2V5X3Qga2V5X3Q7CiMgMTMzICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdv
bGluLUFSTUhGL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvc3lzL3R5cGVzLmgiIDMg
NAojIDEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1
ZGUvdGltZS5oIiAxIDMgNAojIDU4ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGlu
LUFSTUhGL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CgoKdHlwZWRlZiBfX2Nsb2NrX3QgY2xvY2tf
dDsKCgoKIyA3NCAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3Iv
aW5jbHVkZS90aW1lLmgiIDMgNAoKCnR5cGVkZWYgX190aW1lX3QgdGltZV90OwoKCgojIDkyICIv
bW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3RpbWUu
aCIgMyA0CnR5cGVkZWYgX19jbG9ja2lkX3QgY2xvY2tpZF90OwojIDEwNCAiL21udC9zdG9yZS9j
aHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAp0eXBl
ZGVmIF9fdGltZXJfdCB0aW1lcl90OwojIDEzNCAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1w
YW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3N5cy90eXBlcy5o
IiAyIDMgNAoKCgp0eXBlZGVmIF9fdXNlY29uZHNfdCB1c2Vjb25kc190OwoKCgp0eXBlZGVmIF9f
c3VzZWNvbmRzX3Qgc3VzZWNvbmRzX3Q7CgoKCgoKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9saWIvZ2NjL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS80LjguMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDE0OCAiL21u
dC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGlu
dXgtZ251ZWFiaWhmL3N5cy90eXBlcy5oIiAyIDMgNAoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
aW50IHVsb25nOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1c2hvcnQ7CnR5cGVkZWYgdW5z
aWduZWQgaW50IHVpbnQ7CiMgMTk1ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGlu
LUFSTUhGL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvc3lzL3R5cGVzLmgiIDMgNAp0
eXBlZGVmIGludCBpbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1FJX18pKSk7CnR5
cGVkZWYgaW50IGludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5
cGVkZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5
cGVkZWYgaW50IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7CgoK
dHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChf
X1FJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgo
X19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQzMl90IF9fYXR0
cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2lu
dDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7Cgp0eXBlZGVmIGludCBy
ZWdpc3Rlcl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX193b3JkX18pKSk7CiMgMjIwICIv
bW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL2FybS1s
aW51eC1nbnVlYWJpaGYvc3lzL3R5cGVzLmgiIDMgNAojIDEgIi9tbnQvc3RvcmUvY2hyb290cy91
YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9zeXMv
c2VsZWN0LmgiIDEgMyA0CiMgMzEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4t
QVJNSEYvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9zeXMvc2VsZWN0LmgiIDMgNAoj
IDEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUv
YXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3NlbGVjdC5oIiAxIDMgNAojIDMyICIvbW50L3N0b3Jl
L2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVl
YWJpaGYvc3lzL3NlbGVjdC5oIiAyIDMgNAoKCiMgMSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50
dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvc2ln
c2V0LmgiIDEgMyA0CiMgMjQgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJN
SEYvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3NpZ3NldC5oIiAzIDQKdHlw
ZWRlZiBpbnQgX19zaWdfYXRvbWljX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVuc2ln
bmVkIGxvbmcgaW50IF9fdmFsWygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50
KSkpXTsKICB9IF9fc2lnc2V0X3Q7CiMgMzUgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFu
Z29saW4tQVJNSEYvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9zeXMvc2VsZWN0Lmgi
IDIgMyA0CgoKCnR5cGVkZWYgX19zaWdzZXRfdCBzaWdzZXRfdDsKCgoKCgojIDEgIi9tbnQvc3Rv
cmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMg
NAojIDEyMCAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5j
bHVkZS90aW1lLmgiIDMgNApzdHJ1Y3QgdGltZXNwZWMKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7
CiAgICBsb25nIGludCB0dl9uc2VjOwogIH07CiMgNDUgIi9tbnQvc3RvcmUvY2hyb290cy91YnVu
dHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9zeXMvc2Vs
ZWN0LmgiIDIgMyA0CgojIDEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJN
SEYvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3RpbWUuaCIgMSAzIDQKIyAz
MSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9h
cm0tbGludXgtZ251ZWFiaWhmL2JpdHMvdGltZS5oIiAzIDQKc3RydWN0IHRpbWV2YWwKICB7CiAg
ICBfX3RpbWVfdCB0dl9zZWM7CiAgICBfX3N1c2Vjb25kc190IHR2X3VzZWM7CiAgfTsKIyA0NyAi
L21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0t
bGludXgtZ251ZWFiaWhmL3N5cy9zZWxlY3QuaCIgMiAzIDQKIyA1NSAiL21udC9zdG9yZS9jaHJv
b3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhm
L3N5cy9zZWxlY3QuaCIgMyA0CnR5cGVkZWYgbG9uZyBpbnQgX19mZF9tYXNrOwojIDY1ICIvbW50
L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL2FybS1saW51
eC1nbnVlYWJpaGYvc3lzL3NlbGVjdC5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QKICB7CgoKCiAgICBf
X2ZkX21hc2sgZmRzX2JpdHNbMTAyNCAvICg4ICogKGludCkgc2l6ZW9mIChfX2ZkX21hc2spKV07
CgoKCgoKICB9IGZkX3NldDsKCgoKCgoKdHlwZWRlZiBfX2ZkX21hc2sgZmRfbWFzazsKIyA5NyAi
L21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0t
bGludXgtZ251ZWFiaWhmL3N5cy9zZWxlY3QuaCIgMyA0CmV4dGVybiAiQyIgewojIDEwNyAiL21u
dC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGlu
dXgtZ251ZWFiaWhmL3N5cy9zZWxlY3QuaCIgMyA0CmV4dGVybiBpbnQgc2VsZWN0IChpbnQgX19u
ZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAgIGZkX3NldCAqX19yZXN0cmlj
dCBfX3dyaXRlZmRzLAogICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICBz
dHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCBfX3RpbWVvdXQpOwojIDExOSAiL21udC9zdG9yZS9j
aHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFi
aWhmL3N5cy9zZWxlY3QuaCIgMyA0CmV4dGVybiBpbnQgcHNlbGVjdCAoaW50IF9fbmZkcywgZmRf
c2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZkcywKICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fd3Jp
dGVmZHMsCiAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAgY29uc3Qg
c3RydWN0IHRpbWVzcGVjICpfX3Jlc3RyaWN0IF9fdGltZW91dCwKICAgICAgY29uc3QgX19zaWdz
ZXRfdCAqX19yZXN0cmljdCBfX3NpZ21hc2spOwojIDEzMiAiL21udC9zdG9yZS9jaHJvb3RzL3Vi
dW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3N5cy9z
ZWxlY3QuaCIgMyA0Cn0KIyAyMjEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4t
QVJNSEYvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9zeXMvdHlwZXMuaCIgMiAzIDQK
CgojIDEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1
ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9zeXMvc3lzbWFjcm9zLmgiIDEgMyA0CiMgMzAgIi9tbnQv
c3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvYXJtLWxpbnV4
LWdudWVhYmloZi9zeXMvc3lzbWFjcm9zLmgiIDMgNApleHRlcm4gIkMiIHsKCl9fZXh0ZW5zaW9u
X18KZXh0ZXJuIHVuc2lnbmVkIGludCBnbnVfZGV2X21ham9yICh1bnNpZ25lZCBsb25nIGxvbmcg
aW50IF9fZGV2KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKX19l
eHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgaW50IGdudV9kZXZfbWlub3IgKHVuc2lnbmVkIGxv
bmcgbG9uZyBpbnQgX19kZXYpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IGdudV9kZXZf
bWFrZWRldiAodW5zaWduZWQgaW50IF9fbWFqb3IsCiAgICAgICAgICAgIHVuc2lnbmVkIGludCBf
X21pbm9yKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpfX2V4
dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18p
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSkgdW5zaWduZWQgaW50Cl9fYXR0cmlidXRlX18g
KChfX2xlYWZfXykpIGdudV9kZXZfbWFqb3IgKHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19kZXYp
IHRocm93ICgpCnsKICByZXR1cm4gKChfX2RldiA+PiA4KSAmIDB4ZmZmKSB8ICgodW5zaWduZWQg
aW50KSAoX19kZXYgPj4gMzIpICYgfjB4ZmZmKTsKfQoKX19leHRlbnNpb25fXyBleHRlcm4gX19p
bmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpIHVuc2lnbmVkIGludApfX2F0dHJpYnV0ZV9fICgoX19sZWFmX18pKSBnbnVfZGV2
X21pbm9yICh1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fZGV2KSB0aHJvdyAoKQp7CiAgcmV0dXJu
IChfX2RldiAmIDB4ZmYpIHwgKCh1bnNpZ25lZCBpbnQpIChfX2RldiA+PiAxMikgJiB+MHhmZik7
Cn0KCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2dudV9p
bmxpbmVfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKSB1bnNpZ25lZCBsb25nIGxvbmcg
aW50Cl9fYXR0cmlidXRlX18gKChfX2xlYWZfXykpIGdudV9kZXZfbWFrZWRldiAodW5zaWduZWQg
aW50IF9fbWFqb3IsIHVuc2lnbmVkIGludCBfX21pbm9yKSB0aHJvdyAoKQp7CiAgcmV0dXJuICgo
X19taW5vciAmIDB4ZmYpIHwgKChfX21ham9yICYgMHhmZmYpIDw8IDgpCiAgIHwgKCgodW5zaWdu
ZWQgbG9uZyBsb25nIGludCkgKF9fbWlub3IgJiB+MHhmZikpIDw8IDEyKQogICB8ICgoKHVuc2ln
bmVkIGxvbmcgbG9uZyBpbnQpIChfX21ham9yICYgfjB4ZmZmKSkgPDwgMzIpKTsKfQoKfQojIDIy
NCAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9h
cm0tbGludXgtZ251ZWFiaWhmL3N5cy90eXBlcy5oIiAyIDMgNAoKCgoKCnR5cGVkZWYgX19ibGtz
aXplX3QgYmxrc2l6ZV90OwoKCgoKCgp0eXBlZGVmIF9fYmxrY250X3QgYmxrY250X3Q7CgoKCnR5
cGVkZWYgX19mc2Jsa2NudF90IGZzYmxrY250X3Q7CgoKCnR5cGVkZWYgX19mc2ZpbGNudF90IGZz
ZmlsY250X3Q7CiMgMjYzICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhG
L3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVm
IF9fYmxrY250NjRfdCBibGtjbnQ2NF90Owp0eXBlZGVmIF9fZnNibGtjbnQ2NF90IGZzYmxrY250
NjRfdDsKdHlwZWRlZiBfX2ZzZmlsY250NjRfdCBmc2ZpbGNudDY0X3Q7CgoKCgoKIyAxICIvbW50
L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL2FybS1saW51
eC1nbnVlYWJpaGYvYml0cy9wdGhyZWFkdHlwZXMuaCIgMSAzIDQKIyAzOCAiL21udC9zdG9yZS9j
aHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFi
aWhmL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHB0
aHJlYWRfdDsKCgp0eXBlZGVmIHVuaW9uCnsKICBjaGFyIF9fc2l6ZVszNl07CiAgbG9uZyBpbnQg
X19hbGlnbjsKfSBwdGhyZWFkX2F0dHJfdDsKCgp0eXBlZGVmIHN0cnVjdCBfX3B0aHJlYWRfaW50
ZXJuYWxfc2xpc3QKewogIHN0cnVjdCBfX3B0aHJlYWRfaW50ZXJuYWxfc2xpc3QgKl9fbmV4dDsK
fSBfX3B0aHJlYWRfc2xpc3RfdDsKCgoKCnR5cGVkZWYgdW5pb24KewogIHN0cnVjdCBfX3B0aHJl
YWRfbXV0ZXhfcwogIHsKICAgIGludCBfX2xvY2s7CiAgICB1bnNpZ25lZCBpbnQgX19jb3VudDsK
ICAgIGludCBfX293bmVyOwoKCiAgICBpbnQgX19raW5kOwogICAgdW5zaWduZWQgaW50IF9fbnVz
ZXJzOwogICAgX19leHRlbnNpb25fXyB1bmlvbgogICAgewogICAgICBpbnQgX19zcGluczsKICAg
ICAgX19wdGhyZWFkX3NsaXN0X3QgX19saXN0OwogICAgfTsKICB9IF9fZGF0YTsKICBjaGFyIF9f
c2l6ZVsyNF07CiAgbG9uZyBpbnQgX19hbGlnbjsKfSBwdGhyZWFkX211dGV4X3Q7Cgp0eXBlZGVm
IHVuaW9uCnsKICBjaGFyIF9fc2l6ZVs0XTsKICBsb25nIGludCBfX2FsaWduOwp9IHB0aHJlYWRf
bXV0ZXhhdHRyX3Q7CgoKCgp0eXBlZGVmIHVuaW9uCnsKICBzdHJ1Y3QKICB7CiAgICBpbnQgX19s
b2NrOwogICAgdW5zaWduZWQgaW50IF9fZnV0ZXg7CiAgICBfX2V4dGVuc2lvbl9fIHVuc2lnbmVk
IGxvbmcgbG9uZyBpbnQgX190b3RhbF9zZXE7CiAgICBfX2V4dGVuc2lvbl9fIHVuc2lnbmVkIGxv
bmcgbG9uZyBpbnQgX193YWtldXBfc2VxOwogICAgX19leHRlbnNpb25fXyB1bnNpZ25lZCBsb25n
IGxvbmcgaW50IF9fd29rZW5fc2VxOwogICAgdm9pZCAqX19tdXRleDsKICAgIHVuc2lnbmVkIGlu
dCBfX253YWl0ZXJzOwogICAgdW5zaWduZWQgaW50IF9fYnJvYWRjYXN0X3NlcTsKICB9IF9fZGF0
YTsKICBjaGFyIF9fc2l6ZVs0OF07CiAgX19leHRlbnNpb25fXyBsb25nIGxvbmcgaW50IF9fYWxp
Z247Cn0gcHRocmVhZF9jb25kX3Q7Cgp0eXBlZGVmIHVuaW9uCnsKICBjaGFyIF9fc2l6ZVs0XTsK
ICBsb25nIGludCBfX2FsaWduOwp9IHB0aHJlYWRfY29uZGF0dHJfdDsKCgoKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgcHRocmVhZF9rZXlfdDsKCgoKdHlwZWRlZiBpbnQgcHRocmVhZF9vbmNlX3Q7CgoK
CgoKdHlwZWRlZiB1bmlvbgp7CiAgc3RydWN0CiAgewogICAgaW50IF9fbG9jazsKICAgIHVuc2ln
bmVkIGludCBfX25yX3JlYWRlcnM7CiAgICB1bnNpZ25lZCBpbnQgX19yZWFkZXJzX3dha2V1cDsK
ICAgIHVuc2lnbmVkIGludCBfX3dyaXRlcl93YWtldXA7CiAgICB1bnNpZ25lZCBpbnQgX19ucl9y
ZWFkZXJzX3F1ZXVlZDsKICAgIHVuc2lnbmVkIGludCBfX25yX3dyaXRlcnNfcXVldWVkOwojIDE0
MSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9h
cm0tbGludXgtZ251ZWFiaWhmL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMgNAogICAgdW5zaWduZWQg
Y2hhciBfX2ZsYWdzOwogICAgdW5zaWduZWQgY2hhciBfX3NoYXJlZDsKICAgIHVuc2lnbmVkIGNo
YXIgX19wYWQxOwogICAgdW5zaWduZWQgY2hhciBfX3BhZDI7CgogICAgaW50IF9fd3JpdGVyOwog
IH0gX19kYXRhOwogIGNoYXIgX19zaXplWzMyXTsKICBsb25nIGludCBfX2FsaWduOwp9IHB0aHJl
YWRfcndsb2NrX3Q7Cgp0eXBlZGVmIHVuaW9uCnsKICBjaGFyIF9fc2l6ZVs4XTsKICBsb25nIGlu
dCBfX2FsaWduOwp9IHB0aHJlYWRfcndsb2NrYXR0cl90OwoKCgoKCnR5cGVkZWYgdm9sYXRpbGUg
aW50IHB0aHJlYWRfc3BpbmxvY2tfdDsKCgoKCnR5cGVkZWYgdW5pb24KewogIGNoYXIgX19zaXpl
WzIwXTsKICBsb25nIGludCBfX2FsaWduOwp9IHB0aHJlYWRfYmFycmllcl90OwoKdHlwZWRlZiB1
bmlvbgp7CiAgY2hhciBfX3NpemVbNF07CiAgaW50IF9fYWxpZ247Cn0gcHRocmVhZF9iYXJyaWVy
YXR0cl90OwojIDI3MiAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91
c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL3N5cy90eXBlcy5oIiAyIDMgNAoKCn0KIyAz
MjEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUv
c3RkbGliLmgiIDIgMyA0CgoKCgoKCmV4dGVybiBsb25nIGludCByYW5kb20gKHZvaWQpIHRocm93
ICgpOwoKCmV4dGVybiB2b2lkIHNyYW5kb20gKHVuc2lnbmVkIGludCBfX3NlZWQpIHRocm93ICgp
OwoKCgoKCmV4dGVybiBjaGFyICppbml0c3RhdGUgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIg
Kl9fc3RhdGVidWYsCiAgIHNpemVfdCBfX3N0YXRlbGVuKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19ub25udWxsX18gKDIpKSk7CgoKCmV4dGVybiBjaGFyICpzZXRzdGF0ZSAoY2hhciAqX19z
dGF0ZWJ1ZikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoK
CgoKc3RydWN0IHJhbmRvbV9kYXRhCiAgewogICAgaW50MzJfdCAqZnB0cjsKICAgIGludDMyX3Qg
KnJwdHI7CiAgICBpbnQzMl90ICpzdGF0ZTsKICAgIGludCByYW5kX3R5cGU7CiAgICBpbnQgcmFu
ZF9kZWc7CiAgICBpbnQgcmFuZF9zZXA7CiAgICBpbnQzMl90ICplbmRfcHRyOwogIH07CgpleHRl
cm4gaW50IHJhbmRvbV9yIChzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYsCiAg
ICAgICBpbnQzMl90ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19ub25udWxsX18gKDEsIDIpKSk7CgpleHRlcm4gaW50IHNyYW5kb21fciAodW5zaWduZWQg
aW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikKICAgICB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgpleHRlcm4gaW50IGluaXRzdGF0ZV9yICh1
bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgIHNpemVf
dCBfX3N0YXRlbGVuLAogICBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYpCiAg
ICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyLCA0KSkpOwoKZXh0ZXJu
IGludCBzZXRzdGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgICAgICAgIHN0
cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikKICAgICB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCgoKCmV4dGVybiBpbnQgcmFuZCAodm9p
ZCkgdGhyb3cgKCk7CgpleHRlcm4gdm9pZCBzcmFuZCAodW5zaWduZWQgaW50IF9fc2VlZCkgdGhy
b3cgKCk7CgoKCgpleHRlcm4gaW50IHJhbmRfciAodW5zaWduZWQgaW50ICpfX3NlZWQpIHRocm93
ICgpOwoKCgoKCgoKZXh0ZXJuIGRvdWJsZSBkcmFuZDQ4ICh2b2lkKSB0aHJvdyAoKTsKZXh0ZXJu
IGRvdWJsZSBlcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBsb25nIGludCBscmFu
ZDQ4ICh2b2lkKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVuc2lnbmVkIHNo
b3J0IGludCBfX3hzdWJpWzNdKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51
bGxfXyAoMSkpKTsKCgpleHRlcm4gbG9uZyBpbnQgbXJhbmQ0OCAodm9pZCkgdGhyb3cgKCk7CmV4
dGVybiBsb25nIGludCBqcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkKICAg
ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIHZv
aWQgc3JhbmQ0OCAobG9uZyBpbnQgX19zZWVkdmFsKSB0aHJvdyAoKTsKZXh0ZXJuIHVuc2lnbmVk
IHNob3J0IGludCAqc2VlZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdKQogICAg
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKZXh0ZXJuIHZvaWQg
bGNvbmc0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10pIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgpzdHJ1Y3QgZHJhbmQ0OF9kYXRhCiAgewog
ICAgdW5zaWduZWQgc2hvcnQgaW50IF9feFszXTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX29s
ZF94WzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fYzsKICAgIHVuc2lnbmVkIHNob3J0IGlu
dCBfX2luaXQ7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fYTsKICB9OwoKCmV4dGVybiBp
bnQgZHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAog
ICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwpleHRlcm4gaW50IGVyYW5kNDhfciAodW5zaWduZWQg
c2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0
cmljdCBfX2J1ZmZlciwKICAgICAgICBkb3VibGUgKl9fcmVzdHJpY3QgX19yZXN1bHQpIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gaW50IGxy
YW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAg
ICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICh1bnNpZ25l
ZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jl
c3RyaWN0IF9fYnVmZmVyLAogICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRl
cm4gaW50IG1yYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZl
ciwKICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkKICAgICB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CmV4dGVybiBpbnQganJhbmQ0OF9y
ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9k
YXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9f
cmVzdWx0KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikp
KTsKCgpleHRlcm4gaW50IHNyYW5kNDhfciAobG9uZyBpbnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJh
bmQ0OF9kYXRhICpfX2J1ZmZlcikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u
dWxsX18gKDIpKSk7CgpleHRlcm4gaW50IHNlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19z
ZWVkMTZ2WzNdLAogICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpIHRocm93ICgp
IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCmV4dGVybiBpbnQgbGNvbmc0
OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSwKICAgICAgICBzdHJ1Y3QgZHJhbmQ0
OF9kYXRhICpfX2J1ZmZlcikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs
X18gKDEsIDIpKSk7CgoKCgoKCgoKCmV4dGVybiB2b2lkICptYWxsb2MgKHNpemVfdCBfX3NpemUp
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSkgOwoKZXh0ZXJuIHZvaWQgKmNh
bGxvYyAoc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpCiAgICAgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fbWFsbG9jX18pKSA7CgoKCgoKCgoKCgpleHRlcm4gdm9pZCAqcmVhbGxvYyAo
dm9pZCAqX19wdHIsIHNpemVfdCBfX3NpemUpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsKCmV4dGVybiB2b2lkIGZyZWUgKHZvaWQgKl9fcHRy
KSB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIGNmcmVlICh2b2lkICpfX3B0cikgdGhyb3cgKCk7
CgoKCiMgMSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5j
bHVkZS9hbGxvY2EuaCIgMSAzIDQKIyAyNSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5n
b2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMyA0CiMgMSAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvbGliL2djYy9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC44LjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAy
NiAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9h
bGxvY2EuaCIgMiAzIDQKCmV4dGVybiAiQyIgewoKCgoKCmV4dGVybiB2b2lkICphbGxvY2EgKHNp
emVfdCBfX3NpemUpIHRocm93ICgpOwoKCgoKCn0KIyA0OTggIi9tbnQvc3RvcmUvY2hyb290cy91
YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CgoKCgoKZXh0
ZXJuIHZvaWQgKnZhbGxvYyAoc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fbWFsbG9jX18pKSA7CgoKCgpleHRlcm4gaW50IHBvc2l4X21lbWFsaWduICh2b2lkICoqX19t
ZW1wdHIsIHNpemVfdCBfX2FsaWdubWVudCwgc2l6ZV90IF9fc2l6ZSkKICAgICB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoKCgoKZXh0ZXJuIHZvaWQgYWJvcnQg
KHZvaWQpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKZXh0ZXJu
IGludCBhdGV4aXQgKHZvaWQgKCpfX2Z1bmMpICh2b2lkKSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCgpleHRlcm4gIkMrKyIgaW50IGF0X3F1aWNrX2V4
aXQgKHZvaWQgKCpfX2Z1bmMpICh2b2lkKSkKICAgICB0aHJvdyAoKSBfX2FzbSAoImF0X3F1aWNr
X2V4aXQiKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoKCgoKCmV4dGVy
biBpbnQgb25fZXhpdCAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1cywgdm9pZCAqX19hcmcp
LCB2b2lkICpfX2FyZykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g
KDEpKSk7CgoKCgoKCmV4dGVybiB2b2lkIGV4aXQgKGludCBfX3N0YXR1cykgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCgoKZXh0ZXJuIHZvaWQgcXVpY2tfZXhp
dCAoaW50IF9fc3RhdHVzKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7
CgoKCgoKCgpleHRlcm4gdm9pZCBfRXhpdCAoaW50IF9fc3RhdHVzKSB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgoKCmV4dGVybiBjaGFyICpnZXRlbnYgKF9fY29u
c3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEp
KSkgOwoKCgoKZXh0ZXJuIGNoYXIgKl9fc2VjdXJlX2dldGVudiAoX19jb25zdCBjaGFyICpfX25h
bWUpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCgoK
CgpleHRlcm4gaW50IHB1dGVudiAoY2hhciAqX19zdHJpbmcpIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgpleHRlcm4gaW50IHNldGVudiAoX19jb25zdCBj
aGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192YWx1ZSwgaW50IF9fcmVwbGFjZSkKICAgICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgoKZXh0ZXJuIGludCB1
bnNldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X25vbm51bGxfXyAoMSkpKTsKCgoKCgoKZXh0ZXJuIGludCBjbGVhcmVudiAodm9pZCkgdGhyb3cg
KCk7CiMgNjA2ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGNoYXIgKm1rdGVtcCAoY2hhciAqX190ZW1wbGF0
ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKIyA2MjAgIi9t
bnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvc3RkbGli
LmgiIDMgNApleHRlcm4gaW50IG1rc3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIF9fYXR0cmlidXRl
X18gKChfX25vbm51bGxfXyAoMSkpKSA7CiMgNjMwICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1
LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBta3N0
ZW1wNjQgKGNoYXIgKl9fdGVtcGxhdGUpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp
KSA7CiMgNjQyICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBta3N0ZW1wcyAoY2hhciAqX190ZW1wbGF0
ZSwgaW50IF9fc3VmZml4bGVuKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoj
IDY1MiAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVk
ZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBpbnQgbWtzdGVtcHM2NCAoY2hhciAqX190ZW1wbGF0ZSwg
aW50IF9fc3VmZml4bGVuKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7
CiMgNjYzICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNs
dWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGNoYXIgKm1rZHRlbXAgKGNoYXIgKl9fdGVtcGxhdGUp
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CiMgNjc0ICIvbW50
L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3N0ZGxpYi5o
IiAzIDQKZXh0ZXJuIGludCBta29zdGVtcCAoY2hhciAqX190ZW1wbGF0ZSwgaW50IF9fZmxhZ3Mp
IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CiMgNjg0ICIvbW50L3N0b3JlL2No
cm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0
ZXJuIGludCBta29zdGVtcDY0IChjaGFyICpfX3RlbXBsYXRlLCBpbnQgX19mbGFncykgX19hdHRy
aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKIyA2OTQgIi9tbnQvc3RvcmUvY2hyb290cy91
YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gaW50
IG1rb3N0ZW1wcyAoY2hhciAqX190ZW1wbGF0ZSwgaW50IF9fc3VmZml4bGVuLCBpbnQgX19mbGFn
cykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwojIDcwNiAiL21udC9z
dG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg
MyA0CmV4dGVybiBpbnQgbWtvc3RlbXBzNjQgKGNoYXIgKl9fdGVtcGxhdGUsIGludCBfX3N1ZmZp
eGxlbiwgaW50IF9fZmxhZ3MpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkp
IDsKCgoKCgoKCgoKZXh0ZXJuIGludCBzeXN0ZW0gKF9fY29uc3QgY2hhciAqX19jb21tYW5kKSA7
CgoKCgoKCmV4dGVybiBjaGFyICpjYW5vbmljYWxpemVfZmlsZV9uYW1lIChfX2NvbnN0IGNoYXIg
Kl9fbmFtZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkg
OwojIDczNCAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBjaGFyICpyZWFscGF0aCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbmFtZSwKICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX3Jlc29sdmVkKSB0
aHJvdyAoKSA7CgoKCgoKCnR5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgKF9fY29uc3Qgdm9p
ZCAqLCBfX2NvbnN0IHZvaWQgKik7CgoKdHlwZWRlZiBfX2NvbXBhcl9mbl90IGNvbXBhcmlzb25f
Zm5fdDsKCgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9kX2ZuX3QpIChfX2NvbnN0IHZvaWQgKiwg
X19jb25zdCB2b2lkICosIHZvaWQgKik7CgoKCgoKZXh0ZXJuIHZvaWQgKmJzZWFyY2ggKF9fY29u
c3Qgdm9pZCAqX19rZXksIF9fY29uc3Qgdm9pZCAqX19iYXNlLAogICAgICAgIHNpemVfdCBfX25t
ZW1iLCBzaXplX3QgX19zaXplLCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKQogICAgIF9fYXR0cmli
dXRlX18gKChfX25vbm51bGxfXyAoMSwgMiwgNSkpKSA7CgoKCmV4dGVybiB2b2lkIHFzb3J0ICh2
b2lkICpfX2Jhc2UsIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplLAogICAgIF9fY29tcGFy
X2ZuX3QgX19jb21wYXIpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgNCkpKTsKCmV4
dGVybiB2b2lkIHFzb3J0X3IgKHZvaWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBf
X3NpemUsCiAgICAgICBfX2NvbXBhcl9kX2ZuX3QgX19jb21wYXIsIHZvaWQgKl9fYXJnKQogIF9f
YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgNCkpKTsKCgoKCmV4dGVybiBpbnQgYWJzIChp
bnQgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSkgOwpleHRlcm4gbG9u
ZyBpbnQgbGFicyAobG9uZyBpbnQgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSkgOwoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcgaW50IGxsYWJzIChsb25n
IGxvbmcgaW50IF9feCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSkg
OwoKCgoKCgoKZXh0ZXJuIGRpdl90IGRpdiAoaW50IF9fbnVtZXIsIGludCBfX2Rlbm9tKQogICAg
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKSA7CmV4dGVybiBsZGl2X3QgbGRp
diAobG9uZyBpbnQgX19udW1lciwgbG9uZyBpbnQgX19kZW5vbSkKICAgICB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSkgOwoKCgoKX19leHRlbnNpb25fXyBleHRlcm4gbGxkaXZf
dCBsbGRpdiAobG9uZyBsb25nIGludCBfX251bWVyLAogICAgICAgIGxvbmcgbG9uZyBpbnQgX19k
ZW5vbSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSkgOwoKIyA4MDgg
Ii9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDMgNApleHRlcm4gY2hhciAqZWN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdp
dCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzLCA0KSkpIDsKCgoKCmV4dGVy
biBjaGFyICpmY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJp
Y3QgX19kZWNwdCwKICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19ub25udWxsX18gKDMsIDQpKSkgOwoKCgoKZXh0ZXJuIGNoYXIgKmdjdnQgKGRv
dWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKQogICAgIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMykpKSA7CgoKCgpleHRlcm4gY2hhciAqcWVjdnQg
KGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgaW50ICpfX3Jlc3RyaWN0
IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fbm9ubnVsbF9fICgzLCA0KSkpIDsKZXh0ZXJuIGNoYXIgKnFmY3Z0IChsb25nIGRv
dWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0
LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X25vbm51bGxfXyAoMywgNCkpKSA7CmV4dGVybiBjaGFyICpxZ2N2dCAobG9uZyBkb3VibGUgX192
YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19ub25udWxsX18gKDMpKSkgOwoKCgoKZXh0ZXJuIGludCBlY3Z0X3IgKGRvdWJsZSBf
X3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgIGludCAq
X19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgc2l6ZV90IF9f
bGVuKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMsIDQsIDUpKSk7CmV4
dGVybiBpbnQgZmN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVz
dHJpY3QgX19kZWNwdCwKICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jlc3Ry
aWN0IF9fYnVmLAogICAgIHNpemVfdCBfX2xlbikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
bm9ubnVsbF9fICgzLCA0LCA1KSkpOwoKZXh0ZXJuIGludCBxZWN2dF9yIChsb25nIGRvdWJsZSBf
X3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQg
Kl9fcmVzdHJpY3QgX19zaWduLAogICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3Qg
X19sZW4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzLCA0LCA1
KSkpOwpleHRlcm4gaW50IHFmY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdp
dCwKICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24s
CiAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikKICAgICB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMsIDQsIDUpKSk7CgoKCgoKCgpleHRlcm4g
aW50IG1ibGVuIChfX2NvbnN0IGNoYXIgKl9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCkgOwoKCmV4
dGVybiBpbnQgbWJ0b3djICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjLAogICAgIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIHRocm93ICgpIDsKCgpleHRlcm4gaW50
IHdjdG9tYiAoY2hhciAqX19zLCB3Y2hhcl90IF9fd2NoYXIpIHRocm93ICgpIDsKCgoKZXh0ZXJu
IHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsCiAgIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKZXh0ZXJuIHNpemVf
dCB3Y3N0b21icyAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgIF9fY29uc3Qgd2NoYXJfdCAqX19y
ZXN0cmljdCBfX3B3Y3MsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCk7CgoKCgoKCgoKZXh0ZXJu
IGludCBycG1hdGNoIChfX2NvbnN0IGNoYXIgKl9fcmVzcG9uc2UpIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CiMgODk2ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1
bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBn
ZXRzdWJvcHQgKGNoYXIgKipfX3Jlc3RyaWN0IF9fb3B0aW9ucCwKICAgICAgICBjaGFyICpfX2Nv
bnN0ICpfX3Jlc3RyaWN0IF9fdG9rZW5zLAogICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fdmFs
dWVwKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMiwgMykp
KSA7CgoKCgoKZXh0ZXJuIHZvaWQgc2V0a2V5IChfX2NvbnN0IGNoYXIgKl9fa2V5KSB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoKCgpleHRlcm4gaW50IHBv
c2l4X29wZW5wdCAoaW50IF9fb2ZsYWcpIDsKCgoKCgoKCmV4dGVybiBpbnQgZ3JhbnRwdCAoaW50
IF9fZmQpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHVubG9ja3B0IChpbnQgX19mZCkgdGhyb3cg
KCk7CgoKCgpleHRlcm4gY2hhciAqcHRzbmFtZSAoaW50IF9fZmQpIHRocm93ICgpIDsKCgoKCgoK
ZXh0ZXJuIGludCBwdHNuYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVm
bGVuKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCgpl
eHRlcm4gaW50IGdldHB0ICh2b2lkKTsKCgoKCgoKZXh0ZXJuIGludCBnZXRsb2FkYXZnIChkb3Vi
bGUgX19sb2FkYXZnW10sIGludCBfX25lbGVtKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX25vbm51bGxfXyAoMSkpKTsKIyA5NjQgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFu
Z29saW4tQVJNSEYvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNAp9CiMgMjYgIi9ob21lL3dlYmtp
dGJ1aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxkc2xhdmUvZWZsLWFy
bXY3LXRodW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgiIDIKIyAx
ICIvaG9tZS93ZWJraXRidWlsZGJvdC9zbGF2ZXMvZWZsLUFSTXY3LXRodW1iMi1idWlsZC9idWls
ZHNsYXZlL2VmbC1hcm12Ny10aHVtYjItYnVpbGQvYnVpbGQvU291cmNlL1dURi93dGYvUG9zc2li
bHlOdWxsLmgiIDEKIyAyOSAiL2hvbWUvd2Via2l0YnVpbGRib3Qvc2xhdmVzL2VmbC1BUk12Ny10
aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJtdjctdGh1bWIyLWJ1aWxkL2J1aWxkL1NvdXJj
ZS9XVEYvd3RmL1Bvc3NpYmx5TnVsbC5oIgojIDEgIi9ob21lL3dlYmtpdGJ1aWxkYm90L3NsYXZl
cy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxkc2xhdmUvZWZsLWFybXY3LXRodW1iMi1idWls
ZC9idWlsZC9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgiIDEKIyAzOSAiL2hvbWUvd2Via2l0
YnVpbGRib3Qvc2xhdmVzL2VmbC1BUk12Ny10aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJt
djctdGh1bWIyLWJ1aWxkL2J1aWxkL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaCIKIyAxICIv
bW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL2ludHR5
cGVzLmgiIDEgMyA0CiMgMjggIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJN
SEYvdXNyL2luY2x1ZGUvaW50dHlwZXMuaCIgMyA0CiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvbGliL2djYy9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvNC44LjEvaW5jbHVkZS9zdGRpbnQuaCIgMSAzIDQKIyA5ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljgu
MS9saWIvZ2NjL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS80LjguMS9pbmNsdWRlL3N0ZGludC5o
IiAzIDQKIyAxICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9p
bmNsdWRlL3N0ZGludC5oIiAxIDMgNAojIDI3ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBh
bmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3N0ZGludC5oIiAzIDQKIyAxICIvbW50L3N0b3JlL2No
cm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJp
aGYvYml0cy93Y2hhci5oIiAxIDMgNAojIDI4ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBh
bmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3N0ZGludC5oIiAyIDMgNAojIDEgIi9tbnQvc3RvcmUv
Y2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVh
YmloZi9iaXRzL3dvcmRzaXplLmgiIDEgMyA0CiMgMjkgIi9tbnQvc3RvcmUvY2hyb290cy91YnVu
dHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvc3RkaW50LmgiIDIgMyA0CiMgNDkgIi9tbnQv
c3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvc3RkaW50Lmgi
IDMgNAp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCBpbnQgdWludDE2X3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50MzJfdDsKCgoKCgpfX2V4
dGVuc2lvbl9fCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCB1aW50NjRfdDsKCgoKCgoK
dHlwZWRlZiBzaWduZWQgY2hhciBpbnRfbGVhc3Q4X3Q7CnR5cGVkZWYgc2hvcnQgaW50IGludF9s
ZWFzdDE2X3Q7CnR5cGVkZWYgaW50IGludF9sZWFzdDMyX3Q7CgoKCl9fZXh0ZW5zaW9uX18KdHlw
ZWRlZiBsb25nIGxvbmcgaW50IGludF9sZWFzdDY0X3Q7CgoKCnR5cGVkZWYgdW5zaWduZWQgY2hh
ciB1aW50X2xlYXN0OF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1aW50X2xlYXN0MTZf
dDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9sZWFzdDMyX3Q7CgoKCl9fZXh0ZW5zaW9uX18K
dHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVpbnRfbGVhc3Q2NF90OwoKCgoKCgp0eXBl
ZGVmIHNpZ25lZCBjaGFyIGludF9mYXN0OF90OwoKCgoKCnR5cGVkZWYgaW50IGludF9mYXN0MTZf
dDsKdHlwZWRlZiBpbnQgaW50X2Zhc3QzMl90OwpfX2V4dGVuc2lvbl9fCnR5cGVkZWYgbG9uZyBs
b25nIGludCBpbnRfZmFzdDY0X3Q7CgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50X2Zhc3Q4
X3Q7CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9mYXN0MTZfdDsKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgdWludF9mYXN0MzJfdDsKX19leHRlbnNpb25fXwp0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgbG9uZyBpbnQgdWludF9mYXN0NjRfdDsKIyAxMjYgIi9tbnQvc3RvcmUvY2hyb290cy91YnVu
dHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvc3RkaW50LmgiIDMgNAp0eXBlZGVmIGludCBp
bnRwdHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50cHRyX3Q7CiMgMTM4ICIvbW50L3N0
b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3N0ZGludC5oIiAz
IDQKX19leHRlbnNpb25fXwp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgaW50bWF4X3Q7Cl9fZXh0ZW5z
aW9uX18KdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVpbnRtYXhfdDsKIyAxMCAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44
LjEvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC44LjEvaW5jbHVkZS9zdGRpbnQu
aCIgMiAzIDQKIyAyOSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91
c3IvaW5jbHVkZS9pbnR0eXBlcy5oIiAyIDMgNAojIDI3NCAiL21udC9zdG9yZS9jaHJvb3RzL3Vi
dW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9pbnR0eXBlcy5oIiAzIDQKZXh0ZXJuICJD
IiB7CiMgMjg4ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9p
bmNsdWRlL2ludHR5cGVzLmgiIDMgNAp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgbG9uZyBp
bnQgcXVvdDsKICAgIGxvbmcgbG9uZyBpbnQgcmVtOwogIH0gaW1heGRpdl90OwoKCgoKCmV4dGVy
biBpbnRtYXhfdCBpbWF4YWJzIChpbnRtYXhfdCBfX24pIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW1heGRpdl90IGltYXhkaXYgKGludG1heF90IF9fbnVt
ZXIsIGludG1heF90IF9fZGVub20pCiAgICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKCgpleHRlcm4gaW50bWF4X3Qgc3RydG9pbWF4IChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19ucHRyLAogICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFz
ZSkgdGhyb3cgKCk7CgoKZXh0ZXJuIHVpbnRtYXhfdCBzdHJ0b3VtYXggKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsCiAgICAgICBjaGFyICoqIF9fcmVzdHJpY3QgX19lbmRwdHIsIGlu
dCBfX2Jhc2UpIHRocm93ICgpOwoKCmV4dGVybiBpbnRtYXhfdCB3Y3N0b2ltYXggKF9fY29uc3Qg
d2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIHRocm93ICgpOwoKCmV4dGVybiB1aW50bWF4X3Qgd2Nz
dG91bWF4IChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgd2NoYXJf
dCAqKiBfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIHRocm93ICgpOwojIDM3
OSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9p
bnR0eXBlcy5oIiAzIDQKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRv
bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgIGNoYXIg
KipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkKICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoKZXh0ZXJuIF9faW5s
aW5lIF9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykpIGludG1heF90Cl9fYXR0cmlidXRl
X18gKChfX2xlYWZfXykpIHN0cnRvaW1heCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IG5wdHIs
IGNoYXIgKipfX3Jlc3RyaWN0IGVuZHB0ciwgaW50IGJhc2UpIHRocm93ICgpCgp7CiAgcmV0dXJu
IF9fc3RydG9sbF9pbnRlcm5hbCAobnB0ciwgZW5kcHRyLCBiYXNlLCAwKTsKfQoKX19leHRlbnNp
b25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2ludGVybmFsIChf
X2NvbnN0IGNoYXIgKgogICAgICAgICBfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgY2hhciAq
KgogICAgICAgICBfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBpbnQgX19iYXNlLAogICAg
ICAgICBpbnQgX19ncm91cCkKICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g
KDEpKSkgOwoKZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykp
IHVpbnRtYXhfdApfX2F0dHJpYnV0ZV9fICgoX19sZWFmX18pKSBzdHJ0b3VtYXggKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBucHRyLCBjaGFyICoqX19yZXN0cmljdCBlbmRwdHIsIGludCBiYXNl
KSB0aHJvdyAoKQoKewogIHJldHVybiBfX3N0cnRvdWxsX2ludGVybmFsIChucHRyLCBlbmRwdHIs
IGJhc2UsIDApOwp9CgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IF9fd2NzdG9s
bF9pbnRlcm5hbCAoX19jb25zdCB3Y2hhcl90ICoKICAgICAgX19yZXN0cmljdCBfX25wdHIsCiAg
ICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICBpbnQgX19iYXNlLCBpbnQg
X19ncm91cCkKICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoK
ZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykpIGludG1heF90
Cl9fYXR0cmlidXRlX18gKChfX2xlYWZfXykpIHdjc3RvaW1heCAoX19jb25zdCB3Y2hhcl90ICpf
X3Jlc3RyaWN0IG5wdHIsIHdjaGFyX3QgKipfX3Jlc3RyaWN0IGVuZHB0ciwgaW50IGJhc2UpIHRo
cm93ICgpCgp7CiAgcmV0dXJuIF9fd2NzdG9sbF9pbnRlcm5hbCAobnB0ciwgZW5kcHRyLCBiYXNl
LCAwKTsKfQoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX193
Y3N0b3VsbF9pbnRlcm5hbCAoX19jb25zdCB3Y2hhcl90ICoKICAgICAgICAgX19yZXN0cmljdCBf
X25wdHIsCiAgICAgICAgIHdjaGFyX3QgKioKICAgICAgICAgX19yZXN0cmljdCBfX2VuZHB0ciwK
ICAgICAgICAgaW50IF9fYmFzZSwKICAgICAgICAgaW50IF9fZ3JvdXApCiAgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCmV4dGVybiBfX2lubGluZSBfX2F0dHJp
YnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSB1aW50bWF4X3QKX19hdHRyaWJ1dGVfXyAoKF9fbGVh
Zl9fKSkgd2NzdG91bWF4IChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgbnB0ciwgd2NoYXJf
dCAqKl9fcmVzdHJpY3QgZW5kcHRyLCBpbnQgYmFzZSkgdGhyb3cgKCkKCnsKICByZXR1cm4gX193
Y3N0b3VsbF9pbnRlcm5hbCAobnB0ciwgZW5kcHRyLCBiYXNlLCAwKTsKfQoKCgoKfQojIDQwICIv
aG9tZS93ZWJraXRidWlsZGJvdC9zbGF2ZXMvZWZsLUFSTXY3LXRodW1iMi1idWlsZC9idWlsZHNs
YXZlL2VmbC1hcm12Ny10aHVtYjItYnVpbGQvYnVpbGQvU291cmNlL1dURi93dGYvQXNzZXJ0aW9u
cy5oIiAyCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC44LjEvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC44LjEv
aW5jbHVkZS9zdGRhcmcuaCIgMSAzIDQKIyA0MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvbGliL2djYy9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvNC44LjEvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CnR5cGVkZWYgX19idWlsdGlu
X3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMgOTggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2xpYi9nY2MvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLzQuOC4xL2luY2x1ZGUvc3RkYXJnLmgiIDMgNAp0eXBlZGVmIF9fZ251Y192
YV9saXN0IHZhX2xpc3Q7CiMgNDEgIi9ob21lL3dlYmtpdGJ1aWxkYm90L3NsYXZlcy9lZmwtQVJN
djctdGh1bWIyLWJ1aWxkL2J1aWxkc2xhdmUvZWZsLWFybXY3LXRodW1iMi1idWlsZC9idWlsZC9T
b3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgiIDIKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9saWIvZ2NjL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS80LjguMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDE0NyAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44
LjEvbGliL2djYy9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvNC44LjEvaW5jbHVkZS9zdGRkZWYu
aCIgMyA0CnR5cGVkZWYgaW50IHB0cmRpZmZfdDsKIyA0MjIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2xpYi9nY2MvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLzQuOC4xL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAp0eXBlZGVmIHN0
cnVjdCB7CiAgbG9uZyBsb25nIF9fbWF4X2FsaWduX2xsIF9fYXR0cmlidXRlX18oKF9fYWxpZ25l
ZF9fKF9fYWxpZ25vZl9fKGxvbmcgbG9uZykpKSk7CiAgbG9uZyBkb3VibGUgX19tYXhfYWxpZ25f
bGQgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oX19hbGlnbm9mX18obG9uZyBkb3VibGUpKSkp
Owp9IG1heF9hbGlnbl90OwoKCgoKCgogIHR5cGVkZWYgZGVjbHR5cGUobnVsbHB0cikgbnVsbHB0
cl90OwojIDQyICIvaG9tZS93ZWJraXRidWlsZGJvdC9zbGF2ZXMvZWZsLUFSTXY3LXRodW1iMi1i
dWlsZC9idWlsZHNsYXZlL2VmbC1hcm12Ny10aHVtYjItYnVpbGQvYnVpbGQvU291cmNlL1dURi93
dGYvQXNzZXJ0aW9ucy5oIiAyCiMgMTAzICIvaG9tZS93ZWJraXRidWlsZGJvdC9zbGF2ZXMvZWZs
LUFSTXY3LXRodW1iMi1idWlsZC9idWlsZHNsYXZlL2VmbC1hcm12Ny10aHVtYjItYnVpbGQvYnVp
bGQvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oIgpleHRlcm4gIkMiIHsKIyAxMjAgIi9ob21l
L3dlYmtpdGJ1aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxkc2xhdmUv
ZWZsLWFybXY3LXRodW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgi
CnR5cGVkZWYgZW51bSB7IFdURkxvZ0NoYW5uZWxPZmYsIFdURkxvZ0NoYW5uZWxPbiB9IFdURkxv
Z0NoYW5uZWxTdGF0ZTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIFdURkxvZ0NoYW5uZWxTdGF0ZSBz
dGF0ZTsKICAgIGNvbnN0IGNoYXIqIG5hbWU7Cn0gV1RGTG9nQ2hhbm5lbDsKCiB2b2lkIFdURlJl
cG9ydEFzc2VydGlvbkZhaWx1cmUoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNo
YXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhc3NlcnRpb24pOwogdm9pZCBXVEZSZXBvcnRBc3Nl
cnRpb25GYWlsdXJlV2l0aE1lc3NhZ2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0
IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhc3NlcnRpb24sIGNvbnN0IGNoYXIqIGZvcm1h
dCwgLi4uKSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgNSwgNikpKTsKIHZvaWQg
V1RGUmVwb3J0QXJndW1lbnRBc3NlcnRpb25GYWlsdXJlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBs
aW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogYXJnTmFtZSwgY29uc3QgY2hh
ciogYXNzZXJ0aW9uKTsKIHZvaWQgV1RGUmVwb3J0RmF0YWxFcnJvcihjb25zdCBjaGFyKiBmaWxl
LCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4u
KSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgNCwgNSkpKTsKIHZvaWQgV1RGUmVw
b3J0RXJyb3IoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9u
LCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmlu
dGYsIDQsIDUpKSk7CiB2b2lkIFdURkxvZyhXVEZMb2dDaGFubmVsKiwgY29uc3QgY2hhciogZm9y
bWF0LCAuLi4pIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkpOwogdm9p
ZCBXVEZMb2dWZXJib3NlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBm
dW5jdGlvbiwgV1RGTG9nQ2hhbm5lbCosIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBfX2F0dHJp
YnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgNSwgNikpKTsKIHZvaWQgV1RGTG9nQWx3YXlzVihj
b25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QpOwogdm9pZCBXVEZMb2dBbHdheXMoY29uc3QgY2hh
ciogZm9ybWF0LCAuLi4pIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAxLCAyKSkp
Owogdm9pZCBXVEZMb2dBbHdheXNBbmRDcmFzaChjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgX19h
dHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDEsIDIpKSk7CiBXVEZMb2dDaGFubmVsKiBX
VEZMb2dDaGFubmVsQnlOYW1lKFdURkxvZ0NoYW5uZWwqW10sIHNpemVfdCBjb3VudCwgY29uc3Qg
Y2hhciopOwogdm9pZCBXVEZJbml0aWFsaXplTG9nQ2hhbm5lbFN0YXRlc0Zyb21TdHJpbmcoV1RG
TG9nQ2hhbm5lbCpbXSwgc2l6ZV90IGNvdW50LCBjb25zdCBjaGFyKik7Cgogdm9pZCBXVEZHZXRC
YWNrdHJhY2Uodm9pZCoqIHN0YWNrLCBpbnQqIHNpemUpOwogdm9pZCBXVEZSZXBvcnRCYWNrdHJh
Y2UoKTsKIHZvaWQgV1RGUHJpbnRCYWNrdHJhY2Uodm9pZCoqIHN0YWNrLCBpbnQgc2l6ZSk7Cgp0
eXBlZGVmIHZvaWQgKCpXVEZDcmFzaEhvb2tGdW5jdGlvbikoKTsKIHZvaWQgV1RGU2V0Q3Jhc2hI
b29rKFdURkNyYXNoSG9va0Z1bmN0aW9uKTsKIHZvaWQgV1RGSW5zdGFsbFJlcG9ydEJhY2t0cmFj
ZU9uQ3Jhc2hIb29rKCk7CgoKfQoKCgoKCgoKZXh0ZXJuICJDIiB7CgogICAgdm9pZCBXVEZDcmFz
aCgpOwoKfQoKCgoKCgoKZXh0ZXJuICJDIiB7CgogICAgdm9pZCBXVEZDcmFzaFdpdGhTZWN1cml0
eUltcGxpY2F0aW9uKCk7Cgp9CiMgMzAgIi9ob21lL3dlYmtpdGJ1aWxkYm90L3NsYXZlcy9lZmwt
QVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxkc2xhdmUvZWZsLWFybXY3LXRodW1iMi1idWlsZC9idWls
ZC9Tb3VyY2UvV1RGL3d0Zi9Qb3NzaWJseU51bGwuaCIgMgoKbmFtZXNwYWNlIFdURiB7Cgp0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFBvc3NpYmx5TnVsbCB7CiAgICBQb3NzaWJseU51bGwo
VCBkYXRhKQogICAgICAgIDogbV9kYXRhKGRhdGEpCiAgICB7CiAgICB9CiAgICBQb3NzaWJseU51
bGwoY29uc3QgUG9zc2libHlOdWxsPFQ+JiBzb3VyY2UpCiAgICAgICAgOiBtX2RhdGEoc291cmNl
Lm1fZGF0YSkKICAgIHsKICAgICAgICBzb3VyY2UubV9kYXRhID0gMDsKICAgIH0KICAgIH5Qb3Nz
aWJseU51bGwoKSB7ICgodm9pZCkwKTsgfQogICAgYm9vbCBnZXRWYWx1ZShUJiBvdXQpIF9fYXR0
cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsKcHJpdmF0ZToKICAgIG11dGFibGUg
VCBtX2RhdGE7Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYm9vbCBQb3NzaWJseU51bGw8VD46
OmdldFZhbHVlKFQmIG91dCkKewogICAgb3V0ID0gbV9kYXRhOwogICAgYm9vbCByZXN1bHQgPSAh
IW1fZGF0YTsKICAgIG1fZGF0YSA9IDA7CiAgICByZXR1cm4gcmVzdWx0Owp9Cgp9CiMgMjcgIi9o
b21lL3dlYmtpdGJ1aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxkc2xh
dmUvZWZsLWFybXY3LXRodW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9j
LmgiIDIKIyAxICIvaG9tZS93ZWJraXRidWlsZGJvdC9zbGF2ZXMvZWZsLUFSTXY3LXRodW1iMi1i
dWlsZC9idWlsZHNsYXZlL2VmbC1hcm12Ny10aHVtYjItYnVpbGQvYnVpbGQvU291cmNlL1dURi93
dGYvU3RkTGliRXh0cmFzLmgiIDEKIyAzMCAiL2hvbWUvd2Via2l0YnVpbGRib3Qvc2xhdmVzL2Vm
bC1BUk12Ny10aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJtdjctdGh1bWIyLWJ1aWxkL2J1
aWxkL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oIgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9jaHJvbm8iIDEgMwojIDMyICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvY2hyb25vIiAzCiAgICAg
ICAKIyAzMyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4x
L2Nocm9ubyIgMwoKCgoKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOC4xL3JhdGlvIiAxIDMKIyAzMiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOC4xL3JhdGlvIiAzCiAgICAgICAKIyAzMyAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL3JhdGlvIiAzCgoKCgoKIyAxICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvdHlwZV90cmFp
dHMiIDEgMwojIDMyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC44LjEvdHlwZV90cmFpdHMiIDMKICAgICAgIAojIDMzICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvdHlwZV90cmFpdHMiIDMKCgoKCgoKCm5hbWVzcGFj
ZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKIyA1
NiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL3R5cGVf
dHJhaXRzIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBfVHAgX192PgogICAgc3RydWN0IGlu
dGVncmFsX2NvbnN0YW50CiAgICB7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgX1RwIHZhbHVlID0g
X192OwogICAgICB0eXBlZGVmIF9UcCB2YWx1ZV90eXBlOwogICAgICB0eXBlZGVmIGludGVncmFs
X2NvbnN0YW50PF9UcCwgX192PiB0eXBlOwogICAgICBjb25zdGV4cHIgb3BlcmF0b3IgdmFsdWVf
dHlwZSgpIHsgcmV0dXJuIHZhbHVlOyB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAs
IF9UcCBfX3Y+CiAgICBjb25zdGV4cHIgX1RwIGludGVncmFsX2NvbnN0YW50PF9UcCwgX192Pjo6
dmFsdWU7CgoKICB0eXBlZGVmIGludGVncmFsX2NvbnN0YW50PGJvb2wsIHRydWU+IHRydWVfdHlw
ZTsKCgogIHR5cGVkZWYgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgZmFsc2U+IGZhbHNlX3R5cGU7
CgoKCiAgdGVtcGxhdGU8Ym9vbCwgdHlwZW5hbWUsIHR5cGVuYW1lPgogICAgc3RydWN0IGNvbmRp
dGlvbmFsOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLj4KICAgIHN0cnVjdCBfX29yXzsKCiAgdGVt
cGxhdGU8PgogICAgc3RydWN0IF9fb3JfPD4KICAgIDogcHVibGljIGZhbHNlX3R5cGUKICAgIHsg
fTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0IxPgogICAgc3RydWN0IF9fb3JfPF9CMT4KICAgIDog
cHVibGljIF9CMQogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQjEsIHR5cGVuYW1lIF9C
Mj4KICAgIHN0cnVjdCBfX29yXzxfQjEsIF9CMj4KICAgIDogcHVibGljIGNvbmRpdGlvbmFsPF9C
MTo6dmFsdWUsIF9CMSwgX0IyPjo6dHlwZQogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
QjEsIHR5cGVuYW1lIF9CMiwgdHlwZW5hbWUgX0IzLCB0eXBlbmFtZS4uLiBfQm4+CiAgICBzdHJ1
Y3QgX19vcl88X0IxLCBfQjIsIF9CMywgX0JuLi4uPgogICAgOiBwdWJsaWMgY29uZGl0aW9uYWw8
X0IxOjp2YWx1ZSwgX0IxLCBfX29yXzxfQjIsIF9CMywgX0JuLi4uPj46OnR5cGUKICAgIHsgfTsK
CiAgdGVtcGxhdGU8dHlwZW5hbWUuLi4+CiAgICBzdHJ1Y3QgX19hbmRfOwoKICB0ZW1wbGF0ZTw+
CiAgICBzdHJ1Y3QgX19hbmRfPD4KICAgIDogcHVibGljIHRydWVfdHlwZQogICAgeyB9OwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQjE+CiAgICBzdHJ1Y3QgX19hbmRfPF9CMT4KICAgIDogcHVibGlj
IF9CMQogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQjEsIHR5cGVuYW1lIF9CMj4KICAg
IHN0cnVjdCBfX2FuZF88X0IxLCBfQjI+CiAgICA6IHB1YmxpYyBjb25kaXRpb25hbDxfQjE6OnZh
bHVlLCBfQjIsIF9CMT46OnR5cGUKICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0IxLCB0
eXBlbmFtZSBfQjIsIHR5cGVuYW1lIF9CMywgdHlwZW5hbWUuLi4gX0JuPgogICAgc3RydWN0IF9f
YW5kXzxfQjEsIF9CMiwgX0IzLCBfQm4uLi4+CiAgICA6IHB1YmxpYyBjb25kaXRpb25hbDxfQjE6
OnZhbHVlLCBfX2FuZF88X0IyLCBfQjMsIF9Cbi4uLj4sIF9CMT46OnR5cGUKICAgIHsgfTsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1BwPgogICAgc3RydWN0IF9fbm90XwogICAgOiBwdWJsaWMgaW50
ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgIV9QcDo6dmFsdWU+CiAgICB7IH07CgogIHN0cnVjdCBfX3Nm
aW5hZV90eXBlcwogIHsKICAgIHR5cGVkZWYgY2hhciBfX29uZTsKICAgIHR5cGVkZWYgc3RydWN0
IHsgY2hhciBfX2FyclsyXTsgfSBfX3R3bzsKICB9OwoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcD4KICAgIHN0cnVjdCBfX3N1Y2Nlc3NfdHlwZQogICAgeyB0eXBlZGVmIF9UcCB0eXBlOyB9
OwoKICBzdHJ1Y3QgX19mYWlsdXJlX3R5cGUKICB7IH07CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWU+
CiAgICBzdHJ1Y3QgcmVtb3ZlX2N2OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZT4KICAgIHN0cnVjdCBf
X2lzX3ZvaWRfaGVscGVyCiAgICA6IHB1YmxpYyBmYWxzZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8
PgogICAgc3RydWN0IF9faXNfdm9pZF9oZWxwZXI8dm9pZD4KICAgIDogcHVibGljIHRydWVfdHlw
ZSB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgaXNfdm9pZAogICAg
OiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgKF9faXNfdm9pZF9oZWxwZXI8dHlwZW5h
bWUKICAgICAgICAgIHJlbW92ZV9jdjxfVHA+Ojp0eXBlPjo6dmFsdWUpPgogICAgeyB9OwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZT4KICAgIHN0cnVjdCBfX2lzX2ludGVncmFsX2hlbHBlcgogICAgOiBw
dWJsaWMgZmFsc2VfdHlwZSB7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2ludGVn
cmFsX2hlbHBlcjxib29sPgogICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8
PgogICAgc3RydWN0IF9faXNfaW50ZWdyYWxfaGVscGVyPGNoYXI+CiAgICA6IHB1YmxpYyB0cnVl
X3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ3JhbF9oZWxwZXI8
c2lnbmVkIGNoYXI+CiAgICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTw+CiAg
ICBzdHJ1Y3QgX19pc19pbnRlZ3JhbF9oZWxwZXI8dW5zaWduZWQgY2hhcj4KICAgIDogcHVibGlj
IHRydWVfdHlwZSB7IH07CgoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ3JhbF9o
ZWxwZXI8d2NoYXJfdD4KICAgIDogcHVibGljIHRydWVfdHlwZSB7IH07CgoKICB0ZW1wbGF0ZTw+
CiAgICBzdHJ1Y3QgX19pc19pbnRlZ3JhbF9oZWxwZXI8Y2hhcjE2X3Q+CiAgICA6IHB1YmxpYyB0
cnVlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ3JhbF9oZWxw
ZXI8Y2hhcjMyX3Q+CiAgICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTw+CiAg
ICBzdHJ1Y3QgX19pc19pbnRlZ3JhbF9oZWxwZXI8c2hvcnQ+CiAgICA6IHB1YmxpYyB0cnVlX3R5
cGUgeyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ3JhbF9oZWxwZXI8dW5z
aWduZWQgc2hvcnQ+CiAgICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTw+CiAg
ICBzdHJ1Y3QgX19pc19pbnRlZ3JhbF9oZWxwZXI8aW50PgogICAgOiBwdWJsaWMgdHJ1ZV90eXBl
IHsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9faXNfaW50ZWdyYWxfaGVscGVyPHVuc2ln
bmVkIGludD4KICAgIDogcHVibGljIHRydWVfdHlwZSB7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0
cnVjdCBfX2lzX2ludGVncmFsX2hlbHBlcjxsb25nPgogICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHsg
fTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9faXNfaW50ZWdyYWxfaGVscGVyPHVuc2lnbmVk
IGxvbmc+CiAgICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1
Y3QgX19pc19pbnRlZ3JhbF9oZWxwZXI8bG9uZyBsb25nPgogICAgOiBwdWJsaWMgdHJ1ZV90eXBl
IHsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9faXNfaW50ZWdyYWxfaGVscGVyPHVuc2ln
bmVkIGxvbmcgbG9uZz4KICAgIDogcHVibGljIHRydWVfdHlwZSB7IH07CiMgMjQ1ICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvdHlwZV90cmFpdHMiIDMK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgaXNfaW50ZWdyYWwKICAgIDogcHVi
bGljIGludGVncmFsX2NvbnN0YW50PGJvb2wsIChfX2lzX2ludGVncmFsX2hlbHBlcjx0eXBlbmFt
ZQogICAgICAgICAgcmVtb3ZlX2N2PF9UcD46OnR5cGU+Ojp2YWx1ZSk+CiAgICB7IH07CgogIHRl
bXBsYXRlPHR5cGVuYW1lPgogICAgc3RydWN0IF9faXNfZmxvYXRpbmdfcG9pbnRfaGVscGVyCiAg
ICA6IHB1YmxpYyBmYWxzZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9faXNf
ZmxvYXRpbmdfcG9pbnRfaGVscGVyPGZsb2F0PgogICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsK
CiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9faXNfZmxvYXRpbmdfcG9pbnRfaGVscGVyPGRvdWJs
ZT4KICAgIDogcHVibGljIHRydWVfdHlwZSB7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBf
X2lzX2Zsb2F0aW5nX3BvaW50X2hlbHBlcjxsb25nIGRvdWJsZT4KICAgIDogcHVibGljIHRydWVf
dHlwZSB7IH07CiMgMjc0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC44LjEvdHlwZV90cmFpdHMiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1
Y3QgaXNfZmxvYXRpbmdfcG9pbnQKICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGJvb2ws
IChfX2lzX2Zsb2F0aW5nX3BvaW50X2hlbHBlcjx0eXBlbmFtZQogICAgICAgICAgcmVtb3ZlX2N2
PF9UcD46OnR5cGU+Ojp2YWx1ZSk+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZT4KICAg
IHN0cnVjdCBpc19hcnJheQogICAgOiBwdWJsaWMgZmFsc2VfdHlwZSB7IH07CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcCwgc3RkOjpzaXplX3QgX1NpemU+CiAgICBzdHJ1Y3QgaXNfYXJyYXk8X1Rw
W19TaXplXT4KICAgIDogcHVibGljIHRydWVfdHlwZSB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcD4KICAgIHN0cnVjdCBpc19hcnJheTxfVHBbXT4KICAgIDogcHVibGljIHRydWVfdHlwZSB7
IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lPgogICAgc3RydWN0IF9faXNfcG9pbnRlcl9oZWxwZXIK
ICAgIDogcHVibGljIGZhbHNlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBzdHJ1Y3QgX19pc19wb2ludGVyX2hlbHBlcjxfVHAqPgogICAgOiBwdWJsaWMgdHJ1ZV90eXBl
IHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBpc19wb2ludGVyCiAg
ICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxib29sLCAoX19pc19wb2ludGVyX2hlbHBlcjx0
eXBlbmFtZQogICAgICAgICAgcmVtb3ZlX2N2PF9UcD46OnR5cGU+Ojp2YWx1ZSk+CiAgICB7IH07
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZT4KICAgIHN0cnVjdCBpc19sdmFsdWVfcmVmZXJlbmNlCiAg
ICA6IHB1YmxpYyBmYWxzZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAg
c3RydWN0IGlzX2x2YWx1ZV9yZWZlcmVuY2U8X1RwJj4KICAgIDogcHVibGljIHRydWVfdHlwZSB7
IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZT4KICAgIHN0cnVjdCBpc19ydmFsdWVfcmVmZXJlbmNl
CiAgICA6IHB1YmxpYyBmYWxzZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
ICAgc3RydWN0IGlzX3J2YWx1ZV9yZWZlcmVuY2U8X1RwJiY+CiAgICA6IHB1YmxpYyB0cnVlX3R5
cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZT4KICAgIHN0cnVjdCBpc19mdW5jdGlvbjsKCiAg
dGVtcGxhdGU8dHlwZW5hbWU+CiAgICBzdHJ1Y3QgX19pc19tZW1iZXJfb2JqZWN0X3BvaW50ZXJf
aGVscGVyCiAgICA6IHB1YmxpYyBmYWxzZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwLCB0eXBlbmFtZSBfQ3A+CiAgICBzdHJ1Y3QgX19pc19tZW1iZXJfb2JqZWN0X3BvaW50ZXJf
aGVscGVyPF9UcCBfQ3A6Oio+CiAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxib29sLCAh
aXNfZnVuY3Rpb248X1RwPjo6dmFsdWU+IHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4K
ICAgIHN0cnVjdCBpc19tZW1iZXJfb2JqZWN0X3BvaW50ZXIKICAgIDogcHVibGljIGludGVncmFs
X2NvbnN0YW50PGJvb2wsIChfX2lzX21lbWJlcl9vYmplY3RfcG9pbnRlcl9oZWxwZXI8CiAgICAg
ICAgICB0eXBlbmFtZSByZW1vdmVfY3Y8X1RwPjo6dHlwZT46OnZhbHVlKT4KICAgIHsgfTsKCiAg
dGVtcGxhdGU8dHlwZW5hbWU+CiAgICBzdHJ1Y3QgX19pc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRl
cl9oZWxwZXIKICAgIDogcHVibGljIGZhbHNlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHAsIHR5cGVuYW1lIF9DcD4KICAgIHN0cnVjdCBfX2lzX21lbWJlcl9mdW5jdGlvbl9wb2lu
dGVyX2hlbHBlcjxfVHAgX0NwOjoqPgogICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9v
bCwgaXNfZnVuY3Rpb248X1RwPjo6dmFsdWU+IHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4KICAgIHN0cnVjdCBpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcgogICAgOiBwdWJsaWMgaW50
ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgKF9faXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJfaGVscGVy
PAogICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PF9UcD46OnR5cGU+Ojp2YWx1ZSk+CiAgICB7
IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgaXNfZW51bQogICAgOiBw
dWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgX19pc19lbnVtKF9UcCk+CiAgICB7IH07CgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgaXNfdW5pb24KICAgIDogcHVibGlj
IGludGVncmFsX2NvbnN0YW50PGJvb2wsIF9faXNfdW5pb24oX1RwKT4KICAgIHsgfTsKCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBpc19jbGFzcwogICAgOiBwdWJsaWMgaW50
ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgX19pc19jbGFzcyhfVHApPgogICAgeyB9OwoKCiAgdGVtcGxh
dGU8dHlwZW5hbWU+CiAgICBzdHJ1Y3QgaXNfZnVuY3Rpb24KICAgIDogcHVibGljIGZhbHNlX3R5
cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+
CiAgICBzdHJ1Y3QgaXNfZnVuY3Rpb248X1JlcyhfQXJnVHlwZXMuLi4pPgogICAgOiBwdWJsaWMg
dHJ1ZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUuLi4gX0Fy
Z1R5cGVzPgogICAgc3RydWN0IGlzX2Z1bmN0aW9uPF9SZXMoX0FyZ1R5cGVzLi4uLi4uKT4KICAg
IDogcHVibGljIHRydWVfdHlwZSB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVu
YW1lLi4uIF9BcmdUeXBlcz4KICAgIHN0cnVjdCBpc19mdW5jdGlvbjxfUmVzKF9BcmdUeXBlcy4u
LikgY29uc3Q+CiAgICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBzdHJ1Y3QgaXNfZnVuY3Rpb248X1Jl
cyhfQXJnVHlwZXMuLi4uLi4pIGNvbnN0PgogICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgc3RydWN0
IGlzX2Z1bmN0aW9uPF9SZXMoX0FyZ1R5cGVzLi4uKSB2b2xhdGlsZT4KICAgIDogcHVibGljIHRy
dWVfdHlwZSB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lLi4uIF9BcmdU
eXBlcz4KICAgIHN0cnVjdCBpc19mdW5jdGlvbjxfUmVzKF9BcmdUeXBlcy4uLi4uLikgdm9sYXRp
bGU+CiAgICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVz
LCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBzdHJ1Y3QgaXNfZnVuY3Rpb248X1JlcyhfQXJn
VHlwZXMuLi4pIGNvbnN0IHZvbGF0aWxlPgogICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgc3RydWN0
IGlzX2Z1bmN0aW9uPF9SZXMoX0FyZ1R5cGVzLi4uLi4uKSBjb25zdCB2b2xhdGlsZT4KICAgIDog
cHVibGljIHRydWVfdHlwZSB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lPgogICAgc3RydWN0IF9f
aXNfbnVsbHB0cl90X2hlbHBlcgogICAgOiBwdWJsaWMgZmFsc2VfdHlwZSB7IH07CgogIHRlbXBs
YXRlPD4KICAgIHN0cnVjdCBfX2lzX251bGxwdHJfdF9oZWxwZXI8c3RkOjpudWxscHRyX3Q+CiAg
ICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAg
c3RydWN0IF9faXNfbnVsbHB0cl90CiAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxib29s
LCAoX19pc19udWxscHRyX3RfaGVscGVyPHR5cGVuYW1lCiAgICAgICAgICByZW1vdmVfY3Y8X1Rw
Pjo6dHlwZT46OnZhbHVlKT4KICAgIHsgfTsKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
ICAgc3RydWN0IGlzX3JlZmVyZW5jZQogICAgOiBwdWJsaWMgX19vcl88aXNfbHZhbHVlX3JlZmVy
ZW5jZTxfVHA+LAogICAgICAgICAgICAgICAgICAgaXNfcnZhbHVlX3JlZmVyZW5jZTxfVHA+Pjo6
dHlwZQogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGlzX2Fy
aXRobWV0aWMKICAgIDogcHVibGljIF9fb3JfPGlzX2ludGVncmFsPF9UcD4sIGlzX2Zsb2F0aW5n
X3BvaW50PF9UcD4+Ojp0eXBlCiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBzdHJ1Y3QgaXNfZnVuZGFtZW50YWwKICAgIDogcHVibGljIF9fb3JfPGlzX2FyaXRobWV0aWM8
X1RwPiwgaXNfdm9pZDxfVHA+LCBfX2lzX251bGxwdHJfdDxfVHA+Pjo6dHlwZQogICAgeyB9OwoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGlzX29iamVjdAogICAgOiBwdWJs
aWMgX19ub3RfPF9fb3JfPGlzX2Z1bmN0aW9uPF9UcD4sIGlzX3JlZmVyZW5jZTxfVHA+LAogICAg
ICAgICAgICAgICAgICAgICAgICAgIGlzX3ZvaWQ8X1RwPj4+Ojp0eXBlCiAgICB7IH07CgogIHRl
bXBsYXRlPHR5cGVuYW1lPgogICAgc3RydWN0IGlzX21lbWJlcl9wb2ludGVyOwoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGlzX3NjYWxhcgogICAgOiBwdWJsaWMgX19vcl88
aXNfYXJpdGhtZXRpYzxfVHA+LCBpc19lbnVtPF9UcD4sIGlzX3BvaW50ZXI8X1RwPiwKICAgICAg
ICAgICAgICAgICAgIGlzX21lbWJlcl9wb2ludGVyPF9UcD4sIF9faXNfbnVsbHB0cl90PF9UcD4+
Ojp0eXBlCiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgaXNf
Y29tcG91bmQKICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGJvb2wsICFpc19mdW5kYW1l
bnRhbDxfVHA+Ojp2YWx1ZT4geyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1
Y3QgX19pc19tZW1iZXJfcG9pbnRlcl9oZWxwZXIKICAgIDogcHVibGljIGZhbHNlX3R5cGUgeyB9
OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9DcD4KICAgIHN0cnVjdCBfX2lz
X21lbWJlcl9wb2ludGVyX2hlbHBlcjxfVHAgX0NwOjoqPgogICAgOiBwdWJsaWMgdHJ1ZV90eXBl
IHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBpc19tZW1iZXJfcG9p
bnRlcgogICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgKF9faXNfbWVtYmVyX3Bv
aW50ZXJfaGVscGVyPAogICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PF9UcD46OnR5cGU+Ojp2
YWx1ZSk+CiAgICB7IH07CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lPgogICAgc3RydWN0IGlzX2Nv
bnN0CiAgICA6IHB1YmxpYyBmYWxzZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PgogICAgc3RydWN0IGlzX2NvbnN0PF9UcCBjb25zdD4KICAgIDogcHVibGljIHRydWVfdHlwZSB7
IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZT4KICAgIHN0cnVjdCBpc192b2xhdGlsZQogICAgOiBw
dWJsaWMgZmFsc2VfdHlwZSB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVj
dCBpc192b2xhdGlsZTxfVHAgdm9sYXRpbGU+CiAgICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGlzX3RyaXZpYWwKICAgIDogcHVi
bGljIGludGVncmFsX2NvbnN0YW50PGJvb2wsIF9faXNfdHJpdmlhbChfVHApPgogICAgeyB9OwoK
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgaXNfc3RhbmRhcmRfbGF5b3V0
CiAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxib29sLCBfX2lzX3N0YW5kYXJkX2xheW91
dChfVHApPgogICAgeyB9OwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBp
c19wb2QKICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGJvb2wsIF9faXNfcG9kKF9UcCk+
CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgaXNfbGl0ZXJh
bF90eXBlCiAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxib29sLCBfX2lzX2xpdGVyYWxf
dHlwZShfVHApPgogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0
IGlzX2VtcHR5CiAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxib29sLCBfX2lzX2VtcHR5
KF9UcCk+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgaXNf
cG9seW1vcnBoaWMKICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGJvb2wsIF9faXNfcG9s
eW1vcnBoaWMoX1RwKT4KICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0
cnVjdCBpc19hYnN0cmFjdAogICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgX19p
c19hYnN0cmFjdChfVHApPgogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsCiAgICBi
b29sID0gaXNfaW50ZWdyYWw8X1RwPjo6dmFsdWUsCiAgICBib29sID0gaXNfZmxvYXRpbmdfcG9p
bnQ8X1RwPjo6dmFsdWU+CiAgICBzdHJ1Y3QgX19pc19zaWduZWRfaGVscGVyCiAgICA6IHB1Ymxp
YyBmYWxzZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9f
aXNfc2lnbmVkX2hlbHBlcjxfVHAsIGZhbHNlLCB0cnVlPgogICAgOiBwdWJsaWMgdHJ1ZV90eXBl
IHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfc2lnbmVkX2hl
bHBlcjxfVHAsIHRydWUsIGZhbHNlPgogICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9v
bCwgc3RhdGljX2Nhc3Q8Ym9vbD4oX1RwKC0xKSA8IF9UcCgwKSk+CiAgICB7IH07CgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgaXNfc2lnbmVkCiAgICA6IHB1YmxpYyBpbnRl
Z3JhbF9jb25zdGFudDxib29sLCBfX2lzX3NpZ25lZF9oZWxwZXI8X1RwPjo6dmFsdWU+CiAgICB7
IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgaXNfdW5zaWduZWQKICAg
IDogcHVibGljIF9fYW5kXzxpc19hcml0aG1ldGljPF9UcD4sIF9fbm90Xzxpc19zaWduZWQ8X1Rw
Pj4+Ojp0eXBlCiAgICB7IH07CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lPgogICAgc3RydWN0IGFk
ZF9ydmFsdWVfcmVmZXJlbmNlOwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgdHlw
ZW5hbWUgYWRkX3J2YWx1ZV9yZWZlcmVuY2U8X1RwPjo6dHlwZSBkZWNsdmFsKCkgbm9leGNlcHQ7
CgogIHRlbXBsYXRlPHR5cGVuYW1lLCB1bnNpZ25lZCA9IDA+CiAgICBzdHJ1Y3QgZXh0ZW50OwoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZT4KICAgIHN0cnVjdCByZW1vdmVfYWxsX2V4dGVudHM7CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lzX2FycmF5X2tub3duX2JvdW5kcwog
ICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgKGV4dGVudDxfVHA+Ojp2YWx1ZSA+
IDApPgogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19h
cnJheV91bmtub3duX2JvdW5kcwogICAgOiBwdWJsaWMgX19hbmRfPGlzX2FycmF5PF9UcD4sIF9f
bm90XzxleHRlbnQ8X1RwPj4+Ojp0eXBlCiAgICB7IH07CgoKCgoKCiAgc3RydWN0IF9fZG9faXNf
ZGVzdHJ1Y3RpYmxlX2ltcGwKICB7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1l
ID0gZGVjbHR5cGUoZGVjbHZhbDxfVHAmPigpLn5fVHAoKSk+CiAgICAgIHN0YXRpYyB0cnVlX3R5
cGUgX190ZXN0KGludCk7CgogICAgdGVtcGxhdGU8dHlwZW5hbWU+CiAgICAgIHN0YXRpYyBmYWxz
ZV90eXBlIF9fdGVzdCguLi4pOwogIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0
cnVjdCBfX2lzX2Rlc3RydWN0aWJsZV9pbXBsCiAgICA6IHB1YmxpYyBfX2RvX2lzX2Rlc3RydWN0
aWJsZV9pbXBsCiAgICB7CiAgICAgIHR5cGVkZWYgZGVjbHR5cGUoX190ZXN0PF9UcD4oMCkpIHR5
cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsCiAgICAgICAgICAgYm9vbCA9IF9f
b3JfPGlzX3ZvaWQ8X1RwPiwKICAgICAgICAgICAgICAgICAgICAgICAgX19pc19hcnJheV91bmtu
b3duX2JvdW5kczxfVHA+LAogICAgICAgICAgICAgICAgICAgICAgICBpc19mdW5jdGlvbjxfVHA+
Pjo6dmFsdWUsCiAgICAgICAgICAgYm9vbCA9IF9fb3JfPGlzX3JlZmVyZW5jZTxfVHA+LCBpc19z
Y2FsYXI8X1RwPj46OnZhbHVlPgogICAgc3RydWN0IF9faXNfZGVzdHJ1Y3RpYmxlX3NhZmU7Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lzX2Rlc3RydWN0aWJsZV9zYWZl
PF9UcCwgZmFsc2UsIGZhbHNlPgogICAgOiBwdWJsaWMgX19pc19kZXN0cnVjdGlibGVfaW1wbDx0
eXBlbmFtZQogICAgICAgICAgICAgICByZW1vdmVfYWxsX2V4dGVudHM8X1RwPjo6dHlwZT46OnR5
cGUKICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfZGVz
dHJ1Y3RpYmxlX3NhZmU8X1RwLCB0cnVlLCBmYWxzZT4KICAgIDogcHVibGljIGZhbHNlX3R5cGUg
eyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19kZXN0cnVjdGli
bGVfc2FmZTxfVHAsIGZhbHNlLCB0cnVlPgogICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKCgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBpc19kZXN0cnVjdGlibGUKICAgIDog
cHVibGljIGludGVncmFsX2NvbnN0YW50PGJvb2wsIChfX2lzX2Rlc3RydWN0aWJsZV9zYWZlPF9U
cD46OnZhbHVlKT4KICAgIHsgfTsKCgoKCgogIHN0cnVjdCBfX2RvX2lzX250X2Rlc3RydWN0aWJs
ZV9pbXBsCiAgewogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgICBzdGF0aWMgaW50ZWdy
YWxfY29uc3RhbnQ8Ym9vbCwgbm9leGNlcHQoZGVjbHZhbDxfVHAmPigpLn5fVHAoKSk+CiAgICAg
ICAgX190ZXN0KGludCk7CgogICAgdGVtcGxhdGU8dHlwZW5hbWU+CiAgICAgIHN0YXRpYyBmYWxz
ZV90eXBlIF9fdGVzdCguLi4pOwogIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0
cnVjdCBfX2lzX250X2Rlc3RydWN0aWJsZV9pbXBsCiAgICA6IHB1YmxpYyBfX2RvX2lzX250X2Rl
c3RydWN0aWJsZV9pbXBsCiAgICB7CiAgICAgIHR5cGVkZWYgZGVjbHR5cGUoX190ZXN0PF9UcD4o
MCkpIHR5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsCiAgICAgICAgICAgYm9v
bCA9IF9fb3JfPGlzX3ZvaWQ8X1RwPiwKICAgICAgICAgICAgICAgICAgICAgICAgX19pc19hcnJh
eV91bmtub3duX2JvdW5kczxfVHA+LAogICAgICAgICAgICAgICAgICAgICAgICBpc19mdW5jdGlv
bjxfVHA+Pjo6dmFsdWUsCiAgICAgICAgICAgYm9vbCA9IF9fb3JfPGlzX3JlZmVyZW5jZTxfVHA+
LCBpc19zY2FsYXI8X1RwPj46OnZhbHVlPgogICAgc3RydWN0IF9faXNfbnRfZGVzdHJ1Y3RpYmxl
X3NhZmU7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lzX250X2Rlc3Ry
dWN0aWJsZV9zYWZlPF9UcCwgZmFsc2UsIGZhbHNlPgogICAgOiBwdWJsaWMgX19pc19udF9kZXN0
cnVjdGlibGVfaW1wbDx0eXBlbmFtZQogICAgICAgICAgICAgICByZW1vdmVfYWxsX2V4dGVudHM8
X1RwPjo6dHlwZT46OnR5cGUKICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAg
c3RydWN0IF9faXNfbnRfZGVzdHJ1Y3RpYmxlX3NhZmU8X1RwLCB0cnVlLCBmYWxzZT4KICAgIDog
cHVibGljIGZhbHNlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1
Y3QgX19pc19udF9kZXN0cnVjdGlibGVfc2FmZTxfVHAsIGZhbHNlLCB0cnVlPgogICAgOiBwdWJs
aWMgdHJ1ZV90eXBlIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBp
c19ub3Rocm93X2Rlc3RydWN0aWJsZQogICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9v
bCwgKF9faXNfbnRfZGVzdHJ1Y3RpYmxlX3NhZmU8X1RwPjo6dmFsdWUpPgogICAgeyB9OwoKICBz
dHJ1Y3QgX19kb19pc19kZWZhdWx0X2NvbnN0cnVjdGlibGVfaW1wbAogIHsKICAgIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgPSBkZWNsdHlwZShfVHAoKSk+CiAgICAgIHN0YXRpYyB0
cnVlX3R5cGUgX190ZXN0KGludCk7CgogICAgdGVtcGxhdGU8dHlwZW5hbWU+CiAgICAgIHN0YXRp
YyBmYWxzZV90eXBlIF9fdGVzdCguLi4pOwogIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4K
ICAgIHN0cnVjdCBfX2lzX2RlZmF1bHRfY29uc3RydWN0aWJsZV9pbXBsCiAgICA6IHB1YmxpYyBf
X2RvX2lzX2RlZmF1bHRfY29uc3RydWN0aWJsZV9pbXBsCiAgICB7CiAgICAgIHR5cGVkZWYgZGVj
bHR5cGUoX190ZXN0PF9UcD4oMCkpIHR5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+CiAgICBzdHJ1Y3QgX19pc19kZWZhdWx0X2NvbnN0cnVjdGlibGVfYXRvbQogICAgOiBwdWJs
aWMgX19hbmRfPF9fbm90Xzxpc192b2lkPF9UcD4+LAogICAgICAgICAgICAgICAgICAgIF9faXNf
ZGVmYXVsdF9jb25zdHJ1Y3RpYmxlX2ltcGw8X1RwPj46OnR5cGUKICAgIHsgfTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwLCBib29sID0gaXNfYXJyYXk8X1RwPjo6dmFsdWU+CiAgICBzdHJ1Y3Qg
X19pc19kZWZhdWx0X2NvbnN0cnVjdGlibGVfc2FmZTsKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19kZWZhdWx0X2NvbnN0cnVjdGlibGVfc2FmZTxfVHAsIHRy
dWU+CiAgICA6IHB1YmxpYyBfX2FuZF88X19pc19hcnJheV9rbm93bl9ib3VuZHM8X1RwPiwKICAg
ICAgX19pc19kZWZhdWx0X2NvbnN0cnVjdGlibGVfYXRvbTx0eXBlbmFtZQogICAgICAgICAgICAg
ICAgICAgICAgcmVtb3ZlX2FsbF9leHRlbnRzPF9UcD46OnR5cGU+Pjo6dHlwZQogICAgeyB9OwoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19kZWZhdWx0X2NvbnN0cnVj
dGlibGVfc2FmZTxfVHAsIGZhbHNlPgogICAgOiBwdWJsaWMgX19pc19kZWZhdWx0X2NvbnN0cnVj
dGlibGVfYXRvbTxfVHA+Ojp0eXBlCiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
CiAgICBzdHJ1Y3QgaXNfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlCiAgICA6IHB1YmxpYyBpbnRlZ3Jh
bF9jb25zdGFudDxib29sLCAoX19pc19kZWZhdWx0X2NvbnN0cnVjdGlibGVfc2FmZTwKICAgICAg
ICAgIF9UcD46OnZhbHVlKT4KICAgIHsgfTsKIyA3NjUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS90eXBlX3RyYWl0cyIgMwogIHN0cnVjdCBfX2RvX2lz
X3N0YXRpY19jYXN0YWJsZV9pbXBsCiAgewogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zyb20sIHR5
cGVuYW1lIF9UbywgdHlwZW5hbWUKICAgICAgICAgICAgID0gZGVjbHR5cGUoc3RhdGljX2Nhc3Q8
X1RvPihkZWNsdmFsPF9Gcm9tPigpKSk+CiAgICAgIHN0YXRpYyB0cnVlX3R5cGUgX190ZXN0KGlu
dCk7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lPgogICAgICBzdGF0aWMgZmFsc2Vf
dHlwZSBfX3Rlc3QoLi4uKTsKICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnJvbSwgdHlwZW5h
bWUgX1RvPgogICAgc3RydWN0IF9faXNfc3RhdGljX2Nhc3RhYmxlX2ltcGwKICAgIDogcHVibGlj
IF9fZG9faXNfc3RhdGljX2Nhc3RhYmxlX2ltcGwKICAgIHsKICAgICAgdHlwZWRlZiBkZWNsdHlw
ZShfX3Rlc3Q8X0Zyb20sIF9Ubz4oMCkpIHR5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRnJvbSwgdHlwZW5hbWUgX1RvPgogICAgc3RydWN0IF9faXNfc3RhdGljX2Nhc3RhYmxlX3Nh
ZmUKICAgIDogcHVibGljIF9faXNfc3RhdGljX2Nhc3RhYmxlX2ltcGw8X0Zyb20sIF9Ubz46OnR5
cGUKICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gcm9tLCB0eXBlbmFtZSBfVG8+CiAg
ICBzdHJ1Y3QgX19pc19zdGF0aWNfY2FzdGFibGUKICAgIDogcHVibGljIGludGVncmFsX2NvbnN0
YW50PGJvb2wsIChfX2lzX3N0YXRpY19jYXN0YWJsZV9zYWZlPAogICAgICAgICAgX0Zyb20sIF9U
bz46OnZhbHVlKT4KICAgIHsgfTsKCgoKCgoKICBzdHJ1Y3QgX19kb19pc19kaXJlY3RfY29uc3Ry
dWN0aWJsZV9pbXBsCiAgewogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQXJn
LCB0eXBlbmFtZQogICAgICA9IGRlY2x0eXBlKDo6bmV3IF9UcChkZWNsdmFsPF9Bcmc+KCkpKT4K
ICAgICAgc3RhdGljIHRydWVfdHlwZSBfX3Rlc3QoaW50KTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSwgdHlwZW5hbWU+CiAgICAgIHN0YXRpYyBmYWxzZV90eXBlIF9fdGVzdCguLi4pOwogIH07Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FyZz4KICAgIHN0cnVjdCBfX2lzX2Rp
cmVjdF9jb25zdHJ1Y3RpYmxlX2ltcGwKICAgIDogcHVibGljIF9fZG9faXNfZGlyZWN0X2NvbnN0
cnVjdGlibGVfaW1wbAogICAgewogICAgICB0eXBlZGVmIGRlY2x0eXBlKF9fdGVzdDxfVHAsIF9B
cmc+KDApKSB0eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBf
QXJnPgogICAgc3RydWN0IF9faXNfZGlyZWN0X2NvbnN0cnVjdGlibGVfbmV3X3NhZmUKICAgIDog
cHVibGljIF9fYW5kXzxpc19kZXN0cnVjdGlibGU8X1RwPiwKICAgICAgICAgICAgICAgICAgICBf
X2lzX2RpcmVjdF9jb25zdHJ1Y3RpYmxlX2ltcGw8X1RwLCBfQXJnPj46OnR5cGUKICAgIHsgfTsK
CiAgdGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lPgogICAgc3RydWN0IGlzX3NhbWU7CgogIHRl
bXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4KICAgIHN0cnVjdCBpc19iYXNlX29mOwoKICB0ZW1w
bGF0ZTx0eXBlbmFtZT4KICAgIHN0cnVjdCByZW1vdmVfcmVmZXJlbmNlOwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfRnJvbSwgdHlwZW5hbWUgX1RvLCBib29sCiAgICAgICAgICAgPSBfX25vdF88X19v
cl88aXNfdm9pZDxfRnJvbT4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfZnVuY3Rpb248
X0Zyb20+Pj46OnZhbHVlPgogICAgc3RydWN0IF9faXNfYmFzZV90b19kZXJpdmVkX3JlZjsKCgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnJvbSwgdHlwZW5hbWUgX1RvPgogICAgc3RydWN0IF9faXNf
YmFzZV90b19kZXJpdmVkX3JlZjxfRnJvbSwgX1RvLCB0cnVlPgogICAgewogICAgICB0eXBlZGVm
IHR5cGVuYW1lIHJlbW92ZV9jdjx0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPF9Gcm9tCiAgICAg
ICAgPjo6dHlwZT46OnR5cGUgX19zcmNfdDsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVf
Y3Y8dHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxfVG8KICAgICAgICA+Ojp0eXBlPjo6dHlwZSBf
X2RzdF90OwogICAgICB0eXBlZGVmIF9fYW5kXzxfX25vdF88aXNfc2FtZTxfX3NyY190LCBfX2Rz
dF90Pj4sCiAgICAgICBpc19iYXNlX29mPF9fc3JjX3QsIF9fZHN0X3Q+PiB0eXBlOwogICAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSB0eXBlOjp2YWx1ZTsKICAgIH07CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9Gcm9tLCB0eXBlbmFtZSBfVG8+CiAgICBzdHJ1Y3QgX19pc19iYXNlX3Rv
X2Rlcml2ZWRfcmVmPF9Gcm9tLCBfVG8sIGZhbHNlPgogICAgOiBwdWJsaWMgZmFsc2VfdHlwZQog
ICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnJvbSwgdHlwZW5hbWUgX1RvLCBib29sCiAg
ICAgICAgICAgPSBfX2FuZF88aXNfbHZhbHVlX3JlZmVyZW5jZTxfRnJvbT4sCiAgICAgICAgICAg
ICAgICAgICAgaXNfcnZhbHVlX3JlZmVyZW5jZTxfVG8+Pjo6dmFsdWU+CiAgICBzdHJ1Y3QgX19p
c19sdmFsdWVfdG9fcnZhbHVlX3JlZjsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnJvbSwgdHlw
ZW5hbWUgX1RvPgogICAgc3RydWN0IF9faXNfbHZhbHVlX3RvX3J2YWx1ZV9yZWY8X0Zyb20sIF9U
bywgdHJ1ZT4KICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8dHlwZW5hbWUg
cmVtb3ZlX3JlZmVyZW5jZTwKICAgICAgICBfRnJvbT46OnR5cGU+Ojp0eXBlIF9fc3JjX3Q7CiAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8
CiAgICAgICAgX1RvPjo6dHlwZT46OnR5cGUgX19kc3RfdDsKICAgICAgdHlwZWRlZiBfX2FuZF88
X19ub3RfPGlzX2Z1bmN0aW9uPF9fc3JjX3Q+PiwKICAgICAgICBfX29yXzxpc19zYW1lPF9fc3Jj
X3QsIF9fZHN0X3Q+LAogICAgICBpc19iYXNlX29mPF9fZHN0X3QsIF9fc3JjX3Q+Pj4gdHlwZTsK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZhbHVlID0gdHlwZTo6dmFsdWU7CiAgICB9OwoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnJvbSwgdHlwZW5hbWUgX1RvPgogICAgc3RydWN0IF9faXNf
bHZhbHVlX3RvX3J2YWx1ZV9yZWY8X0Zyb20sIF9UbywgZmFsc2U+CiAgICA6IHB1YmxpYyBmYWxz
ZV90eXBlCiAgICB7IH07CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUg
X0FyZz4KICAgIHN0cnVjdCBfX2lzX2RpcmVjdF9jb25zdHJ1Y3RpYmxlX3JlZl9jYXN0CiAgICA6
IHB1YmxpYyBfX2FuZF88X19pc19zdGF0aWNfY2FzdGFibGU8X0FyZywgX1RwPiwKICAgICAgICAg
ICAgICAgICAgICBfX25vdF88X19vcl88X19pc19iYXNlX3RvX2Rlcml2ZWRfcmVmPF9BcmcsIF9U
cD4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faXNfbHZhbHVlX3RvX3J2YWx1
ZV9yZWY8X0FyZywgX1RwPgogICAgICAgICAgICAgICAgICAgPj4+Ojp0eXBlCiAgICB7IH07Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FyZz4KICAgIHN0cnVjdCBfX2lzX2Rp
cmVjdF9jb25zdHJ1Y3RpYmxlX25ldwogICAgOiBwdWJsaWMgY29uZGl0aW9uYWw8aXNfcmVmZXJl
bmNlPF9UcD46OnZhbHVlLAogICAgX19pc19kaXJlY3RfY29uc3RydWN0aWJsZV9yZWZfY2FzdDxf
VHAsIF9Bcmc+LAogICAgX19pc19kaXJlY3RfY29uc3RydWN0aWJsZV9uZXdfc2FmZTxfVHAsIF9B
cmc+CiAgICA+Ojp0eXBlCiAgICB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5h
bWUgX0FyZz4KICAgIHN0cnVjdCBfX2lzX2RpcmVjdF9jb25zdHJ1Y3RpYmxlCiAgICA6IHB1Ymxp
YyBpbnRlZ3JhbF9jb25zdGFudDxib29sLCAoX19pc19kaXJlY3RfY29uc3RydWN0aWJsZV9uZXc8
CiAgICAgICAgICBfVHAsIF9Bcmc+Ojp2YWx1ZSk+CiAgICB7IH07CgoKCgoKCiAgc3RydWN0IF9f
ZG9faXNfbmFyeV9jb25zdHJ1Y3RpYmxlX2ltcGwKICB7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHAsIHR5cGVuYW1lLi4uIF9BcmdzLCB0eXBlbmFtZQogICAgICAgICAgICAgPSBkZWNsdHlwZShf
VHAoZGVjbHZhbDxfQXJncz4oKS4uLikpPgogICAgICBzdGF0aWMgdHJ1ZV90eXBlIF9fdGVzdChp
bnQpOwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZS4uLj4KICAgICAgc3RhdGljIGZh
bHNlX3R5cGUgX190ZXN0KC4uLik7CiAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBl
bmFtZS4uLiBfQXJncz4KICAgIHN0cnVjdCBfX2lzX25hcnlfY29uc3RydWN0aWJsZV9pbXBsCiAg
ICA6IHB1YmxpYyBfX2RvX2lzX25hcnlfY29uc3RydWN0aWJsZV9pbXBsCiAgICB7CiAgICAgIHR5
cGVkZWYgZGVjbHR5cGUoX190ZXN0PF9UcCwgX0FyZ3MuLi4+KDApKSB0eXBlOwogICAgfTsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZS4uLiBfQXJncz4KICAgIHN0cnVjdCBfX2lz
X25hcnlfY29uc3RydWN0aWJsZQogICAgOiBwdWJsaWMgX19pc19uYXJ5X2NvbnN0cnVjdGlibGVf
aW1wbDxfVHAsIF9BcmdzLi4uPjo6dHlwZQogICAgewogICAgICBzdGF0aWNfYXNzZXJ0KHNpemVv
Zi4uLihfQXJncykgPiAxLAogICAgICAgICAgICAgICAgICAgICJPbmx5IHVzZWZ1bCBmb3IgPiAx
IGFyZ3VtZW50cyIpOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZS4u
LiBfQXJncz4KICAgIHN0cnVjdCBfX2lzX2NvbnN0cnVjdGlibGVfaW1wbAogICAgOiBwdWJsaWMg
X19pc19uYXJ5X2NvbnN0cnVjdGlibGU8X1RwLCBfQXJncy4uLj4KICAgIHsgfTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQXJnPgogICAgc3RydWN0IF9faXNfY29uc3RydWN0
aWJsZV9pbXBsPF9UcCwgX0FyZz4KICAgIDogcHVibGljIF9faXNfZGlyZWN0X2NvbnN0cnVjdGli
bGU8X1RwLCBfQXJnPgogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1
Y3QgX19pc19jb25zdHJ1Y3RpYmxlX2ltcGw8X1RwPgogICAgOiBwdWJsaWMgaXNfZGVmYXVsdF9j
b25zdHJ1Y3RpYmxlPF9UcD4KICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlw
ZW5hbWUuLi4gX0FyZ3M+CiAgICBzdHJ1Y3QgaXNfY29uc3RydWN0aWJsZQogICAgOiBwdWJsaWMg
aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgKF9faXNfY29uc3RydWN0aWJsZV9pbXBsPF9UcCwKICAg
ICAgICAgIF9BcmdzLi4uPjo6dmFsdWUpPgogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHAsIGJvb2wgPSBpc192b2lkPF9UcD46OnZhbHVlPgogICAgc3RydWN0IF9faXNfY29weV9jb25z
dHJ1Y3RpYmxlX2ltcGw7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lz
X2NvcHlfY29uc3RydWN0aWJsZV9pbXBsPF9UcCwgdHJ1ZT4KICAgIDogcHVibGljIGZhbHNlX3R5
cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19jb3B5X2Nv
bnN0cnVjdGlibGVfaW1wbDxfVHAsIGZhbHNlPgogICAgOiBwdWJsaWMgaXNfY29uc3RydWN0aWJs
ZTxfVHAsIGNvbnN0IF9UcCY+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBzdHJ1Y3QgaXNfY29weV9jb25zdHJ1Y3RpYmxlCiAgICA6IHB1YmxpYyBfX2lzX2NvcHlfY29u
c3RydWN0aWJsZV9pbXBsPF9UcD4KICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBi
b29sID0gaXNfdm9pZDxfVHA+Ojp2YWx1ZT4KICAgIHN0cnVjdCBfX2lzX21vdmVfY29uc3RydWN0
aWJsZV9pbXBsOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19tb3Zl
X2NvbnN0cnVjdGlibGVfaW1wbDxfVHAsIHRydWU+CiAgICA6IHB1YmxpYyBmYWxzZV90eXBlIHsg
fTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfbW92ZV9jb25zdHJ1
Y3RpYmxlX2ltcGw8X1RwLCBmYWxzZT4KICAgIDogcHVibGljIGlzX2NvbnN0cnVjdGlibGU8X1Rw
LCBfVHAmJj4KICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBp
c19tb3ZlX2NvbnN0cnVjdGlibGUKICAgIDogcHVibGljIF9faXNfbW92ZV9jb25zdHJ1Y3RpYmxl
X2ltcGw8X1RwPgogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3Qg
X19pc19udF9kZWZhdWx0X2NvbnN0cnVjdGlibGVfYXRvbQogICAgOiBwdWJsaWMgaW50ZWdyYWxf
Y29uc3RhbnQ8Ym9vbCwgbm9leGNlcHQoX1RwKCkpPgogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHAsIGJvb2wgPSBpc19hcnJheTxfVHA+Ojp2YWx1ZT4KICAgIHN0cnVjdCBfX2lzX250
X2RlZmF1bHRfY29uc3RydWN0aWJsZV9pbXBsOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBzdHJ1Y3QgX19pc19udF9kZWZhdWx0X2NvbnN0cnVjdGlibGVfaW1wbDxfVHAsIHRydWU+CiAg
ICA6IHB1YmxpYyBfX2FuZF88X19pc19hcnJheV9rbm93bl9ib3VuZHM8X1RwPiwKICAgICAgX19p
c19udF9kZWZhdWx0X2NvbnN0cnVjdGlibGVfYXRvbTx0eXBlbmFtZQogICAgICAgICAgICAgICAg
ICAgICAgcmVtb3ZlX2FsbF9leHRlbnRzPF9UcD46OnR5cGU+Pjo6dHlwZQogICAgeyB9OwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19udF9kZWZhdWx0X2NvbnN0cnVj
dGlibGVfaW1wbDxfVHAsIGZhbHNlPgogICAgOiBwdWJsaWMgX19pc19udF9kZWZhdWx0X2NvbnN0
cnVjdGlibGVfYXRvbTxfVHA+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBzdHJ1Y3QgaXNfbm90aHJvd19kZWZhdWx0X2NvbnN0cnVjdGlibGUKICAgIDogcHVibGljIF9f
YW5kXzxpc19kZWZhdWx0X2NvbnN0cnVjdGlibGU8X1RwPiwKICAgICAgICAgICAgICAgICAgICBf
X2lzX250X2RlZmF1bHRfY29uc3RydWN0aWJsZV9pbXBsPF9UcD4+Ojp0eXBlCiAgICB7IH07Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUuLi4gX0FyZ3M+CiAgICBzdHJ1Y3QgX19p
c19udF9jb25zdHJ1Y3RpYmxlX2ltcGwKICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGJv
b2wsIG5vZXhjZXB0KF9UcChkZWNsdmFsPF9BcmdzPigpLi4uKSk+CiAgICB7IH07CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FyZz4KICAgIHN0cnVjdCBfX2lzX250X2NvbnN0
cnVjdGlibGVfaW1wbDxfVHAsIF9Bcmc+CiAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxi
b29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9leGNlcHQoc3RhdGljX2Nhc3Q8
X1RwPihkZWNsdmFsPF9Bcmc+KCkpKT4KICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PgogICAgc3RydWN0IF9faXNfbnRfY29uc3RydWN0aWJsZV9pbXBsPF9UcD4KICAgIDogcHVibGlj
IGlzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPF9UcD4KICAgIHsgfTsKCgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUuLi4gX0FyZ3M+CiAgICBzdHJ1Y3QgaXNfbm90aHJv
d19jb25zdHJ1Y3RpYmxlCiAgICA6IHB1YmxpYyBfX2FuZF88aXNfY29uc3RydWN0aWJsZTxfVHAs
IF9BcmdzLi4uPiwKICAgICAgX19pc19udF9jb25zdHJ1Y3RpYmxlX2ltcGw8X1RwLCBfQXJncy4u
Lj4+Ojp0eXBlCiAgICB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgYm9vbCA9IGlzX3Zv
aWQ8X1RwPjo6dmFsdWU+CiAgICBzdHJ1Y3QgX19pc19ub3Rocm93X2NvcHlfY29uc3RydWN0aWJs
ZV9pbXBsOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19ub3Rocm93
X2NvcHlfY29uc3RydWN0aWJsZV9pbXBsPF9UcCwgdHJ1ZT4KICAgIDogcHVibGljIGZhbHNlX3R5
cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19ub3Rocm93
X2NvcHlfY29uc3RydWN0aWJsZV9pbXBsPF9UcCwgZmFsc2U+CiAgICA6IHB1YmxpYyBpc19ub3Ro
cm93X2NvbnN0cnVjdGlibGU8X1RwLCBjb25zdCBfVHAmPgogICAgeyB9OwoKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGlzX25vdGhyb3dfY29weV9jb25zdHJ1Y3RpYmxlCiAg
ICA6IHB1YmxpYyBfX2lzX25vdGhyb3dfY29weV9jb25zdHJ1Y3RpYmxlX2ltcGw8X1RwPgogICAg
eyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGJvb2wgPSBpc192b2lkPF9UcD46OnZhbHVl
PgogICAgc3RydWN0IF9faXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGVfaW1wbDsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfbm90aHJvd19tb3ZlX2NvbnN0cnVj
dGlibGVfaW1wbDxfVHAsIHRydWU+CiAgICA6IHB1YmxpYyBmYWxzZV90eXBlIHsgfTsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfbm90aHJvd19tb3ZlX2NvbnN0cnVj
dGlibGVfaW1wbDxfVHAsIGZhbHNlPgogICAgOiBwdWJsaWMgaXNfbm90aHJvd19jb25zdHJ1Y3Rp
YmxlPF9UcCwgX1RwJiY+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBz
dHJ1Y3QgaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUKICAgIDogcHVibGljIF9faXNfbm90
aHJvd19tb3ZlX2NvbnN0cnVjdGlibGVfaW1wbDxfVHA+CiAgICB7IH07CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1VwPgogICAgY2xhc3MgX19pc19hc3NpZ25hYmxlX2hlbHBl
cgogICAgOiBwdWJsaWMgX19zZmluYWVfdHlwZXMKICAgIHsKICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwMSwgdHlwZW5hbWUgX1VwMT4KICAgICAgICBzdGF0aWMgZGVjbHR5cGUoZGVjbHZhbDxf
VHAxPigpID0gZGVjbHZhbDxfVXAxPigpLCBfX29uZSgpKQogX190ZXN0KGludCk7CgogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+CiAgICAgICAgc3RhdGljIF9fdHdvIF9fdGVzdCgu
Li4pOwoKICAgIHB1YmxpYzoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZhbHVlID0gc2l6
ZW9mKF9fdGVzdDxfVHAsIF9VcD4oMCkpID09IDE7CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwLCB0eXBlbmFtZSBfVXA+CiAgICBzdHJ1Y3QgaXNfYXNzaWduYWJsZQogICAgOiBwdWJs
aWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9faXNfYXNzaWduYWJsZV9oZWxwZXI8X1RwLCBfVXA+Ojp2YWx1ZT4KICAgIHsgfTsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwLCBib29sID0gaXNfdm9pZDxfVHA+Ojp2YWx1ZT4KICAgIHN0cnVj
dCBfX2lzX2NvcHlfYXNzaWduYWJsZV9pbXBsOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBzdHJ1Y3QgX19pc19jb3B5X2Fzc2lnbmFibGVfaW1wbDxfVHAsIHRydWU+CiAgICA6IHB1Ymxp
YyBmYWxzZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9f
aXNfY29weV9hc3NpZ25hYmxlX2ltcGw8X1RwLCBmYWxzZT4KICAgIDogcHVibGljIGlzX2Fzc2ln
bmFibGU8X1RwJiwgY29uc3QgX1RwJj4KICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4KICAgIHN0cnVjdCBpc19jb3B5X2Fzc2lnbmFibGUKICAgIDogcHVibGljIF9faXNfY29weV9h
c3NpZ25hYmxlX2ltcGw8X1RwPgogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGJv
b2wgPSBpc192b2lkPF9UcD46OnZhbHVlPgogICAgc3RydWN0IF9faXNfbW92ZV9hc3NpZ25hYmxl
X2ltcGw7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lzX21vdmVfYXNz
aWduYWJsZV9pbXBsPF9UcCwgdHJ1ZT4KICAgIDogcHVibGljIGZhbHNlX3R5cGUgeyB9OwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19tb3ZlX2Fzc2lnbmFibGVfaW1w
bDxfVHAsIGZhbHNlPgogICAgOiBwdWJsaWMgaXNfYXNzaWduYWJsZTxfVHAmLCBfVHAmJj4KICAg
IHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBpc19tb3ZlX2Fzc2ln
bmFibGUKICAgIDogcHVibGljIF9faXNfbW92ZV9hc3NpZ25hYmxlX2ltcGw8X1RwPgogICAgeyB9
OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9VcD4KICAgIHN0cnVjdCBfX2lz
X250X2Fzc2lnbmFibGVfaW1wbAogICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwg
bm9leGNlcHQoZGVjbHZhbDxfVHA+KCkgPSBkZWNsdmFsPF9VcD4oKSk+CiAgICB7IH07CgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9VcD4KICAgIHN0cnVjdCBpc19ub3Rocm93
X2Fzc2lnbmFibGUKICAgIDogcHVibGljIF9fYW5kXzxpc19hc3NpZ25hYmxlPF9UcCwgX1VwPiwK
ICAgICAgX19pc19udF9hc3NpZ25hYmxlX2ltcGw8X1RwLCBfVXA+Pjo6dHlwZQogICAgeyB9OwoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGJvb2wgPSBpc192b2lkPF9UcD46OnZhbHVlPgogICAg
c3RydWN0IF9faXNfbnRfY29weV9hc3NpZ25hYmxlX2ltcGw7CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcD4KICAgIHN0cnVjdCBfX2lzX250X2NvcHlfYXNzaWduYWJsZV9pbXBsPF9UcCwgdHJ1ZT4K
ICAgIDogcHVibGljIGZhbHNlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBzdHJ1Y3QgX19pc19udF9jb3B5X2Fzc2lnbmFibGVfaW1wbDxfVHAsIGZhbHNlPgogICAgOiBw
dWJsaWMgaXNfbm90aHJvd19hc3NpZ25hYmxlPF9UcCYsIGNvbnN0IF9UcCY+CiAgICB7IH07CgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgaXNfbm90aHJvd19jb3B5X2Fzc2ln
bmFibGUKICAgIDogcHVibGljIF9faXNfbnRfY29weV9hc3NpZ25hYmxlX2ltcGw8X1RwPgogICAg
eyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGJvb2wgPSBpc192b2lkPF9UcD46OnZhbHVl
PgogICAgc3RydWN0IF9faXNfbnRfbW92ZV9hc3NpZ25hYmxlX2ltcGw7CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lzX250X21vdmVfYXNzaWduYWJsZV9pbXBsPF9UcCwg
dHJ1ZT4KICAgIDogcHVibGljIGZhbHNlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+CiAgICBzdHJ1Y3QgX19pc19udF9tb3ZlX2Fzc2lnbmFibGVfaW1wbDxfVHAsIGZhbHNlPgog
ICAgOiBwdWJsaWMgaXNfbm90aHJvd19hc3NpZ25hYmxlPF9UcCYsIF9UcCYmPgogICAgeyB9OwoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGlzX25vdGhyb3dfbW92ZV9hc3Np
Z25hYmxlCiAgICA6IHB1YmxpYyBfX2lzX250X21vdmVfYXNzaWduYWJsZV9pbXBsPF9UcD4KICAg
IHsgfTsKIyAxMjAzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC44LjEvdHlwZV90cmFpdHMiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3Qg
aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZQogICAgOiBwdWJsaWMgX19hbmRfPGlzX2Rlc3RydWN0
aWJsZTxfVHA+LCBpbnRlZ3JhbF9jb25zdGFudDxib29sLAogICAgICAgICBfX2hhc190cml2aWFs
X2Rlc3RydWN0b3IoX1RwKT4+Ojp0eXBlCiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+CiAgICBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcgogICAgOiBwdWJs
aWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgX19oYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcihfVHAp
PgogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGhhc190cml2
aWFsX2NvcHlfY29uc3RydWN0b3IKICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGJvb2ws
IF9faGFzX3RyaXZpYWxfY29weShfVHApPgogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgc3RydWN0IGhhc190cml2aWFsX2NvcHlfYXNzaWduCiAgICA6IHB1YmxpYyBpbnRl
Z3JhbF9jb25zdGFudDxib29sLCBfX2hhc190cml2aWFsX2Fzc2lnbihfVHApPgogICAgeyB9OwoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGhhc192aXJ0dWFsX2Rlc3RydWN0
b3IKICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGJvb2wsIF9faGFzX3ZpcnR1YWxfZGVz
dHJ1Y3RvcihfVHApPgogICAgeyB9OwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAg
c3RydWN0IGFsaWdubWVudF9vZgogICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8c3RkOjpz
aXplX3QsIF9fYWxpZ25vZl9fKF9UcCk+IHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lPgogICAg
c3RydWN0IHJhbmsKICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PHN0ZDo6c2l6ZV90LCAw
PiB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgc3RkOjpzaXplX3QgX1NpemU+CiAgICBz
dHJ1Y3QgcmFuazxfVHBbX1NpemVdPgogICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8c3Rk
OjpzaXplX3QsIDEgKyByYW5rPF9UcD46OnZhbHVlPiB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcD4KICAgIHN0cnVjdCByYW5rPF9UcFtdPgogICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3Rh
bnQ8c3RkOjpzaXplX3QsIDEgKyByYW5rPF9UcD46OnZhbHVlPiB7IH07CgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSwgdW5zaWduZWQgX1VpbnQ+CiAgICBzdHJ1Y3QgZXh0ZW50CiAgICA6IHB1YmxpYyBp
bnRlZ3JhbF9jb25zdGFudDxzdGQ6OnNpemVfdCwgMD4geyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHAsIHVuc2lnbmVkIF9VaW50LCBzdGQ6OnNpemVfdCBfU2l6ZT4KICAgIHN0cnVjdCBleHRl
bnQ8X1RwW19TaXplXSwgX1VpbnQ+CiAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxzdGQ6
OnNpemVfdCwKICAgICAgICAgIF9VaW50ID09IDAgPyBfU2l6ZSA6IGV4dGVudDxfVHAsCiAgICAg
ICAgICBfVWludCAtIDE+Ojp2YWx1ZT4KICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
LCB1bnNpZ25lZCBfVWludD4KICAgIHN0cnVjdCBleHRlbnQ8X1RwW10sIF9VaW50PgogICAgOiBw
dWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8c3RkOjpzaXplX3QsCiAgICAgICAgICBfVWludCA9PSAw
ID8gMCA6IGV4dGVudDxfVHAsCiAgICAgICAgICAgICBfVWludCAtIDE+Ojp2YWx1ZT4KICAgIHsg
fTsKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4KICAgIHN0cnVjdCBpc19zYW1l
CiAgICA6IHB1YmxpYyBmYWxzZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
ICAgc3RydWN0IGlzX3NhbWU8X1RwLCBfVHA+CiAgICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Jhc2UsIHR5cGVuYW1lIF9EZXJpdmVkPgogICAgc3RydWN0
IGlzX2Jhc2Vfb2YKICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGJvb2wsIF9faXNfYmFz
ZV9vZihfQmFzZSwgX0Rlcml2ZWQpPgogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnJv
bSwgdHlwZW5hbWUgX1RvLAogICAgICAgICAgIGJvb2wgPSBfX29yXzxpc192b2lkPF9Gcm9tPiwg
aXNfZnVuY3Rpb248X1RvPiwKICAgICAgICAgICAgICAgICAgICAgICAgaXNfYXJyYXk8X1RvPj46
OnZhbHVlPgogICAgc3RydWN0IF9faXNfY29udmVydGlibGVfaGVscGVyCiAgICB7IHN0YXRpYyBj
b25zdGV4cHIgYm9vbCB2YWx1ZSA9IGlzX3ZvaWQ8X1RvPjo6dmFsdWU7IH07CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9Gcm9tLCB0eXBlbmFtZSBfVG8+CiAgICBjbGFzcyBfX2lzX2NvbnZlcnRpYmxl
X2hlbHBlcjxfRnJvbSwgX1RvLCBmYWxzZT4KICAgIDogcHVibGljIF9fc2ZpbmFlX3R5cGVzCiAg
ICB7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UbzE+CiAgICAgICAgc3RhdGljIHZvaWQgX190
ZXN0X2F1eChfVG8xKTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gcm9tMSwgdHlwZW5hbWUg
X1RvMT4KICAgICAgICBzdGF0aWMgZGVjbHR5cGUoX190ZXN0X2F1eDxfVG8xPihzdGQ6OmRlY2x2
YWw8X0Zyb20xPigpKSwgX19vbmUoKSkKIF9fdGVzdChpbnQpOwoKICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUsIHR5cGVuYW1lPgogICAgICAgIHN0YXRpYyBfX3R3byBfX3Rlc3QoLi4uKTsKCiAgICBw
dWJsaWM6CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1ZSA9IHNpemVvZihfX3Rlc3Q8
X0Zyb20sIF9Ubz4oMCkpID09IDE7CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zyb20s
IHR5cGVuYW1lIF9Ubz4KICAgIHN0cnVjdCBpc19jb252ZXJ0aWJsZQogICAgOiBwdWJsaWMgaW50
ZWdyYWxfY29uc3RhbnQ8Ym9vbCwKICAgICAgICAgIF9faXNfY29udmVydGlibGVfaGVscGVyPF9G
cm9tLCBfVG8+Ojp2YWx1ZT4KICAgIHsgfTsKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4K
ICAgIHN0cnVjdCByZW1vdmVfY29uc3QKICAgIHsgdHlwZWRlZiBfVHAgdHlwZTsgfTsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IHJlbW92ZV9jb25zdDxfVHAgY29uc3Q+CiAg
ICB7IHR5cGVkZWYgX1RwIHR5cGU7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBz
dHJ1Y3QgcmVtb3ZlX3ZvbGF0aWxlCiAgICB7IHR5cGVkZWYgX1RwIHR5cGU7IH07CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCByZW1vdmVfdm9sYXRpbGU8X1RwIHZvbGF0aWxl
PgogICAgeyB0eXBlZGVmIF9UcCB0eXBlOyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
ICAgc3RydWN0IHJlbW92ZV9jdgogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lCiAgICAgIHJl
bW92ZV9jb25zdDx0eXBlbmFtZSByZW1vdmVfdm9sYXRpbGU8X1RwPjo6dHlwZT46OnR5cGUgdHlw
ZTsKICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgYWRkX2NvbnN0
CiAgICB7IHR5cGVkZWYgX1RwIGNvbnN0IHR5cGU7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+CiAgICBzdHJ1Y3QgYWRkX3ZvbGF0aWxlCiAgICB7IHR5cGVkZWYgX1RwIHZvbGF0aWxlIHR5
cGU7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgYWRkX2N2CiAgICB7
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUKICAgICAgYWRkX2NvbnN0PHR5cGVuYW1lIGFkZF92b2xh
dGlsZTxfVHA+Ojp0eXBlPjo6dHlwZSB0eXBlOwogICAgfTsKCgoKCgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4KICAgIHN0cnVjdCByZW1vdmVfcmVmZXJlbmNlCiAgICB7IHR5cGVkZWYgX1RwIHR5
cGU7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCByZW1vdmVfcmVmZXJl
bmNlPF9UcCY+CiAgICB7IHR5cGVkZWYgX1RwIHR5cGU7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcD4KICAgIHN0cnVjdCByZW1vdmVfcmVmZXJlbmNlPF9UcCYmPgogICAgeyB0eXBlZGVmIF9U
cCB0eXBlOyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsCiAgICBib29sID0gX19hbmRfPF9f
bm90Xzxpc19yZWZlcmVuY2U8X1RwPj4sCiAgICAgICAgICAgICAgICAgICAgICAgICBfX25vdF88
aXNfdm9pZDxfVHA+Pj46OnZhbHVlLAogICAgYm9vbCA9IGlzX3J2YWx1ZV9yZWZlcmVuY2U8X1Rw
Pjo6dmFsdWU+CiAgICBzdHJ1Y3QgX19hZGRfbHZhbHVlX3JlZmVyZW5jZV9oZWxwZXIKICAgIHsg
dHlwZWRlZiBfVHAgdHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0
IF9fYWRkX2x2YWx1ZV9yZWZlcmVuY2VfaGVscGVyPF9UcCwgdHJ1ZSwgZmFsc2U+CiAgICB7IHR5
cGVkZWYgX1RwJiB0eXBlOyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3Qg
X19hZGRfbHZhbHVlX3JlZmVyZW5jZV9oZWxwZXI8X1RwLCBmYWxzZSwgdHJ1ZT4KICAgIHsgdHlw
ZWRlZiB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPF9UcD46OnR5cGUmIHR5cGU7IH07CgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgYWRkX2x2YWx1ZV9yZWZlcmVuY2UKICAg
IDogcHVibGljIF9fYWRkX2x2YWx1ZV9yZWZlcmVuY2VfaGVscGVyPF9UcD4KICAgIHsgfTsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwLAogICAgICAgICAgIGJvb2wgPSBfX2FuZF88X19ub3RfPGlz
X3JlZmVyZW5jZTxfVHA+PiwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fbm90Xzxpc192b2lk
PF9UcD4+Pjo6dmFsdWU+CiAgICBzdHJ1Y3QgX19hZGRfcnZhbHVlX3JlZmVyZW5jZV9oZWxwZXIK
ICAgIHsgdHlwZWRlZiBfVHAgdHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAg
c3RydWN0IF9fYWRkX3J2YWx1ZV9yZWZlcmVuY2VfaGVscGVyPF9UcCwgdHJ1ZT4KICAgIHsgdHlw
ZWRlZiBfVHAmJiB0eXBlOyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0
IGFkZF9ydmFsdWVfcmVmZXJlbmNlCiAgICA6IHB1YmxpYyBfX2FkZF9ydmFsdWVfcmVmZXJlbmNl
X2hlbHBlcjxfVHA+CiAgICB7IH07CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5xdWFsaWZp
ZWQsIGJvb2wgX0lzQ29uc3QsIGJvb2wgX0lzVm9sPgogICAgc3RydWN0IF9fY3Zfc2VsZWN0b3I7
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VbnF1YWxpZmllZD4KICAgIHN0cnVjdCBfX2N2X3NlbGVj
dG9yPF9VbnF1YWxpZmllZCwgZmFsc2UsIGZhbHNlPgogICAgeyB0eXBlZGVmIF9VbnF1YWxpZmll
ZCBfX3R5cGU7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VbnF1YWxpZmllZD4KICAgIHN0cnVj
dCBfX2N2X3NlbGVjdG9yPF9VbnF1YWxpZmllZCwgZmFsc2UsIHRydWU+CiAgICB7IHR5cGVkZWYg
dm9sYXRpbGUgX1VucXVhbGlmaWVkIF9fdHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Vu
cXVhbGlmaWVkPgogICAgc3RydWN0IF9fY3Zfc2VsZWN0b3I8X1VucXVhbGlmaWVkLCB0cnVlLCBm
YWxzZT4KICAgIHsgdHlwZWRlZiBjb25zdCBfVW5xdWFsaWZpZWQgX190eXBlOyB9OwoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVW5xdWFsaWZpZWQ+CiAgICBzdHJ1Y3QgX19jdl9zZWxlY3RvcjxfVW5x
dWFsaWZpZWQsIHRydWUsIHRydWU+CiAgICB7IHR5cGVkZWYgY29uc3Qgdm9sYXRpbGUgX1VucXVh
bGlmaWVkIF9fdHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1F1YWxpZmllZCwgdHlwZW5h
bWUgX1VucXVhbGlmaWVkLAogICAgYm9vbCBfSXNDb25zdCA9IGlzX2NvbnN0PF9RdWFsaWZpZWQ+
Ojp2YWx1ZSwKICAgIGJvb2wgX0lzVm9sID0gaXNfdm9sYXRpbGU8X1F1YWxpZmllZD46OnZhbHVl
PgogICAgY2xhc3MgX19tYXRjaF9jdl9xdWFsaWZpZXJzCiAgICB7CiAgICAgIHR5cGVkZWYgX19j
dl9zZWxlY3RvcjxfVW5xdWFsaWZpZWQsIF9Jc0NvbnN0LCBfSXNWb2w+IF9fbWF0Y2g7CgogICAg
cHVibGljOgogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fbWF0Y2g6Ol9fdHlwZSBfX3R5cGU7CiAg
ICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9fbWFrZV91bnNpZ25l
ZAogICAgeyB0eXBlZGVmIF9UcCBfX3R5cGU7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBf
X21ha2VfdW5zaWduZWQ8Y2hhcj4KICAgIHsgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdHlwZTsg
fTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fbWFrZV91bnNpZ25lZDxzaWduZWQgY2hhcj4K
ICAgIHsgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdHlwZTsgfTsKCiAgdGVtcGxhdGU8PgogICAg
c3RydWN0IF9fbWFrZV91bnNpZ25lZDxzaG9ydD4KICAgIHsgdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCBfX3R5cGU7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX21ha2VfdW5zaWduZWQ8aW50
PgogICAgeyB0eXBlZGVmIHVuc2lnbmVkIGludCBfX3R5cGU7IH07CgogIHRlbXBsYXRlPD4KICAg
IHN0cnVjdCBfX21ha2VfdW5zaWduZWQ8bG9uZz4KICAgIHsgdHlwZWRlZiB1bnNpZ25lZCBsb25n
IF9fdHlwZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fbWFrZV91bnNpZ25lZDxsb25n
IGxvbmc+CiAgICB7IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdHlwZTsgfTsKIyAxNDky
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvdHlwZV90
cmFpdHMiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsCiAgICBib29sIF9Jc0ludCA9IGlzX2lu
dGVncmFsPF9UcD46OnZhbHVlLAogICAgYm9vbCBfSXNFbnVtID0gaXNfZW51bTxfVHA+Ojp2YWx1
ZT4KICAgIGNsYXNzIF9fbWFrZV91bnNpZ25lZF9zZWxlY3RvcjsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogICAgY2xhc3MgX19tYWtlX3Vuc2lnbmVkX3NlbGVjdG9yPF9UcCwgdHJ1ZSwgZmFs
c2U+CiAgICB7CiAgICAgIHR5cGVkZWYgX19tYWtlX3Vuc2lnbmVkPHR5cGVuYW1lIHJlbW92ZV9j
djxfVHA+Ojp0eXBlPiBfX3Vuc2lnbmVkdDsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX3Vuc2ln
bmVkdDo6X190eXBlIF9fdW5zaWduZWRfdHlwZTsKICAgICAgdHlwZWRlZiBfX21hdGNoX2N2X3F1
YWxpZmllcnM8X1RwLCBfX3Vuc2lnbmVkX3R5cGU+IF9fY3ZfdW5zaWduZWQ7CgogICAgcHVibGlj
OgogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fY3ZfdW5zaWduZWQ6Ol9fdHlwZSBfX3R5cGU7CiAg
ICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjbGFzcyBfX21ha2VfdW5zaWduZWRf
c2VsZWN0b3I8X1RwLCBmYWxzZSwgdHJ1ZT4KICAgIHsKCiAgICAgIHR5cGVkZWYgdW5zaWduZWQg
Y2hhciBfX3NtYWxsZXN0OwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBfX2IwID0gc2l6ZW9mKF9U
cCkgPD0gc2l6ZW9mKF9fc21hbGxlc3QpOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBfX2IxID0g
c2l6ZW9mKF9UcCkgPD0gc2l6ZW9mKHVuc2lnbmVkIHNob3J0KTsKICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgX19iMiA9IHNpemVvZihfVHApIDw9IHNpemVvZih1bnNpZ25lZCBpbnQpOwogICAgICB0
eXBlZGVmIGNvbmRpdGlvbmFsPF9fYjIsIHVuc2lnbmVkIGludCwgdW5zaWduZWQgbG9uZz4gX19j
b25kMjsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2NvbmQyOjp0eXBlIF9fY29uZDJfdHlwZTsK
ICAgICAgdHlwZWRlZiBjb25kaXRpb25hbDxfX2IxLCB1bnNpZ25lZCBzaG9ydCwgX19jb25kMl90
eXBlPiBfX2NvbmQxOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fY29uZDE6OnR5cGUgX19jb25k
MV90eXBlOwoKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjb25kaXRpb25hbDxf
X2IwLCBfX3NtYWxsZXN0LCBfX2NvbmQxX3R5cGU+Ojp0eXBlIF9fdHlwZTsKICAgIH07CgoKCgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgbWFrZV91bnNpZ25lZAogICAgeyB0
eXBlZGVmIHR5cGVuYW1lIF9fbWFrZV91bnNpZ25lZF9zZWxlY3RvcjxfVHA+OjpfX3R5cGUgdHlw
ZTsgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBtYWtlX3Vuc2lnbmVkPGJvb2w+OwoKCgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX21ha2Vfc2lnbmVkCiAgICB7IHR5
cGVkZWYgX1RwIF9fdHlwZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fbWFrZV9zaWdu
ZWQ8Y2hhcj4KICAgIHsgdHlwZWRlZiBzaWduZWQgY2hhciBfX3R5cGU7IH07CgogIHRlbXBsYXRl
PD4KICAgIHN0cnVjdCBfX21ha2Vfc2lnbmVkPHVuc2lnbmVkIGNoYXI+CiAgICB7IHR5cGVkZWYg
c2lnbmVkIGNoYXIgX190eXBlOyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19tYWtlX3Np
Z25lZDx1bnNpZ25lZCBzaG9ydD4KICAgIHsgdHlwZWRlZiBzaWduZWQgc2hvcnQgX190eXBlOyB9
OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19tYWtlX3NpZ25lZDx1bnNpZ25lZCBpbnQ+CiAg
ICB7IHR5cGVkZWYgc2lnbmVkIGludCBfX3R5cGU7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVj
dCBfX21ha2Vfc2lnbmVkPHVuc2lnbmVkIGxvbmc+CiAgICB7IHR5cGVkZWYgc2lnbmVkIGxvbmcg
X190eXBlOyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19tYWtlX3NpZ25lZDx1bnNpZ25l
ZCBsb25nIGxvbmc+CiAgICB7IHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBfX3R5cGU7IH07CiMg
MTU3NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL3R5
cGVfdHJhaXRzIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLAogICAgYm9vbCBfSXNJbnQgPSBp
c19pbnRlZ3JhbDxfVHA+Ojp2YWx1ZSwKICAgIGJvb2wgX0lzRW51bSA9IGlzX2VudW08X1RwPjo6
dmFsdWU+CiAgICBjbGFzcyBfX21ha2Vfc2lnbmVkX3NlbGVjdG9yOwoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICBjbGFzcyBfX21ha2Vfc2lnbmVkX3NlbGVjdG9yPF9UcCwgdHJ1ZSwgZmFs
c2U+CiAgICB7CiAgICAgIHR5cGVkZWYgX19tYWtlX3NpZ25lZDx0eXBlbmFtZSByZW1vdmVfY3Y8
X1RwPjo6dHlwZT4gX19zaWduZWR0OwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fc2lnbmVkdDo6
X190eXBlIF9fc2lnbmVkX3R5cGU7CiAgICAgIHR5cGVkZWYgX19tYXRjaF9jdl9xdWFsaWZpZXJz
PF9UcCwgX19zaWduZWRfdHlwZT4gX19jdl9zaWduZWQ7CgogICAgcHVibGljOgogICAgICB0eXBl
ZGVmIHR5cGVuYW1lIF9fY3Zfc2lnbmVkOjpfX3R5cGUgX190eXBlOwogICAgfTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgY2xhc3MgX19tYWtlX3NpZ25lZF9zZWxlY3RvcjxfVHAsIGZh
bHNlLCB0cnVlPgogICAgewoKICAgICAgdHlwZWRlZiBzaWduZWQgY2hhciBfX3NtYWxsZXN0Owog
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBfX2IwID0gc2l6ZW9mKF9UcCkgPD0gc2l6ZW9mKF9fc21h
bGxlc3QpOwogICAgICBzdGF0aWMgY29uc3QgYm9vbCBfX2IxID0gc2l6ZW9mKF9UcCkgPD0gc2l6
ZW9mKHNpZ25lZCBzaG9ydCk7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIF9fYjIgPSBzaXplb2Yo
X1RwKSA8PSBzaXplb2Yoc2lnbmVkIGludCk7CiAgICAgIHR5cGVkZWYgY29uZGl0aW9uYWw8X19i
Miwgc2lnbmVkIGludCwgc2lnbmVkIGxvbmc+IF9fY29uZDI7CiAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgX19jb25kMjo6dHlwZSBfX2NvbmQyX3R5cGU7CiAgICAgIHR5cGVkZWYgY29uZGl0aW9uYWw8
X19iMSwgc2lnbmVkIHNob3J0LCBfX2NvbmQyX3R5cGU+IF9fY29uZDE7CiAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgX19jb25kMTo6dHlwZSBfX2NvbmQxX3R5cGU7CgogICAgcHVibGljOgogICAgICB0
eXBlZGVmIHR5cGVuYW1lIGNvbmRpdGlvbmFsPF9fYjAsIF9fc21hbGxlc3QsIF9fY29uZDFfdHlw
ZT46OnR5cGUgX190eXBlOwogICAgfTsKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAg
IHN0cnVjdCBtYWtlX3NpZ25lZAogICAgeyB0eXBlZGVmIHR5cGVuYW1lIF9fbWFrZV9zaWduZWRf
c2VsZWN0b3I8X1RwPjo6X190eXBlIHR5cGU7IH07CgoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3Qg
bWFrZV9zaWduZWQ8Ym9vbD47CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1
Y3QgcmVtb3ZlX2V4dGVudAogICAgeyB0eXBlZGVmIF9UcCB0eXBlOyB9OwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHAsIHN0ZDo6c2l6ZV90IF9TaXplPgogICAgc3RydWN0IHJlbW92ZV9leHRlbnQ8
X1RwW19TaXplXT4KICAgIHsgdHlwZWRlZiBfVHAgdHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogICAgc3RydWN0IHJlbW92ZV9leHRlbnQ8X1RwW10+CiAgICB7IHR5cGVkZWYgX1Rw
IHR5cGU7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgcmVtb3ZlX2Fs
bF9leHRlbnRzCiAgICB7IHR5cGVkZWYgX1RwIHR5cGU7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcCwgc3RkOjpzaXplX3QgX1NpemU+CiAgICBzdHJ1Y3QgcmVtb3ZlX2FsbF9leHRlbnRzPF9U
cFtfU2l6ZV0+CiAgICB7IHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2FsbF9leHRlbnRzPF9UcD46
OnR5cGUgdHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IHJlbW92
ZV9hbGxfZXh0ZW50czxfVHBbXT4KICAgIHsgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfYWxsX2V4
dGVudHM8X1RwPjo6dHlwZSB0eXBlOyB9OwoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5
cGVuYW1lPgogICAgc3RydWN0IF9fcmVtb3ZlX3BvaW50ZXJfaGVscGVyCiAgICB7IHR5cGVkZWYg
X1RwIHR5cGU7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1VwPgogICAg
c3RydWN0IF9fcmVtb3ZlX3BvaW50ZXJfaGVscGVyPF9UcCwgX1VwKj4KICAgIHsgdHlwZWRlZiBf
VXAgdHlwZTsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCByZW1vdmVf
cG9pbnRlcgogICAgOiBwdWJsaWMgX19yZW1vdmVfcG9pbnRlcl9oZWxwZXI8X1RwLCB0eXBlbmFt
ZSByZW1vdmVfY3Y8X1RwPjo6dHlwZT4KICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4KICAgIHN0cnVjdCBhZGRfcG9pbnRlcgogICAgeyB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9y
ZWZlcmVuY2U8X1RwPjo6dHlwZSogdHlwZTsgfTsKCgogIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IF9M
ZW4+CiAgICBzdHJ1Y3QgX19hbGlnbmVkX3N0b3JhZ2VfbXNhCiAgICB7CiAgICAgIHVuaW9uIF9f
dHlwZQogICAgICB7CiB1bnNpZ25lZCBjaGFyIF9fZGF0YVtfTGVuXTsKIHN0cnVjdCBfX2F0dHJp
YnV0ZV9fKChfX2FsaWduZWRfXykpIHsgfSBfX2FsaWduOwogICAgICB9OwogICAgfTsKIyAxNjkx
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvdHlwZV90
cmFpdHMiIDMKICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBfTGVuLCBzdGQ6OnNpemVfdCBfQWxpZ24g
PQogICAgX19hbGlnbm9mX18odHlwZW5hbWUgX19hbGlnbmVkX3N0b3JhZ2VfbXNhPF9MZW4+Ojpf
X3R5cGUpPgogICAgc3RydWN0IGFsaWduZWRfc3RvcmFnZQogICAgewogICAgICB1bmlvbiB0eXBl
CiAgICAgIHsKIHVuc2lnbmVkIGNoYXIgX19kYXRhW19MZW5dOwogc3RydWN0IF9fYXR0cmlidXRl
X18oKF9fYWxpZ25lZF9fKChfQWxpZ24pKSkpIHsgfSBfX2FsaWduOwogICAgICB9OwogICAgfTsK
CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1VwLAogICAgYm9vbCBfSXNBcnJheSA9IGlzX2FycmF5
PF9VcD46OnZhbHVlLAogICAgYm9vbCBfSXNGdW5jdGlvbiA9IGlzX2Z1bmN0aW9uPF9VcD46OnZh
bHVlPgogICAgc3RydWN0IF9fZGVjYXlfc2VsZWN0b3I7CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VXA+CiAgICBzdHJ1Y3QgX19kZWNheV9zZWxlY3RvcjxfVXAsIGZhbHNlLCBmYWxzZT4KICAgIHsg
dHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8X1VwPjo6dHlwZSBfX3R5cGU7IH07CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9VcD4KICAgIHN0cnVjdCBfX2RlY2F5X3NlbGVjdG9yPF9VcCwgdHJ1ZSwg
ZmFsc2U+CiAgICB7IHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2V4dGVudDxfVXA+Ojp0eXBlKiBf
X3R5cGU7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VcD4KICAgIHN0cnVjdCBfX2RlY2F5X3Nl
bGVjdG9yPF9VcCwgZmFsc2UsIHRydWU+CiAgICB7IHR5cGVkZWYgdHlwZW5hbWUgYWRkX3BvaW50
ZXI8X1VwPjo6dHlwZSBfX3R5cGU7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBj
bGFzcyBkZWNheQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8
X1RwPjo6dHlwZSBfX3JlbW92ZV90eXBlOwoKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBfX2RlY2F5X3NlbGVjdG9yPF9fcmVtb3ZlX3R5cGU+OjpfX3R5cGUgdHlwZTsKICAgIH07
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGNsYXNzIHJlZmVyZW5jZV93cmFwcGVyOwoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9fc3RyaXBfcmVmZXJlbmNlX3dy
YXBwZXIKICAgIHsKICAgICAgdHlwZWRlZiBfVHAgX190eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9fc3RyaXBfcmVmZXJlbmNlX3dyYXBwZXI8cmVmZXJl
bmNlX3dyYXBwZXI8X1RwPiA+CiAgICB7CiAgICAgIHR5cGVkZWYgX1RwJiBfX3R5cGU7CiAgICB9
OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19zdHJpcF9yZWZlcmVuY2Vf
d3JhcHBlcjxjb25zdCByZWZlcmVuY2Vfd3JhcHBlcjxfVHA+ID4KICAgIHsKICAgICAgdHlwZWRl
ZiBfVHAmIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVj
dCBfX2RlY2F5X2FuZF9zdHJpcAogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fc3RyaXBf
cmVmZXJlbmNlX3dyYXBwZXI8CiB0eXBlbmFtZSBkZWNheTxfVHA+Ojp0eXBlPjo6X190eXBlIF9f
dHlwZTsKICAgIH07CgoKCgogIHRlbXBsYXRlPGJvb2wsIHR5cGVuYW1lIF9UcCA9IHZvaWQ+CiAg
ICBzdHJ1Y3QgZW5hYmxlX2lmCiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBzdHJ1Y3QgZW5hYmxlX2lmPHRydWUsIF9UcD4KICAgIHsgdHlwZWRlZiBfVHAgdHlwZTsgfTsK
CiAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0NvbmQ+CiAgICB1c2luZyBfUmVxdWlyZSA9IHR5cGVu
YW1lIGVuYWJsZV9pZjxfX2FuZF88X0NvbmQuLi4+Ojp2YWx1ZT46OnR5cGU7CgoKCiAgdGVtcGxh
dGU8Ym9vbCBfQ29uZCwgdHlwZW5hbWUgX0lmdHJ1ZSwgdHlwZW5hbWUgX0lmZmFsc2U+CiAgICBz
dHJ1Y3QgY29uZGl0aW9uYWwKICAgIHsgdHlwZWRlZiBfSWZ0cnVlIHR5cGU7IH07CgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSWZ0cnVlLCB0eXBlbmFtZSBfSWZmYWxzZT4KICAgIHN0cnVjdCBjb25k
aXRpb25hbDxmYWxzZSwgX0lmdHJ1ZSwgX0lmZmFsc2U+CiAgICB7IHR5cGVkZWYgX0lmZmFsc2Ug
dHlwZTsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9UcD4KICAgIHN0cnVjdCBjb21tb25f
dHlwZTsKCgoKICBzdHJ1Y3QgX19kb19jb21tb25fdHlwZV9pbXBsCiAgewogICAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXA+CiAgICAgIHN0YXRpYyBfX3N1Y2Nlc3NfdHlwZTx0
eXBlbmFtZSBkZWNheTxkZWNsdHlwZQogICAgICAgKHRydWUgPyBzdGQ6OmRlY2x2YWw8X1RwPigp
CiAgICAgICAgOiBzdGQ6OmRlY2x2YWw8X1VwPigpKT46OnR5cGU+IF9TX3Rlc3QoaW50KTsKCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+CiAgICAgIHN0YXRpYyBfX2ZhaWx1cmVfdHlw
ZSBfU190ZXN0KC4uLik7CiAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBf
VXA+CiAgICBzdHJ1Y3QgX19jb21tb25fdHlwZV9pbXBsCiAgICA6IHByaXZhdGUgX19kb19jb21t
b25fdHlwZV9pbXBsCiAgICB7CiAgICAgIHR5cGVkZWYgZGVjbHR5cGUoX1NfdGVzdDxfVHAsIF9V
cD4oMCkpIHR5cGU7CiAgICB9OwoKICBzdHJ1Y3QgX19kb19tZW1iZXJfdHlwZV93cmFwcGVyCiAg
ewogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgICBzdGF0aWMgX19zdWNjZXNzX3R5cGU8
dHlwZW5hbWUgX1RwOjp0eXBlPiBfU190ZXN0KGludCk7CgogICAgdGVtcGxhdGU8dHlwZW5hbWU+
CiAgICAgIHN0YXRpYyBfX2ZhaWx1cmVfdHlwZSBfU190ZXN0KC4uLik7CiAgfTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9fbWVtYmVyX3R5cGVfd3JhcHBlcgogICAgOiBw
cml2YXRlIF9fZG9fbWVtYmVyX3R5cGVfd3JhcHBlcgogICAgewogICAgICB0eXBlZGVmIGRlY2x0
eXBlKF9TX3Rlc3Q8X1RwPigwKSkgdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
VHAsIHR5cGVuYW1lLi4uIF9BcmdzPgogICAgc3RydWN0IF9fZXhwYW5kZWRfY29tbW9uX3R5cGVf
d3JhcHBlcgogICAgewogICAgICB0eXBlZGVmIGNvbW1vbl90eXBlPHR5cGVuYW1lIF9DVHA6OnR5
cGUsIF9BcmdzLi4uPiB0eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3M+
CiAgICBzdHJ1Y3QgX19leHBhbmRlZF9jb21tb25fdHlwZV93cmFwcGVyPF9fZmFpbHVyZV90eXBl
LCBfQXJncy4uLj4KICAgIHsgdHlwZWRlZiBfX2ZhaWx1cmVfdHlwZSB0eXBlOyB9OwoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgY29tbW9uX3R5cGU8X1RwPgogICAgeyB0eXBl
ZGVmIHR5cGVuYW1lIGRlY2F5PF9UcD46OnR5cGUgdHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwLCB0eXBlbmFtZSBfVXA+CiAgICBzdHJ1Y3QgY29tbW9uX3R5cGU8X1RwLCBfVXA+CiAg
ICA6IHB1YmxpYyBfX2NvbW1vbl90eXBlX2ltcGw8X1RwLCBfVXA+Ojp0eXBlCiAgICB7IH07Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1VwLCB0eXBlbmFtZS4uLiBfVnA+CiAg
ICBzdHJ1Y3QgY29tbW9uX3R5cGU8X1RwLCBfVXAsIF9WcC4uLj4KICAgIDogcHVibGljIF9fZXhw
YW5kZWRfY29tbW9uX3R5cGVfd3JhcHBlcjx0eXBlbmFtZSBfX21lbWJlcl90eXBlX3dyYXBwZXI8
CiAgICAgICAgICAgICAgIGNvbW1vbl90eXBlPF9UcCwgX1VwPj46OnR5cGUsIF9WcC4uLj46OnR5
cGUKICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCB1bmRlcmx5
aW5nX3R5cGUKICAgIHsKICAgICAgdHlwZWRlZiBfX3VuZGVybHlpbmdfdHlwZShfVHApIHR5cGU7
CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19kZWNsdmFsX3By
b3RlY3RvcgogICAgewogICAgICBzdGF0aWMgY29uc3QgYm9vbCBfX3N0b3AgPSBmYWxzZTsKICAg
ICAgc3RhdGljIHR5cGVuYW1lIGFkZF9ydmFsdWVfcmVmZXJlbmNlPF9UcD46OnR5cGUgX19kZWxl
Z2F0ZSgpOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHR5cGVu
YW1lIGFkZF9ydmFsdWVfcmVmZXJlbmNlPF9UcD46OnR5cGUKICAgIGRlY2x2YWwoKSBub2V4Y2Vw
dAogICAgewogICAgICBzdGF0aWNfYXNzZXJ0KF9fZGVjbHZhbF9wcm90ZWN0b3I8X1RwPjo6X19z
dG9wLAogICAgICAiZGVjbHZhbCgpIG11c3Qgbm90IGJlIHVzZWQhIik7CiAgICAgIHJldHVybiBf
X2RlY2x2YWxfcHJvdGVjdG9yPF9UcD46Ol9fZGVsZWdhdGUoKTsKICAgIH0KCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9TaWduYXR1cmU+CiAgICBjbGFzcyByZXN1bHRfb2Y7CgoKCgogIHN0cnVjdCBf
X3Jlc3VsdF9vZl9tZW1mdW5fcmVmX2ltcGwKICB7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnAs
IHR5cGVuYW1lIF9UcDEsIHR5cGVuYW1lLi4uIF9BcmdzPgogICAgICBzdGF0aWMgX19zdWNjZXNz
X3R5cGU8ZGVjbHR5cGUoCiAgICAgIChzdGQ6OmRlY2x2YWw8X1RwMT4oKS4qc3RkOjpkZWNsdmFs
PF9GcD4oKSkoc3RkOjpkZWNsdmFsPF9BcmdzPigpLi4uKQogICAgICApPiBfU190ZXN0KGludCk7
CgogICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4+CiAgICAgIHN0YXRpYyBfX2ZhaWx1cmVfdHlwZSBf
U190ZXN0KC4uLik7CiAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX01lbVB0ciwgdHlwZW5hbWUg
X0FyZywgdHlwZW5hbWUuLi4gX0FyZ3M+CiAgICBzdHJ1Y3QgX19yZXN1bHRfb2ZfbWVtZnVuX3Jl
ZgogICAgOiBwcml2YXRlIF9fcmVzdWx0X29mX21lbWZ1bl9yZWZfaW1wbAogICAgewogICAgICB0
eXBlZGVmIGRlY2x0eXBlKF9TX3Rlc3Q8X01lbVB0ciwgX0FyZywgX0FyZ3MuLi4+KDApKSB0eXBl
OwogICAgfTsKCgogIHN0cnVjdCBfX3Jlc3VsdF9vZl9tZW1mdW5fZGVyZWZfaW1wbAogIHsKICAg
IHRlbXBsYXRlPHR5cGVuYW1lIF9GcCwgdHlwZW5hbWUgX1RwMSwgdHlwZW5hbWUuLi4gX0FyZ3M+
CiAgICAgIHN0YXRpYyBfX3N1Y2Nlc3NfdHlwZTxkZWNsdHlwZSgKICAgICAgKCgqc3RkOjpkZWNs
dmFsPF9UcDE+KCkpLipzdGQ6OmRlY2x2YWw8X0ZwPigpKShzdGQ6OmRlY2x2YWw8X0FyZ3M+KCku
Li4pCiAgICAgICk+IF9TX3Rlc3QoaW50KTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLj4KICAg
ICAgc3RhdGljIF9fZmFpbHVyZV90eXBlIF9TX3Rlc3QoLi4uKTsKICB9OwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfTWVtUHRyLCB0eXBlbmFtZSBfQXJnLCB0eXBlbmFtZS4uLiBfQXJncz4KICAgIHN0
cnVjdCBfX3Jlc3VsdF9vZl9tZW1mdW5fZGVyZWYKICAgIDogcHJpdmF0ZSBfX3Jlc3VsdF9vZl9t
ZW1mdW5fZGVyZWZfaW1wbAogICAgewogICAgICB0eXBlZGVmIGRlY2x0eXBlKF9TX3Rlc3Q8X01l
bVB0ciwgX0FyZywgX0FyZ3MuLi4+KDApKSB0eXBlOwogICAgfTsKCgogIHN0cnVjdCBfX3Jlc3Vs
dF9vZl9tZW1vYmpfcmVmX2ltcGwKICB7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnAsIHR5cGVu
YW1lIF9UcDE+CiAgICAgIHN0YXRpYyBfX3N1Y2Nlc3NfdHlwZTxkZWNsdHlwZSgKICAgICAgc3Rk
OjpkZWNsdmFsPF9UcDE+KCkuKnN0ZDo6ZGVjbHZhbDxfRnA+KCkKICAgICAgKT4gX1NfdGVzdChp
bnQpOwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4KICAgICAgc3RhdGljIF9fZmFp
bHVyZV90eXBlIF9TX3Rlc3QoLi4uKTsKICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfTWVtUHRy
LCB0eXBlbmFtZSBfQXJnPgogICAgc3RydWN0IF9fcmVzdWx0X29mX21lbW9ial9yZWYKICAgIDog
cHJpdmF0ZSBfX3Jlc3VsdF9vZl9tZW1vYmpfcmVmX2ltcGwKICAgIHsKICAgICAgdHlwZWRlZiBk
ZWNsdHlwZShfU190ZXN0PF9NZW1QdHIsIF9Bcmc+KDApKSB0eXBlOwogICAgfTsKCgogIHN0cnVj
dCBfX3Jlc3VsdF9vZl9tZW1vYmpfZGVyZWZfaW1wbAogIHsKICAgIHRlbXBsYXRlPHR5cGVuYW1l
IF9GcCwgdHlwZW5hbWUgX1RwMT4KICAgICAgc3RhdGljIF9fc3VjY2Vzc190eXBlPGRlY2x0eXBl
KAogICAgICAoKnN0ZDo6ZGVjbHZhbDxfVHAxPigpKS4qc3RkOjpkZWNsdmFsPF9GcD4oKQogICAg
ICApPiBfU190ZXN0KGludCk7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lPgogICAg
ICBzdGF0aWMgX19mYWlsdXJlX3R5cGUgX1NfdGVzdCguLi4pOwogIH07CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9NZW1QdHIsIHR5cGVuYW1lIF9Bcmc+CiAgICBzdHJ1Y3QgX19yZXN1bHRfb2ZfbWVt
b2JqX2RlcmVmCiAgICA6IHByaXZhdGUgX19yZXN1bHRfb2ZfbWVtb2JqX2RlcmVmX2ltcGwKICAg
IHsKICAgICAgdHlwZWRlZiBkZWNsdHlwZShfU190ZXN0PF9NZW1QdHIsIF9Bcmc+KDApKSB0eXBl
OwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX01lbVB0ciwgdHlwZW5hbWUgX0FyZz4KICAg
IHN0cnVjdCBfX3Jlc3VsdF9vZl9tZW1vYmo7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5
cGVuYW1lIF9DbGFzcywgdHlwZW5hbWUgX0FyZz4KICAgIHN0cnVjdCBfX3Jlc3VsdF9vZl9tZW1v
Ymo8X1JlcyBfQ2xhc3M6OiosIF9Bcmc+CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVt
b3ZlX2N2PHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8CiAgICAgICAgX0FyZz46OnR5cGU+Ojp0
eXBlIF9Bcmd2YWw7CiAgICAgIHR5cGVkZWYgX1JlcyBfQ2xhc3M6OiogX01lbVB0cjsKICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBjb25kaXRpb25hbDxfX29yXzxpc19zYW1lPF9Bcmd2YWwsIF9DbGFz
cz4sCiAgICAgICAgaXNfYmFzZV9vZjxfQ2xhc3MsIF9Bcmd2YWw+Pjo6dmFsdWUsCiAgICAgICAg
X19yZXN1bHRfb2ZfbWVtb2JqX3JlZjxfTWVtUHRyLCBfQXJnPiwKICAgICAgICBfX3Jlc3VsdF9v
Zl9tZW1vYmpfZGVyZWY8X01lbVB0ciwgX0FyZz4KICAgICAgPjo6dHlwZTo6dHlwZSB0eXBlOwog
ICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX01lbVB0ciwgdHlwZW5hbWUgX0FyZywgdHlwZW5h
bWUuLi4gX0FyZ3M+CiAgICBzdHJ1Y3QgX19yZXN1bHRfb2ZfbWVtZnVuOwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmVzLCB0eXBlbmFtZSBfQ2xhc3MsIHR5cGVuYW1lIF9BcmcsIHR5cGVuYW1lLi4u
IF9BcmdzPgogICAgc3RydWN0IF9fcmVzdWx0X29mX21lbWZ1bjxfUmVzIF9DbGFzczo6KiwgX0Fy
ZywgX0FyZ3MuLi4+CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PHR5cGVu
YW1lIHJlbW92ZV9yZWZlcmVuY2U8CiAgICAgICAgX0FyZz46OnR5cGU+Ojp0eXBlIF9Bcmd2YWw7
CiAgICAgIHR5cGVkZWYgX1JlcyBfQ2xhc3M6OiogX01lbVB0cjsKICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBjb25kaXRpb25hbDxfX29yXzxpc19zYW1lPF9Bcmd2YWwsIF9DbGFzcz4sCiAgICAgICAg
aXNfYmFzZV9vZjxfQ2xhc3MsIF9Bcmd2YWw+Pjo6dmFsdWUsCiAgICAgICAgX19yZXN1bHRfb2Zf
bWVtZnVuX3JlZjxfTWVtUHRyLCBfQXJnLCBfQXJncy4uLj4sCiAgICAgICAgX19yZXN1bHRfb2Zf
bWVtZnVuX2RlcmVmPF9NZW1QdHIsIF9BcmcsIF9BcmdzLi4uPgogICAgICA+Ojp0eXBlOjp0eXBl
IHR5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTxib29sLCBib29sLCB0eXBlbmFtZSBfRnVuY3Rvciwg
dHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgc3RydWN0IF9fcmVzdWx0X29mX2ltcGwKICAgIHsK
ICAgICAgdHlwZWRlZiBfX2ZhaWx1cmVfdHlwZSB0eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX01lbVB0ciwgdHlwZW5hbWUgX0FyZz4KICAgIHN0cnVjdCBfX3Jlc3VsdF9vZl9pbXBs
PHRydWUsIGZhbHNlLCBfTWVtUHRyLCBfQXJnPgogICAgOiBwdWJsaWMgX19yZXN1bHRfb2ZfbWVt
b2JqPHR5cGVuYW1lIGRlY2F5PF9NZW1QdHI+Ojp0eXBlLCBfQXJnPgogICAgeyB9OwoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfTWVtUHRyLCB0eXBlbmFtZSBfQXJnLCB0eXBlbmFtZS4uLiBfQXJncz4K
ICAgIHN0cnVjdCBfX3Jlc3VsdF9vZl9pbXBsPGZhbHNlLCB0cnVlLCBfTWVtUHRyLCBfQXJnLCBf
QXJncy4uLj4KICAgIDogcHVibGljIF9fcmVzdWx0X29mX21lbWZ1bjx0eXBlbmFtZSBkZWNheTxf
TWVtUHRyPjo6dHlwZSwgX0FyZywgX0FyZ3MuLi4+CiAgICB7IH07CgoKICBzdHJ1Y3QgX19yZXN1
bHRfb2Zfb3RoZXJfaW1wbAogIHsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9GbiwgdHlwZW5hbWUu
Li4gX0FyZ3M+CiAgICAgIHN0YXRpYyBfX3N1Y2Nlc3NfdHlwZTxkZWNsdHlwZSgKICAgICAgc3Rk
OjpkZWNsdmFsPF9Gbj4oKShzdGQ6OmRlY2x2YWw8X0FyZ3M+KCkuLi4pCiAgICAgICk+IF9TX3Rl
c3QoaW50KTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLj4KICAgICAgc3RhdGljIF9fZmFpbHVy
ZV90eXBlIF9TX3Rlc3QoLi4uKTsKICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnVuY3Rvciwg
dHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgc3RydWN0IF9fcmVzdWx0X29mX2ltcGw8ZmFsc2Us
IGZhbHNlLCBfRnVuY3RvciwgX0FyZ1R5cGVzLi4uPgogICAgOiBwcml2YXRlIF9fcmVzdWx0X29m
X290aGVyX2ltcGwKICAgIHsKICAgICAgdHlwZWRlZiBkZWNsdHlwZShfU190ZXN0PF9GdW5jdG9y
LCBfQXJnVHlwZXMuLi4+KDApKSB0eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Z1
bmN0b3IsIHR5cGVuYW1lLi4uIF9BcmdUeXBlcz4KICAgIHN0cnVjdCByZXN1bHRfb2Y8X0Z1bmN0
b3IoX0FyZ1R5cGVzLi4uKT4KICAgIDogcHVibGljIF9fcmVzdWx0X29mX2ltcGw8CiAgICAgICAg
aXNfbWVtYmVyX29iamVjdF9wb2ludGVyPAogICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVy
ZW5jZTxfRnVuY3Rvcj46OnR5cGUKICAgICAgICA+Ojp2YWx1ZSwKICAgICAgICBpc19tZW1iZXJf
ZnVuY3Rpb25fcG9pbnRlcjwKICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8X0Z1
bmN0b3I+Ojp0eXBlCiAgICAgICAgPjo6dmFsdWUsCiAgICAgX0Z1bmN0b3IsIF9BcmdUeXBlcy4u
LgogICAgICA+Ojp0eXBlCiAgICB7IH07CiMgMjA2OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL3R5cGVfdHJhaXRzIiAzCgp9CiMgMzkgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9yYXRpbyIgMiAzCiMgMSAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2NzdGRpbnQi
IDEgMwojIDMyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44
LjEvY3N0ZGludCIgMwogICAgICAgCiMgMzMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9jc3RkaW50IiAzCiMgNDYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9jc3RkaW50IiAzCm5hbWVzcGFjZSBzdGQKewog
IHVzaW5nIDo6aW50OF90OwogIHVzaW5nIDo6aW50MTZfdDsKICB1c2luZyA6OmludDMyX3Q7CiAg
dXNpbmcgOjppbnQ2NF90OwoKICB1c2luZyA6OmludF9mYXN0OF90OwogIHVzaW5nIDo6aW50X2Zh
c3QxNl90OwogIHVzaW5nIDo6aW50X2Zhc3QzMl90OwogIHVzaW5nIDo6aW50X2Zhc3Q2NF90OwoK
ICB1c2luZyA6OmludF9sZWFzdDhfdDsKICB1c2luZyA6OmludF9sZWFzdDE2X3Q7CiAgdXNpbmcg
OjppbnRfbGVhc3QzMl90OwogIHVzaW5nIDo6aW50X2xlYXN0NjRfdDsKCiAgdXNpbmcgOjppbnRt
YXhfdDsKICB1c2luZyA6OmludHB0cl90OwoKICB1c2luZyA6OnVpbnQ4X3Q7CiAgdXNpbmcgOjp1
aW50MTZfdDsKICB1c2luZyA6OnVpbnQzMl90OwogIHVzaW5nIDo6dWludDY0X3Q7CgogIHVzaW5n
IDo6dWludF9mYXN0OF90OwogIHVzaW5nIDo6dWludF9mYXN0MTZfdDsKICB1c2luZyA6OnVpbnRf
ZmFzdDMyX3Q7CiAgdXNpbmcgOjp1aW50X2Zhc3Q2NF90OwoKICB1c2luZyA6OnVpbnRfbGVhc3Q4
X3Q7CiAgdXNpbmcgOjp1aW50X2xlYXN0MTZfdDsKICB1c2luZyA6OnVpbnRfbGVhc3QzMl90Owog
IHVzaW5nIDo6dWludF9sZWFzdDY0X3Q7CgogIHVzaW5nIDo6dWludG1heF90OwogIHVzaW5nIDo6
dWludHB0cl90Owp9CiMgNDAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjguMS9yYXRpbyIgMiAzCgoKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9f
dmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKIyA1NSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL3JhdGlvIiAzCiAgdGVtcGxhdGU8aW50bWF4X3Qg
X1BuPgogICAgc3RydWN0IF9fc3RhdGljX3NpZ24KICAgIDogaW50ZWdyYWxfY29uc3RhbnQ8aW50
bWF4X3QsIChfUG4gPCAwKSA/IC0xIDogMT4KICAgIHsgfTsKCiAgdGVtcGxhdGU8aW50bWF4X3Qg
X1BuPgogICAgc3RydWN0IF9fc3RhdGljX2FicwogICAgOiBpbnRlZ3JhbF9jb25zdGFudDxpbnRt
YXhfdCwgX1BuICogX19zdGF0aWNfc2lnbjxfUG4+Ojp2YWx1ZT4KICAgIHsgfTsKCiAgdGVtcGxh
dGU8aW50bWF4X3QgX1BuLCBpbnRtYXhfdCBfUW4+CiAgICBzdHJ1Y3QgX19zdGF0aWNfZ2NkCiAg
ICA6IF9fc3RhdGljX2djZDxfUW4sIChfUG4gJSBfUW4pPgogICAgeyB9OwoKICB0ZW1wbGF0ZTxp
bnRtYXhfdCBfUG4+CiAgICBzdHJ1Y3QgX19zdGF0aWNfZ2NkPF9QbiwgMD4KICAgIDogaW50ZWdy
YWxfY29uc3RhbnQ8aW50bWF4X3QsIF9fc3RhdGljX2FiczxfUG4+Ojp2YWx1ZT4KICAgIHsgfTsK
CiAgdGVtcGxhdGU8aW50bWF4X3QgX1FuPgogICAgc3RydWN0IF9fc3RhdGljX2djZDwwLCBfUW4+
CiAgICA6IGludGVncmFsX2NvbnN0YW50PGludG1heF90LCBfX3N0YXRpY19hYnM8X1FuPjo6dmFs
dWU+CiAgICB7IH07CgoKCgoKCgogIHRlbXBsYXRlPGludG1heF90IF9QbiwgaW50bWF4X3QgX1Fu
PgogICAgc3RydWN0IF9fc2FmZV9tdWx0aXBseQogICAgewogICAgcHJpdmF0ZToKICAgICAgc3Rh
dGljIGNvbnN0IHVpbnRtYXhfdCBfX2MgPSB1aW50bWF4X3QoMSkgPDwgKHNpemVvZihpbnRtYXhf
dCkgKiA0KTsKCiAgICAgIHN0YXRpYyBjb25zdCB1aW50bWF4X3QgX19hMCA9IF9fc3RhdGljX2Fi
czxfUG4+Ojp2YWx1ZSAlIF9fYzsKICAgICAgc3RhdGljIGNvbnN0IHVpbnRtYXhfdCBfX2ExID0g
X19zdGF0aWNfYWJzPF9Qbj46OnZhbHVlIC8gX19jOwogICAgICBzdGF0aWMgY29uc3QgdWludG1h
eF90IF9fYjAgPSBfX3N0YXRpY19hYnM8X1FuPjo6dmFsdWUgJSBfX2M7CiAgICAgIHN0YXRpYyBj
b25zdCB1aW50bWF4X3QgX19iMSA9IF9fc3RhdGljX2FiczxfUW4+Ojp2YWx1ZSAvIF9fYzsKCiAg
ICAgIHN0YXRpY19hc3NlcnQoX19hMSA9PSAwIHx8IF9fYjEgPT0gMCwKICAgICAgIm92ZXJmbG93
IGluIG11bHRpcGxpY2F0aW9uIik7CiAgICAgIHN0YXRpY19hc3NlcnQoX19hMCAqIF9fYjEgKyBf
X2IwICogX19hMSA8IChfX2MgPj4gMSksCiAgICAgICJvdmVyZmxvdyBpbiBtdWx0aXBsaWNhdGlv
biIpOwogICAgICBzdGF0aWNfYXNzZXJ0KF9fYjAgKiBfX2EwIDw9IDkyMjMzNzIwMzY4NTQ3NzU4
MDdMTCwKICAgICAgIm92ZXJmbG93IGluIG11bHRpcGxpY2F0aW9uIik7CiAgICAgIHN0YXRpY19h
c3NlcnQoKF9fYTAgKiBfX2IxICsgX19iMCAqIF9fYTEpICogX19jCiAgICAgIDw9IDkyMjMzNzIw
MzY4NTQ3NzU4MDdMTCAtIF9fYjAgKiBfX2EwLAogICAgICAib3ZlcmZsb3cgaW4gbXVsdGlwbGlj
YXRpb24iKTsKCiAgICBwdWJsaWM6CiAgICAgIHN0YXRpYyBjb25zdCBpbnRtYXhfdCB2YWx1ZSA9
IF9QbiAqIF9RbjsKICAgIH07CgoKCiAgdGVtcGxhdGU8dWludG1heF90IF9faGkxLCB1aW50bWF4
X3QgX19sbzEsIHVpbnRtYXhfdCBfX2hpMiwgdWludG1heF90IF9fbG8yPgogICAgc3RydWN0IF9f
YmlnX2xlc3MKICAgIDogaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgKF9faGkxIDwgX19oaTIKICAg
ICAgICAgIHx8IChfX2hpMSA9PSBfX2hpMiAmJiBfX2xvMSA8IF9fbG8yKSk+CiAgICB7IH07Cgog
IHRlbXBsYXRlPHVpbnRtYXhfdCBfX2hpMSwgdWludG1heF90IF9fbG8xLCB1aW50bWF4X3QgX19o
aTIsIHVpbnRtYXhfdCBfX2xvMj4KICAgIHN0cnVjdCBfX2JpZ19hZGQKICAgIHsKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50bWF4X3QgX19sbyA9IF9fbG8xICsgX19sbzI7CiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludG1heF90IF9faGkgPSAoX19oaTEgKyBfX2hpMiArCiAgICAgIChfX2xv
MSArIF9fbG8yIDwgX19sbzEpKTsKICAgIH07CgoKICB0ZW1wbGF0ZTx1aW50bWF4X3QgX19oaTEs
IHVpbnRtYXhfdCBfX2xvMSwgdWludG1heF90IF9faGkyLCB1aW50bWF4X3QgX19sbzI+CiAgICBz
dHJ1Y3QgX19iaWdfc3ViCiAgICB7CiAgICAgIHN0YXRpY19hc3NlcnQoIV9fYmlnX2xlc3M8X19o
aTEsIF9fbG8xLCBfX2hpMiwgX19sbzI+Ojp2YWx1ZSwKICAgICAgIkludGVybmFsIGxpYnJhcnkg
ZXJyb3IiKTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50bWF4X3QgX19sbyA9IF9fbG8xIC0g
X19sbzI7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdWludG1heF90IF9faGkgPSAoX19oaTEgLSBf
X2hpMiAtCiAgICAgIChfX2xvMSA8IF9fbG8yKSk7CiAgICB9OwoKCiAgdGVtcGxhdGU8dWludG1h
eF90IF9feCwgdWludG1heF90IF9feT4KICAgIHN0cnVjdCBfX2JpZ19tdWwKICAgIHsKICAgIHBy
aXZhdGU6CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdWludG1heF90IF9fYyA9IHVpbnRtYXhfdCgx
KSA8PCAoc2l6ZW9mKGludG1heF90KSAqIDQpOwogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRt
YXhfdCBfX3gwID0gX194ICUgX19jOwogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBf
X3gxID0gX194IC8gX19jOwogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX3kwID0g
X195ICUgX19jOwogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX3kxID0gX195IC8g
X19jOwogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX3gweTAgPSBfX3gwICogX195
MDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50bWF4X3QgX194MHkxID0gX194MCAqIF9feTE7
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdWludG1heF90IF9feDF5MCA9IF9feDEgKiBfX3kwOwog
ICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX3gxeTEgPSBfX3gxICogX195MTsKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciB1aW50bWF4X3QgX19taXggPSBfX3gweTEgKyBfX3gxeTA7CiAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludG1heF90IF9fbWl4X2xvID0gX19taXggKiBfX2M7CiAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludG1heF90IF9fbWl4X2hpCiAgICAgID0gX19taXggLyBf
X2MgKyAoKF9fbWl4IDwgX194MHkxKSA/IF9fYyA6IDApOwogICAgICB0eXBlZGVmIF9fYmlnX2Fk
ZDxfX21peF9oaSwgX19taXhfbG8sIF9feDF5MSwgX194MHkwPiBfUmVzOwogICAgcHVibGljOgog
ICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX2hpID0gX1Jlczo6X19oaTsKICAgICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50bWF4X3QgX19sbyA9IF9SZXM6Ol9fbG87CiAgICB9OwoKCgog
IHRlbXBsYXRlPHVpbnRtYXhfdCBfX24xLCB1aW50bWF4X3QgX19uMCwgdWludG1heF90IF9fZD4K
ICAgIHN0cnVjdCBfX2JpZ19kaXZfaW1wbAogICAgewogICAgcHJpdmF0ZToKICAgICAgc3RhdGlj
X2Fzc2VydChfX2QgPj0gKHVpbnRtYXhfdCgxKSA8PCAoc2l6ZW9mKGludG1heF90KSAqIDggLSAx
KSksCiAgICAgICJJbnRlcm5hbCBsaWJyYXJ5IGVycm9yIik7CiAgICAgIHN0YXRpY19hc3NlcnQo
X19uMSA8IF9fZCwgIkludGVybmFsIGxpYnJhcnkgZXJyb3IiKTsKICAgICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50bWF4X3QgX19jID0gdWludG1heF90KDEpIDw8IChzaXplb2YoaW50bWF4X3QpICog
NCk7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdWludG1heF90IF9fZDEgPSBfX2QgLyBfX2M7CiAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludG1heF90IF9fZDAgPSBfX2QgJSBfX2M7CgogICAgICBz
dGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX3ExeCA9IF9fbjEgLyBfX2QxOwogICAgICBzdGF0
aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX3IxeCA9IF9fbjEgJSBfX2QxOwogICAgICBzdGF0aWMg
Y29uc3RleHByIHVpbnRtYXhfdCBfX20gPSBfX3ExeCAqIF9fZDA7CiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludG1heF90IF9fcjF5ID0gX19yMXggKiBfX2MgKyBfX24wIC8gX19jOwogICAgICBz
dGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX3IxeiA9IF9fcjF5ICsgX19kOwogICAgICBzdGF0
aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX3IxCiAgICAgID0gKChfX3IxeSA8IF9fbSkgPyAoKF9f
cjF6ID49IF9fZCkgJiYgKF9fcjF6IDwgX19tKSkKICA/IChfX3IxeiArIF9fZCkgOiBfX3IxeiA6
IF9fcjF5KSAtIF9fbTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50bWF4X3QgX19xMQogICAg
ICA9IF9fcTF4IC0gKChfX3IxeSA8IF9fbSkKICAgPyAoKF9fcjF6ID49IF9fZCkgJiYgKF9fcjF6
IDwgX19tKSkgPyAyIDogMSA6IDApOwogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBf
X3EweCA9IF9fcjEgLyBfX2QxOwogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX3Iw
eCA9IF9fcjEgJSBfX2QxOwogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX24gPSBf
X3EweCAqIF9fZDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdWludG1heF90IF9fcjB5ID0gX19y
MHggKiBfX2MgKyBfX24wICUgX19jOwogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBf
X3IweiA9IF9fcjB5ICsgX19kOwogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX3Iw
CiAgICAgID0gKChfX3IweSA8IF9fbikgPyAoKF9fcjB6ID49IF9fZCkgJiYgKF9fcjB6IDwgX19u
KSkKICA/IChfX3IweiArIF9fZCkgOiBfX3IweiA6IF9fcjB5KSAtIF9fbjsKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50bWF4X3QgX19xMAogICAgICA9IF9fcTB4IC0gKChfX3IweSA8IF9fbikg
PyAoKF9fcjB6ID49IF9fZCkKICAgICAgJiYgKF9fcjB6IDwgX19uKSkgPyAyIDogMSA6IDApOwoK
ICAgIHB1YmxpYzoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50bWF4X3QgX19xdW90ID0gX19x
MSAqIF9fYyArIF9fcTA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdWludG1heF90IF9fcmVtID0g
X19yMDsKCiAgICBwcml2YXRlOgogICAgICB0eXBlZGVmIF9fYmlnX211bDxfX3F1b3QsIF9fZD4g
X1Byb2Q7CiAgICAgIHR5cGVkZWYgX19iaWdfYWRkPF9Qcm9kOjpfX2hpLCBfUHJvZDo6X19sbywg
MCwgX19yZW0+IF9TdW07CiAgICAgIHN0YXRpY19hc3NlcnQoX1N1bTo6X19oaSA9PSBfX24xICYm
IF9TdW06Ol9fbG8gPT0gX19uMCwKICAgICAgIkludGVybmFsIGxpYnJhcnkgZXJyb3IiKTsKICB9
OwoKICB0ZW1wbGF0ZTx1aW50bWF4X3QgX19uMSwgdWludG1heF90IF9fbjAsIHVpbnRtYXhfdCBf
X2Q+CiAgICBzdHJ1Y3QgX19iaWdfZGl2CiAgICB7CiAgICBwcml2YXRlOgogICAgICBzdGF0aWNf
YXNzZXJ0KF9fZCAhPSAwLCAiSW50ZXJuYWwgbGlicmFyeSBlcnJvciIpOwogICAgICBzdGF0aWNf
YXNzZXJ0KHNpemVvZiAodWludG1heF90KSA9PSBzaXplb2YgKHVuc2lnbmVkIGxvbmcgbG9uZyks
CiAgICAgICJUaGlzIGxpYnJhcnkgY2FsbHMgX19idWlsdGluX2NsemxsIG9uIHVpbnRtYXhfdCwg
d2hpY2ggIgogICAgICAiaXMgdW5zYWZlIG9uIHlvdXIgcGxhdGZvcm0uIFBsZWFzZSBjb21wbGFp
biB0byAiCiAgICAgICJodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvIik7CiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50IF9fc2hpZnQgPSBfX2J1aWx0aW5fY2x6bGwoX19kKTsKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBpbnQgX19jb3NoaWZ0XyA9IHNpemVvZih1aW50bWF4X3QpICogOCAtIF9f
c2hpZnQ7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IF9fY29zaGlmdCA9IChfX3NoaWZ0ICE9
IDApID8gX19jb3NoaWZ0XyA6IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdWludG1heF90IF9f
YzEgPSB1aW50bWF4X3QoMSkgPDwgX19zaGlmdDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
bWF4X3QgX19jMiA9IHVpbnRtYXhfdCgxKSA8PCBfX2Nvc2hpZnQ7CiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludG1heF90IF9fbmV3X2QgPSBfX2QgKiBfX2MxOwogICAgICBzdGF0aWMgY29uc3Rl
eHByIHVpbnRtYXhfdCBfX25ld19uMCA9IF9fbjAgKiBfX2MxOwogICAgICBzdGF0aWMgY29uc3Rl
eHByIHVpbnRtYXhfdCBfX24xX3NoaWZ0ZWQgPSAoX19uMSAlIF9fZCkgKiBfX2MxOwogICAgICBz
dGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX24wX3RvcCA9IChfX3NoaWZ0ICE9IDApID8gKF9f
bjAgLyBfX2MyKSA6IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdWludG1heF90IF9fbmV3X24x
ID0gX19uMV9zaGlmdGVkICsgX19uMF90b3A7CiAgICAgIHR5cGVkZWYgX19iaWdfZGl2X2ltcGw8
X19uZXdfbjEsIF9fbmV3X24wLCBfX25ld19kPiBfUmVzOwoKICAgIHB1YmxpYzoKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50bWF4X3QgX19xdW90X2hpID0gX19uMSAvIF9fZDsKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50bWF4X3QgX19xdW90X2xvID0gX1Jlczo6X19xdW90OwogICAgICBz
dGF0aWMgY29uc3RleHByIHVpbnRtYXhfdCBfX3JlbSA9IF9SZXM6Ol9fcmVtIC8gX19jMTsKCiAg
ICBwcml2YXRlOgogICAgICB0eXBlZGVmIF9fYmlnX211bDxfX3F1b3RfbG8sIF9fZD4gX1AwOwog
ICAgICB0eXBlZGVmIF9fYmlnX211bDxfX3F1b3RfaGksIF9fZD4gX1AxOwogICAgICB0eXBlZGVm
IF9fYmlnX2FkZDxfUDA6Ol9faGksIF9QMDo6X19sbywgX1AxOjpfX2xvLCBfX3JlbT4gX1N1bTsK
CiAgICAgIHN0YXRpY19hc3NlcnQoX1AxOjpfX2hpID09IDAsICJJbnRlcm5hbCBsaWJyYXJ5IGVy
cm9yIik7CiAgICAgIHN0YXRpY19hc3NlcnQoX1N1bTo6X19oaSA+PSBfUDA6Ol9faGksICJJbnRl
cm5hbCBsaWJyYXJ5IGVycm9yIik7CgogICAgICBzdGF0aWNfYXNzZXJ0KF9TdW06Ol9faGkgPT0g
X19uMSAmJiBfU3VtOjpfX2xvID09IF9fbjAsCiAgICAgICJJbnRlcm5hbCBsaWJyYXJ5IGVycm9y
Iik7CiAgICAgIHN0YXRpY19hc3NlcnQoX19yZW0gPCBfX2QsICJJbnRlcm5hbCBsaWJyYXJ5IGVy
cm9yIik7CiAgICB9OwojIDI2MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOC4xL3JhdGlvIiAzCiAgdGVtcGxhdGU8aW50bWF4X3QgX051bSwgaW50bWF4X3Qg
X0RlbiA9IDE+CiAgICBzdHJ1Y3QgcmF0aW8KICAgIHsKICAgICAgc3RhdGljX2Fzc2VydChfRGVu
ICE9IDAsICJkZW5vbWluYXRvciBjYW5ub3QgYmUgemVybyIpOwogICAgICBzdGF0aWNfYXNzZXJ0
KF9OdW0gPj0gLTkyMjMzNzIwMzY4NTQ3NzU4MDdMTCAmJiBfRGVuID49IC05MjIzMzcyMDM2ODU0
Nzc1ODA3TEwsCiAgICAgICJvdXQgb2YgcmFuZ2UiKTsKCgogICAgICBzdGF0aWMgY29uc3RleHBy
IGludG1heF90IG51bSA9CiAgICAgICAgX051bSAqIF9fc3RhdGljX3NpZ248X0Rlbj46OnZhbHVl
IC8gX19zdGF0aWNfZ2NkPF9OdW0sIF9EZW4+Ojp2YWx1ZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50bWF4X3QgZGVuID0KICAgICAgICBfX3N0YXRpY19hYnM8X0Rlbj46OnZhbHVlIC8gX19z
dGF0aWNfZ2NkPF9OdW0sIF9EZW4+Ojp2YWx1ZTsKCiAgICAgIHR5cGVkZWYgcmF0aW88bnVtLCBk
ZW4+IHR5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTxpbnRtYXhfdCBfTnVtLCBpbnRtYXhfdCBfRGVu
PgogICAgY29uc3RleHByIGludG1heF90IHJhdGlvPF9OdW0sIF9EZW4+OjpudW07CgogIHRlbXBs
YXRlPGludG1heF90IF9OdW0sIGludG1heF90IF9EZW4+CiAgICBjb25zdGV4cHIgaW50bWF4X3Qg
cmF0aW88X051bSwgX0Rlbj46OmRlbjsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1IxLCB0eXBlbmFt
ZSBfUjI+CiAgICBzdHJ1Y3QgX19yYXRpb19tdWx0aXBseQogICAgewogICAgcHJpdmF0ZToKICAg
ICAgc3RhdGljIGNvbnN0IGludG1heF90IF9fZ2NkMSA9CiAgICAgICAgX19zdGF0aWNfZ2NkPF9S
MTo6bnVtLCBfUjI6OmRlbj46OnZhbHVlOwogICAgICBzdGF0aWMgY29uc3QgaW50bWF4X3QgX19n
Y2QyID0KICAgICAgICBfX3N0YXRpY19nY2Q8X1IyOjpudW0sIF9SMTo6ZGVuPjo6dmFsdWU7Cgog
ICAgcHVibGljOgogICAgICB0eXBlZGVmIHJhdGlvPAogICAgICAgIF9fc2FmZV9tdWx0aXBseTwo
X1IxOjpudW0gLyBfX2djZDEpLAogICAgICAgICAgICAgICAgICAgICAgICAoX1IyOjpudW0gLyBf
X2djZDIpPjo6dmFsdWUsCiAgICAgICAgX19zYWZlX211bHRpcGx5PChfUjE6OmRlbiAvIF9fZ2Nk
MiksCiAgICAgICAgICAgICAgICAgICAgICAgIChfUjI6OmRlbiAvIF9fZ2NkMSk+Ojp2YWx1ZT4g
dHlwZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50bWF4X3QgbnVtID0gdHlwZTo6bnVtOwog
ICAgICBzdGF0aWMgY29uc3RleHByIGludG1heF90IGRlbiA9IHR5cGU6OmRlbjsKICAgIH07Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9SMSwgdHlwZW5hbWUgX1IyPgogICAgY29uc3RleHByIGludG1h
eF90IF9fcmF0aW9fbXVsdGlwbHk8X1IxLCBfUjI+OjpudW07CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9SMSwgdHlwZW5hbWUgX1IyPgogICAgY29uc3RleHByIGludG1heF90IF9fcmF0aW9fbXVsdGlw
bHk8X1IxLCBfUjI+OjpkZW47CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUjEsIHR5cGVuYW1lIF9S
Mj4KICAgIHVzaW5nIHJhdGlvX211bHRpcGx5ID0gdHlwZW5hbWUgX19yYXRpb19tdWx0aXBseTxf
UjEsIF9SMj46OnR5cGU7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SMSwgdHlwZW5hbWUgX1IyPgog
ICAgc3RydWN0IF9fcmF0aW9fZGl2aWRlCiAgICB7CiAgICAgIHN0YXRpY19hc3NlcnQoX1IyOjpu
dW0gIT0gMCwgImRpdmlzaW9uIGJ5IDAiKTsKCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19yYXRp
b19tdWx0aXBseTwKICAgICAgICBfUjEsCiAgICAgICAgcmF0aW88X1IyOjpkZW4sIF9SMjo6bnVt
Pj46OnR5cGUgdHlwZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50bWF4X3QgbnVtID0gdHlw
ZTo6bnVtOwogICAgICBzdGF0aWMgY29uc3RleHByIGludG1heF90IGRlbiA9IHR5cGU6OmRlbjsK
ICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SMSwgdHlwZW5hbWUgX1IyPgogICAgY29uc3Rl
eHByIGludG1heF90IF9fcmF0aW9fZGl2aWRlPF9SMSwgX1IyPjo6bnVtOwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUjEsIHR5cGVuYW1lIF9SMj4KICAgIGNvbnN0ZXhwciBpbnRtYXhfdCBfX3JhdGlv
X2RpdmlkZTxfUjEsIF9SMj46OmRlbjsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SMSwgdHlwZW5h
bWUgX1IyPgogICAgdXNpbmcgcmF0aW9fZGl2aWRlID0gdHlwZW5hbWUgX19yYXRpb19kaXZpZGU8
X1IxLCBfUjI+Ojp0eXBlOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1IxLCB0eXBlbmFtZSBfUjI+
CiAgICBzdHJ1Y3QgcmF0aW9fZXF1YWwKICAgIDogaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgX1Ix
OjpudW0gPT0gX1IyOjpudW0gJiYgX1IxOjpkZW4gPT0gX1IyOjpkZW4+CiAgICB7IH07CgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfUjEsIHR5cGVuYW1lIF9SMj4KICAgIHN0cnVjdCByYXRpb19ub3Rf
ZXF1YWwKICAgIDogaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgIXJhdGlvX2VxdWFsPF9SMSwgX1Iy
Pjo6dmFsdWU+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUjEsIHR5cGVuYW1lIF9S
MiwKICAgICAgICAgICB0eXBlbmFtZSBfTGVmdCA9IF9fYmlnX211bDxfUjE6Om51bSxfUjI6OmRl
bj4sCiAgICAgICAgICAgdHlwZW5hbWUgX1JpZ2h0ID0gX19iaWdfbXVsPF9SMjo6bnVtLF9SMTo6
ZGVuPiA+CiAgICBzdHJ1Y3QgX19yYXRpb19sZXNzX2ltcGxfMQogICAgOiBpbnRlZ3JhbF9jb25z
dGFudDxib29sLCBfX2JpZ19sZXNzPF9MZWZ0OjpfX2hpLCBfTGVmdDo6X19sbywKICAgICAgICAg
ICBfUmlnaHQ6Ol9faGksIF9SaWdodDo6X19sbz46OnZhbHVlPgogICAgeyB9OwoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfUjEsIHR5cGVuYW1lIF9SMiwKICAgIGJvb2wgPSAoX1IxOjpudW0gPT0gMCB8
fCBfUjI6Om51bSA9PSAwCiAgICAgfHwgKF9fc3RhdGljX3NpZ248X1IxOjpudW0+Ojp2YWx1ZQog
ICAgICAgICAhPSBfX3N0YXRpY19zaWduPF9SMjo6bnVtPjo6dmFsdWUpKSwKICAgIGJvb2wgPSAo
X19zdGF0aWNfc2lnbjxfUjE6Om51bT46OnZhbHVlID09IC0xCiAgICAgJiYgX19zdGF0aWNfc2ln
bjxfUjI6Om51bT46OnZhbHVlID09IC0xKT4KICAgIHN0cnVjdCBfX3JhdGlvX2xlc3NfaW1wbAog
ICAgOiBfX3JhdGlvX2xlc3NfaW1wbF8xPF9SMSwgX1IyPjo6dHlwZQogICAgeyB9OwoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfUjEsIHR5cGVuYW1lIF9SMj4KICAgIHN0cnVjdCBfX3JhdGlvX2xlc3Nf
aW1wbDxfUjEsIF9SMiwgdHJ1ZSwgZmFsc2U+CiAgICA6IGludGVncmFsX2NvbnN0YW50PGJvb2ws
IF9SMTo6bnVtIDwgX1IyOjpudW0+CiAgICB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SMSwg
dHlwZW5hbWUgX1IyPgogICAgc3RydWN0IF9fcmF0aW9fbGVzc19pbXBsPF9SMSwgX1IyLCBmYWxz
ZSwgdHJ1ZT4KICAgIDogX19yYXRpb19sZXNzX2ltcGxfMTxyYXRpbzwtX1IyOjpudW0sIF9SMjo6
ZGVuPiwKICAgICAgICAgICByYXRpbzwtX1IxOjpudW0sIF9SMTo6ZGVuPiA+Ojp0eXBlCiAgICB7
IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUjEsIHR5cGVuYW1lIF9SMj4KICAgIHN0cnVjdCBy
YXRpb19sZXNzCiAgICA6IF9fcmF0aW9fbGVzc19pbXBsPF9SMSwgX1IyPjo6dHlwZQogICAgeyB9
OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1IxLCB0eXBlbmFtZSBfUjI+CiAgICBzdHJ1Y3QgcmF0
aW9fbGVzc19lcXVhbAogICAgOiBpbnRlZ3JhbF9jb25zdGFudDxib29sLCAhcmF0aW9fbGVzczxf
UjIsIF9SMT46OnZhbHVlPgogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1IxLCB0eXBl
bmFtZSBfUjI+CiAgICBzdHJ1Y3QgcmF0aW9fZ3JlYXRlcgogICAgOiBpbnRlZ3JhbF9jb25zdGFu
dDxib29sLCByYXRpb19sZXNzPF9SMiwgX1IxPjo6dmFsdWU+CiAgICB7IH07CgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfUjEsIHR5cGVuYW1lIF9SMj4KICAgIHN0cnVjdCByYXRpb19ncmVhdGVyX2Vx
dWFsCiAgICA6IGludGVncmFsX2NvbnN0YW50PGJvb2wsICFyYXRpb19sZXNzPF9SMSwgX1IyPjo6
dmFsdWU+CiAgICB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SMSwgdHlwZW5hbWUgX1IyLAog
ICAgICBib29sID0gKF9SMTo6bnVtID49IDApLAogICAgICBib29sID0gKF9SMjo6bnVtID49IDAp
LAogICAgICBib29sID0gcmF0aW9fbGVzczxyYXRpbzxfX3N0YXRpY19hYnM8X1IxOjpudW0+Ojp2
YWx1ZSwgX1IxOjpkZW4+LAogICAgICAgIHJhdGlvPF9fc3RhdGljX2FiczxfUjI6Om51bT46OnZh
bHVlLCBfUjI6OmRlbj4gPjo6dmFsdWU+CiAgICBzdHJ1Y3QgX19yYXRpb19hZGRfaW1wbAogICAg
ewogICAgcHJpdmF0ZToKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX3JhdGlvX2FkZF9pbXBsPAog
ICAgICAgIHJhdGlvPC1fUjE6Om51bSwgX1IxOjpkZW4+LAogICAgICAgIHJhdGlvPC1fUjI6Om51
bSwgX1IyOjpkZW4+ID46OnR5cGUgX190OwogICAgcHVibGljOgogICAgICB0eXBlZGVmIHJhdGlv
PC1fX3Q6Om51bSwgX190OjpkZW4+IHR5cGU7CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1IxLCB0eXBlbmFtZSBfUjIsIGJvb2wgX19iPgogICAgc3RydWN0IF9fcmF0aW9fYWRkX2ltcGw8
X1IxLCBfUjIsIHRydWUsIHRydWUsIF9fYj4KICAgIHsKICAgIHByaXZhdGU6CiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludG1heF90IF9fZyA9IF9fc3RhdGljX2djZDxfUjE6OmRlbiwgX1IyOjpk
ZW4+Ojp2YWx1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50bWF4X3QgX19kMiA9IF9SMjo6
ZGVuIC8gX19nOwogICAgICB0eXBlZGVmIF9fYmlnX211bDxfUjE6OmRlbiwgX19kMj4gX19kOwog
ICAgICB0eXBlZGVmIF9fYmlnX211bDxfUjE6Om51bSwgX1IyOjpkZW4gLyBfX2c+IF9feDsKICAg
ICAgdHlwZWRlZiBfX2JpZ19tdWw8X1IyOjpudW0sIF9SMTo6ZGVuIC8gX19nPiBfX3k7CiAgICAg
IHR5cGVkZWYgX19iaWdfYWRkPF9feDo6X19oaSwgX194OjpfX2xvLCBfX3k6Ol9faGksIF9feTo6
X19sbz4gX19uOwogICAgICBzdGF0aWNfYXNzZXJ0KF9fbjo6X19oaSA+PSBfX3g6Ol9faGksICJJ
bnRlcm5hbCBsaWJyYXJ5IGVycm9yIik7CiAgICAgIHR5cGVkZWYgX19iaWdfZGl2PF9fbjo6X19o
aSwgX19uOjpfX2xvLCBfX2c+IF9fbmc7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdWludG1heF90
IF9fZzIgPSBfX3N0YXRpY19nY2Q8X19uZzo6X19yZW0sIF9fZz46OnZhbHVlOwogICAgICB0eXBl
ZGVmIF9fYmlnX2RpdjxfX246Ol9faGksIF9fbjo6X19sbywgX19nMj4gX19uX2ZpbmFsOwogICAg
ICBzdGF0aWNfYXNzZXJ0KF9fbl9maW5hbDo6X19yZW0gPT0gMCwgIkludGVybmFsIGxpYnJhcnkg
ZXJyb3IiKTsKICAgICAgc3RhdGljX2Fzc2VydChfX25fZmluYWw6Ol9fcXVvdF9oaSA9PSAwICYm
CiAgICAgICAgX19uX2ZpbmFsOjpfX3F1b3RfbG8gPD0gOTIyMzM3MjAzNjg1NDc3NTgwN0xMLCAi
b3ZlcmZsb3cgaW4gYWRkaXRpb24iKTsKICAgICAgdHlwZWRlZiBfX2JpZ19tdWw8X1IxOjpkZW4g
LyBfX2cyLCBfX2QyPiBfX2RfZmluYWw7CiAgICAgIHN0YXRpY19hc3NlcnQoX19kX2ZpbmFsOjpf
X2hpID09IDAgJiYKICAgICAgICBfX2RfZmluYWw6Ol9fbG8gPD0gOTIyMzM3MjAzNjg1NDc3NTgw
N0xMLCAib3ZlcmZsb3cgaW4gYWRkaXRpb24iKTsKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBy
YXRpbzxfX25fZmluYWw6Ol9fcXVvdF9sbywgX19kX2ZpbmFsOjpfX2xvPiB0eXBlOwogICAgfTsK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1IxLCB0eXBlbmFtZSBfUjI+CiAgICBzdHJ1Y3QgX19yYXRp
b19hZGRfaW1wbDxfUjEsIF9SMiwgZmFsc2UsIHRydWUsIHRydWU+CiAgICA6IF9fcmF0aW9fYWRk
X2ltcGw8X1IyLCBfUjE+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUjEsIHR5cGVu
YW1lIF9SMj4KICAgIHN0cnVjdCBfX3JhdGlvX2FkZF9pbXBsPF9SMSwgX1IyLCB0cnVlLCBmYWxz
ZSwgZmFsc2U+CiAgICB7CiAgICBwcml2YXRlOgogICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRt
YXhfdCBfX2cgPSBfX3N0YXRpY19nY2Q8X1IxOjpkZW4sIF9SMjo6ZGVuPjo6dmFsdWU7CiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludG1heF90IF9fZDIgPSBfUjI6OmRlbiAvIF9fZzsKICAgICAg
dHlwZWRlZiBfX2JpZ19tdWw8X1IxOjpkZW4sIF9fZDI+IF9fZDsKICAgICAgdHlwZWRlZiBfX2Jp
Z19tdWw8X1IxOjpudW0sIF9SMjo6ZGVuIC8gX19nPiBfX3g7CiAgICAgIHR5cGVkZWYgX19iaWdf
bXVsPC1fUjI6Om51bSwgX1IxOjpkZW4gLyBfX2c+IF9feTsKICAgICAgdHlwZWRlZiBfX2JpZ19z
dWI8X194OjpfX2hpLCBfX3g6Ol9fbG8sIF9feTo6X19oaSwgX195OjpfX2xvPiBfX247CiAgICAg
IHR5cGVkZWYgX19iaWdfZGl2PF9fbjo6X19oaSwgX19uOjpfX2xvLCBfX2c+IF9fbmc7CiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludG1heF90IF9fZzIgPSBfX3N0YXRpY19nY2Q8X19uZzo6X19y
ZW0sIF9fZz46OnZhbHVlOwogICAgICB0eXBlZGVmIF9fYmlnX2RpdjxfX246Ol9faGksIF9fbjo6
X19sbywgX19nMj4gX19uX2ZpbmFsOwogICAgICBzdGF0aWNfYXNzZXJ0KF9fbl9maW5hbDo6X19y
ZW0gPT0gMCwgIkludGVybmFsIGxpYnJhcnkgZXJyb3IiKTsKICAgICAgc3RhdGljX2Fzc2VydChf
X25fZmluYWw6Ol9fcXVvdF9oaSA9PSAwICYmCiAgICAgICAgX19uX2ZpbmFsOjpfX3F1b3RfbG8g
PD0gOTIyMzM3MjAzNjg1NDc3NTgwN0xMLCAib3ZlcmZsb3cgaW4gYWRkaXRpb24iKTsKICAgICAg
dHlwZWRlZiBfX2JpZ19tdWw8X1IxOjpkZW4gLyBfX2cyLCBfX2QyPiBfX2RfZmluYWw7CiAgICAg
IHN0YXRpY19hc3NlcnQoX19kX2ZpbmFsOjpfX2hpID09IDAgJiYKICAgICAgICBfX2RfZmluYWw6
Ol9fbG8gPD0gOTIyMzM3MjAzNjg1NDc3NTgwN0xMLCAib3ZlcmZsb3cgaW4gYWRkaXRpb24iKTsK
ICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiByYXRpbzxfX25fZmluYWw6Ol9fcXVvdF9sbywgX19k
X2ZpbmFsOjpfX2xvPiB0eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1IxLCB0eXBl
bmFtZSBfUjI+CiAgICBzdHJ1Y3QgX19yYXRpb19hZGQKICAgIHsKICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBfX3JhdGlvX2FkZF9pbXBsPF9SMSwgX1IyPjo6dHlwZSB0eXBlOwogICAgICBzdGF0aWMg
Y29uc3RleHByIGludG1heF90IG51bSA9IHR5cGU6Om51bTsKICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBpbnRtYXhfdCBkZW4gPSB0eXBlOjpkZW47CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
UjEsIHR5cGVuYW1lIF9SMj4KICAgIGNvbnN0ZXhwciBpbnRtYXhfdCBfX3JhdGlvX2FkZDxfUjEs
IF9SMj46Om51bTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1IxLCB0eXBlbmFtZSBfUjI+CiAgICBj
b25zdGV4cHIgaW50bWF4X3QgX19yYXRpb19hZGQ8X1IxLCBfUjI+OjpkZW47CgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfUjEsIHR5cGVuYW1lIF9SMj4KICAgIHVzaW5nIHJhdGlvX2FkZCA9IHR5cGVu
YW1lIF9fcmF0aW9fYWRkPF9SMSwgX1IyPjo6dHlwZTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Ix
LCB0eXBlbmFtZSBfUjI+CiAgICBzdHJ1Y3QgX19yYXRpb19zdWJ0cmFjdAogICAgewogICAgICB0
eXBlZGVmIHR5cGVuYW1lIF9fcmF0aW9fYWRkPAogICAgICAgIF9SMSwKICAgICAgICByYXRpbzwt
X1IyOjpudW0sIF9SMjo6ZGVuPj46OnR5cGUgdHlwZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50bWF4X3QgbnVtID0gdHlwZTo6bnVtOwogICAgICBzdGF0aWMgY29uc3RleHByIGludG1heF90
IGRlbiA9IHR5cGU6OmRlbjsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SMSwgdHlwZW5h
bWUgX1IyPgogICAgY29uc3RleHByIGludG1heF90IF9fcmF0aW9fc3VidHJhY3Q8X1IxLCBfUjI+
OjpudW07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SMSwgdHlwZW5hbWUgX1IyPgogICAgY29uc3Rl
eHByIGludG1heF90IF9fcmF0aW9fc3VidHJhY3Q8X1IxLCBfUjI+OjpkZW47CgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfUjEsIHR5cGVuYW1lIF9SMj4KICAgIHVzaW5nIHJhdGlvX3N1YnRyYWN0ID0g
dHlwZW5hbWUgX19yYXRpb19zdWJ0cmFjdDxfUjEsIF9SMj46OnR5cGU7CgoKICB0eXBlZGVmIHJh
dGlvPDEsIDEwMDAwMDAwMDAwMDAwMDAwMDA+IGF0dG87CiAgdHlwZWRlZiByYXRpbzwxLCAxMDAw
MDAwMDAwMDAwMDAwPiBmZW10bzsKICB0eXBlZGVmIHJhdGlvPDEsIDEwMDAwMDAwMDAwMDA+IHBp
Y287CiAgdHlwZWRlZiByYXRpbzwxLCAxMDAwMDAwMDAwPiBuYW5vOwogIHR5cGVkZWYgcmF0aW88
MSwgMTAwMDAwMD4gbWljcm87CiAgdHlwZWRlZiByYXRpbzwxLCAxMDAwPiBtaWxsaTsKICB0eXBl
ZGVmIHJhdGlvPDEsIDEwMD4gY2VudGk7CiAgdHlwZWRlZiByYXRpbzwxLCAxMD4gZGVjaTsKICB0
eXBlZGVmIHJhdGlvPCAxMCwgMT4gZGVjYTsKICB0eXBlZGVmIHJhdGlvPCAxMDAsIDE+IGhlY3Rv
OwogIHR5cGVkZWYgcmF0aW88IDEwMDAsIDE+IGtpbG87CiAgdHlwZWRlZiByYXRpbzwgMTAwMDAw
MCwgMT4gbWVnYTsKICB0eXBlZGVmIHJhdGlvPCAxMDAwMDAwMDAwLCAxPiBnaWdhOwogIHR5cGVk
ZWYgcmF0aW88IDEwMDAwMDAwMDAwMDAsIDE+IHRlcmE7CiAgdHlwZWRlZiByYXRpbzwgMTAwMDAw
MDAwMDAwMDAwMCwgMT4gcGV0YTsKICB0eXBlZGVmIHJhdGlvPCAxMDAwMDAwMDAwMDAwMDAwMDAw
LCAxPiBleGE7CgoKCn0KIyAzOSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOC4xL2Nocm9ubyIgMiAzCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9saW1pdHMiIDEgMwojIDQwICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvbGltaXRzIiAzCiAgICAgICAKIyA0MSAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2xpbWl0cyIg
MwojIDE0NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4x
L2xpbWl0cyIgMwpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAo
ImRlZmF1bHQiKSkpCnsKCgoKCgoKCiAgZW51bSBmbG9hdF9yb3VuZF9zdHlsZQogIHsKICAgIHJv
dW5kX2luZGV0ZXJtaW5hdGUgPSAtMSwKICAgIHJvdW5kX3Rvd2FyZF96ZXJvID0gMCwKICAgIHJv
dW5kX3RvX25lYXJlc3QgPSAxLAogICAgcm91bmRfdG93YXJkX2luZmluaXR5ID0gMiwKICAgIHJv
dW5kX3Rvd2FyZF9uZWdfaW5maW5pdHkgPSAzCiAgfTsKCgoKCgoKCiAgZW51bSBmbG9hdF9kZW5v
cm1fc3R5bGUKICB7CgogICAgZGVub3JtX2luZGV0ZXJtaW5hdGUgPSAtMSwKCiAgICBkZW5vcm1f
YWJzZW50ID0gMCwKCiAgICBkZW5vcm1fcHJlc2VudCA9IDEKICB9OwojIDE5MSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2xpbWl0cyIgMwogIHN0cnVj
dCBfX251bWVyaWNfbGltaXRzX2Jhc2UKICB7CgoKICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c19zcGVjaWFsaXplZCA9IGZhbHNlOwoKCgoKICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0
cyA9IDA7CgoKICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0czEwID0gMDsKCgoKCiAgICBz
dGF0aWMgY29uc3RleHByIGludCBtYXhfZGlnaXRzMTAgPSAwOwoKCgogICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGlzX3NpZ25lZCA9IGZhbHNlOwoKCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNfaW50ZWdlciA9IGZhbHNlOwoKCgoKICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19leGFj
dCA9IGZhbHNlOwoKCgogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgcmFkaXggPSAwOwoKCgogICAg
c3RhdGljIGNvbnN0ZXhwciBpbnQgbWluX2V4cG9uZW50ID0gMDsKCgoKICAgIHN0YXRpYyBjb25z
dGV4cHIgaW50IG1pbl9leHBvbmVudDEwID0gMDsKCgoKCiAgICBzdGF0aWMgY29uc3RleHByIGlu
dCBtYXhfZXhwb25lbnQgPSAwOwoKCgogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4X2V4cG9u
ZW50MTAgPSAwOwoKCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX2luZmluaXR5ID0gZmFs
c2U7CgoKCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX3F1aWV0X05hTiA9IGZhbHNlOwoK
CgogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19zaWduYWxpbmdfTmFOID0gZmFsc2U7CgoK
ICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXRfZGVub3JtX3N0eWxlIGhhc19kZW5vcm0gPSBkZW5v
cm1fYWJzZW50OwoKCgogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19kZW5vcm1fbG9zcyA9
IGZhbHNlOwoKCgogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2llYzU1OSA9IGZhbHNlOwoK
CgoKICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19ib3VuZGVkID0gZmFsc2U7CiMgMjc3ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvbGltaXRzIiAz
CiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfbW9kdWxvID0gZmFsc2U7CgoKICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCB0cmFwcyA9IGZhbHNlOwoKCiAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgdGlueW5lc3NfYmVmb3JlID0gZmFsc2U7CgoKCgogICAgc3RhdGljIGNvbnN0ZXhwciBmbG9h
dF9yb3VuZF9zdHlsZSByb3VuZF9zdHlsZSA9CiAgICAgICAgICByb3VuZF90b3dhcmRfemVybzsK
ICB9OwojIDMwMyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OC4xL2xpbWl0cyIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBudW1lcmlj
X2xpbWl0cyA6IHB1YmxpYyBfX251bWVyaWNfbGltaXRzX2Jhc2UKICAgIHsKCgogICAgICBzdGF0
aWMgY29uc3RleHByIF9UcAogICAgICBtaW4oKSBub2V4Y2VwdCB7IHJldHVybiBfVHAoKTsgfQoK
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgX1RwCiAgICAgIG1heCgpIG5vZXhjZXB0IHsgcmV0dXJu
IF9UcCgpOyB9CgoKCgogICAgICBzdGF0aWMgY29uc3RleHByIF9UcAogICAgICBsb3dlc3QoKSBu
b2V4Y2VwdCB7IHJldHVybiBfVHAoKTsgfQoKCgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBfVHAK
ICAgICAgZXBzaWxvbigpIG5vZXhjZXB0IHsgcmV0dXJuIF9UcCgpOyB9CgoKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBfVHAKICAgICAgcm91bmRfZXJyb3IoKSBub2V4Y2VwdCB7IHJldHVybiBfVHAo
KTsgfQoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgX1RwCiAgICAgIGluZmluaXR5KCkgbm9leGNl
cHQgeyByZXR1cm4gX1RwKCk7IH0KCgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBfVHAKICAgICAg
cXVpZXRfTmFOKCkgbm9leGNlcHQgeyByZXR1cm4gX1RwKCk7IH0KCgoKICAgICAgc3RhdGljIGNv
bnN0ZXhwciBfVHAKICAgICAgc2lnbmFsaW5nX05hTigpIG5vZXhjZXB0IHsgcmV0dXJuIF9UcCgp
OyB9CgoKCgogICAgICBzdGF0aWMgY29uc3RleHByIF9UcAogICAgICBkZW5vcm1fbWluKCkgbm9l
eGNlcHQgeyByZXR1cm4gX1RwKCk7IH0KICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
CiAgICBzdHJ1Y3QgbnVtZXJpY19saW1pdHM8Y29uc3QgX1RwPgogICAgOiBwdWJsaWMgbnVtZXJp
Y19saW1pdHM8X1RwPiB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBu
dW1lcmljX2xpbWl0czx2b2xhdGlsZSBfVHA+CiAgICA6IHB1YmxpYyBudW1lcmljX2xpbWl0czxf
VHA+IHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IG51bWVyaWNfbGlt
aXRzPGNvbnN0IHZvbGF0aWxlIF9UcD4KICAgIDogcHVibGljIG51bWVyaWNfbGltaXRzPF9UcD4g
eyB9OwoKCgoKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBudW1lcmljX2xpbWl0czxib29sPgog
ICAgewogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfc3BlY2lhbGl6ZWQgPSB0cnVlOwoK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sCiAgICAgIG1pbigpIG5vZXhjZXB0IHsgcmV0dXJu
IGZhbHNlOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wKICAgICAgbWF4KCkgbm9leGNl
cHQgeyByZXR1cm4gdHJ1ZTsgfQoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbAogICAgICBs
b3dlc3QoKSBub2V4Y2VwdCB7IHJldHVybiBtaW4oKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBpbnQgZGlnaXRzID0gMTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzMTAgPSAw
OwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4X2RpZ2l0czEwID0gMDsKCiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc19zaWduZWQgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGlzX2ludGVnZXIgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNfZXhhY3QgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCByYWRpeCA9IDI7Cgog
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wKICAgICAgZXBzaWxvbigpIG5vZXhjZXB0IHsgcmV0
dXJuIGZhbHNlOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wKICAgICAgcm91bmRfZXJy
b3IoKSBub2V4Y2VwdCB7IHJldHVybiBmYWxzZTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQgbWluX2V4cG9uZW50ID0gMDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWluX2V4cG9u
ZW50MTAgPSAwOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhfZXhwb25lbnQgPSAwOwog
ICAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhfZXhwb25lbnQxMCA9IDA7CgogICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaGFzX2luZmluaXR5ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBoYXNfcXVpZXRfTmFOID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBoYXNfc2lnbmFsaW5nX05hTiA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGZs
b2F0X2Rlbm9ybV9zdHlsZSBoYXNfZGVub3JtCiAgICAgICA9IGRlbm9ybV9hYnNlbnQ7CiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfZGVub3JtX2xvc3MgPSBmYWxzZTsKCiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbAogICAgICBpbmZpbml0eSgpIG5vZXhjZXB0IHsgcmV0dXJuIGZh
bHNlOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wKICAgICAgcXVpZXRfTmFOKCkgbm9l
eGNlcHQgeyByZXR1cm4gZmFsc2U7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbAogICAg
ICBzaWduYWxpbmdfTmFOKCkgbm9leGNlcHQgeyByZXR1cm4gZmFsc2U7IH0KCiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbAogICAgICBkZW5vcm1fbWluKCkgbm9leGNlcHQgeyByZXR1cm4gZmFs
c2U7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19pZWM1NTkgPSBmYWxzZTsKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2JvdW5kZWQgPSB0cnVlOwogICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNfbW9kdWxvID0gZmFsc2U7CgoKCgogICAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgdHJhcHMgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdGlueW5l
c3NfYmVmb3JlID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXRfcm91bmRfc3R5
bGUgcm91bmRfc3R5bGUKICAgICAgID0gcm91bmRfdG93YXJkX3plcm87CiAgICB9OwoKCiAgdGVt
cGxhdGU8PgogICAgc3RydWN0IG51bWVyaWNfbGltaXRzPGNoYXI+CiAgICB7CiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBpc19zcGVjaWFsaXplZCA9IHRydWU7CgogICAgICBzdGF0aWMgY29u
c3RleHByIGNoYXIKICAgICAgbWluKCkgbm9leGNlcHQgeyByZXR1cm4gKCgoY2hhcikoLTEpIDwg
MCkgPyAtKCgoY2hhcikoLTEpIDwgMCkgPyAoKCgoKGNoYXIpMSA8PCAoKHNpemVvZihjaGFyKSAq
IDggLSAoKGNoYXIpKC0xKSA8IDApKSAtIDEpKSAtIDEpIDw8IDEpICsgMSkgOiB+KGNoYXIpMCkg
LSAxIDogKGNoYXIpMCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhcgogICAgICBtYXgo
KSBub2V4Y2VwdCB7IHJldHVybiAoKChjaGFyKSgtMSkgPCAwKSA/ICgoKCgoY2hhcikxIDw8ICgo
c2l6ZW9mKGNoYXIpICogOCAtICgoY2hhcikoLTEpIDwgMCkpIC0gMSkpIC0gMSkgPDwgMSkgKyAx
KSA6IH4oY2hhcikwKTsgfQoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhcgogICAgICBsb3dl
c3QoKSBub2V4Y2VwdCB7IHJldHVybiBtaW4oKTsgfQoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IGRpZ2l0cyA9IChzaXplb2YoY2hhcikgKiA4IC0gKChjaGFyKSgtMSkgPCAwKSk7CiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0czEwID0gKChzaXplb2YoY2hhcikgKiA4IC0gKChj
aGFyKSgtMSkgPCAwKSkgKiA2NDNMIC8gMjEzNik7CgogICAgICBzdGF0aWMgY29uc3RleHByIGlu
dCBtYXhfZGlnaXRzMTAgPSAwOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX3NpZ25l
ZCA9ICgoY2hhcikoLTEpIDwgMCk7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19pbnRl
Z2VyID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2V4YWN0ID0gdHJ1ZTsK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgcmFkaXggPSAyOwoKICAgICAgc3RhdGljIGNvbnN0
ZXhwciBjaGFyCiAgICAgIGVwc2lsb24oKSBub2V4Y2VwdCB7IHJldHVybiAwOyB9CgogICAgICBz
dGF0aWMgY29uc3RleHByIGNoYXIKICAgICAgcm91bmRfZXJyb3IoKSBub2V4Y2VwdCB7IHJldHVy
biAwOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtaW5fZXhwb25lbnQgPSAwOwogICAg
ICBzdGF0aWMgY29uc3RleHByIGludCBtaW5fZXhwb25lbnQxMCA9IDA7CiAgICAgIHN0YXRpYyBj
b25zdGV4cHIgaW50IG1heF9leHBvbmVudCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
IG1heF9leHBvbmVudDEwID0gMDsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfaW5m
aW5pdHkgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19xdWlldF9OYU4g
PSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19zaWduYWxpbmdfTmFOID0g
ZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXRfZGVub3JtX3N0eWxlIGhhc19kZW5v
cm0KICAgICAgID0gZGVub3JtX2Fic2VudDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhh
c19kZW5vcm1fbG9zcyA9IGZhbHNlOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwcgogICAgICBjaGFy
IGluZmluaXR5KCkgbm9leGNlcHQgeyByZXR1cm4gY2hhcigpOyB9CgogICAgICBzdGF0aWMgY29u
c3RleHByIGNoYXIKICAgICAgcXVpZXRfTmFOKCkgbm9leGNlcHQgeyByZXR1cm4gY2hhcigpOyB9
CgogICAgICBzdGF0aWMgY29uc3RleHByIGNoYXIKICAgICAgc2lnbmFsaW5nX05hTigpIG5vZXhj
ZXB0IHsgcmV0dXJuIGNoYXIoKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyCiAgICAg
IGRlbm9ybV9taW4oKSBub2V4Y2VwdCB7IHJldHVybiBzdGF0aWNfY2FzdDxjaGFyPigwKTsgfQoK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2llYzU1OSA9IGZhbHNlOwogICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNfYm91bmRlZCA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc19tb2R1bG8gPSAhaXNfc2lnbmVkOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIHRyYXBzID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHRpbnluZXNzX2Jl
Zm9yZSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0X3JvdW5kX3N0eWxlIHJv
dW5kX3N0eWxlCiAgICAgICA9IHJvdW5kX3Rvd2FyZF96ZXJvOwogICAgfTsKCgogIHRlbXBsYXRl
PD4KICAgIHN0cnVjdCBudW1lcmljX2xpbWl0czxzaWduZWQgY2hhcj4KICAgIHsKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsKCiAgICAgIHN0YXRpYyBj
b25zdGV4cHIgc2lnbmVkIGNoYXIKICAgICAgbWluKCkgbm9leGNlcHQgeyByZXR1cm4gLTEyNyAt
IDE7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgc2lnbmVkIGNoYXIKICAgICAgbWF4KCkgbm9l
eGNlcHQgeyByZXR1cm4gMTI3OyB9CgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaWduZWQgY2hh
cgogICAgICBsb3dlc3QoKSBub2V4Y2VwdCB7IHJldHVybiBtaW4oKTsgfQoKCiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50IGRpZ2l0cyA9IChzaXplb2Yoc2lnbmVkIGNoYXIpICogOCAtICgoc2ln
bmVkIGNoYXIpKC0xKSA8IDApKTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzMTAK
ICAgICAgID0gKChzaXplb2Yoc2lnbmVkIGNoYXIpICogOCAtICgoc2lnbmVkIGNoYXIpKC0xKSA8
IDApKSAqIDY0M0wgLyAyMTM2KTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9kaWdp
dHMxMCA9IDA7CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfc2lnbmVkID0gdHJ1ZTsK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2ludGVnZXIgPSB0cnVlOwogICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNfZXhhY3QgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHBy
IGludCByYWRpeCA9IDI7CgogICAgICBzdGF0aWMgY29uc3RleHByIHNpZ25lZCBjaGFyCiAgICAg
IGVwc2lsb24oKSBub2V4Y2VwdCB7IHJldHVybiAwOyB9CgogICAgICBzdGF0aWMgY29uc3RleHBy
IHNpZ25lZCBjaGFyCiAgICAgIHJvdW5kX2Vycm9yKCkgbm9leGNlcHQgeyByZXR1cm4gMDsgfQoK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWluX2V4cG9uZW50ID0gMDsKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQgbWluX2V4cG9uZW50MTAgPSAwOwogICAgICBzdGF0aWMgY29uc3RleHBy
IGludCBtYXhfZXhwb25lbnQgPSAwOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhfZXhw
b25lbnQxMCA9IDA7CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX2luZmluaXR5ID0g
ZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfcXVpZXRfTmFOID0gZmFsc2U7
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfc2lnbmFsaW5nX05hTiA9IGZhbHNlOwog
ICAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0X2Rlbm9ybV9zdHlsZSBoYXNfZGVub3JtCiAgICAg
ICA9IGRlbm9ybV9hYnNlbnQ7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfZGVub3Jt
X2xvc3MgPSBmYWxzZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgc2lnbmVkIGNoYXIKICAgICAg
aW5maW5pdHkoKSBub2V4Y2VwdCB7IHJldHVybiBzdGF0aWNfY2FzdDxzaWduZWQgY2hhcj4oMCk7
IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgc2lnbmVkIGNoYXIKICAgICAgcXVpZXRfTmFOKCkg
bm9leGNlcHQgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2lnbmVkIGNoYXI+KDApOyB9CgogICAgICBz
dGF0aWMgY29uc3RleHByIHNpZ25lZCBjaGFyCiAgICAgIHNpZ25hbGluZ19OYU4oKSBub2V4Y2Vw
dAogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxzaWduZWQgY2hhcj4oMCk7IH0KCiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgc2lnbmVkIGNoYXIKICAgICAgZGVub3JtX21pbigpIG5vZXhjZXB0CiAg
ICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PHNpZ25lZCBjaGFyPigwKTsgfQoKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzX2llYzU1OSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNfYm91bmRlZCA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19t
b2R1bG8gPSBmYWxzZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB0cmFwcyA9IHRydWU7
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB0aW55bmVzc19iZWZvcmUgPSBmYWxzZTsKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdF9yb3VuZF9zdHlsZSByb3VuZF9zdHlsZQogICAgICAg
PSByb3VuZF90b3dhcmRfemVybzsKICAgIH07CgoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgbnVt
ZXJpY19saW1pdHM8dW5zaWduZWQgY2hhcj4KICAgIHsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgY2hhcgogICAgICBtaW4oKSBub2V4Y2VwdCB7IHJldHVybiAwOyB9CgogICAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIGNoYXIKICAgICAgbWF4KCkgbm9leGNlcHQgeyByZXR1cm4gMTI3
ICogMlUgKyAxOyB9CgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBjaGFyCiAgICAg
IGxvd2VzdCgpIG5vZXhjZXB0IHsgcmV0dXJuIG1pbigpOyB9CgoKICAgICAgc3RhdGljIGNvbnN0
ZXhwciBpbnQgZGlnaXRzCiAgICAgICA9IChzaXplb2YodW5zaWduZWQgY2hhcikgKiA4IC0gKCh1
bnNpZ25lZCBjaGFyKSgtMSkgPCAwKSk7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0
czEwCiAgICAgICA9ICgoc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogOCAtICgodW5zaWduZWQgY2hh
cikoLTEpIDwgMCkpICogNjQzTCAvIDIxMzYpOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQg
bWF4X2RpZ2l0czEwID0gMDsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19zaWduZWQg
PSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2ludGVnZXIgPSB0cnVlOwog
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfZXhhY3QgPSB0cnVlOwogICAgICBzdGF0aWMg
Y29uc3RleHByIGludCByYWRpeCA9IDI7CgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IGNoYXIKICAgICAgZXBzaWxvbigpIG5vZXhjZXB0IHsgcmV0dXJuIDA7IH0KCiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgY2hhcgogICAgICByb3VuZF9lcnJvcigpIG5vZXhjZXB0IHsg
cmV0dXJuIDA7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1pbl9leHBvbmVudCA9IDA7
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1pbl9leHBvbmVudDEwID0gMDsKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBpbnQgbWF4X2V4cG9uZW50ID0gMDsKICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBpbnQgbWF4X2V4cG9uZW50MTAgPSAwOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhh
c19pbmZpbml0eSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX3F1aWV0
X05hTiA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX3NpZ25hbGluZ19O
YU4gPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdF9kZW5vcm1fc3R5bGUgaGFz
X2Rlbm9ybQogICAgICAgPSBkZW5vcm1fYWJzZW50OwogICAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaGFzX2Rlbm9ybV9sb3NzID0gZmFsc2U7CgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIGNoYXIKICAgICAgaW5maW5pdHkoKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPigwKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBjaGFyCiAgICAgIHF1aWV0X05hTigpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KDApOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IGNoYXIKICAgICAgc2lnbmFsaW5nX05hTigpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KDApOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIGNoYXIKICAgICAgZGVub3JtX21pbigpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KDApOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNfaWVjNTU5ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19ib3VuZGVk
ID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX21vZHVsbyA9IHRydWU7Cgog
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdHJhcHMgPSB0cnVlOwogICAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgdGlueW5lc3NfYmVmb3JlID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgZmxvYXRfcm91bmRfc3R5bGUgcm91bmRfc3R5bGUKICAgICAgID0gcm91bmRfdG93YXJkX3pl
cm87CiAgICB9OwoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IG51bWVyaWNfbGltaXRzPHdjaGFy
X3Q+CiAgICB7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19zcGVjaWFsaXplZCA9IHRy
dWU7CgogICAgICBzdGF0aWMgY29uc3RleHByIHdjaGFyX3QKICAgICAgbWluKCkgbm9leGNlcHQg
eyByZXR1cm4gKCgod2NoYXJfdCkoLTEpIDwgMCkgPyAtKCgod2NoYXJfdCkoLTEpIDwgMCkgPyAo
KCgoKHdjaGFyX3QpMSA8PCAoKHNpemVvZih3Y2hhcl90KSAqIDggLSAoKHdjaGFyX3QpKC0xKSA8
IDApKSAtIDEpKSAtIDEpIDw8IDEpICsgMSkgOiB+KHdjaGFyX3QpMCkgLSAxIDogKHdjaGFyX3Qp
MCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgd2NoYXJfdAogICAgICBtYXgoKSBub2V4Y2Vw
dCB7IHJldHVybiAoKCh3Y2hhcl90KSgtMSkgPCAwKSA/ICgoKCgod2NoYXJfdCkxIDw8ICgoc2l6
ZW9mKHdjaGFyX3QpICogOCAtICgod2NoYXJfdCkoLTEpIDwgMCkpIC0gMSkpIC0gMSkgPDwgMSkg
KyAxKSA6IH4od2NoYXJfdCkwKTsgfQoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgd2NoYXJfdAog
ICAgICBsb3dlc3QoKSBub2V4Y2VwdCB7IHJldHVybiBtaW4oKTsgfQoKCiAgICAgIHN0YXRpYyBj
b25zdGV4cHIgaW50IGRpZ2l0cyA9IChzaXplb2Yod2NoYXJfdCkgKiA4IC0gKCh3Y2hhcl90KSgt
MSkgPCAwKSk7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0czEwCiAgICAgICA9ICgo
c2l6ZW9mKHdjaGFyX3QpICogOCAtICgod2NoYXJfdCkoLTEpIDwgMCkpICogNjQzTCAvIDIxMzYp
OwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4X2RpZ2l0czEwID0gMDsKCiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc19zaWduZWQgPSAoKHdjaGFyX3QpKC0xKSA8IDApOwogICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfaW50ZWdlciA9IHRydWU7CiAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc19leGFjdCA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
IHJhZGl4ID0gMjsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgd2NoYXJfdAogICAgICBlcHNpbG9u
KCkgbm9leGNlcHQgeyByZXR1cm4gMDsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB3Y2hhcl90
CiAgICAgIHJvdW5kX2Vycm9yKCkgbm9leGNlcHQgeyByZXR1cm4gMDsgfQoKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQgbWluX2V4cG9uZW50ID0gMDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQgbWluX2V4cG9uZW50MTAgPSAwOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhfZXhw
b25lbnQgPSAwOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhfZXhwb25lbnQxMCA9IDA7
CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX2luZmluaXR5ID0gZmFsc2U7CiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfcXVpZXRfTmFOID0gZmFsc2U7CiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBoYXNfc2lnbmFsaW5nX05hTiA9IGZhbHNlOwogICAgICBzdGF0aWMg
Y29uc3RleHByIGZsb2F0X2Rlbm9ybV9zdHlsZSBoYXNfZGVub3JtCiAgICAgICA9IGRlbm9ybV9h
YnNlbnQ7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfZGVub3JtX2xvc3MgPSBmYWxz
ZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgd2NoYXJfdAogICAgICBpbmZpbml0eSgpIG5vZXhj
ZXB0IHsgcmV0dXJuIHdjaGFyX3QoKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB3Y2hhcl90
CiAgICAgIHF1aWV0X05hTigpIG5vZXhjZXB0IHsgcmV0dXJuIHdjaGFyX3QoKTsgfQoKICAgICAg
c3RhdGljIGNvbnN0ZXhwciB3Y2hhcl90CiAgICAgIHNpZ25hbGluZ19OYU4oKSBub2V4Y2VwdCB7
IHJldHVybiB3Y2hhcl90KCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgd2NoYXJfdAogICAg
ICBkZW5vcm1fbWluKCkgbm9leGNlcHQgeyByZXR1cm4gd2NoYXJfdCgpOyB9CgogICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNfaWVjNTU5ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc19ib3VuZGVkID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
X21vZHVsbyA9ICFpc19zaWduZWQ7CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdHJhcHMg
PSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdGlueW5lc3NfYmVmb3JlID0gZmFs
c2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXRfcm91bmRfc3R5bGUgcm91bmRfc3R5bGUK
ICAgICAgID0gcm91bmRfdG93YXJkX3plcm87CiAgICB9OwoKCgogIHRlbXBsYXRlPD4KICAgIHN0
cnVjdCBudW1lcmljX2xpbWl0czxjaGFyMTZfdD4KICAgIHsKICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hh
cjE2X3QKICAgICAgbWluKCkgbm9leGNlcHQgeyByZXR1cm4gKCgoY2hhcjE2X3QpKC0xKSA8IDAp
ID8gLSgoKGNoYXIxNl90KSgtMSkgPCAwKSA/ICgoKCgoY2hhcjE2X3QpMSA8PCAoKHNpemVvZihj
aGFyMTZfdCkgKiA4IC0gKChjaGFyMTZfdCkoLTEpIDwgMCkpIC0gMSkpIC0gMSkgPDwgMSkgKyAx
KSA6IH4oY2hhcjE2X3QpMCkgLSAxIDogKGNoYXIxNl90KTApOyB9CgogICAgICBzdGF0aWMgY29u
c3RleHByIGNoYXIxNl90CiAgICAgIG1heCgpIG5vZXhjZXB0IHsgcmV0dXJuICgoKGNoYXIxNl90
KSgtMSkgPCAwKSA/ICgoKCgoY2hhcjE2X3QpMSA8PCAoKHNpemVvZihjaGFyMTZfdCkgKiA4IC0g
KChjaGFyMTZfdCkoLTEpIDwgMCkpIC0gMSkpIC0gMSkgPDwgMSkgKyAxKSA6IH4oY2hhcjE2X3Qp
MCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhcjE2X3QKICAgICAgbG93ZXN0KCkgbm9l
eGNlcHQgeyByZXR1cm4gbWluKCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0
cyA9IChzaXplb2YoY2hhcjE2X3QpICogOCAtICgoY2hhcjE2X3QpKC0xKSA8IDApKTsKICAgICAg
c3RhdGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzMTAgPSAoKHNpemVvZihjaGFyMTZfdCkgKiA4IC0g
KChjaGFyMTZfdCkoLTEpIDwgMCkpICogNjQzTCAvIDIxMzYpOwogICAgICBzdGF0aWMgY29uc3Rl
eHByIGludCBtYXhfZGlnaXRzMTAgPSAwOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNf
c2lnbmVkID0gKChjaGFyMTZfdCkoLTEpIDwgMCk7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc19pbnRlZ2VyID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2V4YWN0
ID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgcmFkaXggPSAyOwoKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBjaGFyMTZfdAogICAgICBlcHNpbG9uKCkgbm9leGNlcHQgeyByZXR1cm4g
MDsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyMTZfdAogICAgICByb3VuZF9lcnJvcigp
IG5vZXhjZXB0IHsgcmV0dXJuIDA7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1pbl9l
eHBvbmVudCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1pbl9leHBvbmVudDEwID0g
MDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4X2V4cG9uZW50ID0gMDsKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBpbnQgbWF4X2V4cG9uZW50MTAgPSAwOwoKICAgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGhhc19pbmZpbml0eSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaGFzX3F1aWV0X05hTiA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFz
X3NpZ25hbGluZ19OYU4gPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdF9kZW5v
cm1fc3R5bGUgaGFzX2Rlbm9ybSA9IGRlbm9ybV9hYnNlbnQ7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBoYXNfZGVub3JtX2xvc3MgPSBmYWxzZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Y2hhcjE2X3QKICAgICAgaW5maW5pdHkoKSBub2V4Y2VwdCB7IHJldHVybiBjaGFyMTZfdCgpOyB9
CgogICAgICBzdGF0aWMgY29uc3RleHByIGNoYXIxNl90CiAgICAgIHF1aWV0X05hTigpIG5vZXhj
ZXB0IHsgcmV0dXJuIGNoYXIxNl90KCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhcjE2
X3QKICAgICAgc2lnbmFsaW5nX05hTigpIG5vZXhjZXB0IHsgcmV0dXJuIGNoYXIxNl90KCk7IH0K
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhcjE2X3QKICAgICAgZGVub3JtX21pbigpIG5vZXhj
ZXB0IHsgcmV0dXJuIGNoYXIxNl90KCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c19pZWM1NTkgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2JvdW5kZWQg
PSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfbW9kdWxvID0gIWlzX3NpZ25l
ZDsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB0cmFwcyA9IHRydWU7CiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCB0aW55bmVzc19iZWZvcmUgPSBmYWxzZTsKICAgICAgc3RhdGljIGNv
bnN0ZXhwciBmbG9hdF9yb3VuZF9zdHlsZSByb3VuZF9zdHlsZSA9IHJvdW5kX3Rvd2FyZF96ZXJv
OwogICAgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBudW1lcmljX2xpbWl0czxjaGFyMzJf
dD4KICAgIHsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX3NwZWNpYWxpemVkID0gdHJ1
ZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhcjMyX3QKICAgICAgbWluKCkgbm9leGNlcHQg
eyByZXR1cm4gKCgoY2hhcjMyX3QpKC0xKSA8IDApID8gLSgoKGNoYXIzMl90KSgtMSkgPCAwKSA/
ICgoKCgoY2hhcjMyX3QpMSA8PCAoKHNpemVvZihjaGFyMzJfdCkgKiA4IC0gKChjaGFyMzJfdCko
LTEpIDwgMCkpIC0gMSkpIC0gMSkgPDwgMSkgKyAxKSA6IH4oY2hhcjMyX3QpMCkgLSAxIDogKGNo
YXIzMl90KTApOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGNoYXIzMl90CiAgICAgIG1heCgp
IG5vZXhjZXB0IHsgcmV0dXJuICgoKGNoYXIzMl90KSgtMSkgPCAwKSA/ICgoKCgoY2hhcjMyX3Qp
MSA8PCAoKHNpemVvZihjaGFyMzJfdCkgKiA4IC0gKChjaGFyMzJfdCkoLTEpIDwgMCkpIC0gMSkp
IC0gMSkgPDwgMSkgKyAxKSA6IH4oY2hhcjMyX3QpMCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgY2hhcjMyX3QKICAgICAgbG93ZXN0KCkgbm9leGNlcHQgeyByZXR1cm4gbWluKCk7IH0KCiAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0cyA9IChzaXplb2YoY2hhcjMyX3QpICogOCAt
ICgoY2hhcjMyX3QpKC0xKSA8IDApKTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZGlnaXRz
MTAgPSAoKHNpemVvZihjaGFyMzJfdCkgKiA4IC0gKChjaGFyMzJfdCkoLTEpIDwgMCkpICogNjQz
TCAvIDIxMzYpOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhfZGlnaXRzMTAgPSAwOwog
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfc2lnbmVkID0gKChjaGFyMzJfdCkoLTEpIDwg
MCk7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19pbnRlZ2VyID0gdHJ1ZTsKICAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2V4YWN0ID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0
ZXhwciBpbnQgcmFkaXggPSAyOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyMzJfdAogICAg
ICBlcHNpbG9uKCkgbm9leGNlcHQgeyByZXR1cm4gMDsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBjaGFyMzJfdAogICAgICByb3VuZF9lcnJvcigpIG5vZXhjZXB0IHsgcmV0dXJuIDA7IH0KCiAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1pbl9leHBvbmVudCA9IDA7CiAgICAgIHN0YXRpYyBj
b25zdGV4cHIgaW50IG1pbl9leHBvbmVudDEwID0gMDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQgbWF4X2V4cG9uZW50ID0gMDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4X2V4cG9u
ZW50MTAgPSAwOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19pbmZpbml0eSA9IGZh
bHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX3F1aWV0X05hTiA9IGZhbHNlOwog
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX3NpZ25hbGluZ19OYU4gPSBmYWxzZTsKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdF9kZW5vcm1fc3R5bGUgaGFzX2Rlbm9ybSA9IGRlbm9y
bV9hYnNlbnQ7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfZGVub3JtX2xvc3MgPSBm
YWxzZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhcjMyX3QKICAgICAgaW5maW5pdHkoKSBu
b2V4Y2VwdCB7IHJldHVybiBjaGFyMzJfdCgpOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGNo
YXIzMl90CiAgICAgIHF1aWV0X05hTigpIG5vZXhjZXB0IHsgcmV0dXJuIGNoYXIzMl90KCk7IH0K
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhcjMyX3QKICAgICAgc2lnbmFsaW5nX05hTigpIG5v
ZXhjZXB0IHsgcmV0dXJuIGNoYXIzMl90KCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hh
cjMyX3QKICAgICAgZGVub3JtX21pbigpIG5vZXhjZXB0IHsgcmV0dXJuIGNoYXIzMl90KCk7IH0K
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19pZWM1NTkgPSBmYWxzZTsKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzX2JvdW5kZWQgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaXNfbW9kdWxvID0gIWlzX3NpZ25lZDsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCB0cmFwcyA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB0aW55bmVzc19i
ZWZvcmUgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdF9yb3VuZF9zdHlsZSBy
b3VuZF9zdHlsZSA9IHJvdW5kX3Rvd2FyZF96ZXJvOwogICAgfTsKCgoKICB0ZW1wbGF0ZTw+CiAg
ICBzdHJ1Y3QgbnVtZXJpY19saW1pdHM8c2hvcnQ+CiAgICB7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc19zcGVjaWFsaXplZCA9IHRydWU7CgogICAgICBzdGF0aWMgY29uc3RleHByIHNo
b3J0CiAgICAgIG1pbigpIG5vZXhjZXB0IHsgcmV0dXJuIC0zMjc2NyAtIDE7IH0KCiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgc2hvcnQKICAgICAgbWF4KCkgbm9leGNlcHQgeyByZXR1cm4gMzI3Njc7
IH0KCgogICAgICBzdGF0aWMgY29uc3RleHByIHNob3J0CiAgICAgIGxvd2VzdCgpIG5vZXhjZXB0
IHsgcmV0dXJuIG1pbigpOyB9CgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzID0g
KHNpemVvZihzaG9ydCkgKiA4IC0gKChzaG9ydCkoLTEpIDwgMCkpOwogICAgICBzdGF0aWMgY29u
c3RleHByIGludCBkaWdpdHMxMCA9ICgoc2l6ZW9mKHNob3J0KSAqIDggLSAoKHNob3J0KSgtMSkg
PCAwKSkgKiA2NDNMIC8gMjEzNik7CgogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhfZGln
aXRzMTAgPSAwOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX3NpZ25lZCA9IHRydWU7
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19pbnRlZ2VyID0gdHJ1ZTsKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzX2V4YWN0ID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBpbnQgcmFkaXggPSAyOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaG9ydAogICAgICBlcHNp
bG9uKCkgbm9leGNlcHQgeyByZXR1cm4gMDsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaG9y
dAogICAgICByb3VuZF9lcnJvcigpIG5vZXhjZXB0IHsgcmV0dXJuIDA7IH0KCiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50IG1pbl9leHBvbmVudCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IG1pbl9leHBvbmVudDEwID0gMDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4X2V4
cG9uZW50ID0gMDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4X2V4cG9uZW50MTAgPSAw
OwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19pbmZpbml0eSA9IGZhbHNlOwogICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX3F1aWV0X05hTiA9IGZhbHNlOwogICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaGFzX3NpZ25hbGluZ19OYU4gPSBmYWxzZTsKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBmbG9hdF9kZW5vcm1fc3R5bGUgaGFzX2Rlbm9ybQogICAgICAgPSBkZW5vcm1f
YWJzZW50OwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX2Rlbm9ybV9sb3NzID0gZmFs
c2U7CgogICAgICBzdGF0aWMgY29uc3RleHByIHNob3J0CiAgICAgIGluZmluaXR5KCkgbm9leGNl
cHQgeyByZXR1cm4gc2hvcnQoKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaG9ydAogICAg
ICBxdWlldF9OYU4oKSBub2V4Y2VwdCB7IHJldHVybiBzaG9ydCgpOyB9CgogICAgICBzdGF0aWMg
Y29uc3RleHByIHNob3J0CiAgICAgIHNpZ25hbGluZ19OYU4oKSBub2V4Y2VwdCB7IHJldHVybiBz
aG9ydCgpOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIHNob3J0CiAgICAgIGRlbm9ybV9taW4o
KSBub2V4Y2VwdCB7IHJldHVybiBzaG9ydCgpOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaXNfaWVjNTU5ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19ib3Vu
ZGVkID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX21vZHVsbyA9IGZhbHNl
OwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHRyYXBzID0gdHJ1ZTsKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIHRpbnluZXNzX2JlZm9yZSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29u
c3RleHByIGZsb2F0X3JvdW5kX3N0eWxlIHJvdW5kX3N0eWxlCiAgICAgICA9IHJvdW5kX3Rvd2Fy
ZF96ZXJvOwogICAgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBudW1lcmljX2xpbWl0czx1
bnNpZ25lZCBzaG9ydD4KICAgIHsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX3NwZWNp
YWxpemVkID0gdHJ1ZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc2hvcnQKICAg
ICAgbWluKCkgbm9leGNlcHQgeyByZXR1cm4gMDsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBzaG9ydAogICAgICBtYXgoKSBub2V4Y2VwdCB7IHJldHVybiAzMjc2NyAqIDJVICsg
MTsgfQoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc2hvcnQKICAgICAgbG93ZXN0
KCkgbm9leGNlcHQgeyByZXR1cm4gbWluKCk7IH0KCgogICAgICBzdGF0aWMgY29uc3RleHByIGlu
dCBkaWdpdHMKICAgICAgID0gKHNpemVvZih1bnNpZ25lZCBzaG9ydCkgKiA4IC0gKCh1bnNpZ25l
ZCBzaG9ydCkoLTEpIDwgMCkpOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBkaWdpdHMxMAog
ICAgICAgPSAoKHNpemVvZih1bnNpZ25lZCBzaG9ydCkgKiA4IC0gKCh1bnNpZ25lZCBzaG9ydCko
LTEpIDwgMCkpICogNjQzTCAvIDIxMzYpOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4
X2RpZ2l0czEwID0gMDsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19zaWduZWQgPSBm
YWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2ludGVnZXIgPSB0cnVlOwogICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfZXhhY3QgPSB0cnVlOwogICAgICBzdGF0aWMgY29u
c3RleHByIGludCByYWRpeCA9IDI7CgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHNo
b3J0CiAgICAgIGVwc2lsb24oKSBub2V4Y2VwdCB7IHJldHVybiAwOyB9CgogICAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIHNob3J0CiAgICAgIHJvdW5kX2Vycm9yKCkgbm9leGNlcHQgeyBy
ZXR1cm4gMDsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWluX2V4cG9uZW50ID0gMDsK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWluX2V4cG9uZW50MTAgPSAwOwogICAgICBzdGF0
aWMgY29uc3RleHByIGludCBtYXhfZXhwb25lbnQgPSAwOwogICAgICBzdGF0aWMgY29uc3RleHBy
IGludCBtYXhfZXhwb25lbnQxMCA9IDA7CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFz
X2luZmluaXR5ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfcXVpZXRf
TmFOID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfc2lnbmFsaW5nX05h
TiA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0X2Rlbm9ybV9zdHlsZSBoYXNf
ZGVub3JtCiAgICAgICA9IGRlbm9ybV9hYnNlbnQ7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBoYXNfZGVub3JtX2xvc3MgPSBmYWxzZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgc2hvcnQKICAgICAgaW5maW5pdHkoKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBzaG9ydD4oMCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgc2hvcnQKICAgICAgcXVpZXRfTmFOKCkgbm9leGNlcHQKICAgICAgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KDApOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIHNob3J0CiAgICAgIHNpZ25hbGluZ19OYU4oKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oMCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgc2hvcnQKICAgICAgZGVub3JtX21pbigpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJu
IHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0PigwKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzX2llYzU1OSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNf
Ym91bmRlZCA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19tb2R1bG8gPSB0
cnVlOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHRyYXBzID0gdHJ1ZTsKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIHRpbnluZXNzX2JlZm9yZSA9IGZhbHNlOwogICAgICBzdGF0aWMg
Y29uc3RleHByIGZsb2F0X3JvdW5kX3N0eWxlIHJvdW5kX3N0eWxlCiAgICAgICA9IHJvdW5kX3Rv
d2FyZF96ZXJvOwogICAgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBudW1lcmljX2xpbWl0
czxpbnQ+CiAgICB7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19zcGVjaWFsaXplZCA9
IHRydWU7CgogICAgICBzdGF0aWMgY29uc3RleHByIGludAogICAgICBtaW4oKSBub2V4Y2VwdCB7
IHJldHVybiAtMjE0NzQ4MzY0NyAtIDE7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50CiAg
ICAgIG1heCgpIG5vZXhjZXB0IHsgcmV0dXJuIDIxNDc0ODM2NDc7IH0KCgogICAgICBzdGF0aWMg
Y29uc3RleHByIGludAogICAgICBsb3dlc3QoKSBub2V4Y2VwdCB7IHJldHVybiBtaW4oKTsgfQoK
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0cyA9IChzaXplb2YoaW50KSAqIDggLSAo
KGludCkoLTEpIDwgMCkpOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBkaWdpdHMxMCA9ICgo
c2l6ZW9mKGludCkgKiA4IC0gKChpbnQpKC0xKSA8IDApKSAqIDY0M0wgLyAyMTM2KTsKCiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9kaWdpdHMxMCA9IDA7CgogICAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNfc2lnbmVkID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzX2ludGVnZXIgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfZXhhY3Qg
PSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCByYWRpeCA9IDI7CgogICAgICBzdGF0
aWMgY29uc3RleHByIGludAogICAgICBlcHNpbG9uKCkgbm9leGNlcHQgeyByZXR1cm4gMDsgfQoK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQKICAgICAgcm91bmRfZXJyb3IoKSBub2V4Y2VwdCB7
IHJldHVybiAwOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtaW5fZXhwb25lbnQgPSAw
OwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtaW5fZXhwb25lbnQxMCA9IDA7CiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50IG1heF9leHBvbmVudCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50IG1heF9leHBvbmVudDEwID0gMDsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBo
YXNfaW5maW5pdHkgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19xdWll
dF9OYU4gPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19zaWduYWxpbmdf
TmFOID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXRfZGVub3JtX3N0eWxlIGhh
c19kZW5vcm0KICAgICAgID0gZGVub3JtX2Fic2VudDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGhhc19kZW5vcm1fbG9zcyA9IGZhbHNlOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQK
ICAgICAgaW5maW5pdHkoKSBub2V4Y2VwdCB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KDApOyB9
CgogICAgICBzdGF0aWMgY29uc3RleHByIGludAogICAgICBxdWlldF9OYU4oKSBub2V4Y2VwdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KDApOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGlu
dAogICAgICBzaWduYWxpbmdfTmFOKCkgbm9leGNlcHQgeyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PigwKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQKICAgICAgZGVub3JtX21pbigpIG5v
ZXhjZXB0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oMCk7IH0KCiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc19pZWM1NTkgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzX2JvdW5kZWQgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfbW9kdWxv
ID0gZmFsc2U7CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdHJhcHMgPSB0cnVlOwogICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgdGlueW5lc3NfYmVmb3JlID0gZmFsc2U7CiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgZmxvYXRfcm91bmRfc3R5bGUgcm91bmRfc3R5bGUKICAgICAgID0gcm91
bmRfdG93YXJkX3plcm87CiAgICB9OwoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IG51bWVyaWNf
bGltaXRzPHVuc2lnbmVkIGludD4KICAgIHsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
X3NwZWNpYWxpemVkID0gdHJ1ZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaW50
CiAgICAgIG1pbigpIG5vZXhjZXB0IHsgcmV0dXJuIDA7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgaW50CiAgICAgIG1heCgpIG5vZXhjZXB0IHsgcmV0dXJuIDIxNDc0ODM2NDcg
KiAyVSArIDE7IH0KCgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGludAogICAgICBs
b3dlc3QoKSBub2V4Y2VwdCB7IHJldHVybiBtaW4oKTsgfQoKCiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50IGRpZ2l0cwogICAgICAgPSAoc2l6ZW9mKHVuc2lnbmVkIGludCkgKiA4IC0gKCh1bnNp
Z25lZCBpbnQpKC0xKSA8IDApKTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzMTAK
ICAgICAgID0gKChzaXplb2YodW5zaWduZWQgaW50KSAqIDggLSAoKHVuc2lnbmVkIGludCkoLTEp
IDwgMCkpICogNjQzTCAvIDIxMzYpOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4X2Rp
Z2l0czEwID0gMDsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19zaWduZWQgPSBmYWxz
ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2ludGVnZXIgPSB0cnVlOwogICAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgaXNfZXhhY3QgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3Rl
eHByIGludCByYWRpeCA9IDI7CgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGludAog
ICAgICBlcHNpbG9uKCkgbm9leGNlcHQgeyByZXR1cm4gMDsgfQoKICAgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBpbnQKICAgICAgcm91bmRfZXJyb3IoKSBub2V4Y2VwdCB7IHJldHVybiAw
OyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtaW5fZXhwb25lbnQgPSAwOwogICAgICBz
dGF0aWMgY29uc3RleHByIGludCBtaW5fZXhwb25lbnQxMCA9IDA7CiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgaW50IG1heF9leHBvbmVudCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1h
eF9leHBvbmVudDEwID0gMDsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfaW5maW5p
dHkgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19xdWlldF9OYU4gPSBm
YWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19zaWduYWxpbmdfTmFOID0gZmFs
c2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXRfZGVub3JtX3N0eWxlIGhhc19kZW5vcm0K
ICAgICAgID0gZGVub3JtX2Fic2VudDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19k
ZW5vcm1fbG9zcyA9IGZhbHNlOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbnQK
ICAgICAgaW5maW5pdHkoKSBub2V4Y2VwdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBp
bnQ+KDApOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGludAogICAgICBxdWll
dF9OYU4oKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+
KDApOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGludAogICAgICBzaWduYWxp
bmdfTmFOKCkgbm9leGNlcHQKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50
PigwKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbnQKICAgICAgZGVub3Jt
X21pbigpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4o
MCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19pZWM1NTkgPSBmYWxzZTsKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2JvdW5kZWQgPSB0cnVlOwogICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNfbW9kdWxvID0gdHJ1ZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCB0cmFwcyA9IHRydWU7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB0aW55bmVzc19i
ZWZvcmUgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdF9yb3VuZF9zdHlsZSBy
b3VuZF9zdHlsZQogICAgICAgPSByb3VuZF90b3dhcmRfemVybzsKICAgIH07CgoKICB0ZW1wbGF0
ZTw+CiAgICBzdHJ1Y3QgbnVtZXJpY19saW1pdHM8bG9uZz4KICAgIHsKICAgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgbG9uZwogICAgICBtaW4oKSBub2V4Y2VwdCB7IHJldHVybiAtMjE0NzQ4MzY0N0wgLSAxOyB9
CgogICAgICBzdGF0aWMgY29uc3RleHByIGxvbmcKICAgICAgbWF4KCkgbm9leGNlcHQgeyByZXR1
cm4gMjE0NzQ4MzY0N0w7IH0KCgogICAgICBzdGF0aWMgY29uc3RleHByIGxvbmcKICAgICAgbG93
ZXN0KCkgbm9leGNlcHQgeyByZXR1cm4gbWluKCk7IH0KCgogICAgICBzdGF0aWMgY29uc3RleHBy
IGludCBkaWdpdHMgPSAoc2l6ZW9mKGxvbmcpICogOCAtICgobG9uZykoLTEpIDwgMCkpOwogICAg
ICBzdGF0aWMgY29uc3RleHByIGludCBkaWdpdHMxMCA9ICgoc2l6ZW9mKGxvbmcpICogOCAtICgo
bG9uZykoLTEpIDwgMCkpICogNjQzTCAvIDIxMzYpOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQgbWF4X2RpZ2l0czEwID0gMDsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19zaWdu
ZWQgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfaW50ZWdlciA9IHRydWU7
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19leGFjdCA9IHRydWU7CiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50IHJhZGl4ID0gMjsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgbG9uZwog
ICAgICBlcHNpbG9uKCkgbm9leGNlcHQgeyByZXR1cm4gMDsgfQoKICAgICAgc3RhdGljIGNvbnN0
ZXhwciBsb25nCiAgICAgIHJvdW5kX2Vycm9yKCkgbm9leGNlcHQgeyByZXR1cm4gMDsgfQoKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWluX2V4cG9uZW50ID0gMDsKICAgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQgbWluX2V4cG9uZW50MTAgPSAwOwogICAgICBzdGF0aWMgY29uc3RleHByIGlu
dCBtYXhfZXhwb25lbnQgPSAwOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhfZXhwb25l
bnQxMCA9IDA7CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX2luZmluaXR5ID0gZmFs
c2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfcXVpZXRfTmFOID0gZmFsc2U7CiAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfc2lnbmFsaW5nX05hTiA9IGZhbHNlOwogICAg
ICBzdGF0aWMgY29uc3RleHByIGZsb2F0X2Rlbm9ybV9zdHlsZSBoYXNfZGVub3JtCiAgICAgICA9
IGRlbm9ybV9hYnNlbnQ7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfZGVub3JtX2xv
c3MgPSBmYWxzZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgbG9uZwogICAgICBpbmZpbml0eSgp
IG5vZXhjZXB0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmc+KDApOyB9CgogICAgICBzdGF0aWMg
Y29uc3RleHByIGxvbmcKICAgICAgcXVpZXRfTmFOKCkgbm9leGNlcHQgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8bG9uZz4oMCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgbG9uZwogICAgICBzaWdu
YWxpbmdfTmFOKCkgbm9leGNlcHQgeyByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZz4oMCk7IH0KCiAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgbG9uZwogICAgICBkZW5vcm1fbWluKCkgbm9leGNlcHQgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZz4oMCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc19pZWM1NTkgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2JvdW5k
ZWQgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfbW9kdWxvID0gZmFsc2U7
CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdHJhcHMgPSB0cnVlOwogICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgdGlueW5lc3NfYmVmb3JlID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgZmxvYXRfcm91bmRfc3R5bGUgcm91bmRfc3R5bGUKICAgICAgID0gcm91bmRfdG93YXJk
X3plcm87CiAgICB9OwoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IG51bWVyaWNfbGltaXRzPHVu
c2lnbmVkIGxvbmc+CiAgICB7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19zcGVjaWFs
aXplZCA9IHRydWU7CgogICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGxvbmcKICAgICAg
bWluKCkgbm9leGNlcHQgeyByZXR1cm4gMDsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBsb25nCiAgICAgIG1heCgpIG5vZXhjZXB0IHsgcmV0dXJuIDIxNDc0ODM2NDdMICogMlVM
ICsgMTsgfQoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbG9uZwogICAgICBsb3dl
c3QoKSBub2V4Y2VwdCB7IHJldHVybiBtaW4oKTsgfQoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IGRpZ2l0cwogICAgICAgPSAoc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogOCAtICgodW5zaWdu
ZWQgbG9uZykoLTEpIDwgMCkpOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBkaWdpdHMxMAog
ICAgICAgPSAoKHNpemVvZih1bnNpZ25lZCBsb25nKSAqIDggLSAoKHVuc2lnbmVkIGxvbmcpKC0x
KSA8IDApKSAqIDY0M0wgLyAyMTM2KTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9k
aWdpdHMxMCA9IDA7CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfc2lnbmVkID0gZmFs
c2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19pbnRlZ2VyID0gdHJ1ZTsKICAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2V4YWN0ID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0
ZXhwciBpbnQgcmFkaXggPSAyOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBsb25n
CiAgICAgIGVwc2lsb24oKSBub2V4Y2VwdCB7IHJldHVybiAwOyB9CgogICAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIGxvbmcKICAgICAgcm91bmRfZXJyb3IoKSBub2V4Y2VwdCB7IHJldHVy
biAwOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtaW5fZXhwb25lbnQgPSAwOwogICAg
ICBzdGF0aWMgY29uc3RleHByIGludCBtaW5fZXhwb25lbnQxMCA9IDA7CiAgICAgIHN0YXRpYyBj
b25zdGV4cHIgaW50IG1heF9leHBvbmVudCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
IG1heF9leHBvbmVudDEwID0gMDsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfaW5m
aW5pdHkgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19xdWlldF9OYU4g
PSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19zaWduYWxpbmdfTmFOID0g
ZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXRfZGVub3JtX3N0eWxlIGhhc19kZW5v
cm0KICAgICAgID0gZGVub3JtX2Fic2VudDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhh
c19kZW5vcm1fbG9zcyA9IGZhbHNlOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBs
b25nCiAgICAgIGluZmluaXR5KCkgbm9leGNlcHQKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZz4oMCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbG9u
ZwogICAgICBxdWlldF9OYU4oKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nPigwKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBsb25n
CiAgICAgIHNpZ25hbGluZ19OYU4oKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nPigwKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBs
b25nCiAgICAgIGRlbm9ybV9taW4oKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nPigwKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2ll
YzU1OSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfYm91bmRlZCA9IHRy
dWU7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19tb2R1bG8gPSB0cnVlOwoKICAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIHRyYXBzID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIHRpbnluZXNzX2JlZm9yZSA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGZs
b2F0X3JvdW5kX3N0eWxlIHJvdW5kX3N0eWxlCiAgICAgICA9IHJvdW5kX3Rvd2FyZF96ZXJvOwog
ICAgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBudW1lcmljX2xpbWl0czxsb25nIGxvbmc+
CiAgICB7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19zcGVjaWFsaXplZCA9IHRydWU7
CgogICAgICBzdGF0aWMgY29uc3RleHByIGxvbmcgbG9uZwogICAgICBtaW4oKSBub2V4Y2VwdCB7
IHJldHVybiAtOTIyMzM3MjAzNjg1NDc3NTgwN0xMIC0gMTsgfQoKICAgICAgc3RhdGljIGNvbnN0
ZXhwciBsb25nIGxvbmcKICAgICAgbWF4KCkgbm9leGNlcHQgeyByZXR1cm4gOTIyMzM3MjAzNjg1
NDc3NTgwN0xMOyB9CgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBsb25nIGxvbmcKICAgICAgbG93
ZXN0KCkgbm9leGNlcHQgeyByZXR1cm4gbWluKCk7IH0KCgogICAgICBzdGF0aWMgY29uc3RleHBy
IGludCBkaWdpdHMKICAgICAgID0gKHNpemVvZihsb25nIGxvbmcpICogOCAtICgobG9uZyBsb25n
KSgtMSkgPCAwKSk7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0czEwCiAgICAgICA9
ICgoc2l6ZW9mKGxvbmcgbG9uZykgKiA4IC0gKChsb25nIGxvbmcpKC0xKSA8IDApKSAqIDY0M0wg
LyAyMTM2KTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9kaWdpdHMxMCA9IDA7Cgog
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfc2lnbmVkID0gdHJ1ZTsKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzX2ludGVnZXIgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNfZXhhY3QgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCByYWRpeCA9
IDI7CgogICAgICBzdGF0aWMgY29uc3RleHByIGxvbmcgbG9uZwogICAgICBlcHNpbG9uKCkgbm9l
eGNlcHQgeyByZXR1cm4gMDsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBsb25nIGxvbmcKICAg
ICAgcm91bmRfZXJyb3IoKSBub2V4Y2VwdCB7IHJldHVybiAwOyB9CgogICAgICBzdGF0aWMgY29u
c3RleHByIGludCBtaW5fZXhwb25lbnQgPSAwOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBt
aW5fZXhwb25lbnQxMCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9leHBvbmVu
dCA9IDA7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9leHBvbmVudDEwID0gMDsKCiAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfaW5maW5pdHkgPSBmYWxzZTsKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGhhc19xdWlldF9OYU4gPSBmYWxzZTsKICAgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGhhc19zaWduYWxpbmdfTmFOID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgZmxvYXRfZGVub3JtX3N0eWxlIGhhc19kZW5vcm0KICAgICAgID0gZGVub3JtX2Fic2Vu
dDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19kZW5vcm1fbG9zcyA9IGZhbHNlOwoK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBsb25nIGxvbmcKICAgICAgaW5maW5pdHkoKSBub2V4Y2Vw
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KDApOyB9CgogICAgICBzdGF0aWMgY29u
c3RleHByIGxvbmcgbG9uZwogICAgICBxdWlldF9OYU4oKSBub2V4Y2VwdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxsb25nIGxvbmc+KDApOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGxvbmcgbG9u
ZwogICAgICBzaWduYWxpbmdfTmFOKCkgbm9leGNlcHQKICAgICAgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8bG9uZyBsb25nPigwKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBsb25nIGxvbmcKICAg
ICAgZGVub3JtX21pbigpIG5vZXhjZXB0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4o
MCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19pZWM1NTkgPSBmYWxzZTsKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2JvdW5kZWQgPSB0cnVlOwogICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNfbW9kdWxvID0gZmFsc2U7CgogICAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgdHJhcHMgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdGlueW5lc3Nf
YmVmb3JlID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXRfcm91bmRfc3R5bGUg
cm91bmRfc3R5bGUKICAgICAgID0gcm91bmRfdG93YXJkX3plcm87CiAgICB9OwoKCiAgdGVtcGxh
dGU8PgogICAgc3RydWN0IG51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGxvbmcgbG9uZz4KICAgIHsK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsKCiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbG9uZyBsb25nCiAgICAgIG1pbigpIG5vZXhjZXB0
IHsgcmV0dXJuIDA7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbG9uZyBsb25n
CiAgICAgIG1heCgpIG5vZXhjZXB0IHsgcmV0dXJuIDkyMjMzNzIwMzY4NTQ3NzU4MDdMTCAqIDJV
TEwgKyAxOyB9CgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBsb25nIGxvbmcKICAg
ICAgbG93ZXN0KCkgbm9leGNlcHQgeyByZXR1cm4gbWluKCk7IH0KCgogICAgICBzdGF0aWMgY29u
c3RleHByIGludCBkaWdpdHMKICAgICAgID0gKHNpemVvZih1bnNpZ25lZCBsb25nIGxvbmcpICog
OCAtICgodW5zaWduZWQgbG9uZyBsb25nKSgtMSkgPCAwKSk7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50IGRpZ2l0czEwCiAgICAgICA9ICgoc2l6ZW9mKHVuc2lnbmVkIGxvbmcgbG9uZykgKiA4
IC0gKCh1bnNpZ25lZCBsb25nIGxvbmcpKC0xKSA8IDApKSAqIDY0M0wgLyAyMTM2KTsKCiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9kaWdpdHMxMCA9IDA7CgogICAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNfc2lnbmVkID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc19pbnRlZ2VyID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2V4YWN0
ID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgcmFkaXggPSAyOwoKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBsb25nIGxvbmcKICAgICAgZXBzaWxvbigpIG5vZXhjZXB0
IHsgcmV0dXJuIDA7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbG9uZyBsb25n
CiAgICAgIHJvdW5kX2Vycm9yKCkgbm9leGNlcHQgeyByZXR1cm4gMDsgfQoKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQgbWluX2V4cG9uZW50ID0gMDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQgbWluX2V4cG9uZW50MTAgPSAwOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhfZXhw
b25lbnQgPSAwOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhfZXhwb25lbnQxMCA9IDA7
CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX2luZmluaXR5ID0gZmFsc2U7CiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfcXVpZXRfTmFOID0gZmFsc2U7CiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBoYXNfc2lnbmFsaW5nX05hTiA9IGZhbHNlOwogICAgICBzdGF0aWMg
Y29uc3RleHByIGZsb2F0X2Rlbm9ybV9zdHlsZSBoYXNfZGVub3JtCiAgICAgICA9IGRlbm9ybV9h
YnNlbnQ7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfZGVub3JtX2xvc3MgPSBmYWxz
ZTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbG9uZyBsb25nCiAgICAgIGluZmlu
aXR5KCkgbm9leGNlcHQKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBs
b25nPigwKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBsb25nIGxvbmcKICAg
ICAgcXVpZXRfTmFOKCkgbm9leGNlcHQKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZyBsb25nPigwKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBsb25n
IGxvbmcKICAgICAgc2lnbmFsaW5nX05hTigpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oMCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgbG9uZyBsb25nCiAgICAgIGRlbm9ybV9taW4oKSBub2V4Y2VwdAogICAgICB7IHJl
dHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KDApOyB9CgogICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNfaWVjNTU5ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc19ib3VuZGVkID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX21v
ZHVsbyA9IHRydWU7CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdHJhcHMgPSB0cnVlOwog
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdGlueW5lc3NfYmVmb3JlID0gZmFsc2U7CiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgZmxvYXRfcm91bmRfc3R5bGUgcm91bmRfc3R5bGUKICAgICAgID0g
cm91bmRfdG93YXJkX3plcm87CiAgICB9OwojIDE1NTIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9saW1pdHMiIDMKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1
Y3QgbnVtZXJpY19saW1pdHM8ZmxvYXQ+CiAgICB7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc19zcGVjaWFsaXplZCA9IHRydWU7CgogICAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0CiAg
ICAgIG1pbigpIG5vZXhjZXB0IHsgcmV0dXJuIDEuMTc1NDk0MzUwODIyMjg3NWUtMzhGOyB9Cgog
ICAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0CiAgICAgIG1heCgpIG5vZXhjZXB0IHsgcmV0dXJu
IDMuNDAyODIzNDY2Mzg1Mjg4NmUrMzhGOyB9CgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9h
dAogICAgICBsb3dlc3QoKSBub2V4Y2VwdCB7IHJldHVybiAtMy40MDI4MjM0NjYzODUyODg2ZSsz
OEY7IH0KCgogICAgICBzdGF0aWMgY29uc3RleHByIGludCBkaWdpdHMgPSAyNDsKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzMTAgPSA2OwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQgbWF4X2RpZ2l0czEwCiAgPSAoMiArICgyNCkgKiA2NDNMIC8gMjEzNik7CgogICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNfc2lnbmVkID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzX2ludGVnZXIgPSBmYWxzZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
X2V4YWN0ID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHJhZGl4ID0gMjsKCiAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQKICAgICAgZXBzaWxvbigpIG5vZXhjZXB0IHsgcmV0
dXJuIDEuMTkyMDkyODk1NTA3ODEyNWUtN0Y7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgZmxv
YXQKICAgICAgcm91bmRfZXJyb3IoKSBub2V4Y2VwdCB7IHJldHVybiAwLjVGOyB9CgogICAgICBz
dGF0aWMgY29uc3RleHByIGludCBtaW5fZXhwb25lbnQgPSAoLTEyNSk7CiAgICAgIHN0YXRpYyBj
b25zdGV4cHIgaW50IG1pbl9leHBvbmVudDEwID0gKC0zNyk7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50IG1heF9leHBvbmVudCA9IDEyODsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4
X2V4cG9uZW50MTAgPSAzODsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfaW5maW5p
dHkgPSAxOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX3F1aWV0X05hTiA9IDE7CiAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfc2lnbmFsaW5nX05hTiA9IGhhc19xdWlldF9O
YU47CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXRfZGVub3JtX3N0eWxlIGhhc19kZW5vcm0K
ID0gYm9vbCgxKSA/IGRlbm9ybV9wcmVzZW50IDogZGVub3JtX2Fic2VudDsKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGhhc19kZW5vcm1fbG9zcwogICAgICAgPSBmYWxzZTsKCiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgZmxvYXQKICAgICAgaW5maW5pdHkoKSBub2V4Y2VwdCB7IHJldHVybiBf
X2J1aWx0aW5faHVnZV92YWxmKCk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQKICAg
ICAgcXVpZXRfTmFOKCkgbm9leGNlcHQgeyByZXR1cm4gX19idWlsdGluX25hbmYoIiIpOyB9Cgog
ICAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0CiAgICAgIHNpZ25hbGluZ19OYU4oKSBub2V4Y2Vw
dCB7IHJldHVybiBfX2J1aWx0aW5fbmFuc2YoIiIpOyB9CgogICAgICBzdGF0aWMgY29uc3RleHBy
IGZsb2F0CiAgICAgIGRlbm9ybV9taW4oKSBub2V4Y2VwdCB7IHJldHVybiAxLjQwMTI5ODQ2NDMy
NDgxNzFlLTQ1RjsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2llYzU1OQogPSBo
YXNfaW5maW5pdHkgJiYgaGFzX3F1aWV0X05hTiAmJiBoYXNfZGVub3JtID09IGRlbm9ybV9wcmVz
ZW50OwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfYm91bmRlZCA9IHRydWU7CiAgICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19tb2R1bG8gPSBmYWxzZTsKCiAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCB0cmFwcyA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
dGlueW5lc3NfYmVmb3JlCiAgICAgICA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGZs
b2F0X3JvdW5kX3N0eWxlIHJvdW5kX3N0eWxlCiAgICAgICA9IHJvdW5kX3RvX25lYXJlc3Q7CiAg
ICB9OwoKCgoKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBudW1lcmljX2xpbWl0czxkb3VibGU+
CiAgICB7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19zcGVjaWFsaXplZCA9IHRydWU7
CgogICAgICBzdGF0aWMgY29uc3RleHByIGRvdWJsZQogICAgICBtaW4oKSBub2V4Y2VwdCB7IHJl
dHVybiBkb3VibGUoMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDhMKTsgfQoKICAgICAgc3RhdGljIGNv
bnN0ZXhwciBkb3VibGUKICAgICAgbWF4KCkgbm9leGNlcHQgeyByZXR1cm4gZG91YmxlKDEuNzk3
NjkzMTM0ODYyMzE1N2UrMzA4TCk7IH0KCgogICAgICBzdGF0aWMgY29uc3RleHByIGRvdWJsZQog
ICAgICBsb3dlc3QoKSBub2V4Y2VwdCB7IHJldHVybiAtZG91YmxlKDEuNzk3NjkzMTM0ODYyMzE1
N2UrMzA4TCk7IH0KCgogICAgICBzdGF0aWMgY29uc3RleHByIGludCBkaWdpdHMgPSA1MzsKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzMTAgPSAxNTsKCiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgaW50IG1heF9kaWdpdHMxMAogID0gKDIgKyAoNTMpICogNjQzTCAvIDIxMzYpOwoKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX3NpZ25lZCA9IHRydWU7CiAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc19pbnRlZ2VyID0gZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc19leGFjdCA9IGZhbHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGludCByYWRpeCA9
IDI7CgogICAgICBzdGF0aWMgY29uc3RleHByIGRvdWJsZQogICAgICBlcHNpbG9uKCkgbm9leGNl
cHQgeyByZXR1cm4gZG91YmxlKDIuMjIwNDQ2MDQ5MjUwMzEzMWUtMTZMKTsgfQoKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBkb3VibGUKICAgICAgcm91bmRfZXJyb3IoKSBub2V4Y2VwdCB7IHJldHVy
biAwLjU7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1pbl9leHBvbmVudCA9ICgtMTAy
MSk7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1pbl9leHBvbmVudDEwID0gKC0zMDcpOwog
ICAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhfZXhwb25lbnQgPSAxMDI0OwogICAgICBzdGF0
aWMgY29uc3RleHByIGludCBtYXhfZXhwb25lbnQxMCA9IDMwODsKCiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBoYXNfaW5maW5pdHkgPSAxOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aGFzX3F1aWV0X05hTiA9IDE7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfc2lnbmFs
aW5nX05hTiA9IGhhc19xdWlldF9OYU47CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXRfZGVu
b3JtX3N0eWxlIGhhc19kZW5vcm0KID0gYm9vbCgxKSA/IGRlbm9ybV9wcmVzZW50IDogZGVub3Jt
X2Fic2VudDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19kZW5vcm1fbG9zcwogICAg
ICAgID0gZmFsc2U7CgogICAgICBzdGF0aWMgY29uc3RleHByIGRvdWJsZQogICAgICBpbmZpbml0
eSgpIG5vZXhjZXB0IHsgcmV0dXJuIF9fYnVpbHRpbl9odWdlX3ZhbCgpOyB9CgogICAgICBzdGF0
aWMgY29uc3RleHByIGRvdWJsZQogICAgICBxdWlldF9OYU4oKSBub2V4Y2VwdCB7IHJldHVybiBf
X2J1aWx0aW5fbmFuKCIiKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUKICAgICAg
c2lnbmFsaW5nX05hTigpIG5vZXhjZXB0IHsgcmV0dXJuIF9fYnVpbHRpbl9uYW5zKCIiKTsgfQoK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUKICAgICAgZGVub3JtX21pbigpIG5vZXhjZXB0
IHsgcmV0dXJuIGRvdWJsZSg0Ljk0MDY1NjQ1ODQxMjQ2NTRlLTMyNEwpOyB9CgogICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNfaWVjNTU5CiA9IGhhc19pbmZpbml0eSAmJiBoYXNfcXVpZXRf
TmFOICYmIGhhc19kZW5vcm0gPT0gZGVub3JtX3ByZXNlbnQ7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc19ib3VuZGVkID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
X21vZHVsbyA9IGZhbHNlOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHRyYXBzID0gZmFs
c2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB0aW55bmVzc19iZWZvcmUKICAgICAgID0g
ZmFsc2U7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXRfcm91bmRfc3R5bGUgcm91bmRfc3R5
bGUKICAgICAgID0gcm91bmRfdG9fbmVhcmVzdDsKICAgIH07CgoKCgoKCiAgdGVtcGxhdGU8Pgog
ICAgc3RydWN0IG51bWVyaWNfbGltaXRzPGxvbmcgZG91YmxlPgogICAgewogICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNfc3BlY2lhbGl6ZWQgPSB0cnVlOwoKICAgICAgc3RhdGljIGNvbnN0
ZXhwciBsb25nIGRvdWJsZQogICAgICBtaW4oKSBub2V4Y2VwdCB7IHJldHVybiAyLjIyNTA3Mzg1
ODUwNzIwMTRlLTMwOEw7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgbG9uZyBkb3VibGUKICAg
ICAgbWF4KCkgbm9leGNlcHQgeyByZXR1cm4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhMOyB9CgoK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBsb25nIGRvdWJsZQogICAgICBsb3dlc3QoKSBub2V4Y2Vw
dCB7IHJldHVybiAtMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhMOyB9CgoKICAgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQgZGlnaXRzID0gNTM7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0
czEwID0gMTU7CgogICAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhfZGlnaXRzMTAKICA9ICgy
ICsgKDUzKSAqIDY0M0wgLyAyMTM2KTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19z
aWduZWQgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfaW50ZWdlciA9IGZh
bHNlOwogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfZXhhY3QgPSBmYWxzZTsKICAgICAg
c3RhdGljIGNvbnN0ZXhwciBpbnQgcmFkaXggPSAyOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBs
b25nIGRvdWJsZQogICAgICBlcHNpbG9uKCkgbm9leGNlcHQgeyByZXR1cm4gMi4yMjA0NDYwNDky
NTAzMTMxZS0xNkw7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgbG9uZyBkb3VibGUKICAgICAg
cm91bmRfZXJyb3IoKSBub2V4Y2VwdCB7IHJldHVybiAwLjVMOyB9CgogICAgICBzdGF0aWMgY29u
c3RleHByIGludCBtaW5fZXhwb25lbnQgPSAoLTEwMjEpOwogICAgICBzdGF0aWMgY29uc3RleHBy
IGludCBtaW5fZXhwb25lbnQxMCA9ICgtMzA3KTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQg
bWF4X2V4cG9uZW50ID0gMTAyNDsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4X2V4cG9u
ZW50MTAgPSAzMDg7CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX2luZmluaXR5ID0g
MTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19xdWlldF9OYU4gPSAxOwogICAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgaGFzX3NpZ25hbGluZ19OYU4gPSBoYXNfcXVpZXRfTmFOOwog
ICAgICBzdGF0aWMgY29uc3RleHByIGZsb2F0X2Rlbm9ybV9zdHlsZSBoYXNfZGVub3JtCiA9IGJv
b2woMSkgPyBkZW5vcm1fcHJlc2VudCA6IGRlbm9ybV9hYnNlbnQ7CiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBoYXNfZGVub3JtX2xvc3MKID0gZmFsc2U7CgogICAgICBzdGF0aWMgY29uc3Rl
eHByIGxvbmcgZG91YmxlCiAgICAgIGluZmluaXR5KCkgbm9leGNlcHQgeyByZXR1cm4gX19idWls
dGluX2h1Z2VfdmFsbCgpOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGxvbmcgZG91YmxlCiAg
ICAgIHF1aWV0X05hTigpIG5vZXhjZXB0IHsgcmV0dXJuIF9fYnVpbHRpbl9uYW5sKCIiKTsgfQoK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBsb25nIGRvdWJsZQogICAgICBzaWduYWxpbmdfTmFOKCkg
bm9leGNlcHQgeyByZXR1cm4gX19idWlsdGluX25hbnNsKCIiKTsgfQoKICAgICAgc3RhdGljIGNv
bnN0ZXhwciBsb25nIGRvdWJsZQogICAgICBkZW5vcm1fbWluKCkgbm9leGNlcHQgeyByZXR1cm4g
NC45NDA2NTY0NTg0MTI0NjU0ZS0zMjRMOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNfaWVjNTU5CiA9IGhhc19pbmZpbml0eSAmJiBoYXNfcXVpZXRfTmFOICYmIGhhc19kZW5vcm0g
PT0gZGVub3JtX3ByZXNlbnQ7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19ib3VuZGVk
ID0gdHJ1ZTsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX21vZHVsbyA9IGZhbHNlOwoK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHRyYXBzID0gZmFsc2U7CiAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCB0aW55bmVzc19iZWZvcmUgPQogICAgICBmYWxzZTsKICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBmbG9hdF9yb3VuZF9zdHlsZSByb3VuZF9zdHlsZSA9CiAgICAgICAgICAgIHJv
dW5kX3RvX25lYXJlc3Q7CiAgICB9OwoKCgoKCgp9CiMgNDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9jaHJvbm8iIDIgMwojIDEgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9jdGltZSIgMSAzCiMgMzkgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9jdGltZSIgMwog
ICAgICAgCiMgNDAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjguMS9jdGltZSIgMwoKCiMgMSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1B
Uk1IRi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMyA0CiMgMzAgIi9tbnQvc3RvcmUvY2hyb290cy91
YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKZXh0ZXJuICJDIiB7
CgoKCgoKCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOC4xL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOC4x
L2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMzkgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUt
cGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMgNAoKCgojIDEgIi9tbnQvc3Rv
cmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdu
dWVhYmloZi9iaXRzL3RpbWUuaCIgMSAzIDQKIyA4NiAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50
dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvdGlt
ZS5oIiAzIDQKIyAxICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vz
ci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy90aW1leC5oIiAxIDMgNAojIDI0ICIv
bW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL2FybS1s
aW51eC1nbnVlYWJpaGYvYml0cy90aW1leC5oIiAzIDQKc3RydWN0IHRpbWV4CnsKICB1bnNpZ25l
ZCBpbnQgbW9kZXM7CiAgbG9uZyBpbnQgb2Zmc2V0OwogIGxvbmcgaW50IGZyZXE7CiAgbG9uZyBp
bnQgbWF4ZXJyb3I7CiAgbG9uZyBpbnQgZXN0ZXJyb3I7CiAgaW50IHN0YXR1czsKICBsb25nIGlu
dCBjb25zdGFudDsKICBsb25nIGludCBwcmVjaXNpb247CiAgbG9uZyBpbnQgdG9sZXJhbmNlOwog
IHN0cnVjdCB0aW1ldmFsIHRpbWU7CiAgbG9uZyBpbnQgdGljazsKCiAgbG9uZyBpbnQgcHBzZnJl
cTsKICBsb25nIGludCBqaXR0ZXI7CiAgaW50IHNoaWZ0OwogIGxvbmcgaW50IHN0YWJpbDsKICBs
b25nIGludCBqaXRjbnQ7CiAgbG9uZyBpbnQgY2FsY250OwogIGxvbmcgaW50IGVycmNudDsKICBs
b25nIGludCBzdGJjbnQ7CgogIGludCB0YWk7CgoKICBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMy
OyBpbnQgOjMyOwogIGludCA6MzI7IGludCA6MzI7IGludCA6MzI7IGludCA6MzI7CiAgaW50IDoz
MjsgaW50IDozMjsgaW50IDozMjsKfTsKIyA4NyAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1w
YW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvdGltZS5o
IiAyIDMgNAoKZXh0ZXJuICJDIiB7CgoKZXh0ZXJuIGludCBjbG9ja19hZGp0aW1lIChfX2Nsb2Nr
aWRfdCBfX2Nsb2NrX2lkLCBzdHJ1Y3QgdGltZXggKl9fdXR4KSB0aHJvdyAoKTsKCn0KIyA0MyAi
L21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS90aW1l
LmgiIDIgMyA0CiMgMTMxICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhG
L3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CgoKc3RydWN0IHRtCnsKICBpbnQgdG1fc2VjOwogIGlu
dCB0bV9taW47CiAgaW50IHRtX2hvdXI7CiAgaW50IHRtX21kYXk7CiAgaW50IHRtX21vbjsKICBp
bnQgdG1feWVhcjsKICBpbnQgdG1fd2RheTsKICBpbnQgdG1feWRheTsKICBpbnQgdG1faXNkc3Q7
CgoKICBsb25nIGludCB0bV9nbXRvZmY7CiAgX19jb25zdCBjaGFyICp0bV96b25lOwoKCgoKfTsK
CgoKCgoKCgpzdHJ1Y3QgaXRpbWVyc3BlYwogIHsKICAgIHN0cnVjdCB0aW1lc3BlYyBpdF9pbnRl
cnZhbDsKICAgIHN0cnVjdCB0aW1lc3BlYyBpdF92YWx1ZTsKICB9OwoKCnN0cnVjdCBzaWdldmVu
dDsKIyAxODAgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2lu
Y2x1ZGUvdGltZS5oIiAzIDQKCgoKZXh0ZXJuIGNsb2NrX3QgY2xvY2sgKHZvaWQpIHRocm93ICgp
OwoKCmV4dGVybiB0aW1lX3QgdGltZSAodGltZV90ICpfX3RpbWVyKSB0aHJvdyAoKTsKCgpleHRl
cm4gZG91YmxlIGRpZmZ0aW1lICh0aW1lX3QgX190aW1lMSwgdGltZV90IF9fdGltZTApCiAgICAg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiB0aW1lX3QgbWt0
aW1lIChzdHJ1Y3QgdG0gKl9fdHApIHRocm93ICgpOwoKCgoKCmV4dGVybiBzaXplX3Qgc3RyZnRp
bWUgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhzaXplLAogICBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgIF9fY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0
IF9fdHApIHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICpzdHJwdGltZSAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10
LCBzdHJ1Y3QgdG0gKl9fdHApCiAgICAgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gc2l6ZV90IHN0
cmZ0aW1lX2wgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhzaXplLAogICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICBfX2NvbnN0IHN0cnVjdCB0bSAq
X19yZXN0cmljdCBfX3RwLAogICAgIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKCgpleHRl
cm4gY2hhciAqc3RycHRpbWVfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgc3RydWN0IHRtICpfX3RwLAogICAgX19sb2Nh
bGVfdCBfX2xvYykgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZSAoX19j
b25zdCB0aW1lX3QgKl9fdGltZXIpIHRocm93ICgpOwoKCgpleHRlcm4gc3RydWN0IHRtICpsb2Nh
bHRpbWUgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gc3Ry
dWN0IHRtICpnbXRpbWVfciAoX19jb25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKICAg
ICAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHN0cnVj
dCB0bSAqbG9jYWx0aW1lX3IgKF9fY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCiAg
ICAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJu
IGNoYXIgKmFzY3RpbWUgKF9fY29uc3Qgc3RydWN0IHRtICpfX3RwKSB0aHJvdyAoKTsKCgpleHRl
cm4gY2hhciAqY3RpbWUgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSB0aHJvdyAoKTsKCgoKCgoK
CmV4dGVybiBjaGFyICphc2N0aW1lX3IgKF9fY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9f
dHAsCiAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIHRocm93ICgpOwoKCmV4dGVybiBjaGFyICpj
dGltZV9yIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVyLAogICAgICAgIGNoYXIg
Kl9fcmVzdHJpY3QgX19idWYpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKl9fdHpuYW1lWzJd
OwpleHRlcm4gaW50IF9fZGF5bGlnaHQ7CmV4dGVybiBsb25nIGludCBfX3RpbWV6b25lOwoKCgoK
ZXh0ZXJuIGNoYXIgKnR6bmFtZVsyXTsKCgoKZXh0ZXJuIHZvaWQgdHpzZXQgKHZvaWQpIHRocm93
ICgpOwoKCgpleHRlcm4gaW50IGRheWxpZ2h0OwpleHRlcm4gbG9uZyBpbnQgdGltZXpvbmU7CgoK
CgoKZXh0ZXJuIGludCBzdGltZSAoX19jb25zdCB0aW1lX3QgKl9fd2hlbikgdGhyb3cgKCk7CiMg
MzEzICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRl
L3RpbWUuaCIgMyA0CmV4dGVybiB0aW1lX3QgdGltZWdtIChzdHJ1Y3QgdG0gKl9fdHApIHRocm93
ICgpOwoKCmV4dGVybiB0aW1lX3QgdGltZWxvY2FsIChzdHJ1Y3QgdG0gKl9fdHApIHRocm93ICgp
OwoKCmV4dGVybiBpbnQgZHlzaXplIChpbnQgX195ZWFyKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CiMgMzI4ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGlu
LUFSTUhGL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CmV4dGVybiBpbnQgbmFub3NsZWVwIChfX2Nv
bnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXF1ZXN0ZWRfdGltZSwKICAgICAgICBzdHJ1Y3QgdGlt
ZXNwZWMgKl9fcmVtYWluaW5nKTsKCgoKZXh0ZXJuIGludCBjbG9ja19nZXRyZXMgKGNsb2NraWRf
dCBfX2Nsb2NrX2lkLCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzKSB0aHJvdyAoKTsKCgpleHRlcm4g
aW50IGNsb2NrX2dldHRpbWUgKGNsb2NraWRfdCBfX2Nsb2NrX2lkLCBzdHJ1Y3QgdGltZXNwZWMg
Kl9fdHApIHRocm93ICgpOwoKCmV4dGVybiBpbnQgY2xvY2tfc2V0dGltZSAoY2xvY2tpZF90IF9f
Y2xvY2tfaWQsIF9fY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3RwKQogICAgIHRocm93ICgpOwoK
CgoKCgpleHRlcm4gaW50IGNsb2NrX25hbm9zbGVlcCAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIGlu
dCBfX2ZsYWdzLAogICAgICAgX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVxLAogICAgICAg
c3RydWN0IHRpbWVzcGVjICpfX3JlbSk7CgoKZXh0ZXJuIGludCBjbG9ja19nZXRjcHVjbG9ja2lk
IChwaWRfdCBfX3BpZCwgY2xvY2tpZF90ICpfX2Nsb2NrX2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVy
biBpbnQgdGltZXJfY3JlYXRlIChjbG9ja2lkX3QgX19jbG9ja19pZCwKICAgIHN0cnVjdCBzaWdl
dmVudCAqX19yZXN0cmljdCBfX2V2cCwKICAgIHRpbWVyX3QgKl9fcmVzdHJpY3QgX190aW1lcmlk
KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHRpbWVyX2RlbGV0ZSAodGltZXJfdCBfX3RpbWVyaWQp
IHRocm93ICgpOwoKCmV4dGVybiBpbnQgdGltZXJfc2V0dGltZSAodGltZXJfdCBfX3RpbWVyaWQs
IGludCBfX2ZsYWdzLAogICAgIF9fY29uc3Qgc3RydWN0IGl0aW1lcnNwZWMgKl9fcmVzdHJpY3Qg
X192YWx1ZSwKICAgICBzdHJ1Y3QgaXRpbWVyc3BlYyAqX19yZXN0cmljdCBfX292YWx1ZSkgdGhy
b3cgKCk7CgoKZXh0ZXJuIGludCB0aW1lcl9nZXR0aW1lICh0aW1lcl90IF9fdGltZXJpZCwgc3Ry
dWN0IGl0aW1lcnNwZWMgKl9fdmFsdWUpCiAgICAgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCB0aW1l
cl9nZXRvdmVycnVuICh0aW1lcl90IF9fdGltZXJpZCkgdGhyb3cgKCk7CiMgMzkwICIvbW50L3N0
b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0
CmV4dGVybiBpbnQgZ2V0ZGF0ZV9lcnI7CiMgMzk5ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1
LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CmV4dGVybiBzdHJ1Y3QgdG0g
KmdldGRhdGUgKF9fY29uc3QgY2hhciAqX19zdHJpbmcpOwojIDQxMyAiL21udC9zdG9yZS9jaHJv
b3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNApleHRlcm4g
aW50IGdldGRhdGVfciAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3RyaW5nLAogICAgICAg
IHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3Jlc2J1ZnApOwoKCn0KIyA0MyAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2N0aW1lIiAyIDMKIyA1OCAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44
LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2N0aW1lIiAzCm5h
bWVzcGFjZSBzdGQKewogIHVzaW5nIDo6Y2xvY2tfdDsKICB1c2luZyA6OnRpbWVfdDsKICB1c2lu
ZyA6OnRtOwoKICB1c2luZyA6OmNsb2NrOwogIHVzaW5nIDo6ZGlmZnRpbWU7CiAgdXNpbmcgOjpt
a3RpbWU7CiAgdXNpbmcgOjp0aW1lOwogIHVzaW5nIDo6YXNjdGltZTsKICB1c2luZyA6OmN0aW1l
OwogIHVzaW5nIDo6Z210aW1lOwogIHVzaW5nIDo6bG9jYWx0aW1lOwogIHVzaW5nIDo6c3RyZnRp
bWU7Cn0KIyA0MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OC4xL2Nocm9ubyIgMiAzCgoKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJp
bGl0eV9fICgiZGVmYXVsdCIpKSkKewojIDU4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC44LjEvY2hyb25vIiAzCiAgbmFtZXNwYWNlIGNocm9ubwogIHsKIAoK
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXAsIHR5cGVuYW1lIF9QZXJpb2QgPSByYXRpbzwxPj4K
ICAgICAgc3RydWN0IGR1cmF0aW9uOwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DbG9jaywgdHlw
ZW5hbWUgX0R1ciA9IHR5cGVuYW1lIF9DbG9jazo6ZHVyYXRpb24+CiAgICAgIHN0cnVjdCB0aW1l
X3BvaW50OwoKIAogIH0KCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DVCwgdHlwZW5hbWUgX1Bl
cmlvZDEsIHR5cGVuYW1lIF9QZXJpb2QyPgogICAgc3RydWN0IF9fZHVyYXRpb25fY29tbW9uX3R5
cGVfd3JhcHBlcgogICAgewogICAgcHJpdmF0ZToKICAgICAgdHlwZWRlZiBfX3N0YXRpY19nY2Q8
X1BlcmlvZDE6Om51bSwgX1BlcmlvZDI6Om51bT4gX19nY2RfbnVtOwogICAgICB0eXBlZGVmIF9f
c3RhdGljX2djZDxfUGVyaW9kMTo6ZGVuLCBfUGVyaW9kMjo6ZGVuPiBfX2djZF9kZW47CiAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgX0NUOjp0eXBlIF9fY3I7CiAgICAgIHR5cGVkZWYgcmF0aW88X19n
Y2RfbnVtOjp2YWx1ZSwKICAgICAgICAoX1BlcmlvZDE6OmRlbiAvIF9fZ2NkX2Rlbjo6dmFsdWUp
ICogX1BlcmlvZDI6OmRlbj4gX19yOwogICAgcHVibGljOgogICAgICB0eXBlZGVmIF9fc3VjY2Vz
c190eXBlPGNocm9ubzo6ZHVyYXRpb248X19jciwgX19yPj4gdHlwZTsKICAgIH07CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9QZXJpb2QxLCB0eXBlbmFtZSBfUGVyaW9kMj4KICAgIHN0cnVjdCBfX2R1
cmF0aW9uX2NvbW1vbl90eXBlX3dyYXBwZXI8X19mYWlsdXJlX3R5cGUsIF9QZXJpb2QxLCBfUGVy
aW9kMj4KICAgIHsgdHlwZWRlZiBfX2ZhaWx1cmVfdHlwZSB0eXBlOyB9OwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmVwMSwgdHlwZW5hbWUgX1BlcmlvZDEsIHR5cGVuYW1lIF9SZXAyLCB0eXBlbmFt
ZSBfUGVyaW9kMj4KICAgIHN0cnVjdCBjb21tb25fdHlwZTxjaHJvbm86OmR1cmF0aW9uPF9SZXAx
LCBfUGVyaW9kMT4sCiAgICAgICAgICAgICBjaHJvbm86OmR1cmF0aW9uPF9SZXAyLCBfUGVyaW9k
Mj4+CiAgICA6IHB1YmxpYyBfX2R1cmF0aW9uX2NvbW1vbl90eXBlX3dyYXBwZXI8dHlwZW5hbWUg
X19tZW1iZXJfdHlwZV93cmFwcGVyPAogICAgICAgICAgICAgY29tbW9uX3R5cGU8X1JlcDEsIF9S
ZXAyPj46OnR5cGUsIF9QZXJpb2QxLCBfUGVyaW9kMj46OnR5cGUKICAgIHsgfTsKCgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ1QsIHR5cGVuYW1lIF9DbG9jaz4KICAgIHN0cnVjdCBfX3RpbWVwb2lu
dF9jb21tb25fdHlwZV93cmFwcGVyCiAgICB7CiAgICAgIHR5cGVkZWYgX19zdWNjZXNzX3R5cGU8
Y2hyb25vOjp0aW1lX3BvaW50PF9DbG9jaywgdHlwZW5hbWUgX0NUOjp0eXBlPj4KICAgICAgICB0
eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Nsb2NrPgogICAgc3RydWN0IF9fdGlt
ZXBvaW50X2NvbW1vbl90eXBlX3dyYXBwZXI8X19mYWlsdXJlX3R5cGUsIF9DbG9jaz4KICAgIHsg
dHlwZWRlZiBfX2ZhaWx1cmVfdHlwZSB0eXBlOyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2xv
Y2ssIHR5cGVuYW1lIF9EdXJhdGlvbjEsIHR5cGVuYW1lIF9EdXJhdGlvbjI+CiAgICBzdHJ1Y3Qg
Y29tbW9uX3R5cGU8Y2hyb25vOjp0aW1lX3BvaW50PF9DbG9jaywgX0R1cmF0aW9uMT4sCiAgICAg
ICAgICAgICBjaHJvbm86OnRpbWVfcG9pbnQ8X0Nsb2NrLCBfRHVyYXRpb24yPj4KICAgIDogcHVi
bGljIF9fdGltZXBvaW50X2NvbW1vbl90eXBlX3dyYXBwZXI8dHlwZW5hbWUgX19tZW1iZXJfdHlw
ZV93cmFwcGVyPAogICAgICAgICAgICAgY29tbW9uX3R5cGU8X0R1cmF0aW9uMSwgX0R1cmF0aW9u
Mj4+Ojp0eXBlLCBfQ2xvY2s+Ojp0eXBlCiAgICB7IH07CgoKCiAgbmFtZXNwYWNlIGNocm9ubwog
IHsKIAoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVG9EdXIsIHR5cGVuYW1lIF9DRiwgdHlwZW5h
bWUgX0NSLAogICAgICBib29sIF9OdW1Jc09uZSA9IGZhbHNlLCBib29sIF9EZW5Jc09uZSA9IGZh
bHNlPgogICAgICBzdHJ1Y3QgX19kdXJhdGlvbl9jYXN0X2ltcGwKICAgICAgewogdGVtcGxhdGU8
dHlwZW5hbWUgX1JlcCwgdHlwZW5hbWUgX1BlcmlvZD4KICAgc3RhdGljIGNvbnN0ZXhwciBfVG9E
dXIKICAgX19jYXN0KGNvbnN0IGR1cmF0aW9uPF9SZXAsIF9QZXJpb2Q+JiBfX2QpCiAgIHsKICAg
ICB0eXBlZGVmIHR5cGVuYW1lIF9Ub0R1cjo6cmVwIF9fdG9fcmVwOwogICAgIHJldHVybiBfVG9E
dXIoc3RhdGljX2Nhc3Q8X190b19yZXA+KHN0YXRpY19jYXN0PF9DUj4oX19kLmNvdW50KCkpCiAg
ICAgICAqIHN0YXRpY19jYXN0PF9DUj4oX0NGOjpudW0pCiAgICAgICAvIHN0YXRpY19jYXN0PF9D
Uj4oX0NGOjpkZW4pKSk7CiAgIH0KICAgICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVG9E
dXIsIHR5cGVuYW1lIF9DRiwgdHlwZW5hbWUgX0NSPgogICAgICBzdHJ1Y3QgX19kdXJhdGlvbl9j
YXN0X2ltcGw8X1RvRHVyLCBfQ0YsIF9DUiwgdHJ1ZSwgdHJ1ZT4KICAgICAgewogdGVtcGxhdGU8
dHlwZW5hbWUgX1JlcCwgdHlwZW5hbWUgX1BlcmlvZD4KICAgc3RhdGljIGNvbnN0ZXhwciBfVG9E
dXIKICAgX19jYXN0KGNvbnN0IGR1cmF0aW9uPF9SZXAsIF9QZXJpb2Q+JiBfX2QpCiAgIHsKICAg
ICB0eXBlZGVmIHR5cGVuYW1lIF9Ub0R1cjo6cmVwIF9fdG9fcmVwOwogICAgIHJldHVybiBfVG9E
dXIoc3RhdGljX2Nhc3Q8X190b19yZXA+KF9fZC5jb3VudCgpKSk7CiAgIH0KICAgICAgfTsKCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVG9EdXIsIHR5cGVuYW1lIF9DRiwgdHlwZW5hbWUgX0NSPgog
ICAgICBzdHJ1Y3QgX19kdXJhdGlvbl9jYXN0X2ltcGw8X1RvRHVyLCBfQ0YsIF9DUiwgdHJ1ZSwg
ZmFsc2U+CiAgICAgIHsKIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXAsIHR5cGVuYW1lIF9QZXJpb2Q+
CiAgIHN0YXRpYyBjb25zdGV4cHIgX1RvRHVyCiAgIF9fY2FzdChjb25zdCBkdXJhdGlvbjxfUmVw
LCBfUGVyaW9kPiYgX19kKQogICB7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVG9EdXI6OnJlcCBf
X3RvX3JlcDsKICAgICByZXR1cm4gX1RvRHVyKHN0YXRpY19jYXN0PF9fdG9fcmVwPigKICAgICAg
IHN0YXRpY19jYXN0PF9DUj4oX19kLmNvdW50KCkpIC8gc3RhdGljX2Nhc3Q8X0NSPihfQ0Y6OmRl
bikpKTsKICAgfQogICAgICB9OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Ub0R1ciwgdHlwZW5h
bWUgX0NGLCB0eXBlbmFtZSBfQ1I+CiAgICAgIHN0cnVjdCBfX2R1cmF0aW9uX2Nhc3RfaW1wbDxf
VG9EdXIsIF9DRiwgX0NSLCBmYWxzZSwgdHJ1ZT4KICAgICAgewogdGVtcGxhdGU8dHlwZW5hbWUg
X1JlcCwgdHlwZW5hbWUgX1BlcmlvZD4KICAgc3RhdGljIGNvbnN0ZXhwciBfVG9EdXIKICAgX19j
YXN0KGNvbnN0IGR1cmF0aW9uPF9SZXAsIF9QZXJpb2Q+JiBfX2QpCiAgIHsKICAgICB0eXBlZGVm
IHR5cGVuYW1lIF9Ub0R1cjo6cmVwIF9fdG9fcmVwOwogICAgIHJldHVybiBfVG9EdXIoc3RhdGlj
X2Nhc3Q8X190b19yZXA+KAogICAgICAgc3RhdGljX2Nhc3Q8X0NSPihfX2QuY291bnQoKSkgKiBz
dGF0aWNfY2FzdDxfQ1I+KF9DRjo6bnVtKSkpOwogICB9CiAgICAgIH07CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwPgogICAgICBzdHJ1Y3QgX19pc19kdXJhdGlvbgogICAgICA6IHN0ZDo6ZmFs
c2VfdHlwZQogICAgICB7IH07CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcCwgdHlwZW5hbWUg
X1BlcmlvZD4KICAgICAgc3RydWN0IF9faXNfZHVyYXRpb248ZHVyYXRpb248X1JlcCwgX1Blcmlv
ZD4+CiAgICAgIDogc3RkOjp0cnVlX3R5cGUKICAgICAgeyB9OwoKCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVG9EdXIsIHR5cGVuYW1lIF9SZXAsIHR5cGVuYW1lIF9QZXJpb2Q+CiAgICAgIGNvbnN0
ZXhwciB0eXBlbmFtZSBlbmFibGVfaWY8X19pc19kdXJhdGlvbjxfVG9EdXI+Ojp2YWx1ZSwKICAg
ICAgIF9Ub0R1cj46OnR5cGUKICAgICAgZHVyYXRpb25fY2FzdChjb25zdCBkdXJhdGlvbjxfUmVw
LCBfUGVyaW9kPiYgX19kKQogICAgICB7CiB0eXBlZGVmIHR5cGVuYW1lIF9Ub0R1cjo6cGVyaW9k
IF9fdG9fcGVyaW9kOwogdHlwZWRlZiB0eXBlbmFtZSBfVG9EdXI6OnJlcCBfX3RvX3JlcDsKIHR5
cGVkZWYgcmF0aW9fZGl2aWRlPF9QZXJpb2QsIF9fdG9fcGVyaW9kPiBfX2NmOwogdHlwZWRlZiB0
eXBlbmFtZSBjb21tb25fdHlwZTxfX3RvX3JlcCwgX1JlcCwgaW50bWF4X3Q+Ojp0eXBlCiAgICAg
ICAgICBfX2NyOwogdHlwZWRlZiBfX2R1cmF0aW9uX2Nhc3RfaW1wbDxfVG9EdXIsIF9fY2YsIF9f
Y3IsCiAgICAgICAgICBfX2NmOjpudW0gPT0gMSwgX19jZjo6ZGVuID09IDE+IF9fZGM7CiByZXR1
cm4gX19kYzo6X19jYXN0KF9fZCk7CiAgICAgIH0KCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jl
cD4KICAgICAgc3RydWN0IHRyZWF0X2FzX2Zsb2F0aW5nX3BvaW50CiAgICAgIDogaXNfZmxvYXRp
bmdfcG9pbnQ8X1JlcD4KICAgICAgeyB9OwoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVwPgog
ICAgICBzdHJ1Y3QgZHVyYXRpb25fdmFsdWVzCiAgICAgIHsKIHN0YXRpYyBjb25zdGV4cHIgX1Jl
cAogemVybygpCiB7IHJldHVybiBfUmVwKDApOyB9Cgogc3RhdGljIGNvbnN0ZXhwciBfUmVwCiBt
YXgoKQogeyByZXR1cm4gbnVtZXJpY19saW1pdHM8X1JlcD46Om1heCgpOyB9Cgogc3RhdGljIGNv
bnN0ZXhwciBfUmVwCiBtaW4oKQogeyByZXR1cm4gbnVtZXJpY19saW1pdHM8X1JlcD46Omxvd2Vz
dCgpOyB9CiAgICAgIH07CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgICBzdHJ1Y3Qg
X19pc19yYXRpbwogICAgICA6IHN0ZDo6ZmFsc2VfdHlwZQogICAgICB7IH07CgogICAgdGVtcGxh
dGU8aW50bWF4X3QgX051bSwgaW50bWF4X3QgX0Rlbj4KICAgICAgc3RydWN0IF9faXNfcmF0aW88
cmF0aW88X051bSwgX0Rlbj4+CiAgICAgIDogc3RkOjp0cnVlX3R5cGUKICAgICAgeyB9OwoKCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVwLCB0eXBlbmFtZSBfUGVyaW9kPgogICAgICBzdHJ1Y3Qg
ZHVyYXRpb24KICAgICAgewogdHlwZWRlZiBfUmVwIHJlcDsKIHR5cGVkZWYgX1BlcmlvZCBwZXJp
b2Q7Cgogc3RhdGljX2Fzc2VydCghX19pc19kdXJhdGlvbjxfUmVwPjo6dmFsdWUsICJyZXAgY2Fu
bm90IGJlIGEgZHVyYXRpb24iKTsKIHN0YXRpY19hc3NlcnQoX19pc19yYXRpbzxfUGVyaW9kPjo6
dmFsdWUsCiAgICAgICAgInBlcmlvZCBtdXN0IGJlIGEgc3BlY2lhbGl6YXRpb24gb2YgcmF0aW8i
KTsKIHN0YXRpY19hc3NlcnQoX1BlcmlvZDo6bnVtID4gMCwgInBlcmlvZCBtdXN0IGJlIHBvc2l0
aXZlIik7CgoKIGNvbnN0ZXhwciBkdXJhdGlvbigpID0gZGVmYXVsdDsKCgoKCiBkdXJhdGlvbihj
b25zdCBkdXJhdGlvbiYpID0gZGVmYXVsdDsKCiB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVwMiwgdHlw
ZW5hbWUgPSB0eXBlbmFtZQogICAgICAgIGVuYWJsZV9pZjxpc19jb252ZXJ0aWJsZTxfUmVwMiwg
cmVwPjo6dmFsdWUKICAgICYmICh0cmVhdF9hc19mbG9hdGluZ19wb2ludDxyZXA+Ojp2YWx1ZQog
ICAgICAgIHx8ICF0cmVhdF9hc19mbG9hdGluZ19wb2ludDxfUmVwMj46OnZhbHVlKT46OnR5cGU+
CiAgIGNvbnN0ZXhwciBleHBsaWNpdCBkdXJhdGlvbihjb25zdCBfUmVwMiYgX19yZXApCiAgIDog
X19yKHN0YXRpY19jYXN0PHJlcD4oX19yZXApKSB7IH0KCiB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVw
MiwgdHlwZW5hbWUgX1BlcmlvZDIsIHR5cGVuYW1lID0gdHlwZW5hbWUKICAgICAgICBlbmFibGVf
aWY8dHJlYXRfYXNfZmxvYXRpbmdfcG9pbnQ8cmVwPjo6dmFsdWUKICAgIHx8IChyYXRpb19kaXZp
ZGU8X1BlcmlvZDIsIHBlcmlvZD46OmRlbiA9PSAxCiAgICAgICAgJiYgIXRyZWF0X2FzX2Zsb2F0
aW5nX3BvaW50PF9SZXAyPjo6dmFsdWUpPjo6dHlwZT4KICAgY29uc3RleHByIGR1cmF0aW9uKGNv
bnN0IGR1cmF0aW9uPF9SZXAyLCBfUGVyaW9kMj4mIF9fZCkKICAgOiBfX3IoZHVyYXRpb25fY2Fz
dDxkdXJhdGlvbj4oX19kKS5jb3VudCgpKSB7IH0KCiB+ZHVyYXRpb24oKSA9IGRlZmF1bHQ7CiBk
dXJhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IGR1cmF0aW9uJikgPSBkZWZhdWx0OwoKCiBjb25zdGV4
cHIgcmVwCiBjb3VudCgpIGNvbnN0CiB7IHJldHVybiBfX3I7IH0KCgogY29uc3RleHByIGR1cmF0
aW9uCiBvcGVyYXRvcisoKSBjb25zdAogeyByZXR1cm4gKnRoaXM7IH0KCiBjb25zdGV4cHIgZHVy
YXRpb24KIG9wZXJhdG9yLSgpIGNvbnN0CiB7IHJldHVybiBkdXJhdGlvbigtX19yKTsgfQoKIGR1
cmF0aW9uJgogb3BlcmF0b3IrKygpCiB7CiAgICsrX19yOwogICByZXR1cm4gKnRoaXM7CiB9Cgog
ZHVyYXRpb24KIG9wZXJhdG9yKysoaW50KQogeyByZXR1cm4gZHVyYXRpb24oX19yKyspOyB9Cgog
ZHVyYXRpb24mCiBvcGVyYXRvci0tKCkKIHsKICAgLS1fX3I7CiAgIHJldHVybiAqdGhpczsKIH0K
CiBkdXJhdGlvbgogb3BlcmF0b3ItLShpbnQpCiB7IHJldHVybiBkdXJhdGlvbihfX3ItLSk7IH0K
CiBkdXJhdGlvbiYKIG9wZXJhdG9yKz0oY29uc3QgZHVyYXRpb24mIF9fZCkKIHsKICAgX19yICs9
IF9fZC5jb3VudCgpOwogICByZXR1cm4gKnRoaXM7CiB9CgogZHVyYXRpb24mCiBvcGVyYXRvci09
KGNvbnN0IGR1cmF0aW9uJiBfX2QpCiB7CiAgIF9fciAtPSBfX2QuY291bnQoKTsKICAgcmV0dXJu
ICp0aGlzOwogfQoKIGR1cmF0aW9uJgogb3BlcmF0b3IqPShjb25zdCByZXAmIF9fcmhzKQogewog
ICBfX3IgKj0gX19yaHM7CiAgIHJldHVybiAqdGhpczsKIH0KCiBkdXJhdGlvbiYKIG9wZXJhdG9y
Lz0oY29uc3QgcmVwJiBfX3JocykKIHsKICAgX19yIC89IF9fcmhzOwogICByZXR1cm4gKnRoaXM7
CiB9CgoKIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXAyID0gcmVwPgogICB0eXBlbmFtZSBlbmFibGVf
aWY8IXRyZWF0X2FzX2Zsb2F0aW5nX3BvaW50PF9SZXAyPjo6dmFsdWUsCiAgICAgICAgZHVyYXRp
b24mPjo6dHlwZQogICBvcGVyYXRvciU9KGNvbnN0IHJlcCYgX19yaHMpCiAgIHsKICAgICBfX3Ig
JT0gX19yaHM7CiAgICAgcmV0dXJuICp0aGlzOwogICB9CgogdGVtcGxhdGU8dHlwZW5hbWUgX1Jl
cDIgPSByZXA+CiAgIHR5cGVuYW1lIGVuYWJsZV9pZjwhdHJlYXRfYXNfZmxvYXRpbmdfcG9pbnQ8
X1JlcDI+Ojp2YWx1ZSwKICAgICAgICBkdXJhdGlvbiY+Ojp0eXBlCiAgIG9wZXJhdG9yJT0oY29u
c3QgZHVyYXRpb24mIF9fZCkKICAgewogICAgIF9fciAlPSBfX2QuY291bnQoKTsKICAgICByZXR1
cm4gKnRoaXM7CiAgIH0KCgogc3RhdGljIGNvbnN0ZXhwciBkdXJhdGlvbgogemVybygpCiB7IHJl
dHVybiBkdXJhdGlvbihkdXJhdGlvbl92YWx1ZXM8cmVwPjo6emVybygpKTsgfQoKIHN0YXRpYyBj
b25zdGV4cHIgZHVyYXRpb24KIG1pbigpCiB7IHJldHVybiBkdXJhdGlvbihkdXJhdGlvbl92YWx1
ZXM8cmVwPjo6bWluKCkpOyB9Cgogc3RhdGljIGNvbnN0ZXhwciBkdXJhdGlvbgogbWF4KCkKIHsg
cmV0dXJuIGR1cmF0aW9uKGR1cmF0aW9uX3ZhbHVlczxyZXA+OjptYXgoKSk7IH0KCiAgICAgIHBy
aXZhdGU6CiByZXAgX19yOwogICAgICB9OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXAxLCB0
eXBlbmFtZSBfUGVyaW9kMSwKICAgICAgdHlwZW5hbWUgX1JlcDIsIHR5cGVuYW1lIF9QZXJpb2Qy
PgogICAgICBjb25zdGV4cHIgdHlwZW5hbWUgY29tbW9uX3R5cGU8ZHVyYXRpb248X1JlcDEsIF9Q
ZXJpb2QxPiwKICAgICAgICAgZHVyYXRpb248X1JlcDIsIF9QZXJpb2QyPj46OnR5cGUKICAgICAg
b3BlcmF0b3IrKGNvbnN0IGR1cmF0aW9uPF9SZXAxLCBfUGVyaW9kMT4mIF9fbGhzLAogIGNvbnN0
IGR1cmF0aW9uPF9SZXAyLCBfUGVyaW9kMj4mIF9fcmhzKQogICAgICB7CiB0eXBlZGVmIGR1cmF0
aW9uPF9SZXAxLCBfUGVyaW9kMT4gX19kdXIxOwogdHlwZWRlZiBkdXJhdGlvbjxfUmVwMiwgX1Bl
cmlvZDI+IF9fZHVyMjsKIHR5cGVkZWYgdHlwZW5hbWUgY29tbW9uX3R5cGU8X19kdXIxLF9fZHVy
Mj46OnR5cGUgX19jZDsKIHJldHVybiBfX2NkKF9fY2QoX19saHMpLmNvdW50KCkgKyBfX2NkKF9f
cmhzKS5jb3VudCgpKTsKICAgICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXAxLCB0eXBl
bmFtZSBfUGVyaW9kMSwKICAgICAgdHlwZW5hbWUgX1JlcDIsIHR5cGVuYW1lIF9QZXJpb2QyPgog
ICAgICBjb25zdGV4cHIgdHlwZW5hbWUgY29tbW9uX3R5cGU8ZHVyYXRpb248X1JlcDEsIF9QZXJp
b2QxPiwKICAgICAgICAgZHVyYXRpb248X1JlcDIsIF9QZXJpb2QyPj46OnR5cGUKICAgICAgb3Bl
cmF0b3ItKGNvbnN0IGR1cmF0aW9uPF9SZXAxLCBfUGVyaW9kMT4mIF9fbGhzLAogIGNvbnN0IGR1
cmF0aW9uPF9SZXAyLCBfUGVyaW9kMj4mIF9fcmhzKQogICAgICB7CiB0eXBlZGVmIGR1cmF0aW9u
PF9SZXAxLCBfUGVyaW9kMT4gX19kdXIxOwogdHlwZWRlZiBkdXJhdGlvbjxfUmVwMiwgX1Blcmlv
ZDI+IF9fZHVyMjsKIHR5cGVkZWYgdHlwZW5hbWUgY29tbW9uX3R5cGU8X19kdXIxLF9fZHVyMj46
OnR5cGUgX19jZDsKIHJldHVybiBfX2NkKF9fY2QoX19saHMpLmNvdW50KCkgLSBfX2NkKF9fcmhz
KS5jb3VudCgpKTsKICAgICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXAxLCB0eXBlbmFt
ZSBfUmVwMiwgYm9vbCA9CiAgICAgIGlzX2NvbnZlcnRpYmxlPF9SZXAyLAogICAgICAgdHlwZW5h
bWUgY29tbW9uX3R5cGU8X1JlcDEsIF9SZXAyPjo6dHlwZT46OnZhbHVlPgogICAgICBzdHJ1Y3Qg
X19jb21tb25fcmVwX3R5cGUgeyB9OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXAxLCB0eXBl
bmFtZSBfUmVwMj4KICAgICAgc3RydWN0IF9fY29tbW9uX3JlcF90eXBlPF9SZXAxLCBfUmVwMiwg
dHJ1ZT4KICAgICAgeyB0eXBlZGVmIHR5cGVuYW1lIGNvbW1vbl90eXBlPF9SZXAxLCBfUmVwMj46
OnR5cGUgdHlwZTsgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVwMSwgdHlwZW5hbWUgX1Bl
cmlvZCwgdHlwZW5hbWUgX1JlcDI+CiAgICAgIGNvbnN0ZXhwcgogICAgICBkdXJhdGlvbjx0eXBl
bmFtZSBfX2NvbW1vbl9yZXBfdHlwZTxfUmVwMSwgX1JlcDI+Ojp0eXBlLCBfUGVyaW9kPgogICAg
ICBvcGVyYXRvciooY29uc3QgZHVyYXRpb248X1JlcDEsIF9QZXJpb2Q+JiBfX2QsIGNvbnN0IF9S
ZXAyJiBfX3MpCiAgICAgIHsKIHR5cGVkZWYgZHVyYXRpb248dHlwZW5hbWUgY29tbW9uX3R5cGU8
X1JlcDEsIF9SZXAyPjo6dHlwZSwgX1BlcmlvZD4KICAgX19jZDsKIHJldHVybiBfX2NkKF9fY2Qo
X19kKS5jb3VudCgpICogX19zKTsKICAgICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXAx
LCB0eXBlbmFtZSBfUmVwMiwgdHlwZW5hbWUgX1BlcmlvZD4KICAgICAgY29uc3RleHByCiAgICAg
IGR1cmF0aW9uPHR5cGVuYW1lIF9fY29tbW9uX3JlcF90eXBlPF9SZXAyLCBfUmVwMT46OnR5cGUs
IF9QZXJpb2Q+CiAgICAgIG9wZXJhdG9yKihjb25zdCBfUmVwMSYgX19zLCBjb25zdCBkdXJhdGlv
bjxfUmVwMiwgX1BlcmlvZD4mIF9fZCkKICAgICAgeyByZXR1cm4gX19kICogX19zOyB9CgogICAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JlcDEsIHR5cGVuYW1lIF9QZXJpb2QsIHR5cGVuYW1lIF9SZXAy
PgogICAgICBjb25zdGV4cHIgZHVyYXRpb248dHlwZW5hbWUgX19jb21tb25fcmVwX3R5cGU8X1Jl
cDEsIHR5cGVuYW1lCiBlbmFibGVfaWY8IV9faXNfZHVyYXRpb248X1JlcDI+Ojp2YWx1ZSwgX1Jl
cDI+Ojp0eXBlPjo6dHlwZSwgX1BlcmlvZD4KICAgICAgb3BlcmF0b3IvKGNvbnN0IGR1cmF0aW9u
PF9SZXAxLCBfUGVyaW9kPiYgX19kLCBjb25zdCBfUmVwMiYgX19zKQogICAgICB7CiB0eXBlZGVm
IGR1cmF0aW9uPHR5cGVuYW1lIGNvbW1vbl90eXBlPF9SZXAxLCBfUmVwMj46OnR5cGUsIF9QZXJp
b2Q+CiAgIF9fY2Q7CiByZXR1cm4gX19jZChfX2NkKF9fZCkuY291bnQoKSAvIF9fcyk7CiAgICAg
IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVwMSwgdHlwZW5hbWUgX1BlcmlvZDEsCiAgICAg
IHR5cGVuYW1lIF9SZXAyLCB0eXBlbmFtZSBfUGVyaW9kMj4KICAgICAgY29uc3RleHByIHR5cGVu
YW1lIGNvbW1vbl90eXBlPF9SZXAxLCBfUmVwMj46OnR5cGUKICAgICAgb3BlcmF0b3IvKGNvbnN0
IGR1cmF0aW9uPF9SZXAxLCBfUGVyaW9kMT4mIF9fbGhzLAogIGNvbnN0IGR1cmF0aW9uPF9SZXAy
LCBfUGVyaW9kMj4mIF9fcmhzKQogICAgICB7CiB0eXBlZGVmIGR1cmF0aW9uPF9SZXAxLCBfUGVy
aW9kMT4gX19kdXIxOwogdHlwZWRlZiBkdXJhdGlvbjxfUmVwMiwgX1BlcmlvZDI+IF9fZHVyMjsK
IHR5cGVkZWYgdHlwZW5hbWUgY29tbW9uX3R5cGU8X19kdXIxLF9fZHVyMj46OnR5cGUgX19jZDsK
IHJldHVybiBfX2NkKF9fbGhzKS5jb3VudCgpIC8gX19jZChfX3JocykuY291bnQoKTsKICAgICAg
fQoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVwMSwgdHlwZW5hbWUgX1BlcmlvZCwgdHlwZW5h
bWUgX1JlcDI+CiAgICAgIGNvbnN0ZXhwciBkdXJhdGlvbjx0eXBlbmFtZSBfX2NvbW1vbl9yZXBf
dHlwZTxfUmVwMSwgdHlwZW5hbWUKIGVuYWJsZV9pZjwhX19pc19kdXJhdGlvbjxfUmVwMj46OnZh
bHVlLCBfUmVwMj46OnR5cGU+Ojp0eXBlLCBfUGVyaW9kPgogICAgICBvcGVyYXRvciUoY29uc3Qg
ZHVyYXRpb248X1JlcDEsIF9QZXJpb2Q+JiBfX2QsIGNvbnN0IF9SZXAyJiBfX3MpCiAgICAgIHsK
IHR5cGVkZWYgZHVyYXRpb248dHlwZW5hbWUgY29tbW9uX3R5cGU8X1JlcDEsIF9SZXAyPjo6dHlw
ZSwgX1BlcmlvZD4KICAgX19jZDsKIHJldHVybiBfX2NkKF9fY2QoX19kKS5jb3VudCgpICUgX19z
KTsKICAgICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXAxLCB0eXBlbmFtZSBfUGVyaW9k
MSwKICAgICAgdHlwZW5hbWUgX1JlcDIsIHR5cGVuYW1lIF9QZXJpb2QyPgogICAgICBjb25zdGV4
cHIgdHlwZW5hbWUgY29tbW9uX3R5cGU8ZHVyYXRpb248X1JlcDEsIF9QZXJpb2QxPiwKICAgICAg
ICAgZHVyYXRpb248X1JlcDIsIF9QZXJpb2QyPj46OnR5cGUKICAgICAgb3BlcmF0b3IlKGNvbnN0
IGR1cmF0aW9uPF9SZXAxLCBfUGVyaW9kMT4mIF9fbGhzLAogIGNvbnN0IGR1cmF0aW9uPF9SZXAy
LCBfUGVyaW9kMj4mIF9fcmhzKQogICAgICB7CiB0eXBlZGVmIGR1cmF0aW9uPF9SZXAxLCBfUGVy
aW9kMT4gX19kdXIxOwogdHlwZWRlZiBkdXJhdGlvbjxfUmVwMiwgX1BlcmlvZDI+IF9fZHVyMjsK
IHR5cGVkZWYgdHlwZW5hbWUgY29tbW9uX3R5cGU8X19kdXIxLF9fZHVyMj46OnR5cGUgX19jZDsK
IHJldHVybiBfX2NkKF9fY2QoX19saHMpLmNvdW50KCkgJSBfX2NkKF9fcmhzKS5jb3VudCgpKTsK
ICAgICAgfQoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVwMSwgdHlwZW5hbWUgX1BlcmlvZDEs
CiAgICAgIHR5cGVuYW1lIF9SZXAyLCB0eXBlbmFtZSBfUGVyaW9kMj4KICAgICAgY29uc3RleHBy
IGJvb2wKICAgICAgb3BlcmF0b3I9PShjb25zdCBkdXJhdGlvbjxfUmVwMSwgX1BlcmlvZDE+JiBf
X2xocywKICAgY29uc3QgZHVyYXRpb248X1JlcDIsIF9QZXJpb2QyPiYgX19yaHMpCiAgICAgIHsK
IHR5cGVkZWYgZHVyYXRpb248X1JlcDEsIF9QZXJpb2QxPiBfX2R1cjE7CiB0eXBlZGVmIGR1cmF0
aW9uPF9SZXAyLCBfUGVyaW9kMj4gX19kdXIyOwogdHlwZWRlZiB0eXBlbmFtZSBjb21tb25fdHlw
ZTxfX2R1cjEsX19kdXIyPjo6dHlwZSBfX2N0OwogcmV0dXJuIF9fY3QoX19saHMpLmNvdW50KCkg
PT0gX19jdChfX3JocykuY291bnQoKTsKICAgICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9S
ZXAxLCB0eXBlbmFtZSBfUGVyaW9kMSwKICAgICAgdHlwZW5hbWUgX1JlcDIsIHR5cGVuYW1lIF9Q
ZXJpb2QyPgogICAgICBjb25zdGV4cHIgYm9vbAogICAgICBvcGVyYXRvcjwoY29uc3QgZHVyYXRp
b248X1JlcDEsIF9QZXJpb2QxPiYgX19saHMsCiAgY29uc3QgZHVyYXRpb248X1JlcDIsIF9QZXJp
b2QyPiYgX19yaHMpCiAgICAgIHsKIHR5cGVkZWYgZHVyYXRpb248X1JlcDEsIF9QZXJpb2QxPiBf
X2R1cjE7CiB0eXBlZGVmIGR1cmF0aW9uPF9SZXAyLCBfUGVyaW9kMj4gX19kdXIyOwogdHlwZWRl
ZiB0eXBlbmFtZSBjb21tb25fdHlwZTxfX2R1cjEsX19kdXIyPjo6dHlwZSBfX2N0OwogcmV0dXJu
IF9fY3QoX19saHMpLmNvdW50KCkgPCBfX2N0KF9fcmhzKS5jb3VudCgpOwogICAgICB9CgogICAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JlcDEsIHR5cGVuYW1lIF9QZXJpb2QxLAogICAgICB0eXBlbmFt
ZSBfUmVwMiwgdHlwZW5hbWUgX1BlcmlvZDI+CiAgICAgIGNvbnN0ZXhwciBib29sCiAgICAgIG9w
ZXJhdG9yIT0oY29uc3QgZHVyYXRpb248X1JlcDEsIF9QZXJpb2QxPiYgX19saHMsCiAgIGNvbnN0
IGR1cmF0aW9uPF9SZXAyLCBfUGVyaW9kMj4mIF9fcmhzKQogICAgICB7IHJldHVybiAhKF9fbGhz
ID09IF9fcmhzKTsgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXAxLCB0eXBlbmFtZSBfUGVy
aW9kMSwKICAgICAgdHlwZW5hbWUgX1JlcDIsIHR5cGVuYW1lIF9QZXJpb2QyPgogICAgICBjb25z
dGV4cHIgYm9vbAogICAgICBvcGVyYXRvcjw9KGNvbnN0IGR1cmF0aW9uPF9SZXAxLCBfUGVyaW9k
MT4mIF9fbGhzLAogICBjb25zdCBkdXJhdGlvbjxfUmVwMiwgX1BlcmlvZDI+JiBfX3JocykKICAg
ICAgeyByZXR1cm4gIShfX3JocyA8IF9fbGhzKTsgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9S
ZXAxLCB0eXBlbmFtZSBfUGVyaW9kMSwKICAgICAgdHlwZW5hbWUgX1JlcDIsIHR5cGVuYW1lIF9Q
ZXJpb2QyPgogICAgICBjb25zdGV4cHIgYm9vbAogICAgICBvcGVyYXRvcj4oY29uc3QgZHVyYXRp
b248X1JlcDEsIF9QZXJpb2QxPiYgX19saHMsCiAgY29uc3QgZHVyYXRpb248X1JlcDIsIF9QZXJp
b2QyPiYgX19yaHMpCiAgICAgIHsgcmV0dXJuIF9fcmhzIDwgX19saHM7IH0KCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfUmVwMSwgdHlwZW5hbWUgX1BlcmlvZDEsCiAgICAgIHR5cGVuYW1lIF9SZXAy
LCB0eXBlbmFtZSBfUGVyaW9kMj4KICAgICAgY29uc3RleHByIGJvb2wKICAgICAgb3BlcmF0b3I+
PShjb25zdCBkdXJhdGlvbjxfUmVwMSwgX1BlcmlvZDE+JiBfX2xocywKICAgY29uc3QgZHVyYXRp
b248X1JlcDIsIF9QZXJpb2QyPiYgX19yaHMpCiAgICAgIHsgcmV0dXJuICEoX19saHMgPCBfX3Jo
cyk7IH0KCgogICAgdHlwZWRlZiBkdXJhdGlvbjxpbnQ2NF90LCBuYW5vPiBuYW5vc2Vjb25kczsK
CgogICAgdHlwZWRlZiBkdXJhdGlvbjxpbnQ2NF90LCBtaWNybz4gbWljcm9zZWNvbmRzOwoKCiAg
ICB0eXBlZGVmIGR1cmF0aW9uPGludDY0X3QsIG1pbGxpPiBtaWxsaXNlY29uZHM7CgoKICAgIHR5
cGVkZWYgZHVyYXRpb248aW50NjRfdD4gc2Vjb25kczsKCgogICAgdHlwZWRlZiBkdXJhdGlvbjxp
bnQsIHJhdGlvPCA2MD4+IG1pbnV0ZXM7CgoKICAgIHR5cGVkZWYgZHVyYXRpb248aW50LCByYXRp
bzwzNjAwPj4gaG91cnM7CgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DbG9jaywgdHlwZW5hbWUg
X0R1cj4KICAgICAgc3RydWN0IHRpbWVfcG9pbnQKICAgICAgewogdHlwZWRlZiBfQ2xvY2sgY2xv
Y2s7CiB0eXBlZGVmIF9EdXIgZHVyYXRpb247CiB0eXBlZGVmIHR5cGVuYW1lIGR1cmF0aW9uOjpy
ZXAgcmVwOwogdHlwZWRlZiB0eXBlbmFtZSBkdXJhdGlvbjo6cGVyaW9kIHBlcmlvZDsKCiBjb25z
dGV4cHIgdGltZV9wb2ludCgpIDogX19kKGR1cmF0aW9uOjp6ZXJvKCkpCiB7IH0KCiBjb25zdGV4
cHIgZXhwbGljaXQgdGltZV9wb2ludChjb25zdCBkdXJhdGlvbiYgX19kdXIpCiA6IF9fZChfX2R1
cikKIHsgfQoKCiB0ZW1wbGF0ZTx0eXBlbmFtZSBfRHVyMj4KICAgY29uc3RleHByIHRpbWVfcG9p
bnQoY29uc3QgdGltZV9wb2ludDxjbG9jaywgX0R1cjI+JiBfX3QpCiAgIDogX19kKF9fdC50aW1l
X3NpbmNlX2Vwb2NoKCkpCiAgIHsgfQoKCiBjb25zdGV4cHIgZHVyYXRpb24KIHRpbWVfc2luY2Vf
ZXBvY2goKSBjb25zdAogeyByZXR1cm4gX19kOyB9CgoKIHRpbWVfcG9pbnQmCiBvcGVyYXRvcis9
KGNvbnN0IGR1cmF0aW9uJiBfX2R1cikKIHsKICAgX19kICs9IF9fZHVyOwogICByZXR1cm4gKnRo
aXM7CiB9CgogdGltZV9wb2ludCYKIG9wZXJhdG9yLT0oY29uc3QgZHVyYXRpb24mIF9fZHVyKQog
ewogICBfX2QgLT0gX19kdXI7CiAgIHJldHVybiAqdGhpczsKIH0KCgogc3RhdGljIGNvbnN0ZXhw
ciB0aW1lX3BvaW50CiBtaW4oKQogeyByZXR1cm4gdGltZV9wb2ludChkdXJhdGlvbjo6bWluKCkp
OyB9Cgogc3RhdGljIGNvbnN0ZXhwciB0aW1lX3BvaW50CiBtYXgoKQogeyByZXR1cm4gdGltZV9w
b2ludChkdXJhdGlvbjo6bWF4KCkpOyB9CgogICAgICBwcml2YXRlOgogZHVyYXRpb24gX19kOwog
ICAgICB9OwoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVG9EdXIsIHR5cGVuYW1lIF9DbG9jaywg
dHlwZW5hbWUgX0R1cj4KICAgICAgY29uc3RleHByIHR5cGVuYW1lIGVuYWJsZV9pZjxfX2lzX2R1
cmF0aW9uPF9Ub0R1cj46OnZhbHVlLAogICAgICAgdGltZV9wb2ludDxfQ2xvY2ssIF9Ub0R1cj4+
Ojp0eXBlCiAgICAgIHRpbWVfcG9pbnRfY2FzdChjb25zdCB0aW1lX3BvaW50PF9DbG9jaywgX0R1
cj4mIF9fdCkKICAgICAgewogdHlwZWRlZiB0aW1lX3BvaW50PF9DbG9jaywgX1RvRHVyPiBfX3Rp
bWVfcG9pbnQ7CiByZXR1cm4gX190aW1lX3BvaW50KGR1cmF0aW9uX2Nhc3Q8X1RvRHVyPihfX3Qu
dGltZV9zaW5jZV9lcG9jaCgpKSk7CiAgICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2xv
Y2ssIHR5cGVuYW1lIF9EdXIxLAogICAgICB0eXBlbmFtZSBfUmVwMiwgdHlwZW5hbWUgX1Blcmlv
ZDI+CiAgICAgIGNvbnN0ZXhwciB0aW1lX3BvaW50PF9DbG9jaywKIHR5cGVuYW1lIGNvbW1vbl90
eXBlPF9EdXIxLCBkdXJhdGlvbjxfUmVwMiwgX1BlcmlvZDI+Pjo6dHlwZT4KICAgICAgb3BlcmF0
b3IrKGNvbnN0IHRpbWVfcG9pbnQ8X0Nsb2NrLCBfRHVyMT4mIF9fbGhzLAogIGNvbnN0IGR1cmF0
aW9uPF9SZXAyLCBfUGVyaW9kMj4mIF9fcmhzKQogICAgICB7CiB0eXBlZGVmIGR1cmF0aW9uPF9S
ZXAyLCBfUGVyaW9kMj4gX19kdXIyOwogdHlwZWRlZiB0eXBlbmFtZSBjb21tb25fdHlwZTxfRHVy
MSxfX2R1cjI+Ojp0eXBlIF9fY3Q7CiB0eXBlZGVmIHRpbWVfcG9pbnQ8X0Nsb2NrLCBfX2N0PiBf
X3RpbWVfcG9pbnQ7CiByZXR1cm4gX190aW1lX3BvaW50KF9fbGhzLnRpbWVfc2luY2VfZXBvY2go
KSArIF9fcmhzKTsKICAgICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXAxLCB0eXBlbmFt
ZSBfUGVyaW9kMSwKICAgICAgdHlwZW5hbWUgX0Nsb2NrLCB0eXBlbmFtZSBfRHVyMj4KICAgICAg
Y29uc3RleHByIHRpbWVfcG9pbnQ8X0Nsb2NrLAogdHlwZW5hbWUgY29tbW9uX3R5cGU8ZHVyYXRp
b248X1JlcDEsIF9QZXJpb2QxPiwgX0R1cjI+Ojp0eXBlPgogICAgICBvcGVyYXRvcisoY29uc3Qg
ZHVyYXRpb248X1JlcDEsIF9QZXJpb2QxPiYgX19saHMsCiAgY29uc3QgdGltZV9wb2ludDxfQ2xv
Y2ssIF9EdXIyPiYgX19yaHMpCiAgICAgIHsKIHR5cGVkZWYgZHVyYXRpb248X1JlcDEsIF9QZXJp
b2QxPiBfX2R1cjE7CiB0eXBlZGVmIHR5cGVuYW1lIGNvbW1vbl90eXBlPF9fZHVyMSxfRHVyMj46
OnR5cGUgX19jdDsKIHR5cGVkZWYgdGltZV9wb2ludDxfQ2xvY2ssIF9fY3Q+IF9fdGltZV9wb2lu
dDsKIHJldHVybiBfX3RpbWVfcG9pbnQoX19yaHMudGltZV9zaW5jZV9lcG9jaCgpICsgX19saHMp
OwogICAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Nsb2NrLCB0eXBlbmFtZSBfRHVyMSwK
ICAgICAgdHlwZW5hbWUgX1JlcDIsIHR5cGVuYW1lIF9QZXJpb2QyPgogICAgICBjb25zdGV4cHIg
dGltZV9wb2ludDxfQ2xvY2ssCiB0eXBlbmFtZSBjb21tb25fdHlwZTxfRHVyMSwgZHVyYXRpb248
X1JlcDIsIF9QZXJpb2QyPj46OnR5cGU+CiAgICAgIG9wZXJhdG9yLShjb25zdCB0aW1lX3BvaW50
PF9DbG9jaywgX0R1cjE+JiBfX2xocywKICBjb25zdCBkdXJhdGlvbjxfUmVwMiwgX1BlcmlvZDI+
JiBfX3JocykKICAgICAgewogdHlwZWRlZiBkdXJhdGlvbjxfUmVwMiwgX1BlcmlvZDI+IF9fZHVy
MjsKIHR5cGVkZWYgdHlwZW5hbWUgY29tbW9uX3R5cGU8X0R1cjEsX19kdXIyPjo6dHlwZSBfX2N0
OwogdHlwZWRlZiB0aW1lX3BvaW50PF9DbG9jaywgX19jdD4gX190aW1lX3BvaW50OwogcmV0dXJu
IF9fdGltZV9wb2ludChfX2xocy50aW1lX3NpbmNlX2Vwb2NoKCkgLV9fcmhzKTsKICAgICAgfQoK
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DbG9jaywgdHlwZW5hbWUgX0R1cjEsIHR5cGVuYW1lIF9E
dXIyPgogICAgICBjb25zdGV4cHIgdHlwZW5hbWUgY29tbW9uX3R5cGU8X0R1cjEsIF9EdXIyPjo6
dHlwZQogICAgICBvcGVyYXRvci0oY29uc3QgdGltZV9wb2ludDxfQ2xvY2ssIF9EdXIxPiYgX19s
aHMsCiAgY29uc3QgdGltZV9wb2ludDxfQ2xvY2ssIF9EdXIyPiYgX19yaHMpCiAgICAgIHsgcmV0
dXJuIF9fbGhzLnRpbWVfc2luY2VfZXBvY2goKSAtIF9fcmhzLnRpbWVfc2luY2VfZXBvY2goKTsg
fQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DbG9jaywgdHlwZW5hbWUgX0R1cjEsIHR5cGVuYW1l
IF9EdXIyPgogICAgICBjb25zdGV4cHIgYm9vbAogICAgICBvcGVyYXRvcj09KGNvbnN0IHRpbWVf
cG9pbnQ8X0Nsb2NrLCBfRHVyMT4mIF9fbGhzLAogICBjb25zdCB0aW1lX3BvaW50PF9DbG9jaywg
X0R1cjI+JiBfX3JocykKICAgICAgeyByZXR1cm4gX19saHMudGltZV9zaW5jZV9lcG9jaCgpID09
IF9fcmhzLnRpbWVfc2luY2VfZXBvY2goKTsgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DbG9j
aywgdHlwZW5hbWUgX0R1cjEsIHR5cGVuYW1lIF9EdXIyPgogICAgICBjb25zdGV4cHIgYm9vbAog
ICAgICBvcGVyYXRvciE9KGNvbnN0IHRpbWVfcG9pbnQ8X0Nsb2NrLCBfRHVyMT4mIF9fbGhzLAog
ICBjb25zdCB0aW1lX3BvaW50PF9DbG9jaywgX0R1cjI+JiBfX3JocykKICAgICAgeyByZXR1cm4g
IShfX2xocyA9PSBfX3Jocyk7IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2xvY2ssIHR5cGVu
YW1lIF9EdXIxLCB0eXBlbmFtZSBfRHVyMj4KICAgICAgY29uc3RleHByIGJvb2wKICAgICAgb3Bl
cmF0b3I8KGNvbnN0IHRpbWVfcG9pbnQ8X0Nsb2NrLCBfRHVyMT4mIF9fbGhzLAogIGNvbnN0IHRp
bWVfcG9pbnQ8X0Nsb2NrLCBfRHVyMj4mIF9fcmhzKQogICAgICB7IHJldHVybiBfX2xocy50aW1l
X3NpbmNlX2Vwb2NoKCkgPCBfX3Jocy50aW1lX3NpbmNlX2Vwb2NoKCk7IH0KCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQ2xvY2ssIHR5cGVuYW1lIF9EdXIxLCB0eXBlbmFtZSBfRHVyMj4KICAgICAg
Y29uc3RleHByIGJvb2wKICAgICAgb3BlcmF0b3I8PShjb25zdCB0aW1lX3BvaW50PF9DbG9jaywg
X0R1cjE+JiBfX2xocywKICAgY29uc3QgdGltZV9wb2ludDxfQ2xvY2ssIF9EdXIyPiYgX19yaHMp
CiAgICAgIHsgcmV0dXJuICEoX19yaHMgPCBfX2xocyk7IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2xvY2ssIHR5cGVuYW1lIF9EdXIxLCB0eXBlbmFtZSBfRHVyMj4KICAgICAgY29uc3RleHBy
IGJvb2wKICAgICAgb3BlcmF0b3I+KGNvbnN0IHRpbWVfcG9pbnQ8X0Nsb2NrLCBfRHVyMT4mIF9f
bGhzLAogIGNvbnN0IHRpbWVfcG9pbnQ8X0Nsb2NrLCBfRHVyMj4mIF9fcmhzKQogICAgICB7IHJl
dHVybiBfX3JocyA8IF9fbGhzOyB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Nsb2NrLCB0eXBl
bmFtZSBfRHVyMSwgdHlwZW5hbWUgX0R1cjI+CiAgICAgIGNvbnN0ZXhwciBib29sCiAgICAgIG9w
ZXJhdG9yPj0oY29uc3QgdGltZV9wb2ludDxfQ2xvY2ssIF9EdXIxPiYgX19saHMsCiAgIGNvbnN0
IHRpbWVfcG9pbnQ8X0Nsb2NrLCBfRHVyMj4mIF9fcmhzKQogICAgICB7IHJldHVybiAhKF9fbGhz
IDwgX19yaHMpOyB9CiMgNzA4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC44LjEvY2hyb25vIiAzCiAgICBpbmxpbmUgbmFtZXNwYWNlIF9WMiB7CgoKCgoKCiAg
ICAgc3RydWN0IHN5c3RlbV9jbG9jawogICAgewogICAgICB0eXBlZGVmIGNocm9ubzo6bmFub3Nl
Y29uZHMgZHVyYXRpb247CiAgICAgIHR5cGVkZWYgZHVyYXRpb246OnJlcCByZXA7CiAgICAgIHR5
cGVkZWYgZHVyYXRpb246OnBlcmlvZCBwZXJpb2Q7CiAgICAgIHR5cGVkZWYgY2hyb25vOjp0aW1l
X3BvaW50PHN5c3RlbV9jbG9jaywgZHVyYXRpb24+IHRpbWVfcG9pbnQ7CgogICAgICBzdGF0aWNf
YXNzZXJ0KHN5c3RlbV9jbG9jazo6ZHVyYXRpb246Om1pbigpCiAgICAgIDwgc3lzdGVtX2Nsb2Nr
OjpkdXJhdGlvbjo6emVybygpLAogICAgICAiYSBjbG9jaydzIG1pbmltdW0gZHVyYXRpb24gY2Fu
bm90IGJlIGxlc3MgdGhhbiBpdHMgZXBvY2giKTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc19zdGVhZHkgPSBmYWxzZTsKCiAgICAgIHN0YXRpYyB0aW1lX3BvaW50CiAgICAgIG5vdygp
IG5vZXhjZXB0OwoKCiAgICAgIHN0YXRpYyBzdGQ6OnRpbWVfdAogICAgICB0b190aW1lX3QoY29u
c3QgdGltZV9wb2ludCYgX190KSBub2V4Y2VwdAogICAgICB7CiByZXR1cm4gc3RkOjp0aW1lX3Qo
ZHVyYXRpb25fY2FzdDxjaHJvbm86OnNlY29uZHM+CiAgICAgIChfX3QudGltZV9zaW5jZV9lcG9j
aCgpKS5jb3VudCgpKTsKICAgICAgfQoKICAgICAgc3RhdGljIHRpbWVfcG9pbnQKICAgICAgZnJv
bV90aW1lX3Qoc3RkOjp0aW1lX3QgX190KSBub2V4Y2VwdAogICAgICB7CiB0eXBlZGVmIGNocm9u
bzo6dGltZV9wb2ludDxzeXN0ZW1fY2xvY2ssIHNlY29uZHM+IF9fZnJvbTsKIHJldHVybiB0aW1l
X3BvaW50X2Nhc3Q8c3lzdGVtX2Nsb2NrOjpkdXJhdGlvbj4KICAgICAgICAoX19mcm9tKGNocm9u
bzo6c2Vjb25kcyhfX3QpKSk7CiAgICAgIH0KICAgIH07CgoKCgoKCgogICAgc3RydWN0IHN0ZWFk
eV9jbG9jawogICAgewogICAgICB0eXBlZGVmIGNocm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb247
CiAgICAgIHR5cGVkZWYgZHVyYXRpb246OnJlcCByZXA7CiAgICAgIHR5cGVkZWYgZHVyYXRpb246
OnBlcmlvZCBwZXJpb2Q7CiAgICAgIHR5cGVkZWYgY2hyb25vOjp0aW1lX3BvaW50PHN0ZWFkeV9j
bG9jaywgZHVyYXRpb24+IHRpbWVfcG9pbnQ7CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNfc3RlYWR5ID0gdHJ1ZTsKCiAgICAgIHN0YXRpYyB0aW1lX3BvaW50CiAgICAgIG5vdygpIG5v
ZXhjZXB0OwogICAgfTsKIyA3NzUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjguMS9jaHJvbm8iIDMKICAgIHVzaW5nIGhpZ2hfcmVzb2x1dGlvbl9jbG9jayA9
IHN5c3RlbV9jbG9jazsKCiAgfQoKIAogIH0KCgp9CiMgMzEgIi9ob21lL3dlYmtpdGJ1aWxkYm90
L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxkc2xhdmUvZWZsLWFybXY3LXRodW1i
Mi1idWlsZC9idWlsZC9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaCIgMgojIDEgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4x
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9tZW1vcnkiIDEgMwoj
IDQ2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvbWVt
b3J5IiAzCiAgICAgICAKIyA0NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOC4xL21lbW9yeSIgMwojIDYyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC44LjEvbWVtb3J5IiAzCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDEgMwojIDYw
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9z
dGxfYWxnb2Jhc2UuaCIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjguMS9iaXRzL2Z1bmN0ZXhjZXB0LmgiIDEgMwojIDQyICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9mdW5jdGV4Y2VwdC5oIiAz
Cm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIp
KSkKewoKCgogIHZvaWQKICBfX3Rocm93X2JhZF9leGNlcHRpb24odm9pZCkgX19hdHRyaWJ1dGVf
XygoX19ub3JldHVybl9fKSk7CgoKICB2b2lkCiAgX190aHJvd19iYWRfYWxsb2Modm9pZCkgX19h
dHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSk7CgoKICB2b2lkCiAgX190aHJvd19iYWRfY2FzdCh2
b2lkKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKTsKCiAgdm9pZAogIF9fdGhyb3dfYmFk
X3R5cGVpZCh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKTsKCgogIHZvaWQKICBf
X3Rocm93X2xvZ2ljX2Vycm9yKGNvbnN0IGNoYXIqKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJu
X18pKTsKCiAgdm9pZAogIF9fdGhyb3dfZG9tYWluX2Vycm9yKGNvbnN0IGNoYXIqKSBfX2F0dHJp
YnV0ZV9fKChfX25vcmV0dXJuX18pKTsKCiAgdm9pZAogIF9fdGhyb3dfaW52YWxpZF9hcmd1bWVu
dChjb25zdCBjaGFyKikgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSk7CgogIHZvaWQKICBf
X3Rocm93X2xlbmd0aF9lcnJvcihjb25zdCBjaGFyKikgX19hdHRyaWJ1dGVfXygoX19ub3JldHVy
bl9fKSk7CgogIHZvaWQKICBfX3Rocm93X291dF9vZl9yYW5nZShjb25zdCBjaGFyKikgX19hdHRy
aWJ1dGVfXygoX19ub3JldHVybl9fKSk7CgogIHZvaWQKICBfX3Rocm93X3J1bnRpbWVfZXJyb3Io
Y29uc3QgY2hhciopIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpOwoKICB2b2lkCiAgX190
aHJvd19yYW5nZV9lcnJvcihjb25zdCBjaGFyKikgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9f
KSk7CgogIHZvaWQKICBfX3Rocm93X292ZXJmbG93X2Vycm9yKGNvbnN0IGNoYXIqKSBfX2F0dHJp
YnV0ZV9fKChfX25vcmV0dXJuX18pKTsKCiAgdm9pZAogIF9fdGhyb3dfdW5kZXJmbG93X2Vycm9y
KGNvbnN0IGNoYXIqKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKTsKCgogIHZvaWQKICBf
X3Rocm93X2lvc19mYWlsdXJlKGNvbnN0IGNoYXIqKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJu
X18pKTsKCiAgdm9pZAogIF9fdGhyb3dfc3lzdGVtX2Vycm9yKGludCkgX19hdHRyaWJ1dGVfXygo
X19ub3JldHVybl9fKSk7CgogIHZvaWQKICBfX3Rocm93X2Z1dHVyZV9lcnJvcihpbnQpIF9fYXR0
cmlidXRlX18oKF9fbm9yZXR1cm5fXykpOwoKCiAgdm9pZAogIF9fdGhyb3dfYmFkX2Z1bmN0aW9u
X2NhbGwoKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKTsKCgp9CiMgNjEgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvYmFz
ZS5oIiAyIDMKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC44LjEvYml0cy9jcHBfdHlwZV90cmFpdHMuaCIgMSAzCiMgMzUgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2NwcF90eXBlX3RyYWl0cy5oIiAz
CiAgICAgICAKIyAzNiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOC4xL2JpdHMvY3BwX3R5cGVfdHJhaXRzLmgiIDMKIyA2OCAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvY3BwX3R5cGVfdHJhaXRzLmgiIDMK
bmFtZXNwYWNlIF9fZ251X2N4eCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZh
dWx0IikpKQp7CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3IsIHR5cGVuYW1lIF9Db250
YWluZXI+CiAgICBjbGFzcyBfX25vcm1hbF9pdGVyYXRvcjsKCgp9CgpuYW1lc3BhY2Ugc3RkIF9f
YXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgogIHN0cnVjdCBf
X3RydWVfdHlwZSB7IH07CiAgc3RydWN0IF9fZmFsc2VfdHlwZSB7IH07CgogIHRlbXBsYXRlPGJv
b2w+CiAgICBzdHJ1Y3QgX190cnV0aF90eXBlCiAgICB7IHR5cGVkZWYgX19mYWxzZV90eXBlIF9f
dHlwZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fdHJ1dGhfdHlwZTx0cnVlPgogICAg
eyB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9fdHlwZTsgfTsKCgoKICB0ZW1wbGF0ZTxjbGFzcyBfU3As
IGNsYXNzIF9UcD4KICAgIHN0cnVjdCBfX3RyYWl0b3IKICAgIHsKICAgICAgZW51bSB7IF9fdmFs
dWUgPSBib29sKF9TcDo6X192YWx1ZSkgfHwgYm9vbChfVHA6Ol9fdmFsdWUpIH07CiAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgX190cnV0aF90eXBlPF9fdmFsdWU+OjpfX3R5cGUgX190eXBlOwogICAg
fTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4KICAgIHN0cnVjdCBfX2FyZV9zYW1l
CiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMCB9OwogICAgICB0eXBlZGVmIF9fZmFsc2Vf
dHlwZSBfX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3Qg
X19hcmVfc2FtZTxfVHAsIF9UcD4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07CiAg
ICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4KICAgIHN0cnVjdCBfX2lzX3ZvaWQKICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUg
PSAwIH07CiAgICAgIHR5cGVkZWYgX19mYWxzZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBs
YXRlPD4KICAgIHN0cnVjdCBfX2lzX3ZvaWQ8dm9pZD4KICAgIHsKICAgICAgZW51bSB7IF9fdmFs
dWUgPSAxIH07CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCgoKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfaW50ZWdlcgogICAgewogICAg
ICBlbnVtIHsgX192YWx1ZSA9IDAgfTsKICAgICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgX190eXBl
OwogICAgfTsKCgoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9faXNfaW50ZWdlcjxib29sPgog
ICAgewogICAgICBlbnVtIHsgX192YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSBfX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ2VyPGNo
YXI+CiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMSB9OwogICAgICB0eXBlZGVmIF9fdHJ1
ZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2ludGVn
ZXI8c2lnbmVkIGNoYXI+CiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMSB9OwogICAgICB0
eXBlZGVmIF9fdHJ1ZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVj
dCBfX2lzX2ludGVnZXI8dW5zaWduZWQgY2hhcj4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUg
PSAxIH07CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCgogIHRlbXBs
YXRlPD4KICAgIHN0cnVjdCBfX2lzX2ludGVnZXI8d2NoYXJfdD4KICAgIHsKICAgICAgZW51bSB7
IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsK
CgoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ2VyPGNoYXIxNl90PgogICAgewog
ICAgICBlbnVtIHsgX192YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVfdHlwZSBfX3R5
cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ2VyPGNoYXIzMl90
PgogICAgewogICAgICBlbnVtIHsgX192YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVf
dHlwZSBfX3R5cGU7CiAgICB9OwoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9faXNfaW50ZWdl
cjxzaG9ydD4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5cGVkZWYg
X190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9faXNf
aW50ZWdlcjx1bnNpZ25lZCBzaG9ydD4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07
CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8Pgog
ICAgc3RydWN0IF9faXNfaW50ZWdlcjxpbnQ+CiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0g
MSB9OwogICAgICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRl
PD4KICAgIHN0cnVjdCBfX2lzX2ludGVnZXI8dW5zaWduZWQgaW50PgogICAgewogICAgICBlbnVt
IHsgX192YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVfdHlwZSBfX3R5cGU7CiAgICB9
OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ2VyPGxvbmc+CiAgICB7CiAgICAg
IGVudW0geyBfX3ZhbHVlID0gMSB9OwogICAgICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9fdHlwZTsK
ICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2ludGVnZXI8dW5zaWduZWQgbG9u
Zz4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5cGVkZWYgX190cnVl
X3R5cGUgX190eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9faXNfaW50ZWdl
cjxsb25nIGxvbmc+CiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMSB9OwogICAgICB0eXBl
ZGVmIF9fdHJ1ZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBf
X2lzX2ludGVnZXI8dW5zaWduZWQgbG9uZyBsb25nPgogICAgewogICAgICBlbnVtIHsgX192YWx1
ZSA9IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVfdHlwZSBfX3R5cGU7CiAgICB9OwoKCgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19mbG9hdGluZwogICAgewogICAg
ICBlbnVtIHsgX192YWx1ZSA9IDAgfTsKICAgICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgX190eXBl
OwogICAgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2Zsb2F0aW5nPGZsb2F0Pgog
ICAgewogICAgICBlbnVtIHsgX192YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSBfX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19mbG9hdGluZzxk
b3VibGU+CiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMSB9OwogICAgICB0eXBlZGVmIF9f
dHJ1ZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2Zs
b2F0aW5nPGxvbmcgZG91YmxlPgogICAgewogICAgICBlbnVtIHsgX192YWx1ZSA9IDEgfTsKICAg
ICAgdHlwZWRlZiBfX3RydWVfdHlwZSBfX3R5cGU7CiAgICB9OwoKCgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19wb2ludGVyCiAgICB7CiAgICAgIGVudW0geyBfX3Zh
bHVlID0gMCB9OwogICAgICB0eXBlZGVmIF9fZmFsc2VfdHlwZSBfX3R5cGU7CiAgICB9OwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19wb2ludGVyPF9UcCo+CiAgICB7
CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMSB9OwogICAgICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9f
dHlwZTsKICAgIH07CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lz
X25vcm1hbF9pdGVyYXRvcgogICAgewogICAgICBlbnVtIHsgX192YWx1ZSA9IDAgfTsKICAgICAg
dHlwZWRlZiBfX2ZhbHNlX3R5cGUgX190eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29udGFpbmVyPgogICAgc3RydWN0IF9faXNfbm9ybWFsX2l0
ZXJhdG9yPCBfX2dudV9jeHg6Ol9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwKICAgICAgICAg
ICAgIF9Db250YWluZXI+ID4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07CiAgICAg
IHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCgoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogICAgc3RydWN0IF9faXNfYXJpdGhtZXRpYwogICAgOiBwdWJsaWMgX190cmFpdG9y
PF9faXNfaW50ZWdlcjxfVHA+LCBfX2lzX2Zsb2F0aW5nPF9UcD4gPgogICAgeyB9OwoKCgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19mdW5kYW1lbnRhbAogICAgOiBw
dWJsaWMgX190cmFpdG9yPF9faXNfdm9pZDxfVHA+LCBfX2lzX2FyaXRobWV0aWM8X1RwPiA+CiAg
ICB7IH07CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lzX3NjYWxh
cgogICAgOiBwdWJsaWMgX190cmFpdG9yPF9faXNfYXJpdGhtZXRpYzxfVHA+LCBfX2lzX3BvaW50
ZXI8X1RwPiA+CiAgICB7IH07CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVj
dCBfX2lzX2NoYXIKICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAwIH07CiAgICAgIHR5cGVk
ZWYgX19mYWxzZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBf
X2lzX2NoYXI8Y2hhcj4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5
cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVj
dCBfX2lzX2NoYXI8d2NoYXJfdD4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07CiAg
ICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4KICAgIHN0cnVjdCBfX2lzX2J5dGUKICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUg
PSAwIH07CiAgICAgIHR5cGVkZWYgX19mYWxzZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBs
YXRlPD4KICAgIHN0cnVjdCBfX2lzX2J5dGU8Y2hhcj4KICAgIHsKICAgICAgZW51bSB7IF9fdmFs
dWUgPSAxIH07CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCiAgdGVt
cGxhdGU8PgogICAgc3RydWN0IF9faXNfYnl0ZTxzaWduZWQgY2hhcj4KICAgIHsKICAgICAgZW51
bSB7IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAg
fTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9faXNfYnl0ZTx1bnNpZ25lZCBjaGFyPgogICAg
ewogICAgICBlbnVtIHsgX192YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVfdHlwZSBf
X3R5cGU7CiAgICB9OwoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19p
c19tb3ZlX2l0ZXJhdG9yCiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMCB9OwogICAgICB0
eXBlZGVmIF9fZmFsc2VfdHlwZSBfX3R5cGU7CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0l0ZXJhdG9yPgogICAgY2xhc3MgbW92ZV9pdGVyYXRvcjsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0l0ZXJhdG9yPgogICAgc3RydWN0IF9faXNfbW92ZV9pdGVyYXRvcjwgbW92ZV9pdGVyYXRvcjxf
SXRlcmF0b3I+ID4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5cGVk
ZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCgoKfQojIDYyICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMiAz
CiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2V4
dC90eXBlX3RyYWl0cy5oIiAxIDMKIyAzMiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOC4xL2V4dC90eXBlX3RyYWl0cy5oIiAzCiAgICAgICAKIyAzMyAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44
LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2V4dC90eXBlX3Ry
YWl0cy5oIiAzCgoKCgpuYW1lc3BhY2UgX19nbnVfY3h4IF9fYXR0cmlidXRlX18gKChfX3Zpc2li
aWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgoKICB0ZW1wbGF0ZTxib29sLCB0eXBlbmFtZT4KICAg
IHN0cnVjdCBfX2VuYWJsZV9pZgogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBzdHJ1Y3QgX19lbmFibGVfaWY8dHJ1ZSwgX1RwPgogICAgeyB0eXBlZGVmIF9UcCBfX3R5cGU7
IH07CgoKCiAgdGVtcGxhdGU8Ym9vbCBfQ29uZCwgdHlwZW5hbWUgX0lmdHJ1ZSwgdHlwZW5hbWUg
X0lmZmFsc2U+CiAgICBzdHJ1Y3QgX19jb25kaXRpb25hbF90eXBlCiAgICB7IHR5cGVkZWYgX0lm
dHJ1ZSBfX3R5cGU7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JZnRydWUsIHR5cGVuYW1lIF9J
ZmZhbHNlPgogICAgc3RydWN0IF9fY29uZGl0aW9uYWxfdHlwZTxmYWxzZSwgX0lmdHJ1ZSwgX0lm
ZmFsc2U+CiAgICB7IHR5cGVkZWYgX0lmZmFsc2UgX190eXBlOyB9OwoKCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2FkZF91bnNpZ25lZAogICAgewogICAgcHJpdmF0ZToK
ICAgICAgdHlwZWRlZiBfX2VuYWJsZV9pZjxzdGQ6Ol9faXNfaW50ZWdlcjxfVHA+OjpfX3ZhbHVl
LCBfVHA+IF9faWZfdHlwZTsKCiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19p
Zl90eXBlOjpfX3R5cGUgX190eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9f
YWRkX3Vuc2lnbmVkPGNoYXI+CiAgICB7IHR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3R5cGU7IH07
CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2FkZF91bnNpZ25lZDxzaWduZWQgY2hhcj4KICAg
IHsgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdHlwZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3Ry
dWN0IF9fYWRkX3Vuc2lnbmVkPHNob3J0PgogICAgeyB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9f
dHlwZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fYWRkX3Vuc2lnbmVkPGludD4KICAg
IHsgdHlwZWRlZiB1bnNpZ25lZCBpbnQgX190eXBlOyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1
Y3QgX19hZGRfdW5zaWduZWQ8bG9uZz4KICAgIHsgdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdHlw
ZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fYWRkX3Vuc2lnbmVkPGxvbmcgbG9uZz4K
ICAgIHsgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgX190eXBlOyB9OwoKCiAgdGVtcGxhdGU8
PgogICAgc3RydWN0IF9fYWRkX3Vuc2lnbmVkPGJvb2w+OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1
Y3QgX19hZGRfdW5zaWduZWQ8d2NoYXJfdD47CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
ICAgc3RydWN0IF9fcmVtb3ZlX3Vuc2lnbmVkCiAgICB7CiAgICBwcml2YXRlOgogICAgICB0eXBl
ZGVmIF9fZW5hYmxlX2lmPHN0ZDo6X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsIF9UcD4gX19p
Zl90eXBlOwoKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lmX3R5cGU6Ol9f
dHlwZSBfX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19yZW1vdmVfdW5z
aWduZWQ8Y2hhcj4KICAgIHsgdHlwZWRlZiBzaWduZWQgY2hhciBfX3R5cGU7IH07CgogIHRlbXBs
YXRlPD4KICAgIHN0cnVjdCBfX3JlbW92ZV91bnNpZ25lZDx1bnNpZ25lZCBjaGFyPgogICAgeyB0
eXBlZGVmIHNpZ25lZCBjaGFyIF9fdHlwZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9f
cmVtb3ZlX3Vuc2lnbmVkPHVuc2lnbmVkIHNob3J0PgogICAgeyB0eXBlZGVmIHNob3J0IF9fdHlw
ZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fcmVtb3ZlX3Vuc2lnbmVkPHVuc2lnbmVk
IGludD4KICAgIHsgdHlwZWRlZiBpbnQgX190eXBlOyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1
Y3QgX19yZW1vdmVfdW5zaWduZWQ8dW5zaWduZWQgbG9uZz4KICAgIHsgdHlwZWRlZiBsb25nIF9f
dHlwZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fcmVtb3ZlX3Vuc2lnbmVkPHVuc2ln
bmVkIGxvbmcgbG9uZz4KICAgIHsgdHlwZWRlZiBsb25nIGxvbmcgX190eXBlOyB9OwoKCiAgdGVt
cGxhdGU8PgogICAgc3RydWN0IF9fcmVtb3ZlX3Vuc2lnbmVkPGJvb2w+OwoKICB0ZW1wbGF0ZTw+
CiAgICBzdHJ1Y3QgX19yZW1vdmVfdW5zaWduZWQ8d2NoYXJfdD47CgoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1R5cGU+CiAgICBpbmxpbmUgYm9vbAogICAgX19pc19udWxsX3BvaW50ZXIoX1R5cGUq
IF9fcHRyKQogICAgeyByZXR1cm4gX19wdHIgPT0gMDsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHlwZT4KICAgIGlubGluZSBib29sCiAgICBfX2lzX251bGxfcG9pbnRlcihfVHlwZSkKICAgIHsg
cmV0dXJuIGZhbHNlOyB9CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBib29sID0gc3RkOjpf
X2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZT4KICAgIHN0cnVjdCBfX3Byb21vdGUKICAgIHsgdHlw
ZWRlZiBkb3VibGUgX190eXBlOyB9OwoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBz
dHJ1Y3QgX19wcm9tb3RlPF9UcCwgZmFsc2U+CiAgICB7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0
cnVjdCBfX3Byb21vdGU8bG9uZyBkb3VibGU+CiAgICB7IHR5cGVkZWYgbG9uZyBkb3VibGUgX190
eXBlOyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19wcm9tb3RlPGRvdWJsZT4KICAgIHsg
dHlwZWRlZiBkb3VibGUgX190eXBlOyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19wcm9t
b3RlPGZsb2F0PgogICAgeyB0eXBlZGVmIGZsb2F0IF9fdHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXAsCiAgICAgICAgICAgdHlwZW5hbWUgX1RwMiA9IHR5cGVu
YW1lIF9fcHJvbW90ZTxfVHA+OjpfX3R5cGUsCiAgICAgICAgICAgdHlwZW5hbWUgX1VwMiA9IHR5
cGVuYW1lIF9fcHJvbW90ZTxfVXA+OjpfX3R5cGU+CiAgICBzdHJ1Y3QgX19wcm9tb3RlXzIKICAg
IHsKICAgICAgdHlwZWRlZiBfX3R5cGVvZl9fKF9UcDIoKSArIF9VcDIoKSkgX190eXBlOwogICAg
fTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXAsIHR5cGVuYW1lIF9WcCwK
ICAgICAgICAgICB0eXBlbmFtZSBfVHAyID0gdHlwZW5hbWUgX19wcm9tb3RlPF9UcD46Ol9fdHlw
ZSwKICAgICAgICAgICB0eXBlbmFtZSBfVXAyID0gdHlwZW5hbWUgX19wcm9tb3RlPF9VcD46Ol9f
dHlwZSwKICAgICAgICAgICB0eXBlbmFtZSBfVnAyID0gdHlwZW5hbWUgX19wcm9tb3RlPF9WcD46
Ol9fdHlwZT4KICAgIHN0cnVjdCBfX3Byb21vdGVfMwogICAgewogICAgICB0eXBlZGVmIF9fdHlw
ZW9mX18oX1RwMigpICsgX1VwMigpICsgX1ZwMigpKSBfX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9VcCwgdHlwZW5hbWUgX1ZwLCB0eXBlbmFtZSBfV3As
CiAgICAgICAgICAgdHlwZW5hbWUgX1RwMiA9IHR5cGVuYW1lIF9fcHJvbW90ZTxfVHA+OjpfX3R5
cGUsCiAgICAgICAgICAgdHlwZW5hbWUgX1VwMiA9IHR5cGVuYW1lIF9fcHJvbW90ZTxfVXA+Ojpf
X3R5cGUsCiAgICAgICAgICAgdHlwZW5hbWUgX1ZwMiA9IHR5cGVuYW1lIF9fcHJvbW90ZTxfVnA+
OjpfX3R5cGUsCiAgICAgICAgICAgdHlwZW5hbWUgX1dwMiA9IHR5cGVuYW1lIF9fcHJvbW90ZTxf
V3A+OjpfX3R5cGU+CiAgICBzdHJ1Y3QgX19wcm9tb3RlXzQKICAgIHsKICAgICAgdHlwZWRlZiBf
X3R5cGVvZl9fKF9UcDIoKSArIF9VcDIoKSArIF9WcDIoKSArIF9XcDIoKSkgX190eXBlOwogICAg
fTsKCgp9CiMgNjMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjguMS9iaXRzL3N0bF9hbGdvYmFzZS5oIiAyIDMKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvZXh0L251bWVyaWNfdHJhaXRzLmgiIDEgMwojIDMy
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvZXh0L251
bWVyaWNfdHJhaXRzLmgiIDMKICAgICAgIAojIDMzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC44LjEvZXh0L251bWVyaWNfdHJhaXRzLmgiIDMKCgoKCm5hbWVz
cGFjZSBfX2dudV9jeHggX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIp
KSkKewoKIyA1NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OC4xL2V4dC9udW1lcmljX3RyYWl0cy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1ZhbHVlPgog
ICAgc3RydWN0IF9fbnVtZXJpY190cmFpdHNfaW50ZWdlcgogICAgewoKICAgICAgc3RhdGljIGNv
bnN0IF9WYWx1ZSBfX21pbiA9ICgoKF9WYWx1ZSkoLTEpIDwgMCkgPyAoX1ZhbHVlKTEgPDwgKHNp
emVvZihfVmFsdWUpICogOCAtICgoX1ZhbHVlKSgtMSkgPCAwKSkgOiAoX1ZhbHVlKTApOwogICAg
ICBzdGF0aWMgY29uc3QgX1ZhbHVlIF9fbWF4ID0gKCgoX1ZhbHVlKSgtMSkgPCAwKSA/ICgoKCgo
X1ZhbHVlKTEgPDwgKChzaXplb2YoX1ZhbHVlKSAqIDggLSAoKF9WYWx1ZSkoLTEpIDwgMCkpIC0g
MSkpIC0gMSkgPDwgMSkgKyAxKSA6IH4oX1ZhbHVlKTApOwoKCgogICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBfX2lzX3NpZ25lZCA9ICgoX1ZhbHVlKSgtMSkgPCAwKTsKICAgICAgc3RhdGljIGNvbnN0
IGludCBfX2RpZ2l0cyA9IChzaXplb2YoX1ZhbHVlKSAqIDggLSAoKF9WYWx1ZSkoLTEpIDwgMCkp
OwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1ZhbHVlPgogICAgY29uc3QgX1ZhbHVlIF9f
bnVtZXJpY190cmFpdHNfaW50ZWdlcjxfVmFsdWU+OjpfX21pbjsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1ZhbHVlPgogICAgY29uc3QgX1ZhbHVlIF9fbnVtZXJpY190cmFpdHNfaW50ZWdlcjxfVmFs
dWU+OjpfX21heDsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1ZhbHVlPgogICAgY29uc3QgYm9vbCBf
X251bWVyaWNfdHJhaXRzX2ludGVnZXI8X1ZhbHVlPjo6X19pc19zaWduZWQ7CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9WYWx1ZT4KICAgIGNvbnN0IGludCBfX251bWVyaWNfdHJhaXRzX2ludGVnZXI8
X1ZhbHVlPjo6X19kaWdpdHM7CiMgOTkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9leHQvbnVtZXJpY190cmFpdHMuaCIgMwogIHRlbXBsYXRlPHR5cGVu
YW1lIF9WYWx1ZT4KICAgIHN0cnVjdCBfX251bWVyaWNfdHJhaXRzX2Zsb2F0aW5nCiAgICB7Cgog
ICAgICBzdGF0aWMgY29uc3QgaW50IF9fbWF4X2RpZ2l0czEwID0gKDIgKyAoc3RkOjpfX2FyZV9z
YW1lPF9WYWx1ZSwgZmxvYXQ+OjpfX3ZhbHVlID8gMjQgOiBzdGQ6Ol9fYXJlX3NhbWU8X1ZhbHVl
LCBkb3VibGU+OjpfX3ZhbHVlID8gNTMgOiA1MykgKiA2NDNMIC8gMjEzNik7CgoKICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgX19pc19zaWduZWQgPSB0cnVlOwogICAgICBzdGF0aWMgY29uc3QgaW50
IF9fZGlnaXRzMTAgPSAoc3RkOjpfX2FyZV9zYW1lPF9WYWx1ZSwgZmxvYXQ+OjpfX3ZhbHVlID8g
NiA6IHN0ZDo6X19hcmVfc2FtZTxfVmFsdWUsIGRvdWJsZT46Ol9fdmFsdWUgPyAxNSA6IDE1KTsK
ICAgICAgc3RhdGljIGNvbnN0IGludCBfX21heF9leHBvbmVudDEwID0gKHN0ZDo6X19hcmVfc2Ft
ZTxfVmFsdWUsIGZsb2F0Pjo6X192YWx1ZSA/IDM4IDogc3RkOjpfX2FyZV9zYW1lPF9WYWx1ZSwg
ZG91YmxlPjo6X192YWx1ZSA/IDMwOCA6IDMwOCk7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVmFsdWU+CiAgICBjb25zdCBpbnQgX19udW1lcmljX3RyYWl0c19mbG9hdGluZzxfVmFsdWU+
OjpfX21heF9kaWdpdHMxMDsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1ZhbHVlPgogICAgY29uc3Qg
Ym9vbCBfX251bWVyaWNfdHJhaXRzX2Zsb2F0aW5nPF9WYWx1ZT46Ol9faXNfc2lnbmVkOwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVmFsdWU+CiAgICBjb25zdCBpbnQgX19udW1lcmljX3RyYWl0c19m
bG9hdGluZzxfVmFsdWU+OjpfX2RpZ2l0czEwOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFsdWU+
CiAgICBjb25zdCBpbnQgX19udW1lcmljX3RyYWl0c19mbG9hdGluZzxfVmFsdWU+OjpfX21heF9l
eHBvbmVudDEwOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFsdWU+CiAgICBzdHJ1Y3QgX19udW1l
cmljX3RyYWl0cwogICAgOiBwdWJsaWMgX19jb25kaXRpb25hbF90eXBlPHN0ZDo6X19pc19pbnRl
Z2VyPF9WYWx1ZT46Ol9fdmFsdWUsCiAgICBfX251bWVyaWNfdHJhaXRzX2ludGVnZXI8X1ZhbHVl
PiwKICAgIF9fbnVtZXJpY190cmFpdHNfZmxvYXRpbmc8X1ZhbHVlPiA+OjpfX3R5cGUKICAgIHsg
fTsKCgp9CiMgNjQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjguMS9iaXRzL3N0bF9hbGdvYmFzZS5oIiAyIDMKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfcGFpci5oIiAxIDMKIyA1OSAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44
LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX3Bh
aXIuaCIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjguMS9iaXRzL21vdmUuaCIgMSAzCiMgMzQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL21vdmUuaCIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2NvbmNlcHRfY2hlY2suaCIgMSAz
CiMgMzMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9i
aXRzL2NvbmNlcHRfY2hlY2suaCIgMwogICAgICAgCiMgMzQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2NvbmNlcHRfY2hlY2suaCIgMwojIDM1
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9t
b3ZlLmgiIDIgMwoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18g
KCJkZWZhdWx0IikpKQp7CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGlu
ZSBfVHAqCiAgICBfX2FkZHJlc3NvZihfVHAmIF9fcikgbm9leGNlcHQKICAgIHsKICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8X1RwKj4KICgmY29uc3RfY2FzdDxjaGFyJj4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB2b2xhdGlsZSBjaGFyJj4oX19yKSkpOwogICAgfQoKCn0KCgoKCm5hbWVz
cGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoK
IyA3NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2Jp
dHMvbW92ZS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY29uc3RleHByIF9UcCYm
CiAgICBmb3J3YXJkKHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxfVHA+Ojp0eXBlJiBf
X3QpIG5vZXhjZXB0CiAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxfVHAmJj4oX190KTsgfQoKCgoK
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjb25zdGV4cHIgX1RwJiYKICAgIGZvcndh
cmQodHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPF9UcD46OnR5cGUmJiBfX3QpIG5vZXhj
ZXB0CiAgICB7CiAgICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbHZhbHVlX3JlZmVyZW5jZTxf
VHA+Ojp2YWx1ZSwgInRlbXBsYXRlIGFyZ3VtZW50IgogICAgICAiIHN1YnN0aXR1dGluZyBfVHAg
aXMgYW4gbHZhbHVlIHJlZmVyZW5jZSB0eXBlIik7CiAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxf
VHAmJj4oX190KTsKICAgIH0KCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjb25z
dGV4cHIgdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPF9UcD46OnR5cGUmJgogICAgbW92
ZShfVHAmJiBfX3QpIG5vZXhjZXB0CiAgICB7IHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBz
dGQ6OnJlbW92ZV9yZWZlcmVuY2U8X1RwPjo6dHlwZSYmPihfX3QpOyB9CgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19tb3ZlX2lmX25vZXhjZXB0X2NvbmQKICAgIDogcHVi
bGljIF9fYW5kXzxfX25vdF88aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGU8X1RwPj4sCiAg
ICAgICAgICAgICAgICAgICAgaXNfY29weV9jb25zdHJ1Y3RpYmxlPF9UcD4+Ojp0eXBlIHsgfTsK
IyAxMTggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9i
aXRzL21vdmUuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBjb25zdGV4
cHIgdHlwZW5hbWUKICAgIGNvbmRpdGlvbmFsPF9fbW92ZV9pZl9ub2V4Y2VwdF9jb25kPF9UcD46
OnZhbHVlLCBjb25zdCBfVHAmLCBfVHAmJj46OnR5cGUKICAgIG1vdmVfaWZfbm9leGNlcHQoX1Rw
JiBfX3gpIG5vZXhjZXB0CiAgICB7IHJldHVybiBzdGQ6Om1vdmUoX194KTsgfQojIDEzMyAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44
LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvbW92ZS5o
IiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIF9UcCoKICAgIGFkZHJlc3Nv
ZihfVHAmIF9fcikgbm9leGNlcHQKICAgIHsgcmV0dXJuIHN0ZDo6X19hZGRyZXNzb2YoX19yKTsg
fQoKCgp9CiMgMTQ5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC44LjEvYml0cy9tb3ZlLmgiIDMKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNp
YmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgojIDE2NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvbW92ZS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogICAgaW5saW5lIHZvaWQKICAgIHN3YXAoX1RwJiBfX2EsIF9UcCYgX19iKQoKICAg
IG5vZXhjZXB0KF9fYW5kXzxpc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZTxfVHA+LAogICAg
ICAgICAgICAgaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGU8X1RwPj46OnZhbHVlKQoKICAgIHsK
CiAgICAgCgogICAgICBfVHAgX190bXAgPSBzdGQ6Om1vdmUoX19hKTsKICAgICAgX19hID0gc3Rk
Ojptb3ZlKF9fYik7CiAgICAgIF9fYiA9IHN0ZDo6bW92ZShfX3RtcCk7CiAgICB9CgoKCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcCwgc2l6ZV90IF9ObT4KICAgIGlubGluZSB2b2lkCiAgICBzd2Fw
KF9UcCAoJl9fYSlbX05tXSwgX1RwICgmX19iKVtfTm1dKQoKICAgIG5vZXhjZXB0KG5vZXhjZXB0
KHN3YXAoKl9fYSwgKl9fYikpKQoKICAgIHsKICAgICAgZm9yIChzaXplX3QgX19uID0gMDsgX19u
IDwgX05tOyArK19fbikKIHN3YXAoX19hW19fbl0sIF9fYltfX25dKTsKICAgIH0KCgoKfQojIDYw
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9z
dGxfcGFpci5oIiAyIDMKCgoKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2li
aWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgNzYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9wYWlyLmgiIDMKICBzdHJ1Y3QgcGllY2V3
aXNlX2NvbnN0cnVjdF90IHsgfTsKCgogIGNvbnN0ZXhwciBwaWVjZXdpc2VfY29uc3RydWN0X3Qg
cGllY2V3aXNlX2NvbnN0cnVjdCA9IHBpZWNld2lzZV9jb25zdHJ1Y3RfdCgpOwoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUuLi4+CiAgICBjbGFzcyB0dXBsZTsKCiAgdGVtcGxhdGU8c3RkOjpzaXplX3Qu
Li4+CiAgICBzdHJ1Y3QgX0luZGV4X3R1cGxlOwojIDk1ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfcGFpci5oIiAzCiAgdGVtcGxhdGU8
Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CiAgICBzdHJ1Y3QgcGFpcgogICAgewogICAgICB0eXBlZGVm
IF9UMSBmaXJzdF90eXBlOwogICAgICB0eXBlZGVmIF9UMiBzZWNvbmRfdHlwZTsKCiAgICAgIF9U
MSBmaXJzdDsKICAgICAgX1QyIHNlY29uZDsKCgoKCgogICAgICBjb25zdGV4cHIgcGFpcigpCiAg
ICAgIDogZmlyc3QoKSwgc2Vjb25kKCkgeyB9CgoKICAgICAgY29uc3RleHByIHBhaXIoY29uc3Qg
X1QxJiBfX2EsIGNvbnN0IF9UMiYgX19iKQogICAgICA6IGZpcnN0KF9fYSksIHNlY29uZChfX2Ip
IHsgfQoKCgoKCgoKICAgICAgdGVtcGxhdGU8Y2xhc3MgX1UxLCBjbGFzcyBfVTIsIGNsYXNzID0g
dHlwZW5hbWUKICAgICAgICBlbmFibGVfaWY8X19hbmRfPGlzX2NvbnZlcnRpYmxlPGNvbnN0IF9V
MSYsIF9UMT4sCiAgICBpc19jb252ZXJ0aWJsZTxjb25zdCBfVTImLCBfVDI+Pjo6dmFsdWU+Ojp0
eXBlPgogY29uc3RleHByIHBhaXIoY29uc3QgcGFpcjxfVTEsIF9VMj4mIF9fcCkKIDogZmlyc3Qo
X19wLmZpcnN0KSwgc2Vjb25kKF9fcC5zZWNvbmQpIHsgfQoKICAgICAgY29uc3RleHByIHBhaXIo
Y29uc3QgcGFpciYpID0gZGVmYXVsdDsKICAgICAgY29uc3RleHByIHBhaXIocGFpciYmKSA9IGRl
ZmF1bHQ7CgoKICAgICAgdGVtcGxhdGU8Y2xhc3MgX1UxLCBjbGFzcyA9IHR5cGVuYW1lCiAgICAg
ICAgZW5hYmxlX2lmPGlzX2NvbnZlcnRpYmxlPF9VMSwgX1QxPjo6dmFsdWU+Ojp0eXBlPgogY29u
c3RleHByIHBhaXIoX1UxJiYgX194LCBjb25zdCBfVDImIF9feSkKIDogZmlyc3Qoc3RkOjpmb3J3
YXJkPF9VMT4oX194KSksIHNlY29uZChfX3kpIHsgfQoKICAgICAgdGVtcGxhdGU8Y2xhc3MgX1Uy
LCBjbGFzcyA9IHR5cGVuYW1lCiAgICAgICAgZW5hYmxlX2lmPGlzX2NvbnZlcnRpYmxlPF9VMiwg
X1QyPjo6dmFsdWU+Ojp0eXBlPgogY29uc3RleHByIHBhaXIoY29uc3QgX1QxJiBfX3gsIF9VMiYm
IF9feSkKIDogZmlyc3QoX194KSwgc2Vjb25kKHN0ZDo6Zm9yd2FyZDxfVTI+KF9feSkpIHsgfQoK
ICAgICAgdGVtcGxhdGU8Y2xhc3MgX1UxLCBjbGFzcyBfVTIsIGNsYXNzID0gdHlwZW5hbWUKICAg
ICAgICBlbmFibGVfaWY8X19hbmRfPGlzX2NvbnZlcnRpYmxlPF9VMSwgX1QxPiwKICAgIGlzX2Nv
bnZlcnRpYmxlPF9VMiwgX1QyPj46OnZhbHVlPjo6dHlwZT4KIGNvbnN0ZXhwciBwYWlyKF9VMSYm
IF9feCwgX1UyJiYgX195KQogOiBmaXJzdChzdGQ6OmZvcndhcmQ8X1UxPihfX3gpKSwgc2Vjb25k
KHN0ZDo6Zm9yd2FyZDxfVTI+KF9feSkpIHsgfQoKICAgICAgdGVtcGxhdGU8Y2xhc3MgX1UxLCBj
bGFzcyBfVTIsIGNsYXNzID0gdHlwZW5hbWUKICAgICAgICBlbmFibGVfaWY8X19hbmRfPGlzX2Nv
bnZlcnRpYmxlPF9VMSwgX1QxPiwKICAgIGlzX2NvbnZlcnRpYmxlPF9VMiwgX1QyPj46OnZhbHVl
Pjo6dHlwZT4KIGNvbnN0ZXhwciBwYWlyKHBhaXI8X1UxLCBfVTI+JiYgX19wKQogOiBmaXJzdChz
dGQ6OmZvcndhcmQ8X1UxPihfX3AuZmlyc3QpKSwKICAgc2Vjb25kKHN0ZDo6Zm9yd2FyZDxfVTI+
KF9fcC5zZWNvbmQpKSB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9BcmdzMSwgdHlw
ZW5hbWUuLi4gX0FyZ3MyPgogICAgICAgIHBhaXIocGllY2V3aXNlX2NvbnN0cnVjdF90LCB0dXBs
ZTxfQXJnczEuLi4+LCB0dXBsZTxfQXJnczIuLi4+KTsKCiAgICAgIHBhaXImCiAgICAgIG9wZXJh
dG9yPShjb25zdCBwYWlyJiBfX3ApCiAgICAgIHsKIGZpcnN0ID0gX19wLmZpcnN0Owogc2Vjb25k
ID0gX19wLnNlY29uZDsKIHJldHVybiAqdGhpczsKICAgICAgfQoKICAgICAgcGFpciYKICAgICAg
b3BlcmF0b3I9KHBhaXImJiBfX3ApCiAgICAgIG5vZXhjZXB0KF9fYW5kXzxpc19ub3Rocm93X21v
dmVfYXNzaWduYWJsZTxfVDE+LAogICAgICAgICAgICAgICBpc19ub3Rocm93X21vdmVfYXNzaWdu
YWJsZTxfVDI+Pjo6dmFsdWUpCiAgICAgIHsKIGZpcnN0ID0gc3RkOjpmb3J3YXJkPGZpcnN0X3R5
cGU+KF9fcC5maXJzdCk7CiBzZWNvbmQgPSBzdGQ6OmZvcndhcmQ8c2Vjb25kX3R5cGU+KF9fcC5z
ZWNvbmQpOwogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICB0ZW1wbGF0ZTxjbGFzcyBfVTEs
IGNsYXNzIF9VMj4KIHBhaXImCiBvcGVyYXRvcj0oY29uc3QgcGFpcjxfVTEsIF9VMj4mIF9fcCkK
IHsKICAgZmlyc3QgPSBfX3AuZmlyc3Q7CiAgIHNlY29uZCA9IF9fcC5zZWNvbmQ7CiAgIHJldHVy
biAqdGhpczsKIH0KCiAgICAgIHRlbXBsYXRlPGNsYXNzIF9VMSwgY2xhc3MgX1UyPgogcGFpciYK
IG9wZXJhdG9yPShwYWlyPF9VMSwgX1UyPiYmIF9fcCkKIHsKICAgZmlyc3QgPSBzdGQ6OmZvcndh
cmQ8X1UxPihfX3AuZmlyc3QpOwogICBzZWNvbmQgPSBzdGQ6OmZvcndhcmQ8X1UyPihfX3Auc2Vj
b25kKTsKICAgcmV0dXJuICp0aGlzOwogfQoKICAgICAgdm9pZAogICAgICBzd2FwKHBhaXImIF9f
cCkKICAgICAgbm9leGNlcHQobm9leGNlcHQoc3dhcChmaXJzdCwgX19wLmZpcnN0KSkKICAgICAg
ICAmJiBub2V4Y2VwdChzd2FwKHNlY29uZCwgX19wLnNlY29uZCkpKQogICAgICB7CiB1c2luZyBz
dGQ6OnN3YXA7CiBzd2FwKGZpcnN0LCBfX3AuZmlyc3QpOwogc3dhcChzZWNvbmQsIF9fcC5zZWNv
bmQpOwogICAgICB9CgogICAgcHJpdmF0ZToKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0Fy
Z3MxLCBzdGQ6OnNpemVfdC4uLiBfSW5kZXhlczEsCiAgICAgICAgICAgICAgIHR5cGVuYW1lLi4u
IF9BcmdzMiwgc3RkOjpzaXplX3QuLi4gX0luZGV4ZXMyPgogICAgICAgIHBhaXIodHVwbGU8X0Fy
Z3MxLi4uPiYsIHR1cGxlPF9BcmdzMi4uLj4mLAogICAgICAgICAgICAgX0luZGV4X3R1cGxlPF9J
bmRleGVzMS4uLj4sIF9JbmRleF90dXBsZTxfSW5kZXhlczIuLi4+KTsKCiAgICB9OwoKCiAgdGVt
cGxhdGU8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CiAgICBpbmxpbmUgY29uc3RleHByIGJvb2wKICAg
IG9wZXJhdG9yPT0oY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feCwgY29uc3QgcGFpcjxfVDEsIF9U
Mj4mIF9feSkKICAgIHsgcmV0dXJuIF9feC5maXJzdCA9PSBfX3kuZmlyc3QgJiYgX194LnNlY29u
ZCA9PSBfX3kuc2Vjb25kOyB9CgoKICB0ZW1wbGF0ZTxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KICAg
IGlubGluZSBjb25zdGV4cHIgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IHBhaXI8X1QxLCBfVDI+
JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpCiAgICB7IHJldHVybiBfX3guZmlyc3Qg
PCBfX3kuZmlyc3QKICAgICAgfHwgKCEoX195LmZpcnN0IDwgX194LmZpcnN0KSAmJiBfX3guc2Vj
b25kIDwgX195LnNlY29uZCk7IH0KCgogIHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xhc3MgX1QyPgog
ICAgaW5saW5lIGNvbnN0ZXhwciBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IHBhaXI8X1QxLCBf
VDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpCiAgICB7IHJldHVybiAhKF9feCA9
PSBfX3kpOyB9CgoKICB0ZW1wbGF0ZTxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KICAgIGlubGluZSBj
b25zdGV4cHIgYm9vbAogICAgb3BlcmF0b3I+KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNv
bnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpCiAgICB7IHJldHVybiBfX3kgPCBfX3g7IH0KCgogIHRl
bXBsYXRlPGNsYXNzIF9UMSwgY2xhc3MgX1QyPgogICAgaW5saW5lIGNvbnN0ZXhwciBib29sCiAg
ICBvcGVyYXRvcjw9KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBf
VDI+JiBfX3kpCiAgICB7IHJldHVybiAhKF9feSA8IF9feCk7IH0KCgogIHRlbXBsYXRlPGNsYXNz
IF9UMSwgY2xhc3MgX1QyPgogICAgaW5saW5lIGNvbnN0ZXhwciBib29sCiAgICBvcGVyYXRvcj49
KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpCiAg
ICB7IHJldHVybiAhKF9feCA8IF9feSk7IH0KCgoKCgogIHRlbXBsYXRlPGNsYXNzIF9UMSwgY2xh
c3MgX1QyPgogICAgaW5saW5lIHZvaWQKICAgIHN3YXAocGFpcjxfVDEsIF9UMj4mIF9feCwgcGFp
cjxfVDEsIF9UMj4mIF9feSkKICAgIG5vZXhjZXB0KG5vZXhjZXB0KF9feC5zd2FwKF9feSkpKQog
ICAgeyBfX3guc3dhcChfX3kpOyB9CiMgMjczICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfcGFpci5oIiAzCiAgdGVtcGxhdGU8Y2xhc3Mg
X1QxLCBjbGFzcyBfVDI+CiAgICBjb25zdGV4cHIgcGFpcjx0eXBlbmFtZSBfX2RlY2F5X2FuZF9z
dHJpcDxfVDE+OjpfX3R5cGUsCiAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBfX2RlY2F5X2Fu
ZF9zdHJpcDxfVDI+OjpfX3R5cGU+CiAgICBtYWtlX3BhaXIoX1QxJiYgX194LCBfVDImJiBfX3kp
CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19kZWNheV9hbmRfc3RyaXA8X1QxPjo6X190
eXBlIF9fZHNfdHlwZTE7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19kZWNheV9hbmRfc3RyaXA8
X1QyPjo6X190eXBlIF9fZHNfdHlwZTI7CiAgICAgIHR5cGVkZWYgcGFpcjxfX2RzX3R5cGUxLCBf
X2RzX3R5cGUyPiBfX3BhaXJfdHlwZTsKICAgICAgcmV0dXJuIF9fcGFpcl90eXBlKHN0ZDo6Zm9y
d2FyZDxfVDE+KF9feCksIHN0ZDo6Zm9yd2FyZDxfVDI+KF9feSkpOwogICAgfQojIDI5MiAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44
LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX3Bh
aXIuaCIgMwoKfQojIDY1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC44LjEvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMiAzCiMgMSAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2l0ZXJhdG9yX2Jhc2VfdHlw
ZXMuaCIgMSAzCiMgNjIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjguMS9iaXRzL3N0bF9pdGVyYXRvcl9iYXNlX3R5cGVzLmgiIDMKICAgICAgIAojIDYzICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxf
aXRlcmF0b3JfYmFzZV90eXBlcy5oIiAzCgoKCgoKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRl
X18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgODkgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9pdGVyYXRvcl9iYXNl
X3R5cGVzLmgiIDMKICBzdHJ1Y3QgaW5wdXRfaXRlcmF0b3JfdGFnIHsgfTsKCgogIHN0cnVjdCBv
dXRwdXRfaXRlcmF0b3JfdGFnIHsgfTsKCgogIHN0cnVjdCBmb3J3YXJkX2l0ZXJhdG9yX3RhZyA6
IHB1YmxpYyBpbnB1dF9pdGVyYXRvcl90YWcgeyB9OwoKCgogIHN0cnVjdCBiaWRpcmVjdGlvbmFs
X2l0ZXJhdG9yX3RhZyA6IHB1YmxpYyBmb3J3YXJkX2l0ZXJhdG9yX3RhZyB7IH07CgoKCiAgc3Ry
dWN0IHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIDogcHVibGljIGJpZGlyZWN0aW9uYWxfaXRl
cmF0b3JfdGFnIHsgfTsKIyAxMTYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjguMS9iaXRzL3N0bF9pdGVyYXRvcl9iYXNlX3R5cGVzLmgiIDMKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQ2F0ZWdvcnksIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0Rpc3RhbmNlID0g
cHRyZGlmZl90LAogICAgICAgICAgIHR5cGVuYW1lIF9Qb2ludGVyID0gX1RwKiwgdHlwZW5hbWUg
X1JlZmVyZW5jZSA9IF9UcCY+CiAgICBzdHJ1Y3QgaXRlcmF0b3IKICAgIHsKCiAgICAgIHR5cGVk
ZWYgX0NhdGVnb3J5IGl0ZXJhdG9yX2NhdGVnb3J5OwoKICAgICAgdHlwZWRlZiBfVHAgdmFsdWVf
dHlwZTsKCiAgICAgIHR5cGVkZWYgX0Rpc3RhbmNlIGRpZmZlcmVuY2VfdHlwZTsKCiAgICAgIHR5
cGVkZWYgX1BvaW50ZXIgcG9pbnRlcjsKCiAgICAgIHR5cGVkZWYgX1JlZmVyZW5jZSByZWZlcmVu
Y2U7CiAgICB9OwojIDE0MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOC4xL2JpdHMvc3RsX2l0ZXJhdG9yX2Jhc2VfdHlwZXMuaCIgMwp0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+IGNsYXNzIF9faGFzX2l0ZXJhdG9yX2NhdGVnb3J5X2hlbHBlciA6IF9fc2ZpbmFl
X3R5cGVzIHsgdGVtcGxhdGU8dHlwZW5hbWUgX1VwPiBzdHJ1Y3QgX1dyYXBfdHlwZSB7IH07IHRl
bXBsYXRlPHR5cGVuYW1lIF9VcD4gc3RhdGljIF9fb25lIF9fdGVzdChfV3JhcF90eXBlPHR5cGVu
YW1lIF9VcDo6aXRlcmF0b3JfY2F0ZWdvcnk+Kik7IHRlbXBsYXRlPHR5cGVuYW1lIF9VcD4gc3Rh
dGljIF9fdHdvIF9fdGVzdCguLi4pOyBwdWJsaWM6IHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1
ZSA9IHNpemVvZihfX3Rlc3Q8X1RwPigwKSkgPT0gMTsgfTsgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PiBzdHJ1Y3QgX19oYXNfaXRlcmF0b3JfY2F0ZWdvcnkgOiBpbnRlZ3JhbF9jb25zdGFudDxib29s
LCBfX2hhc19pdGVyYXRvcl9jYXRlZ29yeV9oZWxwZXIgPHR5cGVuYW1lIHJlbW92ZV9jdjxfVHA+
Ojp0eXBlPjo6dmFsdWU+IHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yLAogICAg
Ym9vbCA9IF9faGFzX2l0ZXJhdG9yX2NhdGVnb3J5PF9JdGVyYXRvcj46OnZhbHVlPgogICAgc3Ry
dWN0IF9faXRlcmF0b3JfdHJhaXRzIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9y
PgogICAgc3RydWN0IF9faXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvciwgdHJ1ZT4KICAgIHsKICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6Oml0ZXJhdG9yX2NhdGVnb3J5IGl0ZXJhdG9y
X2NhdGVnb3J5OwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9JdGVyYXRvcjo6dmFsdWVfdHlwZSB2
YWx1ZV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9JdGVyYXRvcjo6ZGlmZmVyZW5jZV90
eXBlIGRpZmZlcmVuY2VfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OnBv
aW50ZXIgcG9pbnRlcjsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OnJlZmVyZW5j
ZSByZWZlcmVuY2U7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAgICBz
dHJ1Y3QgaXRlcmF0b3JfdHJhaXRzCiAgICA6IHB1YmxpYyBfX2l0ZXJhdG9yX3RyYWl0czxfSXRl
cmF0b3I+IHsgfTsKIyAxNzQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjguMS9iaXRzL3N0bF9pdGVyYXRvcl9iYXNlX3R5cGVzLmgiIDMKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzPF9UcCo+CiAgICB7CiAgICAg
IHR5cGVkZWYgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAg
ICAgIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7CiAgICAgIHR5cGVkZWYgcHRyZGlmZl90IGRpZmZl
cmVuY2VfdHlwZTsKICAgICAgdHlwZWRlZiBfVHAqIHBvaW50ZXI7CiAgICAgIHR5cGVkZWYgX1Rw
JiByZWZlcmVuY2U7CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0
IGl0ZXJhdG9yX3RyYWl0czxjb25zdCBfVHAqPgogICAgewogICAgICB0eXBlZGVmIHJhbmRvbV9h
Y2Nlc3NfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwogICAgICB0eXBlZGVmIF9UcCB2
YWx1ZV90eXBlOwogICAgICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7CiAgICAg
IHR5cGVkZWYgY29uc3QgX1RwKiBwb2ludGVyOwogICAgICB0eXBlZGVmIGNvbnN0IF9UcCYgcmVm
ZXJlbmNlOwogICAgfTsKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyPgogICAgaW5saW5l
IHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46Oml0ZXJhdG9yX2NhdGVnb3J5CiAgICBf
X2l0ZXJhdG9yX2NhdGVnb3J5KGNvbnN0IF9JdGVyJikKICAgIHsgcmV0dXJuIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfSXRlcj46Oml0ZXJhdG9yX2NhdGVnb3J5KCk7IH0KCgoKCgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgYm9vbCBfSGFzQmFzZT4KICAgIHN0cnVjdCBfSXRlcl9i
YXNlCiAgICB7CiAgICAgIHR5cGVkZWYgX0l0ZXJhdG9yIGl0ZXJhdG9yX3R5cGU7CiAgICAgIHN0
YXRpYyBpdGVyYXRvcl90eXBlIF9TX2Jhc2UoX0l0ZXJhdG9yIF9faXQpCiAgICAgIHsgcmV0dXJu
IF9faXQ7IH0KICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4KICAgIHN0cnVj
dCBfSXRlcl9iYXNlPF9JdGVyYXRvciwgdHJ1ZT4KICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBfSXRlcmF0b3I6Oml0ZXJhdG9yX3R5cGUgaXRlcmF0b3JfdHlwZTsKICAgICAgc3RhdGljIGl0
ZXJhdG9yX3R5cGUgX1NfYmFzZShfSXRlcmF0b3IgX19pdCkKICAgICAgeyByZXR1cm4gX19pdC5i
YXNlKCk7IH0KICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5JdGVyPgogICAgdXNpbmcg
X1JlcXVpcmVJbnB1dEl0ZXIgPSB0eXBlbmFtZQogICAgICBlbmFibGVfaWY8aXNfY29udmVydGli
bGU8dHlwZW5hbWUKICBpdGVyYXRvcl90cmFpdHM8X0luSXRlcj46Oml0ZXJhdG9yX2NhdGVnb3J5
LAogICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdGFnPjo6dmFsdWU+Ojp0eXBlOwoKCgp9CiMgNjYg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0
bF9hbGdvYmFzZS5oIiAyIDMKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC44LjEvYml0cy9zdGxfaXRlcmF0b3JfYmFzZV9mdW5jcy5oIiAxIDMKIyA2MiAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3Rs
X2l0ZXJhdG9yX2Jhc2VfZnVuY3MuaCIgMwogICAgICAgCiMgNjMgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9pdGVyYXRvcl9iYXNlX2Z1
bmNzLmgiIDMKCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjguMS9kZWJ1Zy9kZWJ1Zy5oIiAxIDMKIyA0NiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2RlYnVnL2RlYnVnLmgiIDMKbmFtZXNwYWNlIHN0ZAp7
CiAgbmFtZXNwYWNlIF9fZGVidWcgeyB9Cn0KCgoKCm5hbWVzcGFjZSBfX2dudV9kZWJ1Zwp7CiAg
dXNpbmcgbmFtZXNwYWNlIHN0ZDo6X19kZWJ1ZzsKfQojIDY2ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfaXRlcmF0b3JfYmFzZV9mdW5j
cy5oIiAyIDMKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgi
ZGVmYXVsdCIpKSkKewoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3I+CiAgICBp
bmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6ZGlmZmVyZW5j
ZV90eXBlCiAgICBfX2Rpc3RhbmNlKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJh
dG9yIF9fbGFzdCwKICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdGFnKQogICAgewoKICAg
ICAKCiAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46OmRpZmZl
cmVuY2VfdHlwZSBfX24gPSAwOwogICAgICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3QpCiB7CiAg
ICsrX19maXJzdDsKICAgKytfX247CiB9CiAgICAgIHJldHVybiBfX247CiAgICB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4KICAgIGlubGluZSB0eXBlbmFtZSBp
dGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCiAg
ICBfX2Rpc3RhbmNlKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAgICByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3Rh
ZykKICAgIHsKCiAgICAgCgogICAgICByZXR1cm4gX19sYXN0IC0gX19maXJzdDsKICAgIH0KIyAx
MTIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRz
L3N0bF9pdGVyYXRvcl9iYXNlX2Z1bmNzLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJ
dGVyYXRvcj4KICAgIGlubGluZSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRlcmF0
b3I+OjpkaWZmZXJlbmNlX3R5cGUKICAgIGRpc3RhbmNlKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3Qs
IF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCkKICAgIHsKCiAgICAgIHJldHVybiBzdGQ6Ol9fZGlzdGFu
Y2UoX19maXJzdCwgX19sYXN0LAogICAgICAgIHN0ZDo6X19pdGVyYXRvcl9jYXRlZ29yeShfX2Zp
cnN0KSk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFt
ZSBfRGlzdGFuY2U+CiAgICBpbmxpbmUgdm9pZAogICAgX19hZHZhbmNlKF9JbnB1dEl0ZXJhdG9y
JiBfX2ksIF9EaXN0YW5jZSBfX24sIGlucHV0X2l0ZXJhdG9yX3RhZykKICAgIHsKCiAgICAgCiAg
ICAgIDsKICAgICAgd2hpbGUgKF9fbi0tKQogKytfX2k7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IsIHR5cGVuYW1lIF9EaXN0YW5jZT4KICAgIGlubGlu
ZSB2b2lkCiAgICBfX2FkdmFuY2UoX0JpZGlyZWN0aW9uYWxJdGVyYXRvciYgX19pLCBfRGlzdGFu
Y2UgX19uLAogICAgICAgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcpCiAgICB7CgogICAgIAoK
ICAgICAgaWYgKF9fbiA+IDApCiAgICAgICAgd2hpbGUgKF9fbi0tKQogICArK19faTsKICAgICAg
ZWxzZQogICAgICAgIHdoaWxlIChfX24rKykKICAgLS1fX2k7CiAgICB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0Rpc3RhbmNlPgogICAgaW5s
aW5lIHZvaWQKICAgIF9fYWR2YW5jZShfUmFuZG9tQWNjZXNzSXRlcmF0b3ImIF9faSwgX0Rpc3Rh
bmNlIF9fbiwKICAgICAgICAgICAgICByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykKICAgIHsK
CiAgICAgCgogICAgICBfX2kgKz0gX19uOwogICAgfQojIDE3MSAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2l0ZXJhdG9yX2Jhc2VfZnVu
Y3MuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfRGlz
dGFuY2U+CiAgICBpbmxpbmUgdm9pZAogICAgYWR2YW5jZShfSW5wdXRJdGVyYXRvciYgX19pLCBf
RGlzdGFuY2UgX19uKQogICAgewoKICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1
dEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIF9fZCA9IF9fbjsKICAgICAgc3RkOjpfX2FkdmFu
Y2UoX19pLCBfX2QsIHN0ZDo6X19pdGVyYXRvcl9jYXRlZ29yeShfX2kpKTsKICAgIH0KCgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yPgogICAgaW5saW5lIF9Gb3J3YXJkSXRl
cmF0b3IKICAgIG5leHQoX0ZvcndhcmRJdGVyYXRvciBfX3gsIHR5cGVuYW1lCiAgaXRlcmF0b3Jf
dHJhaXRzPF9Gb3J3YXJkSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgX19uID0gMSkKICAgIHsK
ICAgICAgc3RkOjphZHZhbmNlKF9feCwgX19uKTsKICAgICAgcmV0dXJuIF9feDsKICAgIH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcj4KICAgIGlubGluZSBfQmlk
aXJlY3Rpb25hbEl0ZXJhdG9yCiAgICBwcmV2KF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX194LCB0
eXBlbmFtZQogIGl0ZXJhdG9yX3RyYWl0czxfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yPjo6ZGlmZmVy
ZW5jZV90eXBlIF9fbiA9IDEpCiAgICB7CiAgICAgIHN0ZDo6YWR2YW5jZShfX3gsIC1fX24pOwog
ICAgICByZXR1cm4gX194OwogICAgfQoKCgoKfQojIDY3ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMiAzCiMgMSAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3Rs
X2l0ZXJhdG9yLmgiIDEgMwojIDY3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC44LjEvYml0cy9zdGxfaXRlcmF0b3IuaCIgMwpuYW1lc3BhY2Ugc3RkIF9fYXR0
cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgOTUgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9pdGVyYXRv
ci5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yPgogICAgY2xhc3MgcmV2ZXJzZV9p
dGVyYXRvcgogICAgOiBwdWJsaWMgaXRlcmF0b3I8dHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9J
dGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5LAogICAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3Ry
YWl0czxfSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLAogICAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3Ry
YWl0czxfSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUsCiAgICAgICAgdHlwZW5hbWUgaXRlcmF0
b3JfdHJhaXRzPF9JdGVyYXRvcj46OnBvaW50ZXIsCiAgICAgICAgICAgICAgICAgICAgICB0eXBl
bmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6cmVmZXJlbmNlPgogICAgewogICAgcHJv
dGVjdGVkOgogICAgICBfSXRlcmF0b3IgY3VycmVudDsKCiAgICAgIHR5cGVkZWYgaXRlcmF0b3Jf
dHJhaXRzPF9JdGVyYXRvcj4gX190cmFpdHNfdHlwZTsKCiAgICBwdWJsaWM6CiAgICAgIHR5cGVk
ZWYgX0l0ZXJhdG9yIGl0ZXJhdG9yX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX190cmFp
dHNfdHlwZTo6ZGlmZmVyZW5jZV90eXBlIGRpZmZlcmVuY2VfdHlwZTsKICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBfX3RyYWl0c190eXBlOjpwb2ludGVyIHBvaW50ZXI7CiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgX190cmFpdHNfdHlwZTo6cmVmZXJlbmNlIHJlZmVyZW5jZTsKCgoKCgoKCiAgICAgIHJl
dmVyc2VfaXRlcmF0b3IoKSA6IGN1cnJlbnQoKSB7IH0KCgoKCiAgICAgIGV4cGxpY2l0CiAgICAg
IHJldmVyc2VfaXRlcmF0b3IoaXRlcmF0b3JfdHlwZSBfX3gpIDogY3VycmVudChfX3gpIHsgfQoK
CgoKICAgICAgcmV2ZXJzZV9pdGVyYXRvcihjb25zdCByZXZlcnNlX2l0ZXJhdG9yJiBfX3gpCiAg
ICAgIDogY3VycmVudChfX3guY3VycmVudCkgeyB9CgoKCgoKICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgX0l0ZXI+CiAgICAgICAgcmV2ZXJzZV9pdGVyYXRvcihjb25zdCByZXZlcnNlX2l0ZXJhdG9y
PF9JdGVyPiYgX194KQogOiBjdXJyZW50KF9feC5iYXNlKCkpIHsgfQoKCgoKICAgICAgaXRlcmF0
b3JfdHlwZQogICAgICBiYXNlKCkgY29uc3QKICAgICAgeyByZXR1cm4gY3VycmVudDsgfQojIDE1
OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMv
c3RsX2l0ZXJhdG9yLmgiIDMKICAgICAgcmVmZXJlbmNlCiAgICAgIG9wZXJhdG9yKigpIGNvbnN0
CiAgICAgIHsKIF9JdGVyYXRvciBfX3RtcCA9IGN1cnJlbnQ7CiByZXR1cm4gKi0tX190bXA7CiAg
ICAgIH0KCgoKCgoKICAgICAgcG9pbnRlcgogICAgICBvcGVyYXRvci0+KCkgY29uc3QKICAgICAg
eyByZXR1cm4gJihvcGVyYXRvciooKSk7IH0KCgoKCgoKICAgICAgcmV2ZXJzZV9pdGVyYXRvciYK
ICAgICAgb3BlcmF0b3IrKygpCiAgICAgIHsKIC0tY3VycmVudDsKIHJldHVybiAqdGhpczsKICAg
ICAgfQoKCgoKCgogICAgICByZXZlcnNlX2l0ZXJhdG9yCiAgICAgIG9wZXJhdG9yKysoaW50KQog
ICAgICB7CiByZXZlcnNlX2l0ZXJhdG9yIF9fdG1wID0gKnRoaXM7CiAtLWN1cnJlbnQ7CiByZXR1
cm4gX190bXA7CiAgICAgIH0KCgoKCgoKICAgICAgcmV2ZXJzZV9pdGVyYXRvciYKICAgICAgb3Bl
cmF0b3ItLSgpCiAgICAgIHsKICsrY3VycmVudDsKIHJldHVybiAqdGhpczsKICAgICAgfQoKCgoK
CgogICAgICByZXZlcnNlX2l0ZXJhdG9yCiAgICAgIG9wZXJhdG9yLS0oaW50KQogICAgICB7CiBy
ZXZlcnNlX2l0ZXJhdG9yIF9fdG1wID0gKnRoaXM7CiArK2N1cnJlbnQ7CiByZXR1cm4gX190bXA7
CiAgICAgIH0KCgoKCgoKICAgICAgcmV2ZXJzZV9pdGVyYXRvcgogICAgICBvcGVyYXRvcisoZGlm
ZmVyZW5jZV90eXBlIF9fbikgY29uc3QKICAgICAgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihj
dXJyZW50IC0gX19uKTsgfQoKCgoKCgoKICAgICAgcmV2ZXJzZV9pdGVyYXRvciYKICAgICAgb3Bl
cmF0b3IrPShkaWZmZXJlbmNlX3R5cGUgX19uKQogICAgICB7CiBjdXJyZW50IC09IF9fbjsKIHJl
dHVybiAqdGhpczsKICAgICAgfQoKCgoKCgogICAgICByZXZlcnNlX2l0ZXJhdG9yCiAgICAgIG9w
ZXJhdG9yLShkaWZmZXJlbmNlX3R5cGUgX19uKSBjb25zdAogICAgICB7IHJldHVybiByZXZlcnNl
X2l0ZXJhdG9yKGN1cnJlbnQgKyBfX24pOyB9CgoKCgoKCgogICAgICByZXZlcnNlX2l0ZXJhdG9y
JgogICAgICBvcGVyYXRvci09KGRpZmZlcmVuY2VfdHlwZSBfX24pCiAgICAgIHsKIGN1cnJlbnQg
Kz0gX19uOwogcmV0dXJuICp0aGlzOwogICAgICB9CgoKCgoKCiAgICAgIHJlZmVyZW5jZQogICAg
ICBvcGVyYXRvcltdKGRpZmZlcmVuY2VfdHlwZSBfX24pIGNvbnN0CiAgICAgIHsgcmV0dXJuICoo
KnRoaXMgKyBfX24pOyB9CiAgICB9OwojIDI4OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2l0ZXJhdG9yLmgiIDMKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSXRlcmF0b3I+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I9PShjb25zdCBy
ZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCwKICAgICAgICBjb25zdCByZXZlcnNlX2l0
ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkKICAgIHsgcmV0dXJuIF9feC5iYXNlKCkgPT0gX195LmJh
c2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAgICBpbmxpbmUgYm9vbAog
ICAgb3BlcmF0b3I8KGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194LAogICAg
ICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3kpCiAgICB7IHJldHVybiBf
X3kuYmFzZSgpIDwgX194LmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+
CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9J
dGVyYXRvcj4mIF9feCwKICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4m
IF9feSkKICAgIHsgcmV0dXJuICEoX194ID09IF9feSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0l0ZXJhdG9yPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPihjb25zdCByZXZlcnNlX2l0
ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCwKICAgICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0
ZXJhdG9yPiYgX195KQogICAgeyByZXR1cm4gX195IDwgX194OyB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9JdGVyYXRvcj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcjw9KGNvbnN0IHJldmVy
c2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194LAogICAgICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0
b3I8X0l0ZXJhdG9yPiYgX195KQogICAgeyByZXR1cm4gIShfX3kgPCBfX3gpOyB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj49KGNv
bnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194LAogICAgICAgIGNvbnN0IHJldmVy
c2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX195KQogICAgeyByZXR1cm4gIShfX3ggPCBfX3kpOyB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4KICAgIGlubGluZSB0eXBlbmFtZSByZXZl
cnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogICAgb3BlcmF0b3ItKGNv
bnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194LAogICAgICAgY29uc3QgcmV2ZXJz
ZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3kpCiAgICB7IHJldHVybiBfX3kuYmFzZSgpIC0gX194
LmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAgICBpbmxpbmUgcmV2
ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+CiAgICBvcGVyYXRvcisodHlwZW5hbWUgcmV2ZXJzZV9p
dGVyYXRvcjxfSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgX19uLAogICAgICAgY29uc3QgcmV2
ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3gpCiAgICB7IHJldHVybiByZXZlcnNlX2l0ZXJh
dG9yPF9JdGVyYXRvcj4oX194LmJhc2UoKSAtIF9fbik7IH0KCgoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSXRlcmF0b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JSPgogICAgaW5saW5lIGJvb2wKICAgIG9w
ZXJhdG9yPT0oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3JMPiYgX194LAogICAgICAg
IGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yUj4mIF9feSkKICAgIHsgcmV0dXJuIF9f
eC5iYXNlKCkgPT0gX195LmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3JM
LCB0eXBlbmFtZSBfSXRlcmF0b3JSPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPChjb25z
dCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvckw+JiBfX3gsCiAgICAgICBjb25zdCByZXZlcnNl
X2l0ZXJhdG9yPF9JdGVyYXRvclI+JiBfX3kpCiAgICB7IHJldHVybiBfX3kuYmFzZSgpIDwgX194
LmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3JMLCB0eXBlbmFtZSBfSXRl
cmF0b3JSPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3QgcmV2ZXJzZV9pdGVy
YXRvcjxfSXRlcmF0b3JMPiYgX194LAogICAgICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0
ZXJhdG9yUj4mIF9feSkKICAgIHsgcmV0dXJuICEoX194ID09IF9feSk7IH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0l0ZXJhdG9yTCwgdHlwZW5hbWUgX0l0ZXJhdG9yUj4KICAgIGlubGluZSBib29s
CiAgICBvcGVyYXRvcj4oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3JMPiYgX194LAog
ICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3JSPiYgX195KQogICAgeyByZXR1
cm4gX195IDwgX194OyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvckwsIHR5cGVuYW1l
IF9JdGVyYXRvclI+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8PShjb25zdCByZXZlcnNl
X2l0ZXJhdG9yPF9JdGVyYXRvckw+JiBfX3gsCiAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRv
cjxfSXRlcmF0b3JSPiYgX195KQogICAgeyByZXR1cm4gIShfX3kgPCBfX3gpOyB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9JdGVyYXRvckwsIHR5cGVuYW1lIF9JdGVyYXRvclI+CiAgICBpbmxpbmUg
Ym9vbAogICAgb3BlcmF0b3I+PShjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvckw+JiBf
X3gsCiAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3JSPiYgX195KQogICAg
eyByZXR1cm4gIShfX3ggPCBfX3kpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvckws
IHR5cGVuYW1lIF9JdGVyYXRvclI+CgoKICAgIGlubGluZSBhdXRvCiAgICBvcGVyYXRvci0oY29u
c3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3JMPiYgX194LAogICAgICAgY29uc3QgcmV2ZXJz
ZV9pdGVyYXRvcjxfSXRlcmF0b3JSPiYgX195KQogICAgLT4gZGVjbHR5cGUoX195LmJhc2UoKSAt
IF9feC5iYXNlKCkpCgoKCgoKICAgIHsgcmV0dXJuIF9feS5iYXNlKCkgLSBfX3guYmFzZSgpOyB9
CiMgNDAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEv
Yml0cy9zdGxfaXRlcmF0b3IuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Db250YWluZXI+CiAg
ICBjbGFzcyBiYWNrX2luc2VydF9pdGVyYXRvcgogICAgOiBwdWJsaWMgaXRlcmF0b3I8b3V0cHV0
X2l0ZXJhdG9yX3RhZywgdm9pZCwgdm9pZCwgdm9pZCwgdm9pZD4KICAgIHsKICAgIHByb3RlY3Rl
ZDoKICAgICAgX0NvbnRhaW5lciogY29udGFpbmVyOwoKICAgIHB1YmxpYzoKCiAgICAgIHR5cGVk
ZWYgX0NvbnRhaW5lciBjb250YWluZXJfdHlwZTsKCgogICAgICBleHBsaWNpdAogICAgICBiYWNr
X2luc2VydF9pdGVyYXRvcihfQ29udGFpbmVyJiBfX3gpIDogY29udGFpbmVyKCZfX3gpIHsgfQoj
IDQzNSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2Jp
dHMvc3RsX2l0ZXJhdG9yLmgiIDMKICAgICAgYmFja19pbnNlcnRfaXRlcmF0b3ImCiAgICAgIG9w
ZXJhdG9yPShjb25zdCB0eXBlbmFtZSBfQ29udGFpbmVyOjp2YWx1ZV90eXBlJiBfX3ZhbHVlKQog
ICAgICB7CiBjb250YWluZXItPnB1c2hfYmFjayhfX3ZhbHVlKTsKIHJldHVybiAqdGhpczsKICAg
ICAgfQoKICAgICAgYmFja19pbnNlcnRfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yPSh0eXBlbmFt
ZSBfQ29udGFpbmVyOjp2YWx1ZV90eXBlJiYgX192YWx1ZSkKICAgICAgewogY29udGFpbmVyLT5w
dXNoX2JhY2soc3RkOjptb3ZlKF9fdmFsdWUpKTsKIHJldHVybiAqdGhpczsKICAgICAgfQoKCgog
ICAgICBiYWNrX2luc2VydF9pdGVyYXRvciYKICAgICAgb3BlcmF0b3IqKCkKICAgICAgeyByZXR1
cm4gKnRoaXM7IH0KCgogICAgICBiYWNrX2luc2VydF9pdGVyYXRvciYKICAgICAgb3BlcmF0b3Ir
KygpCiAgICAgIHsgcmV0dXJuICp0aGlzOyB9CgoKICAgICAgYmFja19pbnNlcnRfaXRlcmF0b3IK
ICAgICAgb3BlcmF0b3IrKyhpbnQpCiAgICAgIHsgcmV0dXJuICp0aGlzOyB9CiAgICB9OwojIDQ3
NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMv
c3RsX2l0ZXJhdG9yLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ29udGFpbmVyPgogICAgaW5s
aW5lIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+CiAgICBiYWNrX2luc2VydGVyKF9D
b250YWluZXImIF9feCkKICAgIHsgcmV0dXJuIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWlu
ZXI+KF9feCk7IH0KIyA0OTIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjguMS9iaXRzL3N0bF9pdGVyYXRvci5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Nv
bnRhaW5lcj4KICAgIGNsYXNzIGZyb250X2luc2VydF9pdGVyYXRvcgogICAgOiBwdWJsaWMgaXRl
cmF0b3I8b3V0cHV0X2l0ZXJhdG9yX3RhZywgdm9pZCwgdm9pZCwgdm9pZCwgdm9pZD4KICAgIHsK
ICAgIHByb3RlY3RlZDoKICAgICAgX0NvbnRhaW5lciogY29udGFpbmVyOwoKICAgIHB1YmxpYzoK
CiAgICAgIHR5cGVkZWYgX0NvbnRhaW5lciBjb250YWluZXJfdHlwZTsKCgogICAgICBleHBsaWNp
dCBmcm9udF9pbnNlcnRfaXRlcmF0b3IoX0NvbnRhaW5lciYgX194KSA6IGNvbnRhaW5lcigmX194
KSB7IH0KIyA1MjUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjguMS9iaXRzL3N0bF9pdGVyYXRvci5oIiAzCiAgICAgIGZyb250X2luc2VydF9pdGVyYXRvciYK
ICAgICAgb3BlcmF0b3I9KGNvbnN0IHR5cGVuYW1lIF9Db250YWluZXI6OnZhbHVlX3R5cGUmIF9f
dmFsdWUpCiAgICAgIHsKIGNvbnRhaW5lci0+cHVzaF9mcm9udChfX3ZhbHVlKTsKIHJldHVybiAq
dGhpczsKICAgICAgfQoKICAgICAgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yJgogICAgICBvcGVyYXRv
cj0odHlwZW5hbWUgX0NvbnRhaW5lcjo6dmFsdWVfdHlwZSYmIF9fdmFsdWUpCiAgICAgIHsKIGNv
bnRhaW5lci0+cHVzaF9mcm9udChzdGQ6Om1vdmUoX192YWx1ZSkpOwogcmV0dXJuICp0aGlzOwog
ICAgICB9CgoKCiAgICAgIGZyb250X2luc2VydF9pdGVyYXRvciYKICAgICAgb3BlcmF0b3IqKCkK
ICAgICAgeyByZXR1cm4gKnRoaXM7IH0KCgogICAgICBmcm9udF9pbnNlcnRfaXRlcmF0b3ImCiAg
ICAgIG9wZXJhdG9yKysoKQogICAgICB7IHJldHVybiAqdGhpczsgfQoKCiAgICAgIGZyb250X2lu
c2VydF9pdGVyYXRvcgogICAgICBvcGVyYXRvcisrKGludCkKICAgICAgeyByZXR1cm4gKnRoaXM7
IH0KICAgIH07CiMgNTY3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC44LjEvYml0cy9zdGxfaXRlcmF0b3IuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Db250
YWluZXI+CiAgICBpbmxpbmUgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+CiAgICBm
cm9udF9pbnNlcnRlcihfQ29udGFpbmVyJiBfX3gpCiAgICB7IHJldHVybiBmcm9udF9pbnNlcnRf
aXRlcmF0b3I8X0NvbnRhaW5lcj4oX194KTsgfQojIDU4NiAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2l0ZXJhdG9yLmgiIDMKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ29udGFpbmVyPgogICAgY2xhc3MgaW5zZXJ0X2l0ZXJhdG9yCiAgICA6
IHB1YmxpYyBpdGVyYXRvcjxvdXRwdXRfaXRlcmF0b3JfdGFnLCB2b2lkLCB2b2lkLCB2b2lkLCB2
b2lkPgogICAgewogICAgcHJvdGVjdGVkOgogICAgICBfQ29udGFpbmVyKiBjb250YWluZXI7CiAg
ICAgIHR5cGVuYW1lIF9Db250YWluZXI6Oml0ZXJhdG9yIGl0ZXI7CgogICAgcHVibGljOgoKICAg
ICAgdHlwZWRlZiBfQ29udGFpbmVyIGNvbnRhaW5lcl90eXBlOwoKCgoKCiAgICAgIGluc2VydF9p
dGVyYXRvcihfQ29udGFpbmVyJiBfX3gsIHR5cGVuYW1lIF9Db250YWluZXI6Oml0ZXJhdG9yIF9f
aSkKICAgICAgOiBjb250YWluZXIoJl9feCksIGl0ZXIoX19pKSB7fQojIDYzNyAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2l0ZXJhdG9y
LmgiIDMKICAgICAgaW5zZXJ0X2l0ZXJhdG9yJgogICAgICBvcGVyYXRvcj0oY29uc3QgdHlwZW5h
bWUgX0NvbnRhaW5lcjo6dmFsdWVfdHlwZSYgX192YWx1ZSkKICAgICAgewogaXRlciA9IGNvbnRh
aW5lci0+aW5zZXJ0KGl0ZXIsIF9fdmFsdWUpOwogKytpdGVyOwogcmV0dXJuICp0aGlzOwogICAg
ICB9CgogICAgICBpbnNlcnRfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yPSh0eXBlbmFtZSBfQ29u
dGFpbmVyOjp2YWx1ZV90eXBlJiYgX192YWx1ZSkKICAgICAgewogaXRlciA9IGNvbnRhaW5lci0+
aW5zZXJ0KGl0ZXIsIHN0ZDo6bW92ZShfX3ZhbHVlKSk7CiArK2l0ZXI7CiByZXR1cm4gKnRoaXM7
CiAgICAgIH0KCgoKICAgICAgaW5zZXJ0X2l0ZXJhdG9yJgogICAgICBvcGVyYXRvciooKQogICAg
ICB7IHJldHVybiAqdGhpczsgfQoKCiAgICAgIGluc2VydF9pdGVyYXRvciYKICAgICAgb3BlcmF0
b3IrKygpCiAgICAgIHsgcmV0dXJuICp0aGlzOyB9CgoKICAgICAgaW5zZXJ0X2l0ZXJhdG9yJgog
ICAgICBvcGVyYXRvcisrKGludCkKICAgICAgeyByZXR1cm4gKnRoaXM7IH0KICAgIH07CiMgNjgx
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9z
dGxfaXRlcmF0b3IuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Db250YWluZXIsIHR5cGVuYW1l
IF9JdGVyYXRvcj4KICAgIGlubGluZSBpbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4KICAgIGlu
c2VydGVyKF9Db250YWluZXImIF9feCwgX0l0ZXJhdG9yIF9faSkKICAgIHsKICAgICAgcmV0dXJu
IGluc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPihfX3gsCiAgICAgIHR5cGVuYW1lIF9Db250YWlu
ZXI6Oml0ZXJhdG9yKF9faSkpOwogICAgfQoKCgoKfQoKbmFtZXNwYWNlIF9fZ251X2N4eCBfX2F0
dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgojIDcwNSAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2l0ZXJh
dG9yLmgiIDMKICB1c2luZyBzdGQ6Oml0ZXJhdG9yX3RyYWl0czsKICB1c2luZyBzdGQ6Oml0ZXJh
dG9yOwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX0NvbnRhaW5lcj4K
ICAgIGNsYXNzIF9fbm9ybWFsX2l0ZXJhdG9yCiAgICB7CiAgICBwcm90ZWN0ZWQ6CiAgICAgIF9J
dGVyYXRvciBfTV9jdXJyZW50OwoKICAgICAgdHlwZWRlZiBpdGVyYXRvcl90cmFpdHM8X0l0ZXJh
dG9yPiBfX3RyYWl0c190eXBlOwoKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBfSXRlcmF0b3Ig
aXRlcmF0b3JfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX3RyYWl0c190eXBlOjppdGVy
YXRvcl9jYXRlZ29yeSBpdGVyYXRvcl9jYXRlZ29yeTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBf
X3RyYWl0c190eXBlOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgX190cmFpdHNfdHlwZTo6ZGlmZmVyZW5jZV90eXBlIGRpZmZlcmVuY2VfdHlwZTsKICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBfX3RyYWl0c190eXBlOjpyZWZlcmVuY2UgcmVmZXJlbmNlOwogICAg
ICB0eXBlZGVmIHR5cGVuYW1lIF9fdHJhaXRzX3R5cGU6OnBvaW50ZXIgcG9pbnRlcjsKCiAgICAg
IGNvbnN0ZXhwciBfX25vcm1hbF9pdGVyYXRvcigpIDogX01fY3VycmVudChfSXRlcmF0b3IoKSkg
eyB9CgogICAgICBleHBsaWNpdAogICAgICBfX25vcm1hbF9pdGVyYXRvcihjb25zdCBfSXRlcmF0
b3ImIF9faSkgOiBfTV9jdXJyZW50KF9faSkgeyB9CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
X0l0ZXI+CiAgICAgICAgX19ub3JtYWxfaXRlcmF0b3IoY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8
X0l0ZXIsCiAgICAgdHlwZW5hbWUgX19lbmFibGVfaWY8CiAgICAgICAgICAgICAgKHN0ZDo6X19h
cmVfc2FtZTxfSXRlciwgdHlwZW5hbWUgX0NvbnRhaW5lcjo6cG9pbnRlcj46Ol9fdmFsdWUpLAog
ICAgICAgIF9Db250YWluZXI+OjpfX3R5cGU+JiBfX2kpCiAgICAgICAgOiBfTV9jdXJyZW50KF9f
aS5iYXNlKCkpIHsgfQoKCiAgICAgIHJlZmVyZW5jZQogICAgICBvcGVyYXRvciooKSBjb25zdAog
ICAgICB7IHJldHVybiAqX01fY3VycmVudDsgfQoKICAgICAgcG9pbnRlcgogICAgICBvcGVyYXRv
ci0+KCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fY3VycmVudDsgfQoKICAgICAgX19ub3JtYWxf
aXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yKysoKQogICAgICB7CiArK19NX2N1cnJlbnQ7CiByZXR1
cm4gKnRoaXM7CiAgICAgIH0KCiAgICAgIF9fbm9ybWFsX2l0ZXJhdG9yCiAgICAgIG9wZXJhdG9y
KysoaW50KQogICAgICB7IHJldHVybiBfX25vcm1hbF9pdGVyYXRvcihfTV9jdXJyZW50KyspOyB9
CgoKICAgICAgX19ub3JtYWxfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yLS0oKQogICAgICB7CiAt
LV9NX2N1cnJlbnQ7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCiAgICAgIF9fbm9ybWFsX2l0ZXJh
dG9yCiAgICAgIG9wZXJhdG9yLS0oaW50KQogICAgICB7IHJldHVybiBfX25vcm1hbF9pdGVyYXRv
cihfTV9jdXJyZW50LS0pOyB9CgoKICAgICAgcmVmZXJlbmNlCiAgICAgIG9wZXJhdG9yW10oY29u
c3QgZGlmZmVyZW5jZV90eXBlJiBfX24pIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2N1cnJlbnRb
X19uXTsgfQoKICAgICAgX19ub3JtYWxfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yKz0oY29uc3Qg
ZGlmZmVyZW5jZV90eXBlJiBfX24pCiAgICAgIHsgX01fY3VycmVudCArPSBfX247IHJldHVybiAq
dGhpczsgfQoKICAgICAgX19ub3JtYWxfaXRlcmF0b3IKICAgICAgb3BlcmF0b3IrKGNvbnN0IGRp
ZmZlcmVuY2VfdHlwZSYgX19uKSBjb25zdAogICAgICB7IHJldHVybiBfX25vcm1hbF9pdGVyYXRv
cihfTV9jdXJyZW50ICsgX19uKTsgfQoKICAgICAgX19ub3JtYWxfaXRlcmF0b3ImCiAgICAgIG9w
ZXJhdG9yLT0oY29uc3QgZGlmZmVyZW5jZV90eXBlJiBfX24pCiAgICAgIHsgX01fY3VycmVudCAt
PSBfX247IHJldHVybiAqdGhpczsgfQoKICAgICAgX19ub3JtYWxfaXRlcmF0b3IKICAgICAgb3Bl
cmF0b3ItKGNvbnN0IGRpZmZlcmVuY2VfdHlwZSYgX19uKSBjb25zdAogICAgICB7IHJldHVybiBf
X25vcm1hbF9pdGVyYXRvcihfTV9jdXJyZW50IC0gX19uKTsgfQoKICAgICAgY29uc3QgX0l0ZXJh
dG9yJgogICAgICBiYXNlKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fY3VycmVudDsgfQogICAg
fTsKIyA4MDMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljgu
MS9iaXRzL3N0bF9pdGVyYXRvci5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yTCwg
dHlwZW5hbWUgX0l0ZXJhdG9yUiwgdHlwZW5hbWUgX0NvbnRhaW5lcj4KICAgIGlubGluZSBib29s
CiAgICBvcGVyYXRvcj09KGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvckwsIF9Db250
YWluZXI+JiBfX2xocywKICAgICAgICBjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3JS
LCBfQ29udGFpbmVyPiYgX19yaHMpCiAgICB7IHJldHVybiBfX2xocy5iYXNlKCkgPT0gX19yaHMu
YmFzZSgpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX0NvbnRh
aW5lcj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj09KGNvbnN0IF9fbm9ybWFsX2l0ZXJh
dG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj4mIF9fbGhzLAogICAgICAgIGNvbnN0IF9fbm9ybWFs
X2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj4mIF9fcmhzKQogICAgeyByZXR1cm4gX19s
aHMuYmFzZSgpID09IF9fcmhzLmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0
b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JSLCB0eXBlbmFtZSBfQ29udGFpbmVyPgogICAgaW5saW5l
IGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yTCwg
X0NvbnRhaW5lcj4mIF9fbGhzLAogICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVy
YXRvclIsIF9Db250YWluZXI+JiBfX3JocykKICAgIHsgcmV0dXJuIF9fbGhzLmJhc2UoKSAhPSBf
X3Jocy5iYXNlKCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yLCB0eXBlbmFtZSBf
Q29udGFpbmVyPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3QgX19ub3JtYWxf
aXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVyPiYgX19saHMsCiAgICAgICAgY29uc3QgX19u
b3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVyPiYgX19yaHMpCiAgICB7IHJldHVy
biBfX2xocy5iYXNlKCkgIT0gX19yaHMuYmFzZSgpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
SXRlcmF0b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JSLCB0eXBlbmFtZSBfQ29udGFpbmVyPgogICAg
aW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPChjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0
b3JMLCBfQ29udGFpbmVyPiYgX19saHMsCiAgICAgICBjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxf
SXRlcmF0b3JSLCBfQ29udGFpbmVyPiYgX19yaHMpCiAgICB7IHJldHVybiBfX2xocy5iYXNlKCkg
PCBfX3Jocy5iYXNlKCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yLCB0eXBlbmFt
ZSBfQ29udGFpbmVyPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPChjb25zdCBfX25vcm1h
bF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBfX2xocywKICAgICAgIGNvbnN0IF9f
bm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj4mIF9fcmhzKQogICAgeyByZXR1
cm4gX19saHMuYmFzZSgpIDwgX19yaHMuYmFzZSgpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9J
dGVyYXRvckwsIHR5cGVuYW1lIF9JdGVyYXRvclIsIHR5cGVuYW1lIF9Db250YWluZXI+CiAgICBp
bmxpbmUgYm9vbAogICAgb3BlcmF0b3I+KGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRv
ckwsIF9Db250YWluZXI+JiBfX2xocywKICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9J
dGVyYXRvclIsIF9Db250YWluZXI+JiBfX3JocykKICAgIHsgcmV0dXJuIF9fbGhzLmJhc2UoKSA+
IF9fcmhzLmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3IsIHR5cGVuYW1l
IF9Db250YWluZXI+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I+KGNvbnN0IF9fbm9ybWFs
X2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj4mIF9fbGhzLAogICAgICAgY29uc3QgX19u
b3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVyPiYgX19yaHMpCiAgICB7IHJldHVy
biBfX2xocy5iYXNlKCkgPiBfX3Jocy5iYXNlKCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0
ZXJhdG9yTCwgdHlwZW5hbWUgX0l0ZXJhdG9yUiwgdHlwZW5hbWUgX0NvbnRhaW5lcj4KICAgIGlu
bGluZSBib29sCiAgICBvcGVyYXRvcjw9KGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRv
ckwsIF9Db250YWluZXI+JiBfX2xocywKICAgICAgICBjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxf
SXRlcmF0b3JSLCBfQ29udGFpbmVyPiYgX19yaHMpCiAgICB7IHJldHVybiBfX2xocy5iYXNlKCkg
PD0gX19yaHMuYmFzZSgpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5h
bWUgX0NvbnRhaW5lcj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcjw9KGNvbnN0IF9fbm9y
bWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj4mIF9fbGhzLAogICAgICAgIGNvbnN0
IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj4mIF9fcmhzKQogICAgeyBy
ZXR1cm4gX19saHMuYmFzZSgpIDw9IF9fcmhzLmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSXRlcmF0b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JSLCB0eXBlbmFtZSBfQ29udGFpbmVyPgog
ICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPj0oY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0
ZXJhdG9yTCwgX0NvbnRhaW5lcj4mIF9fbGhzLAogICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0ZXJh
dG9yPF9JdGVyYXRvclIsIF9Db250YWluZXI+JiBfX3JocykKICAgIHsgcmV0dXJuIF9fbGhzLmJh
c2UoKSA+PSBfX3Jocy5iYXNlKCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yLCB0
eXBlbmFtZSBfQ29udGFpbmVyPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPj0oY29uc3Qg
X19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVyPiYgX19saHMsCiAgICAgICAg
Y29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVyPiYgX19yaHMpCiAg
ICB7IHJldHVybiBfX2xocy5iYXNlKCkgPj0gX19yaHMuYmFzZSgpOyB9CgoKCgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfSXRlcmF0b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JSLCB0eXBlbmFtZSBfQ29u
dGFpbmVyPgoKCiAgICBpbmxpbmUgYXV0bwogICAgb3BlcmF0b3ItKGNvbnN0IF9fbm9ybWFsX2l0
ZXJhdG9yPF9JdGVyYXRvckwsIF9Db250YWluZXI+JiBfX2xocywKICAgICAgIGNvbnN0IF9fbm9y
bWFsX2l0ZXJhdG9yPF9JdGVyYXRvclIsIF9Db250YWluZXI+JiBfX3JocykKICAgIC0+IGRlY2x0
eXBlKF9fbGhzLmJhc2UoKSAtIF9fcmhzLmJhc2UoKSkKCgoKCgogICAgeyByZXR1cm4gX19saHMu
YmFzZSgpIC0gX19yaHMuYmFzZSgpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwg
dHlwZW5hbWUgX0NvbnRhaW5lcj4KICAgIGlubGluZSB0eXBlbmFtZSBfX25vcm1hbF9pdGVyYXRv
cjxfSXRlcmF0b3IsIF9Db250YWluZXI+OjpkaWZmZXJlbmNlX3R5cGUKICAgIG9wZXJhdG9yLShj
b25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBfX2xocywKICAg
ICAgIGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj4mIF9fcmhz
KQogICAgeyByZXR1cm4gX19saHMuYmFzZSgpIC0gX19yaHMuYmFzZSgpOyB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX0NvbnRhaW5lcj4KICAgIGlubGluZSBfX25v
cm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+CiAgICBvcGVyYXRvcisodHlwZW5h
bWUgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVyPjo6ZGlmZmVyZW5jZV90
eXBlCiAgICAgICBfX24sIGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRh
aW5lcj4mIF9faSkKICAgIHsgcmV0dXJuIF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0Nv
bnRhaW5lcj4oX19pLmJhc2UoKSArIF9fbik7IH0KCgp9CgoKCm5hbWVzcGFjZSBzdGQgX19hdHRy
aWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKIyA5MjkgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9pdGVyYXRv
ci5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yPgogICAgY2xhc3MgbW92ZV9pdGVy
YXRvcgogICAgewogICAgcHJvdGVjdGVkOgogICAgICBfSXRlcmF0b3IgX01fY3VycmVudDsKCiAg
ICAgIHR5cGVkZWYgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj4gX190cmFpdHNfdHlwZTsKCiAg
ICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgX0l0ZXJhdG9yIGl0ZXJhdG9yX3R5cGU7CiAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgX190cmFpdHNfdHlwZTo6aXRlcmF0b3JfY2F0ZWdvcnkgaXRlcmF0b3Jf
Y2F0ZWdvcnk7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX190cmFpdHNfdHlwZTo6dmFsdWVfdHlw
ZSB2YWx1ZV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fdHJhaXRzX3R5cGU6OmRpZmZl
cmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7CgogICAgICB0eXBlZGVmIF9JdGVyYXRvciBwb2lu
dGVyOwogICAgICB0eXBlZGVmIHZhbHVlX3R5cGUmJiByZWZlcmVuY2U7CgogICAgICBtb3ZlX2l0
ZXJhdG9yKCkKICAgICAgOiBfTV9jdXJyZW50KCkgeyB9CgogICAgICBleHBsaWNpdAogICAgICBt
b3ZlX2l0ZXJhdG9yKGl0ZXJhdG9yX3R5cGUgX19pKQogICAgICA6IF9NX2N1cnJlbnQoX19pKSB7
IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyPgogbW92ZV9pdGVyYXRvcihjb25zdCBt
b3ZlX2l0ZXJhdG9yPF9JdGVyPiYgX19pKQogOiBfTV9jdXJyZW50KF9faS5iYXNlKCkpIHsgfQoK
ICAgICAgaXRlcmF0b3JfdHlwZQogICAgICBiYXNlKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01f
Y3VycmVudDsgfQoKICAgICAgcmVmZXJlbmNlCiAgICAgIG9wZXJhdG9yKigpIGNvbnN0CiAgICAg
IHsgcmV0dXJuIHN0ZDo6bW92ZSgqX01fY3VycmVudCk7IH0KCiAgICAgIHBvaW50ZXIKICAgICAg
b3BlcmF0b3ItPigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2N1cnJlbnQ7IH0KCiAgICAgIG1v
dmVfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yKysoKQogICAgICB7CiArK19NX2N1cnJlbnQ7CiBy
ZXR1cm4gKnRoaXM7CiAgICAgIH0KCiAgICAgIG1vdmVfaXRlcmF0b3IKICAgICAgb3BlcmF0b3Ir
KyhpbnQpCiAgICAgIHsKIG1vdmVfaXRlcmF0b3IgX190bXAgPSAqdGhpczsKICsrX01fY3VycmVu
dDsKIHJldHVybiBfX3RtcDsKICAgICAgfQoKICAgICAgbW92ZV9pdGVyYXRvciYKICAgICAgb3Bl
cmF0b3ItLSgpCiAgICAgIHsKIC0tX01fY3VycmVudDsKIHJldHVybiAqdGhpczsKICAgICAgfQoK
ICAgICAgbW92ZV9pdGVyYXRvcgogICAgICBvcGVyYXRvci0tKGludCkKICAgICAgewogbW92ZV9p
dGVyYXRvciBfX3RtcCA9ICp0aGlzOwogLS1fTV9jdXJyZW50OwogcmV0dXJuIF9fdG1wOwogICAg
ICB9CgogICAgICBtb3ZlX2l0ZXJhdG9yCiAgICAgIG9wZXJhdG9yKyhkaWZmZXJlbmNlX3R5cGUg
X19uKSBjb25zdAogICAgICB7IHJldHVybiBtb3ZlX2l0ZXJhdG9yKF9NX2N1cnJlbnQgKyBfX24p
OyB9CgogICAgICBtb3ZlX2l0ZXJhdG9yJgogICAgICBvcGVyYXRvcis9KGRpZmZlcmVuY2VfdHlw
ZSBfX24pCiAgICAgIHsKIF9NX2N1cnJlbnQgKz0gX19uOwogcmV0dXJuICp0aGlzOwogICAgICB9
CgogICAgICBtb3ZlX2l0ZXJhdG9yCiAgICAgIG9wZXJhdG9yLShkaWZmZXJlbmNlX3R5cGUgX19u
KSBjb25zdAogICAgICB7IHJldHVybiBtb3ZlX2l0ZXJhdG9yKF9NX2N1cnJlbnQgLSBfX24pOyB9
CgogICAgICBtb3ZlX2l0ZXJhdG9yJgogICAgICBvcGVyYXRvci09KGRpZmZlcmVuY2VfdHlwZSBf
X24pCiAgICAgIHsKIF9NX2N1cnJlbnQgLT0gX19uOwogcmV0dXJuICp0aGlzOwogICAgICB9Cgog
ICAgICByZWZlcmVuY2UKICAgICAgb3BlcmF0b3JbXShkaWZmZXJlbmNlX3R5cGUgX19uKSBjb25z
dAogICAgICB7IHJldHVybiBzdGQ6Om1vdmUoX01fY3VycmVudFtfX25dKTsgfQogICAgfTsKCgoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yTCwgdHlwZW5hbWUgX0l0ZXJhdG9yUj4KICAg
IGlubGluZSBib29sCiAgICBvcGVyYXRvcj09KGNvbnN0IG1vdmVfaXRlcmF0b3I8X0l0ZXJhdG9y
TD4mIF9feCwKICAgICAgICBjb25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVyYXRvclI+JiBfX3kpCiAg
ICB7IHJldHVybiBfX3guYmFzZSgpID09IF9feS5iYXNlKCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0l0ZXJhdG9yPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3QgbW92ZV9p
dGVyYXRvcjxfSXRlcmF0b3I+JiBfX3gsCiAgICAgICAgY29uc3QgbW92ZV9pdGVyYXRvcjxfSXRl
cmF0b3I+JiBfX3kpCiAgICB7IHJldHVybiBfX3guYmFzZSgpID09IF9feS5iYXNlKCk7IH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yTCwgdHlwZW5hbWUgX0l0ZXJhdG9yUj4KICAgIGlu
bGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IG1vdmVfaXRlcmF0b3I8X0l0ZXJhdG9yTD4m
IF9feCwKICAgICAgICBjb25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVyYXRvclI+JiBfX3kpCiAgICB7
IHJldHVybiAhKF9feCA9PSBfX3kpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4K
ICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IG1vdmVfaXRlcmF0b3I8X0l0ZXJh
dG9yPiYgX194LAogICAgICAgIGNvbnN0IG1vdmVfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX195KQog
ICAgeyByZXR1cm4gIShfX3ggPT0gX195KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0
b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JSPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPChj
b25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVyYXRvckw+JiBfX3gsCiAgICAgICBjb25zdCBtb3ZlX2l0
ZXJhdG9yPF9JdGVyYXRvclI+JiBfX3kpCiAgICB7IHJldHVybiBfX3guYmFzZSgpIDwgX195LmJh
c2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAgICBpbmxpbmUgYm9vbAog
ICAgb3BlcmF0b3I8KGNvbnN0IG1vdmVfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194LAogICAgICAg
Y29uc3QgbW92ZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3kpCiAgICB7IHJldHVybiBfX3guYmFz
ZSgpIDwgX195LmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3JMLCB0eXBl
bmFtZSBfSXRlcmF0b3JSPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPD0oY29uc3QgbW92
ZV9pdGVyYXRvcjxfSXRlcmF0b3JMPiYgX194LAogICAgICAgIGNvbnN0IG1vdmVfaXRlcmF0b3I8
X0l0ZXJhdG9yUj4mIF9feSkKICAgIHsgcmV0dXJuICEoX195IDwgX194KTsgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8PShjb25z
dCBtb3ZlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCwKICAgICAgICBjb25zdCBtb3ZlX2l0ZXJh
dG9yPF9JdGVyYXRvcj4mIF9feSkKICAgIHsgcmV0dXJuICEoX195IDwgX194KTsgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JSPgogICAgaW5saW5l
IGJvb2wKICAgIG9wZXJhdG9yPihjb25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVyYXRvckw+JiBfX3gs
CiAgICAgICBjb25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVyYXRvclI+JiBfX3kpCiAgICB7IHJldHVy
biBfX3kgPCBfX3g7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yPgogICAgaW5saW5l
IGJvb2wKICAgIG9wZXJhdG9yPihjb25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCwK
ICAgICAgIGNvbnN0IG1vdmVfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX195KQogICAgeyByZXR1cm4g
X195IDwgX194OyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvckwsIHR5cGVuYW1lIF9J
dGVyYXRvclI+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I+PShjb25zdCBtb3ZlX2l0ZXJh
dG9yPF9JdGVyYXRvckw+JiBfX3gsCiAgICAgICAgY29uc3QgbW92ZV9pdGVyYXRvcjxfSXRlcmF0
b3JSPiYgX195KQogICAgeyByZXR1cm4gIShfX3ggPCBfX3kpOyB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9JdGVyYXRvcj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj49KGNvbnN0IG1vdmVf
aXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194LAogICAgICAgIGNvbnN0IG1vdmVfaXRlcmF0b3I8X0l0
ZXJhdG9yPiYgX195KQogICAgeyByZXR1cm4gIShfX3ggPCBfX3kpOyB9CgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSXRlcmF0b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JSPgogICAgaW5saW5lIGF1dG8K
ICAgIG9wZXJhdG9yLShjb25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVyYXRvckw+JiBfX3gsCiAgICAg
ICBjb25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVyYXRvclI+JiBfX3kpCiAgICAtPiBkZWNsdHlwZShf
X3guYmFzZSgpIC0gX195LmJhc2UoKSkKICAgIHsgcmV0dXJuIF9feC5iYXNlKCkgLSBfX3kuYmFz
ZSgpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4KICAgIGlubGluZSBhdXRvCiAg
ICBvcGVyYXRvci0oY29uc3QgbW92ZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3gsCiAgICAgICBj
b25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkKICAgIC0+IGRlY2x0eXBlKF9feC5i
YXNlKCkgLSBfX3kuYmFzZSgpKQogICAgeyByZXR1cm4gX194LmJhc2UoKSAtIF9feS5iYXNlKCk7
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yPgogICAgaW5saW5lIG1vdmVfaXRlcmF0
b3I8X0l0ZXJhdG9yPgogICAgb3BlcmF0b3IrKHR5cGVuYW1lIG1vdmVfaXRlcmF0b3I8X0l0ZXJh
dG9yPjo6ZGlmZmVyZW5jZV90eXBlIF9fbiwKICAgICAgIGNvbnN0IG1vdmVfaXRlcmF0b3I8X0l0
ZXJhdG9yPiYgX194KQogICAgeyByZXR1cm4gX194ICsgX19uOyB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9JdGVyYXRvcj4KICAgIGlubGluZSBtb3ZlX2l0ZXJhdG9yPF9JdGVyYXRvcj4KICAgIG1h
a2VfbW92ZV9pdGVyYXRvcihfSXRlcmF0b3IgX19pKQogICAgeyByZXR1cm4gbW92ZV9pdGVyYXRv
cjxfSXRlcmF0b3I+KF9faSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yLCB0eXBl
bmFtZSBfUmV0dXJuVHlwZQogICAgPSB0eXBlbmFtZSBjb25kaXRpb25hbDxfX21vdmVfaWZfbm9l
eGNlcHRfY29uZAogICAgICA8dHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46OnZh
bHVlX3R5cGU+Ojp2YWx1ZSwKICAgICAgICAgICAgICAgIF9JdGVyYXRvciwgbW92ZV9pdGVyYXRv
cjxfSXRlcmF0b3I+Pjo6dHlwZT4KICAgIGlubGluZSBfUmV0dXJuVHlwZQogICAgX19tYWtlX21v
dmVfaWZfbm9leGNlcHRfaXRlcmF0b3IoX0l0ZXJhdG9yIF9faSkKICAgIHsgcmV0dXJuIF9SZXR1
cm5UeXBlKF9faSk7IH0KCgoKCn0KIyA2OCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDIgMwoKCgoKbmFtZXNwYWNl
IHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgojIDEx
NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMv
c3RsX2FsZ29iYXNlLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yMSwg
dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcjI+CiAgICBpbmxpbmUgdm9pZAogICAgaXRlcl9zd2Fw
KF9Gb3J3YXJkSXRlcmF0b3IxIF9fYSwgX0ZvcndhcmRJdGVyYXRvcjIgX19iKQogICAgewoKICAg
ICAKCiAgICAgCiMgMTQ3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC44LjEvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMwogICAgICBzd2FwKCpfX2EsICpfX2IpOwoK
ICAgIH0KIyAxNjMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjguMS9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJ
dGVyYXRvcjEsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IyPgogICAgX0ZvcndhcmRJdGVyYXRv
cjIKICAgIHN3YXBfcmFuZ2VzKF9Gb3J3YXJkSXRlcmF0b3IxIF9fZmlyc3QxLCBfRm9yd2FyZEl0
ZXJhdG9yMSBfX2xhc3QxLAogIF9Gb3J3YXJkSXRlcmF0b3IyIF9fZmlyc3QyKQogICAgewoKICAg
ICAKCiAgICAgCgogICAgICA7CgogICAgICBmb3IgKDsgX19maXJzdDEgIT0gX19sYXN0MTsgKytf
X2ZpcnN0MSwgKytfX2ZpcnN0MikKIHN0ZDo6aXRlcl9zd2FwKF9fZmlyc3QxLCBfX2ZpcnN0Mik7
CiAgICAgIHJldHVybiBfX2ZpcnN0MjsKICAgIH0KIyAxOTEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGNvbnN0IF9UcCYKICAgIG1pbihjb25zdCBf
VHAmIF9fYSwgY29uc3QgX1RwJiBfX2IpCiAgICB7CgogICAgIAoKICAgICAgaWYgKF9fYiA8IF9f
YSkKIHJldHVybiBfX2I7CiAgICAgIHJldHVybiBfX2E7CiAgICB9CiMgMjE0ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfYWxnb2Jhc2Uu
aCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBjb25zdCBfVHAmCiAgICBt
YXgoY29uc3QgX1RwJiBfX2EsIGNvbnN0IF9UcCYgX19iKQogICAgewoKICAgICAKCiAgICAgIGlm
IChfX2EgPCBfX2IpCiByZXR1cm4gX19iOwogICAgICByZXR1cm4gX19hOwogICAgfQojIDIzNyAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3Rs
X2FsZ29iYXNlLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Db21wYXJl
PgogICAgaW5saW5lIGNvbnN0IF9UcCYKICAgIG1pbihjb25zdCBfVHAmIF9fYSwgY29uc3QgX1Rw
JiBfX2IsIF9Db21wYXJlIF9fY29tcCkKICAgIHsKCiAgICAgIGlmIChfX2NvbXAoX19iLCBfX2Ep
KQogcmV0dXJuIF9fYjsKICAgICAgcmV0dXJuIF9fYTsKICAgIH0KIyAyNTggIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvYmFzZS5o
IiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGlubGlu
ZSBjb25zdCBfVHAmCiAgICBtYXgoY29uc3QgX1RwJiBfX2EsIGNvbnN0IF9UcCYgX19iLCBfQ29t
cGFyZSBfX2NvbXApCiAgICB7CgogICAgICBpZiAoX19jb21wKF9fYSwgX19iKSkKIHJldHVybiBf
X2I7CiAgICAgIHJldHVybiBfX2E7CiAgICB9CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJh
dG9yPgogICAgc3RydWN0IF9OaXRlcl9iYXNlCiAgICA6IF9JdGVyX2Jhc2U8X0l0ZXJhdG9yLCBf
X2lzX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3I+OjpfX3ZhbHVlPgogICAgeyB9OwoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAgICBpbmxpbmUgdHlwZW5hbWUgX05pdGVyX2Jhc2U8
X0l0ZXJhdG9yPjo6aXRlcmF0b3JfdHlwZQogICAgX19uaXRlcl9iYXNlKF9JdGVyYXRvciBfX2l0
KQogICAgeyByZXR1cm4gc3RkOjpfTml0ZXJfYmFzZTxfSXRlcmF0b3I+OjpfU19iYXNlKF9faXQp
OyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAgICBzdHJ1Y3QgX01pdGVyX2Jh
c2UKICAgIDogX0l0ZXJfYmFzZTxfSXRlcmF0b3IsIF9faXNfbW92ZV9pdGVyYXRvcjxfSXRlcmF0
b3I+OjpfX3ZhbHVlPgogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAg
ICBpbmxpbmUgdHlwZW5hbWUgX01pdGVyX2Jhc2U8X0l0ZXJhdG9yPjo6aXRlcmF0b3JfdHlwZQog
ICAgX19taXRlcl9iYXNlKF9JdGVyYXRvciBfX2l0KQogICAgeyByZXR1cm4gc3RkOjpfTWl0ZXJf
YmFzZTxfSXRlcmF0b3I+OjpfU19iYXNlKF9faXQpOyB9CgoKCgoKCgogIHRlbXBsYXRlPGJvb2ws
IGJvb2wsIHR5cGVuYW1lPgogICAgc3RydWN0IF9fY29weV9tb3ZlCiAgICB7CiAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIF9JSSwgdHlwZW5hbWUgX09JPgogICAgICAgIHN0YXRpYyBfT0kKICAgICAg
ICBfX2NvcHlfbShfSUkgX19maXJzdCwgX0lJIF9fbGFzdCwgX09JIF9fcmVzdWx0KQogICAgICAg
IHsKICAgZm9yICg7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fcmVzdWx0LCArK19fZmlyc3QpCiAg
ICAgKl9fcmVzdWx0ID0gKl9fZmlyc3Q7CiAgIHJldHVybiBfX3Jlc3VsdDsKIH0KICAgIH07CgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2F0ZWdvcnk+CiAgICBzdHJ1Y3QgX19jb3B5X21vdmU8dHJ1
ZSwgZmFsc2UsIF9DYXRlZ29yeT4KICAgIHsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJLCB0
eXBlbmFtZSBfT0k+CiAgICAgICAgc3RhdGljIF9PSQogICAgICAgIF9fY29weV9tKF9JSSBfX2Zp
cnN0LCBfSUkgX19sYXN0LCBfT0kgX19yZXN1bHQpCiAgICAgICAgewogICBmb3IgKDsgX19maXJz
dCAhPSBfX2xhc3Q7ICsrX19yZXN1bHQsICsrX19maXJzdCkKICAgICAqX19yZXN1bHQgPSBzdGQ6
Om1vdmUoKl9fZmlyc3QpOwogICByZXR1cm4gX19yZXN1bHQ7CiB9CiAgICB9OwoKCiAgdGVtcGxh
dGU8PgogICAgc3RydWN0IF9fY29weV9tb3ZlPGZhbHNlLCBmYWxzZSwgcmFuZG9tX2FjY2Vzc19p
dGVyYXRvcl90YWc+CiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JSSwgdHlwZW5hbWUg
X09JPgogICAgICAgIHN0YXRpYyBfT0kKICAgICAgICBfX2NvcHlfbShfSUkgX19maXJzdCwgX0lJ
IF9fbGFzdCwgX09JIF9fcmVzdWx0KQogICAgICAgIHsKICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVy
YXRvcl90cmFpdHM8X0lJPjo6ZGlmZmVyZW5jZV90eXBlIF9EaXN0YW5jZTsKICAgZm9yKF9EaXN0
YW5jZSBfX24gPSBfX2xhc3QgLSBfX2ZpcnN0OyBfX24gPiAwOyAtLV9fbikKICAgICB7CiAgICAg
ICAqX19yZXN1bHQgPSAqX19maXJzdDsKICAgICAgICsrX19maXJzdDsKICAgICAgICsrX19yZXN1
bHQ7CiAgICAgfQogICByZXR1cm4gX19yZXN1bHQ7CiB9CiAgICB9OwoKCiAgdGVtcGxhdGU8Pgog
ICAgc3RydWN0IF9fY29weV9tb3ZlPHRydWUsIGZhbHNlLCByYW5kb21fYWNjZXNzX2l0ZXJhdG9y
X3RhZz4KICAgIHsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJLCB0eXBlbmFtZSBfT0k+CiAg
ICAgICAgc3RhdGljIF9PSQogICAgICAgIF9fY29weV9tKF9JSSBfX2ZpcnN0LCBfSUkgX19sYXN0
LCBfT0kgX19yZXN1bHQpCiAgICAgICAgewogICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3Ry
YWl0czxfSUk+OjpkaWZmZXJlbmNlX3R5cGUgX0Rpc3RhbmNlOwogICBmb3IoX0Rpc3RhbmNlIF9f
biA9IF9fbGFzdCAtIF9fZmlyc3Q7IF9fbiA+IDA7IC0tX19uKQogICAgIHsKICAgICAgICpfX3Jl
c3VsdCA9IHN0ZDo6bW92ZSgqX19maXJzdCk7CiAgICAgICArK19fZmlyc3Q7CiAgICAgICArK19f
cmVzdWx0OwogICAgIH0KICAgcmV0dXJuIF9fcmVzdWx0OwogfQogICAgfTsKCgogIHRlbXBsYXRl
PGJvb2wgX0lzTW92ZT4KICAgIHN0cnVjdCBfX2NvcHlfbW92ZTxfSXNNb3ZlLCB0cnVlLCByYW5k
b21fYWNjZXNzX2l0ZXJhdG9yX3RhZz4KICAgIHsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PgogICAgICAgIHN0YXRpYyBfVHAqCiAgICAgICAgX19jb3B5X20oY29uc3QgX1RwKiBfX2ZpcnN0
LCBjb25zdCBfVHAqIF9fbGFzdCwgX1RwKiBfX3Jlc3VsdCkKICAgICAgICB7CiAgIGNvbnN0IHB0
cmRpZmZfdCBfTnVtID0gX19sYXN0IC0gX19maXJzdDsKICAgaWYgKF9OdW0pCiAgICAgX19idWls
dGluX21lbW1vdmUoX19yZXN1bHQsIF9fZmlyc3QsIHNpemVvZihfVHApICogX051bSk7CiAgIHJl
dHVybiBfX3Jlc3VsdCArIF9OdW07CiB9CiAgICB9OwoKICB0ZW1wbGF0ZTxib29sIF9Jc01vdmUs
IHR5cGVuYW1lIF9JSSwgdHlwZW5hbWUgX09JPgogICAgaW5saW5lIF9PSQogICAgX19jb3B5X21v
dmVfYShfSUkgX19maXJzdCwgX0lJIF9fbGFzdCwgX09JIF9fcmVzdWx0KQogICAgewogICAgICB0
eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSUk+Ojp2YWx1ZV90eXBlIF9WYWx1ZVR5
cGVJOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfT0k+Ojp2YWx1ZV90
eXBlIF9WYWx1ZVR5cGVPOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxf
SUk+OjppdGVyYXRvcl9jYXRlZ29yeSBfQ2F0ZWdvcnk7CiAgICAgIGNvbnN0IGJvb2wgX19zaW1w
bGUgPSAoX19pc190cml2aWFsKF9WYWx1ZVR5cGVJKQogICAgICAgICAgICAgICAgICAgICAgJiYg
X19pc19wb2ludGVyPF9JST46Ol9fdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICYmIF9faXNf
cG9pbnRlcjxfT0k+OjpfX3ZhbHVlCiAgICAgICAgJiYgX19hcmVfc2FtZTxfVmFsdWVUeXBlSSwg
X1ZhbHVlVHlwZU8+OjpfX3ZhbHVlKTsKCiAgICAgIHJldHVybiBzdGQ6Ol9fY29weV9tb3ZlPF9J
c01vdmUsIF9fc2ltcGxlLAogICAgICAgICAgICAgICAgICAgICAgIF9DYXRlZ29yeT46Ol9fY29w
eV9tKF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQpOwogICAgfQoKCgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVD4KICAgIHN0cnVjdCBjaGFyX3RyYWl0czsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgY2xhc3MgaXN0cmVhbWJ1Zl9pdGVyYXRvcjsK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgY2xhc3Mg
b3N0cmVhbWJ1Zl9pdGVyYXRvcjsKCiAgdGVtcGxhdGU8Ym9vbCBfSXNNb3ZlLCB0eXBlbmFtZSBf
Q2hhclQ+CiAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfY2hhcjxfQ2hh
clQ+OjpfX3ZhbHVlLAogICAgICBvc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVCwgY2hhcl90cmFp
dHM8X0NoYXJUPiA+ID46Ol9fdHlwZQogICAgX19jb3B5X21vdmVfYTIoX0NoYXJUKiwgX0NoYXJU
KiwKICAgICBvc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVCwgY2hhcl90cmFpdHM8X0NoYXJUPiA+
KTsKCiAgdGVtcGxhdGU8Ym9vbCBfSXNNb3ZlLCB0eXBlbmFtZSBfQ2hhclQ+CiAgICB0eXBlbmFt
ZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfY2hhcjxfQ2hhclQ+OjpfX3ZhbHVlLAogICAg
ICBvc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVCwgY2hhcl90cmFpdHM8X0NoYXJUPiA+ID46Ol9f
dHlwZQogICAgX19jb3B5X21vdmVfYTIoY29uc3QgX0NoYXJUKiwgY29uc3QgX0NoYXJUKiwKICAg
ICBvc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVCwgY2hhcl90cmFpdHM8X0NoYXJUPiA+KTsKCiAg
dGVtcGxhdGU8Ym9vbCBfSXNNb3ZlLCB0eXBlbmFtZSBfQ2hhclQ+CiAgICB0eXBlbmFtZSBfX2du
dV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfY2hhcjxfQ2hhclQ+OjpfX3ZhbHVlLAogICAgICAgIF9D
aGFyVCo+OjpfX3R5cGUKICAgIF9fY29weV9tb3ZlX2EyKGlzdHJlYW1idWZfaXRlcmF0b3I8X0No
YXJULCBjaGFyX3RyYWl0czxfQ2hhclQ+ID4sCiAgICAgaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hh
clQsIGNoYXJfdHJhaXRzPF9DaGFyVD4gPiwgX0NoYXJUKik7CgogIHRlbXBsYXRlPGJvb2wgX0lz
TW92ZSwgdHlwZW5hbWUgX0lJLCB0eXBlbmFtZSBfT0k+CiAgICBpbmxpbmUgX09JCiAgICBfX2Nv
cHlfbW92ZV9hMihfSUkgX19maXJzdCwgX0lJIF9fbGFzdCwgX09JIF9fcmVzdWx0KQogICAgewog
ICAgICByZXR1cm4gX09JKHN0ZDo6X19jb3B5X21vdmVfYTxfSXNNb3ZlPihzdGQ6Ol9fbml0ZXJf
YmFzZShfX2ZpcnN0KSwKICAgICAgICAgIHN0ZDo6X19uaXRlcl9iYXNlKF9fbGFzdCksCiAgICAg
ICAgICBzdGQ6Ol9fbml0ZXJfYmFzZShfX3Jlc3VsdCkpKTsKICAgIH0KIyA0NDggIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvYmFz
ZS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJLCB0eXBlbmFtZSBfT0k+CiAgICBpbmxpbmUg
X09JCiAgICBjb3B5KF9JSSBfX2ZpcnN0LCBfSUkgX19sYXN0LCBfT0kgX19yZXN1bHQpCiAgICB7
CgogICAgIAogICAgIAoKICAgICAgOwoKICAgICAgcmV0dXJuIChzdGQ6Ol9fY29weV9tb3ZlX2Ey
PF9faXNfbW92ZV9pdGVyYXRvcjxfSUk+OjpfX3ZhbHVlPgogICAgICAgKHN0ZDo6X19taXRlcl9i
YXNlKF9fZmlyc3QpLCBzdGQ6Ol9fbWl0ZXJfYmFzZShfX2xhc3QpLAogICAgICAgIF9fcmVzdWx0
KSk7CiAgICB9CiMgNDgxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC44LjEvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JSSwg
dHlwZW5hbWUgX09JPgogICAgaW5saW5lIF9PSQogICAgbW92ZShfSUkgX19maXJzdCwgX0lJIF9f
bGFzdCwgX09JIF9fcmVzdWx0KQogICAgewoKICAgICAKICAgICAKCiAgICAgIDsKCiAgICAgIHJl
dHVybiBzdGQ6Ol9fY29weV9tb3ZlX2EyPHRydWU+KHN0ZDo6X19taXRlcl9iYXNlKF9fZmlyc3Qp
LAogICAgICAgICAgIHN0ZDo6X19taXRlcl9iYXNlKF9fbGFzdCksIF9fcmVzdWx0KTsKICAgIH0K
CgoKCgoKICB0ZW1wbGF0ZTxib29sLCBib29sLCB0eXBlbmFtZT4KICAgIHN0cnVjdCBfX2NvcHlf
bW92ZV9iYWNrd2FyZAogICAgewogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQkkxLCB0eXBlbmFt
ZSBfQkkyPgogICAgICAgIHN0YXRpYyBfQkkyCiAgICAgICAgX19jb3B5X21vdmVfYihfQkkxIF9f
Zmlyc3QsIF9CSTEgX19sYXN0LCBfQkkyIF9fcmVzdWx0KQogICAgICAgIHsKICAgd2hpbGUgKF9f
Zmlyc3QgIT0gX19sYXN0KQogICAgICotLV9fcmVzdWx0ID0gKi0tX19sYXN0OwogICByZXR1cm4g
X19yZXN1bHQ7CiB9CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NhdGVnb3J5PgogICAg
c3RydWN0IF9fY29weV9tb3ZlX2JhY2t3YXJkPHRydWUsIGZhbHNlLCBfQ2F0ZWdvcnk+CiAgICB7
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9CSTEsIHR5cGVuYW1lIF9CSTI+CiAgICAgICAgc3Rh
dGljIF9CSTIKICAgICAgICBfX2NvcHlfbW92ZV9iKF9CSTEgX19maXJzdCwgX0JJMSBfX2xhc3Qs
IF9CSTIgX19yZXN1bHQpCiAgICAgICAgewogICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3QpCiAg
ICAgKi0tX19yZXN1bHQgPSBzdGQ6Om1vdmUoKi0tX19sYXN0KTsKICAgcmV0dXJuIF9fcmVzdWx0
OwogfQogICAgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2NvcHlfbW92ZV9iYWNrd2Fy
ZDxmYWxzZSwgZmFsc2UsIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnPgogICAgewogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQkkxLCB0eXBlbmFtZSBfQkkyPgogICAgICAgIHN0YXRpYyBfQkky
CiAgICAgICAgX19jb3B5X21vdmVfYihfQkkxIF9fZmlyc3QsIF9CSTEgX19sYXN0LCBfQkkyIF9f
cmVzdWx0KQogICAgICAgIHsKICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9CSTE+OjpkaWZm
ZXJlbmNlX3R5cGUgX19uOwogICBmb3IgKF9fbiA9IF9fbGFzdCAtIF9fZmlyc3Q7IF9fbiA+IDA7
IC0tX19uKQogICAgICotLV9fcmVzdWx0ID0gKi0tX19sYXN0OwogICByZXR1cm4gX19yZXN1bHQ7
CiB9CiAgICB9OwoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fY29weV9tb3ZlX2JhY2t3YXJk
PHRydWUsIGZhbHNlLCByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZz4KICAgIHsKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX0JJMSwgdHlwZW5hbWUgX0JJMj4KICAgICAgICBzdGF0aWMgX0JJMgog
ICAgICAgIF9fY29weV9tb3ZlX2IoX0JJMSBfX2ZpcnN0LCBfQkkxIF9fbGFzdCwgX0JJMiBfX3Jl
c3VsdCkKICAgICAgICB7CiAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfQkkxPjo6ZGlmZmVy
ZW5jZV90eXBlIF9fbjsKICAgZm9yIChfX24gPSBfX2xhc3QgLSBfX2ZpcnN0OyBfX24gPiAwOyAt
LV9fbikKICAgICAqLS1fX3Jlc3VsdCA9IHN0ZDo6bW92ZSgqLS1fX2xhc3QpOwogICByZXR1cm4g
X19yZXN1bHQ7CiB9CiAgICB9OwoKCiAgdGVtcGxhdGU8Ym9vbCBfSXNNb3ZlPgogICAgc3RydWN0
IF9fY29weV9tb3ZlX2JhY2t3YXJkPF9Jc01vdmUsIHRydWUsIHJhbmRvbV9hY2Nlc3NfaXRlcmF0
b3JfdGFnPgogICAgewogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICAgICAgc3RhdGlj
IF9UcCoKICAgICAgICBfX2NvcHlfbW92ZV9iKGNvbnN0IF9UcCogX19maXJzdCwgY29uc3QgX1Rw
KiBfX2xhc3QsIF9UcCogX19yZXN1bHQpCiAgICAgICAgewogICBjb25zdCBwdHJkaWZmX3QgX051
bSA9IF9fbGFzdCAtIF9fZmlyc3Q7CiAgIGlmIChfTnVtKQogICAgIF9fYnVpbHRpbl9tZW1tb3Zl
KF9fcmVzdWx0IC0gX051bSwgX19maXJzdCwgc2l6ZW9mKF9UcCkgKiBfTnVtKTsKICAgcmV0dXJu
IF9fcmVzdWx0IC0gX051bTsKIH0KICAgIH07CgogIHRlbXBsYXRlPGJvb2wgX0lzTW92ZSwgdHlw
ZW5hbWUgX0JJMSwgdHlwZW5hbWUgX0JJMj4KICAgIGlubGluZSBfQkkyCiAgICBfX2NvcHlfbW92
ZV9iYWNrd2FyZF9hKF9CSTEgX19maXJzdCwgX0JJMSBfX2xhc3QsIF9CSTIgX19yZXN1bHQpCiAg
ICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9CSTE+Ojp2YWx1ZV90
eXBlIF9WYWx1ZVR5cGUxOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxf
QkkyPjo6dmFsdWVfdHlwZSBfVmFsdWVUeXBlMjsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVy
YXRvcl90cmFpdHM8X0JJMT46Oml0ZXJhdG9yX2NhdGVnb3J5IF9DYXRlZ29yeTsKICAgICAgY29u
c3QgYm9vbCBfX3NpbXBsZSA9IChfX2lzX3RyaXZpYWwoX1ZhbHVlVHlwZTEpCiAgICAgICAgICAg
ICAgICAgICAgICAmJiBfX2lzX3BvaW50ZXI8X0JJMT46Ol9fdmFsdWUKICAgICAgICAgICAgICAg
ICAgICAgICYmIF9faXNfcG9pbnRlcjxfQkkyPjo6X192YWx1ZQogICAgICAgICYmIF9fYXJlX3Nh
bWU8X1ZhbHVlVHlwZTEsIF9WYWx1ZVR5cGUyPjo6X192YWx1ZSk7CgogICAgICByZXR1cm4gc3Rk
OjpfX2NvcHlfbW92ZV9iYWNrd2FyZDxfSXNNb3ZlLCBfX3NpbXBsZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfQ2F0ZWdvcnk+OjpfX2NvcHlfbW92ZV9iKF9fZmlyc3QsCiAgICAg
ICAgIF9fbGFzdCwKICAgICAgICAgX19yZXN1bHQpOwogICAgfQoKICB0ZW1wbGF0ZTxib29sIF9J
c01vdmUsIHR5cGVuYW1lIF9CSTEsIHR5cGVuYW1lIF9CSTI+CiAgICBpbmxpbmUgX0JJMgogICAg
X19jb3B5X21vdmVfYmFja3dhcmRfYTIoX0JJMSBfX2ZpcnN0LCBfQkkxIF9fbGFzdCwgX0JJMiBf
X3Jlc3VsdCkKICAgIHsKICAgICAgcmV0dXJuIF9CSTIoc3RkOjpfX2NvcHlfbW92ZV9iYWNrd2Fy
ZF9hPF9Jc01vdmU+CiAgICAoc3RkOjpfX25pdGVyX2Jhc2UoX19maXJzdCksIHN0ZDo6X19uaXRl
cl9iYXNlKF9fbGFzdCksCiAgICAgc3RkOjpfX25pdGVyX2Jhc2UoX19yZXN1bHQpKSk7CiAgICB9
CiMgNjE3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEv
Yml0cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9CSTEsIHR5cGVuYW1l
IF9CSTI+CiAgICBpbmxpbmUgX0JJMgogICAgY29weV9iYWNrd2FyZChfQkkxIF9fZmlyc3QsIF9C
STEgX19sYXN0LCBfQkkyIF9fcmVzdWx0KQogICAgewoKICAgICAKICAgICAKICAgICAKCgogICAg
ICA7CgogICAgICByZXR1cm4gKHN0ZDo6X19jb3B5X21vdmVfYmFja3dhcmRfYTI8X19pc19tb3Zl
X2l0ZXJhdG9yPF9CSTE+OjpfX3ZhbHVlPgogICAgICAgKHN0ZDo6X19taXRlcl9iYXNlKF9fZmly
c3QpLCBzdGQ6Ol9fbWl0ZXJfYmFzZShfX2xhc3QpLAogICAgICAgIF9fcmVzdWx0KSk7CiAgICB9
CiMgNjUzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEv
Yml0cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9CSTEsIHR5cGVuYW1l
IF9CSTI+CiAgICBpbmxpbmUgX0JJMgogICAgbW92ZV9iYWNrd2FyZChfQkkxIF9fZmlyc3QsIF9C
STEgX19sYXN0LCBfQkkyIF9fcmVzdWx0KQogICAgewoKICAgICAKICAgICAKICAgICAKCgogICAg
ICA7CgogICAgICByZXR1cm4gc3RkOjpfX2NvcHlfbW92ZV9iYWNrd2FyZF9hMjx0cnVlPihzdGQ6
Ol9fbWl0ZXJfYmFzZShfX2ZpcnN0KSwKICAgICAgc3RkOjpfX21pdGVyX2Jhc2UoX19sYXN0KSwK
ICAgICAgX19yZXN1bHQpOwogICAgfQoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJk
SXRlcmF0b3IsIHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSB0eXBlbmFtZQogICAgX19nbnVfY3h4
OjpfX2VuYWJsZV9pZjwhX19pc19zY2FsYXI8X1RwPjo6X192YWx1ZSwgdm9pZD46Ol9fdHlwZQog
ICAgX19maWxsX2EoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9f
bGFzdCwKICAgICAgIGNvbnN0IF9UcCYgX192YWx1ZSkKICAgIHsKICAgICAgZm9yICg7IF9fZmly
c3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiAqX19maXJzdCA9IF9fdmFsdWU7CiAgICB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9UcD4KICAgIGlubGlu
ZSB0eXBlbmFtZQogICAgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX3NjYWxhcjxfVHA+Ojpf
X3ZhbHVlLCB2b2lkPjo6X190eXBlCiAgICBfX2ZpbGxfYShfRm9yd2FyZEl0ZXJhdG9yIF9fZmly
c3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgICBjb25zdCBfVHAmIF9fdmFsdWUpCiAg
ICB7CiAgICAgIGNvbnN0IF9UcCBfX3RtcCA9IF9fdmFsdWU7CiAgICAgIGZvciAoOyBfX2ZpcnN0
ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogKl9fZmlyc3QgPSBfX3RtcDsKICAgIH0KCgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSB0eXBlbmFtZQogICAgX19nbnVfY3h4OjpfX2Vu
YWJsZV9pZjxfX2lzX2J5dGU8X1RwPjo6X192YWx1ZSwgdm9pZD46Ol9fdHlwZQogICAgX19maWxs
X2EoX1RwKiBfX2ZpcnN0LCBfVHAqIF9fbGFzdCwgY29uc3QgX1RwJiBfX2MpCiAgICB7CiAgICAg
IGNvbnN0IF9UcCBfX3RtcCA9IF9fYzsKICAgICAgX19idWlsdGluX21lbXNldChfX2ZpcnN0LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihfX3RtcCksCiAgICAgICAgIF9fbGFzdCAtIF9fZmly
c3QpOwogICAgfQojIDcxOSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOC4xL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9y
d2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgdm9pZAogICAgZmlsbChfRm9y
d2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LCBjb25zdCBfVHAm
IF9fdmFsdWUpCiAgICB7CgogICAgIAoKICAgICAgOwoKICAgICAgc3RkOjpfX2ZpbGxfYShzdGQ6
Ol9fbml0ZXJfYmFzZShfX2ZpcnN0KSwgc3RkOjpfX25pdGVyX2Jhc2UoX19sYXN0KSwKICAgICAg
X192YWx1ZSk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvciwgdHlw
ZW5hbWUgX1NpemUsIHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSB0eXBlbmFtZQogICAgX19nbnVf
Y3h4OjpfX2VuYWJsZV9pZjwhX19pc19zY2FsYXI8X1RwPjo6X192YWx1ZSwgX091dHB1dEl0ZXJh
dG9yPjo6X190eXBlCiAgICBfX2ZpbGxfbl9hKF9PdXRwdXRJdGVyYXRvciBfX2ZpcnN0LCBfU2l6
ZSBfX24sIGNvbnN0IF9UcCYgX192YWx1ZSkKICAgIHsKICAgICAgZm9yIChfX2RlY2x0eXBlKF9f
biArIDApIF9fbml0ZXIgPSBfX247CiAgICBfX25pdGVyID4gMDsgLS1fX25pdGVyLCArK19fZmly
c3QpCiAqX19maXJzdCA9IF9fdmFsdWU7CiAgICAgIHJldHVybiBfX2ZpcnN0OwogICAgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9TaXplLCB0eXBlbmFt
ZSBfVHA+CiAgICBpbmxpbmUgdHlwZW5hbWUKICAgIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19p
c19zY2FsYXI8X1RwPjo6X192YWx1ZSwgX091dHB1dEl0ZXJhdG9yPjo6X190eXBlCiAgICBfX2Zp
bGxfbl9hKF9PdXRwdXRJdGVyYXRvciBfX2ZpcnN0LCBfU2l6ZSBfX24sIGNvbnN0IF9UcCYgX192
YWx1ZSkKICAgIHsKICAgICAgY29uc3QgX1RwIF9fdG1wID0gX192YWx1ZTsKICAgICAgZm9yIChf
X2RlY2x0eXBlKF9fbiArIDApIF9fbml0ZXIgPSBfX247CiAgICBfX25pdGVyID4gMDsgLS1fX25p
dGVyLCArK19fZmlyc3QpCiAqX19maXJzdCA9IF9fdG1wOwogICAgICByZXR1cm4gX19maXJzdDsK
ICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1NpemUsIHR5cGVuYW1lIF9UcD4KICAgIGlubGlu
ZSB0eXBlbmFtZQogICAgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2J5dGU8X1RwPjo6X192
YWx1ZSwgX1RwKj46Ol9fdHlwZQogICAgX19maWxsX25fYShfVHAqIF9fZmlyc3QsIF9TaXplIF9f
biwgY29uc3QgX1RwJiBfX2MpCiAgICB7CiAgICAgIHN0ZDo6X19maWxsX2EoX19maXJzdCwgX19m
aXJzdCArIF9fbiwgX19jKTsKICAgICAgcmV0dXJuIF9fZmlyc3QgKyBfX247CiAgICB9CiMgNzc5
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9z
dGxfYWxnb2Jhc2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9PSSwgdHlwZW5hbWUgX1NpemUs
IHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBfT0kKICAgIGZpbGxfbihfT0kgX19maXJzdCwgX1Np
emUgX19uLCBjb25zdCBfVHAmIF9fdmFsdWUpCiAgICB7CgogICAgIAoKICAgICAgcmV0dXJuIF9P
SShzdGQ6Ol9fZmlsbF9uX2Eoc3RkOjpfX25pdGVyX2Jhc2UoX19maXJzdCksIF9fbiwgX192YWx1
ZSkpOwogICAgfQoKICB0ZW1wbGF0ZTxib29sIF9Cb29sVHlwZT4KICAgIHN0cnVjdCBfX2VxdWFs
CiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JSTEsIHR5cGVuYW1lIF9JSTI+CiAgICAg
ICAgc3RhdGljIGJvb2wKICAgICAgICBlcXVhbChfSUkxIF9fZmlyc3QxLCBfSUkxIF9fbGFzdDEs
IF9JSTIgX19maXJzdDIpCiAgICAgICAgewogICBmb3IgKDsgX19maXJzdDEgIT0gX19sYXN0MTsg
KytfX2ZpcnN0MSwgKytfX2ZpcnN0MikKICAgICBpZiAoISgqX19maXJzdDEgPT0gKl9fZmlyc3Qy
KSkKICAgICAgIHJldHVybiBmYWxzZTsKICAgcmV0dXJuIHRydWU7CiB9CiAgICB9OwoKICB0ZW1w
bGF0ZTw+CiAgICBzdHJ1Y3QgX19lcXVhbDx0cnVlPgogICAgewogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICAgICAgc3RhdGljIGJvb2wKICAgICAgICBlcXVhbChjb25zdCBfVHAqIF9f
Zmlyc3QxLCBjb25zdCBfVHAqIF9fbGFzdDEsIGNvbnN0IF9UcCogX19maXJzdDIpCiAgICAgICAg
ewogICByZXR1cm4gIV9fYnVpbHRpbl9tZW1jbXAoX19maXJzdDEsIF9fZmlyc3QyLCBzaXplb2Yo
X1RwKQogICAgICAgKiAoX19sYXN0MSAtIF9fZmlyc3QxKSk7CiB9CiAgICB9OwoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfSUkxLCB0eXBlbmFtZSBfSUkyPgogICAgaW5saW5lIGJvb2wKICAgIF9fZXF1
YWxfYXV4KF9JSTEgX19maXJzdDEsIF9JSTEgX19sYXN0MSwgX0lJMiBfX2ZpcnN0MikKICAgIHsK
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lJMT46OnZhbHVlX3R5cGUg
X1ZhbHVlVHlwZTE7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JSTI+
Ojp2YWx1ZV90eXBlIF9WYWx1ZVR5cGUyOwogICAgICBjb25zdCBib29sIF9fc2ltcGxlID0gKChf
X2lzX2ludGVnZXI8X1ZhbHVlVHlwZTE+OjpfX3ZhbHVlCiAgICAgICAgIHx8IF9faXNfcG9pbnRl
cjxfVmFsdWVUeXBlMT46Ol9fdmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAmJiBfX2lzX3Bv
aW50ZXI8X0lJMT46Ol9fdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICYmIF9faXNfcG9pbnRl
cjxfSUkyPjo6X192YWx1ZQogICAgICAgICYmIF9fYXJlX3NhbWU8X1ZhbHVlVHlwZTEsIF9WYWx1
ZVR5cGUyPjo6X192YWx1ZSk7CgogICAgICByZXR1cm4gc3RkOjpfX2VxdWFsPF9fc2ltcGxlPjo6
ZXF1YWwoX19maXJzdDEsIF9fbGFzdDEsIF9fZmlyc3QyKTsKICAgIH0KCgogIHRlbXBsYXRlPHR5
cGVuYW1lLCB0eXBlbmFtZT4KICAgIHN0cnVjdCBfX2xjX3JhaQogICAgewogICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfSUkxLCB0eXBlbmFtZSBfSUkyPgogICAgICAgIHN0YXRpYyBfSUkxCiAgICAg
ICAgX19uZXdsYXN0MShfSUkxLCBfSUkxIF9fbGFzdDEsIF9JSTIsIF9JSTIpCiAgICAgICAgeyBy
ZXR1cm4gX19sYXN0MTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJPgogICAgICAgIHN0
YXRpYyBib29sCiAgICAgICAgX19jbmQyKF9JSSBfX2ZpcnN0LCBfSUkgX19sYXN0KQogICAgICAg
IHsgcmV0dXJuIF9fZmlyc3QgIT0gX19sYXN0OyB9CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBz
dHJ1Y3QgX19sY19yYWk8cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcsIHJhbmRvbV9hY2Nlc3Nf
aXRlcmF0b3JfdGFnPgogICAgewogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUkFJMSwgdHlwZW5h
bWUgX1JBSTI+CiAgICAgICAgc3RhdGljIF9SQUkxCiAgICAgICAgX19uZXdsYXN0MShfUkFJMSBf
X2ZpcnN0MSwgX1JBSTEgX19sYXN0MSwKICAgICBfUkFJMiBfX2ZpcnN0MiwgX1JBSTIgX19sYXN0
MikKICAgICAgICB7CiAgIGNvbnN0IHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUkFJMT46OmRp
ZmZlcmVuY2VfdHlwZQogICAgIF9fZGlmZjEgPSBfX2xhc3QxIC0gX19maXJzdDE7CiAgIGNvbnN0
IHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUkFJMj46OmRpZmZlcmVuY2VfdHlwZQogICAgIF9f
ZGlmZjIgPSBfX2xhc3QyIC0gX19maXJzdDI7CiAgIHJldHVybiBfX2RpZmYyIDwgX19kaWZmMSA/
IF9fZmlyc3QxICsgX19kaWZmMiA6IF9fbGFzdDE7CiB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfUkFJPgogICAgICAgIHN0YXRpYyBib29sCiAgICAgICAgX19jbmQyKF9SQUksIF9SQUkpCiAg
ICAgICAgeyByZXR1cm4gdHJ1ZTsgfQogICAgfTsKCiAgdGVtcGxhdGU8Ym9vbCBfQm9vbFR5cGU+
CiAgICBzdHJ1Y3QgX19sZXhpY29ncmFwaGljYWxfY29tcGFyZQogICAgewogICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfSUkxLCB0eXBlbmFtZSBfSUkyPgogICAgICAgIHN0YXRpYyBib29sIF9fbGMo
X0lJMSwgX0lJMSwgX0lJMiwgX0lJMik7CiAgICB9OwoKICB0ZW1wbGF0ZTxib29sIF9Cb29sVHlw
ZT4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JSTEsIHR5cGVuYW1lIF9JSTI+CiAgICAgIGJvb2wK
ICAgICAgX19sZXhpY29ncmFwaGljYWxfY29tcGFyZTxfQm9vbFR5cGU+OjoKICAgICAgX19sYyhf
SUkxIF9fZmlyc3QxLCBfSUkxIF9fbGFzdDEsIF9JSTIgX19maXJzdDIsIF9JSTIgX19sYXN0MikK
ICAgICAgewogdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lJMT46Oml0ZXJhdG9y
X2NhdGVnb3J5IF9DYXRlZ29yeTE7CiB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxf
SUkyPjo6aXRlcmF0b3JfY2F0ZWdvcnkgX0NhdGVnb3J5MjsKIHR5cGVkZWYgc3RkOjpfX2xjX3Jh
aTxfQ2F0ZWdvcnkxLCBfQ2F0ZWdvcnkyPiBfX3JhaV90eXBlOwoKIF9fbGFzdDEgPSBfX3JhaV90
eXBlOjpfX25ld2xhc3QxKF9fZmlyc3QxLCBfX2xhc3QxLAogICAgICBfX2ZpcnN0MiwgX19sYXN0
Mik7CiBmb3IgKDsgX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX3JhaV90eXBlOjpfX2NuZDIoX19m
aXJzdDIsIF9fbGFzdDIpOwogICAgICArK19fZmlyc3QxLCArK19fZmlyc3QyKQogICB7CiAgICAg
aWYgKCpfX2ZpcnN0MSA8ICpfX2ZpcnN0MikKICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmICgq
X19maXJzdDIgPCAqX19maXJzdDEpCiAgICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIHJldHVybiBf
X2ZpcnN0MSA9PSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDI7CiAgICAgIH0KCiAgdGVt
cGxhdGU8PgogICAgc3RydWN0IF9fbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmU8dHJ1ZT4KICAgIHsK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXA+CiAgICAgICAgc3RhdGlj
IGJvb2wKICAgICAgICBfX2xjKGNvbnN0IF9UcCogX19maXJzdDEsIGNvbnN0IF9UcCogX19sYXN0
MSwKICAgICAgY29uc3QgX1VwKiBfX2ZpcnN0MiwgY29uc3QgX1VwKiBfX2xhc3QyKQogewogICBj
b25zdCBzaXplX3QgX19sZW4xID0gX19sYXN0MSAtIF9fZmlyc3QxOwogICBjb25zdCBzaXplX3Qg
X19sZW4yID0gX19sYXN0MiAtIF9fZmlyc3QyOwogICBjb25zdCBpbnQgX19yZXN1bHQgPSBfX2J1
aWx0aW5fbWVtY21wKF9fZmlyc3QxLCBfX2ZpcnN0MiwKICAgICAgc3RkOjptaW4oX19sZW4xLCBf
X2xlbjIpKTsKICAgcmV0dXJuIF9fcmVzdWx0ICE9IDAgPyBfX3Jlc3VsdCA8IDAgOiBfX2xlbjEg
PCBfX2xlbjI7CiB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUkxLCB0eXBlbmFtZSBf
SUkyPgogICAgaW5saW5lIGJvb2wKICAgIF9fbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmVfYXV4KF9J
STEgX19maXJzdDEsIF9JSTEgX19sYXN0MSwKICAgICAgX0lJMiBfX2ZpcnN0MiwgX0lJMiBfX2xh
c3QyKQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSUkxPjo6
dmFsdWVfdHlwZSBfVmFsdWVUeXBlMTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90
cmFpdHM8X0lJMj46OnZhbHVlX3R5cGUgX1ZhbHVlVHlwZTI7CiAgICAgIGNvbnN0IGJvb2wgX19z
aW1wbGUgPQogKF9faXNfYnl0ZTxfVmFsdWVUeXBlMT46Ol9fdmFsdWUgJiYgX19pc19ieXRlPF9W
YWx1ZVR5cGUyPjo6X192YWx1ZQogICYmICFfX2dudV9jeHg6Ol9fbnVtZXJpY190cmFpdHM8X1Zh
bHVlVHlwZTE+OjpfX2lzX3NpZ25lZAogICYmICFfX2dudV9jeHg6Ol9fbnVtZXJpY190cmFpdHM8
X1ZhbHVlVHlwZTI+OjpfX2lzX3NpZ25lZAogICYmIF9faXNfcG9pbnRlcjxfSUkxPjo6X192YWx1
ZQogICYmIF9faXNfcG9pbnRlcjxfSUkyPjo6X192YWx1ZSk7CgogICAgICByZXR1cm4gc3RkOjpf
X2xleGljb2dyYXBoaWNhbF9jb21wYXJlPF9fc2ltcGxlPjo6X19sYyhfX2ZpcnN0MSwgX19sYXN0
MSwKICAgICAgICAgICBfX2ZpcnN0MiwgX19sYXN0Mik7CiAgICB9CiMgOTQxICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfYWxnb2Jhc2Uu
aCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9UcD4K
ICAgIF9Gb3J3YXJkSXRlcmF0b3IKICAgIGxvd2VyX2JvdW5kKF9Gb3J3YXJkSXRlcmF0b3IgX19m
aXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgY29uc3QgX1RwJiBfX3ZhbCkKICAgIHsK
CgoKCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcmF0
b3I+OjpkaWZmZXJlbmNlX3R5cGUKIF9EaXN0YW5jZVR5cGU7CgoKICAgICAKICAgICAKICAgICAg
OwoKICAgICAgX0Rpc3RhbmNlVHlwZSBfX2xlbiA9IHN0ZDo6ZGlzdGFuY2UoX19maXJzdCwgX19s
YXN0KTsKCiAgICAgIHdoaWxlIChfX2xlbiA+IDApCiB7CiAgIF9EaXN0YW5jZVR5cGUgX19oYWxm
ID0gX19sZW4gPj4gMTsKICAgX0ZvcndhcmRJdGVyYXRvciBfX21pZGRsZSA9IF9fZmlyc3Q7CiAg
IHN0ZDo6YWR2YW5jZShfX21pZGRsZSwgX19oYWxmKTsKICAgaWYgKCpfX21pZGRsZSA8IF9fdmFs
KQogICAgIHsKICAgICAgIF9fZmlyc3QgPSBfX21pZGRsZTsKICAgICAgICsrX19maXJzdDsKICAg
ICAgIF9fbGVuID0gX19sZW4gLSBfX2hhbGYgLSAxOwogICAgIH0KICAgZWxzZQogICAgIF9fbGVu
ID0gX19oYWxmOwogfQogICAgICByZXR1cm4gX19maXJzdDsKICAgIH0KCgoKICBpbmxpbmUgY29u
c3RleHByIGludAogIF9fbGcoaW50IF9fbikKICB7IHJldHVybiBzaXplb2YoaW50KSAqIDggLSAx
IC0gX19idWlsdGluX2NseihfX24pOyB9CgogIGlubGluZSBjb25zdGV4cHIgdW5zaWduZWQKICBf
X2xnKHVuc2lnbmVkIF9fbikKICB7IHJldHVybiBzaXplb2YoaW50KSAqIDggLSAxIC0gX19idWls
dGluX2NseihfX24pOyB9CgogIGlubGluZSBjb25zdGV4cHIgbG9uZwogIF9fbGcobG9uZyBfX24p
CiAgeyByZXR1cm4gc2l6ZW9mKGxvbmcpICogOCAtIDEgLSBfX2J1aWx0aW5fY2x6bChfX24pOyB9
CgogIGlubGluZSBjb25zdGV4cHIgdW5zaWduZWQgbG9uZwogIF9fbGcodW5zaWduZWQgbG9uZyBf
X24pCiAgeyByZXR1cm4gc2l6ZW9mKGxvbmcpICogOCAtIDEgLSBfX2J1aWx0aW5fY2x6bChfX24p
OyB9CgogIGlubGluZSBjb25zdGV4cHIgbG9uZyBsb25nCiAgX19sZyhsb25nIGxvbmcgX19uKQog
IHsgcmV0dXJuIHNpemVvZihsb25nIGxvbmcpICogOCAtIDEgLSBfX2J1aWx0aW5fY2x6bGwoX19u
KTsgfQoKICBpbmxpbmUgY29uc3RleHByIHVuc2lnbmVkIGxvbmcgbG9uZwogIF9fbGcodW5zaWdu
ZWQgbG9uZyBsb25nIF9fbikKICB7IHJldHVybiBzaXplb2YobG9uZyBsb25nKSAqIDggLSAxIC0g
X19idWlsdGluX2NsemxsKF9fbik7IH0KCgoKCiMgMTAxOSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSUkxLCB0eXBlbmFtZSBfSUkyPgogICAgaW5saW5lIGJvb2wKICAgIGVx
dWFsKF9JSTEgX19maXJzdDEsIF9JSTEgX19sYXN0MSwgX0lJMiBfX2ZpcnN0MikKICAgIHsKCiAg
ICAgCiAgICAgCiAgICAgCgoKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19lcXVhbF9hdXgo
c3RkOjpfX25pdGVyX2Jhc2UoX19maXJzdDEpLAogICAgICAgICBzdGQ6Ol9fbml0ZXJfYmFzZShf
X2xhc3QxKSwKICAgICAgICAgc3RkOjpfX25pdGVyX2Jhc2UoX19maXJzdDIpKTsKICAgIH0KIyAx
MDUxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0
cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JSXRlcjEsIHR5cGVuYW1l
IF9JSXRlcjIsIHR5cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+CiAgICBpbmxpbmUgYm9vbAogICAg
ZXF1YWwoX0lJdGVyMSBfX2ZpcnN0MSwgX0lJdGVyMSBfX2xhc3QxLAogICBfSUl0ZXIyIF9fZmly
c3QyLCBfQmluYXJ5UHJlZGljYXRlIF9fYmluYXJ5X3ByZWQpCiAgICB7CgogICAgIAogICAgIAog
ICAgICA7CgogICAgICBmb3IgKDsgX19maXJzdDEgIT0gX19sYXN0MTsgKytfX2ZpcnN0MSwgKytf
X2ZpcnN0MikKIGlmICghYm9vbChfX2JpbmFyeV9wcmVkKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkp
CiAgIHJldHVybiBmYWxzZTsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiMgMTA4MiAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2FsZ29i
YXNlLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUkxLCB0eXBlbmFtZSBfSUkyPgogICAgaW5s
aW5lIGJvb2wKICAgIGxleGljb2dyYXBoaWNhbF9jb21wYXJlKF9JSTEgX19maXJzdDEsIF9JSTEg
X19sYXN0MSwKICAgICAgIF9JSTIgX19maXJzdDIsIF9JSTIgX19sYXN0MikKICAgIHsKCgoKCgog
ICAgIAogICAgIAogICAgIAogICAgIAogICAgICA7CiAgICAgIDsKCiAgICAgIHJldHVybiBzdGQ6
Ol9fbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmVfYXV4KHN0ZDo6X19uaXRlcl9iYXNlKF9fZmlyc3Qx
KSwKICAgICAgc3RkOjpfX25pdGVyX2Jhc2UoX19sYXN0MSksCiAgICAgIHN0ZDo6X19uaXRlcl9i
YXNlKF9fZmlyc3QyKSwKICAgICAgc3RkOjpfX25pdGVyX2Jhc2UoX19sYXN0MikpOwogICAgfQoj
IDExMTggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9i
aXRzL3N0bF9hbGdvYmFzZS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJMSwgdHlwZW5hbWUg
X0lJMiwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBib29sCiAgICBsZXhpY29ncmFwaGljYWxfY29t
cGFyZShfSUkxIF9fZmlyc3QxLCBfSUkxIF9fbGFzdDEsCiAgICAgICBfSUkyIF9fZmlyc3QyLCBf
SUkyIF9fbGFzdDIsIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBpdGVyYXRvcl90cmFpdHM8X0lJMT46Oml0ZXJhdG9yX2NhdGVnb3J5IF9DYXRlZ29yeTE7CiAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JSTI+OjppdGVyYXRvcl9jYXRl
Z29yeSBfQ2F0ZWdvcnkyOwogICAgICB0eXBlZGVmIHN0ZDo6X19sY19yYWk8X0NhdGVnb3J5MSwg
X0NhdGVnb3J5Mj4gX19yYWlfdHlwZTsKCgogICAgIAogICAgIAogICAgICA7CiAgICAgIDsKCiAg
ICAgIF9fbGFzdDEgPSBfX3JhaV90eXBlOjpfX25ld2xhc3QxKF9fZmlyc3QxLCBfX2xhc3QxLCBf
X2ZpcnN0MiwgX19sYXN0Mik7CiAgICAgIGZvciAoOyBfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9f
cmFpX3R5cGU6Ol9fY25kMihfX2ZpcnN0MiwgX19sYXN0Mik7CiAgICArK19fZmlyc3QxLCArK19f
Zmlyc3QyKQogewogICBpZiAoX19jb21wKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkKICAgICByZXR1
cm4gdHJ1ZTsKICAgaWYgKF9fY29tcCgqX19maXJzdDIsICpfX2ZpcnN0MSkpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogICAgICByZXR1cm4gX19maXJzdDEgPT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAh
PSBfX2xhc3QyOwogICAgfQojIDExNTggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0lucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjI+CiAgICBwYWlyPF9J
bnB1dEl0ZXJhdG9yMSwgX0lucHV0SXRlcmF0b3IyPgogICAgbWlzbWF0Y2goX0lucHV0SXRlcmF0
b3IxIF9fZmlyc3QxLCBfSW5wdXRJdGVyYXRvcjEgX19sYXN0MSwKICAgICAgX0lucHV0SXRlcmF0
b3IyIF9fZmlyc3QyKQogICAgewoKICAgICAKICAgICAKICAgICAKCgogICAgICA7CgogICAgICB3
aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiAqX19maXJzdDEgPT0gKl9fZmlyc3QyKQogICAg
ICAgIHsKICAgKytfX2ZpcnN0MTsKICAgKytfX2ZpcnN0MjsKICAgICAgICB9CiAgICAgIHJldHVy
biBwYWlyPF9JbnB1dEl0ZXJhdG9yMSwgX0lucHV0SXRlcmF0b3IyPihfX2ZpcnN0MSwgX19maXJz
dDIpOwogICAgfQojIDExOTUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjguMS9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lu
cHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjIsCiAgICB0eXBlbmFtZSBfQmlu
YXJ5UHJlZGljYXRlPgogICAgcGFpcjxfSW5wdXRJdGVyYXRvcjEsIF9JbnB1dEl0ZXJhdG9yMj4K
ICAgIG1pc21hdGNoKF9JbnB1dEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0b3IxIF9f
bGFzdDEsCiAgICAgIF9JbnB1dEl0ZXJhdG9yMiBfX2ZpcnN0MiwgX0JpbmFyeVByZWRpY2F0ZSBf
X2JpbmFyeV9wcmVkKQogICAgewoKICAgICAKICAgICAKICAgICAgOwoKICAgICAgd2hpbGUgKF9f
Zmlyc3QxICE9IF9fbGFzdDEgJiYgYm9vbChfX2JpbmFyeV9wcmVkKCpfX2ZpcnN0MSwgKl9fZmly
c3QyKSkpCiAgICAgICAgewogICArK19fZmlyc3QxOwogICArK19fZmlyc3QyOwogICAgICAgIH0K
ICAgICAgcmV0dXJuIHBhaXI8X0lucHV0SXRlcmF0b3IxLCBfSW5wdXRJdGVyYXRvcjI+KF9fZmly
c3QxLCBfX2ZpcnN0Mik7CiAgICB9CgoKfQojIDYzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC44LjEvbWVtb3J5IiAyIDMKIyAxICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9hbGxvY2F0b3IuaCIgMSAzCiMg
NDYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRz
L2FsbG9jYXRvci5oIiAzCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9iaXRzL2MrK2FsbG9jYXRvci5o
IiAxIDMKIyAzMyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9iaXRzL2MrK2FsbG9jYXRvci5oIiAzCiMgMSAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2V4dC9uZXdf
YWxsb2NhdG9yLmgiIDEgMwojIDQwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC44LjEvZXh0L25ld19hbGxvY2F0b3IuaCIgMwpuYW1lc3BhY2UgX19nbnVfY3h4
IF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgogIHVzaW5n
IHN0ZDo6c2l6ZV90OwogIHVzaW5nIHN0ZDo6cHRyZGlmZl90OwojIDU3ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvZXh0L25ld19hbGxvY2F0b3IuaCIg
MwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGNsYXNzIG5ld19hbGxvY2F0b3IKICAgIHsK
ICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBzaXplX3Qgc2l6ZV90eXBlOwogICAgICB0eXBlZGVm
IHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7CiAgICAgIHR5cGVkZWYgX1RwKiBwb2ludGVyOwog
ICAgICB0eXBlZGVmIGNvbnN0IF9UcCogY29uc3RfcG9pbnRlcjsKICAgICAgdHlwZWRlZiBfVHAm
IHJlZmVyZW5jZTsKICAgICAgdHlwZWRlZiBjb25zdCBfVHAmIGNvbnN0X3JlZmVyZW5jZTsKICAg
ICAgdHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDE+
CiAgICAgICAgc3RydWN0IHJlYmluZAogICAgICAgIHsgdHlwZWRlZiBuZXdfYWxsb2NhdG9yPF9U
cDE+IG90aGVyOyB9OwoKCgoKICAgICAgdHlwZWRlZiBzdGQ6OnRydWVfdHlwZSBwcm9wYWdhdGVf
b25fY29udGFpbmVyX21vdmVfYXNzaWdubWVudDsKCgogICAgICBuZXdfYWxsb2NhdG9yKCkgbm9l
eGNlcHQgeyB9CgogICAgICBuZXdfYWxsb2NhdG9yKGNvbnN0IG5ld19hbGxvY2F0b3ImKSBub2V4
Y2VwdCB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDE+CiAgICAgICAgbmV3X2FsbG9j
YXRvcihjb25zdCBuZXdfYWxsb2NhdG9yPF9UcDE+Jikgbm9leGNlcHQgeyB9CgogICAgICB+bmV3
X2FsbG9jYXRvcigpIG5vZXhjZXB0IHsgfQoKICAgICAgcG9pbnRlcgogICAgICBhZGRyZXNzKHJl
ZmVyZW5jZSBfX3gpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0ZDo6X19hZGRyZXNz
b2YoX194KTsgfQoKICAgICAgY29uc3RfcG9pbnRlcgogICAgICBhZGRyZXNzKGNvbnN0X3JlZmVy
ZW5jZSBfX3gpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0ZDo6X19hZGRyZXNzb2Yo
X194KTsgfQoKCgogICAgICBwb2ludGVyCiAgICAgIGFsbG9jYXRlKHNpemVfdHlwZSBfX24sIGNv
bnN0IHZvaWQqID0gMCkKICAgICAgewogaWYgKF9fbiA+IHRoaXMtPm1heF9zaXplKCkpCiAgIHN0
ZDo6X190aHJvd19iYWRfYWxsb2MoKTsKCiByZXR1cm4gc3RhdGljX2Nhc3Q8X1RwKj4oOjpvcGVy
YXRvciBuZXcoX19uICogc2l6ZW9mKF9UcCkpKTsKICAgICAgfQoKCiAgICAgIHZvaWQKICAgICAg
ZGVhbGxvY2F0ZShwb2ludGVyIF9fcCwgc2l6ZV90eXBlKQogICAgICB7IDo6b3BlcmF0b3IgZGVs
ZXRlKF9fcCk7IH0KCiAgICAgIHNpemVfdHlwZQogICAgICBtYXhfc2l6ZSgpIGNvbnN0IG5vZXhj
ZXB0CiAgICAgIHsgcmV0dXJuIHNpemVfdCgtMSkgLyBzaXplb2YoX1RwKTsgfQoKCiAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9VcCwgdHlwZW5hbWUuLi4gX0FyZ3M+CiAgICAgICAgdm9pZAogICAg
ICAgIGNvbnN0cnVjdChfVXAqIF9fcCwgX0FyZ3MmJi4uLiBfX2FyZ3MpCiB7IDo6bmV3KCh2b2lk
ICopX19wKSBfVXAoc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsgfQoKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX1VwPgogICAgICAgIHZvaWQKICAgICAgICBkZXN0cm95KF9VcCogX19w
KSB7IF9fcC0+fl9VcCgpOyB9CiMgMTM1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC44LjEvZXh0L25ld19hbGxvY2F0b3IuaCIgMwogICAgfTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3QgbmV3
X2FsbG9jYXRvcjxfVHA+JiwgY29uc3QgbmV3X2FsbG9jYXRvcjxfVHA+JikKICAgIHsgcmV0dXJu
IHRydWU7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGJvb2wKICAgIG9w
ZXJhdG9yIT0oY29uc3QgbmV3X2FsbG9jYXRvcjxfVHA+JiwgY29uc3QgbmV3X2FsbG9jYXRvcjxf
VHA+JikKICAgIHsgcmV0dXJuIGZhbHNlOyB9CgoKfQojIDM0ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2Jp
dHMvYysrYWxsb2NhdG9yLmgiIDIgMwoKCm5hbWVzcGFjZSBzdGQKewojIDQ3ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2JpdHMvYysrYWxsb2NhdG9yLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICB1c2luZyBfX2FsbG9jYXRvcl9iYXNlID0gX19nbnVfY3h4OjpuZXdfYWxsb2NhdG9yPF9UcD47
Cn0KIyA0NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4x
L2JpdHMvYWxsb2NhdG9yLmgiIDIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL21lbW9yeWZ3ZC5oIiAxIDMKIyA0NiAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvbWVtb3J5ZndkLmgi
IDMKICAgICAgIAojIDQ3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC44LjEvYml0cy9tZW1vcnlmd2QuaCIgMwoKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRl
X18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgNjMgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL21lbW9yeWZ3ZC5oIiAzCiAg
dGVtcGxhdGU8dHlwZW5hbWU+CiAgICBjbGFzcyBhbGxvY2F0b3I7CgogIHRlbXBsYXRlPD4KICAg
IGNsYXNzIGFsbG9jYXRvcjx2b2lkPjsKCgogIHRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4K
ICAgIHN0cnVjdCB1c2VzX2FsbG9jYXRvcjsKCgoKCn0KIyA0OCAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYWxsb2NhdG9yLmgiIDIgMwoKCgoK
bmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0Iikp
KQp7CgoKCgoKCgoKICB0ZW1wbGF0ZTw+CiAgICBjbGFzcyBhbGxvY2F0b3I8dm9pZD4KICAgIHsK
ICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBzaXplX3Qgc2l6ZV90eXBlOwogICAgICB0eXBlZGVm
IHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7CiAgICAgIHR5cGVkZWYgdm9pZCogcG9pbnRlcjsK
ICAgICAgdHlwZWRlZiBjb25zdCB2b2lkKiBjb25zdF9wb2ludGVyOwogICAgICB0eXBlZGVmIHZv
aWQgdmFsdWVfdHlwZTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDE+CiAgICAgICAgc3Ry
dWN0IHJlYmluZAogICAgICAgIHsgdHlwZWRlZiBhbGxvY2F0b3I8X1RwMT4gb3RoZXI7IH07CgoK
CgogICAgICB0eXBlZGVmIHRydWVfdHlwZSBwcm9wYWdhdGVfb25fY29udGFpbmVyX21vdmVfYXNz
aWdubWVudDsKCiAgICB9OwojIDkxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC44LjEvYml0cy9hbGxvY2F0b3IuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4KICAgIGNsYXNzIGFsbG9jYXRvcjogcHVibGljIF9fYWxsb2NhdG9yX2Jhc2U8X1RwPgogICAg
ewogICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgc2l6ZV90IHNpemVfdHlwZTsKICAgICAgdHlwZWRl
ZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwogICAgICB0eXBlZGVmIF9UcCogcG9pbnRlcjsK
ICAgICAgdHlwZWRlZiBjb25zdCBfVHAqIGNvbnN0X3BvaW50ZXI7CiAgICAgIHR5cGVkZWYgX1Rw
JiByZWZlcmVuY2U7CiAgICAgIHR5cGVkZWYgY29uc3QgX1RwJiBjb25zdF9yZWZlcmVuY2U7CiAg
ICAgIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAx
PgogICAgICAgIHN0cnVjdCByZWJpbmQKICAgICAgICB7IHR5cGVkZWYgYWxsb2NhdG9yPF9UcDE+
IG90aGVyOyB9OwoKCgoKICAgICAgdHlwZWRlZiB0cnVlX3R5cGUgcHJvcGFnYXRlX29uX2NvbnRh
aW5lcl9tb3ZlX2Fzc2lnbm1lbnQ7CgoKICAgICAgYWxsb2NhdG9yKCkgdGhyb3coKSB7IH0KCiAg
ICAgIGFsbG9jYXRvcihjb25zdCBhbGxvY2F0b3ImIF9fYSkgdGhyb3coKQogICAgICA6IF9fYWxs
b2NhdG9yX2Jhc2U8X1RwPihfX2EpIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4K
ICAgICAgICBhbGxvY2F0b3IoY29uc3QgYWxsb2NhdG9yPF9UcDE+JikgdGhyb3coKSB7IH0KCiAg
ICAgIH5hbGxvY2F0b3IoKSB0aHJvdygpIHsgfQoKCiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVDEsIHR5cGVuYW1lIF9UMj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj09KGNvbnN0
IGFsbG9jYXRvcjxfVDE+JiwgY29uc3QgYWxsb2NhdG9yPF9UMj4mKQogICAgeyByZXR1cm4gdHJ1
ZTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0
b3I9PShjb25zdCBhbGxvY2F0b3I8X1RwPiYsIGNvbnN0IGFsbG9jYXRvcjxfVHA+JikKICAgIHsg
cmV0dXJuIHRydWU7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1QxLCB0eXBlbmFtZSBfVDI+CiAg
ICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25zdCBhbGxvY2F0b3I8X1QxPiYsIGNvbnN0
IGFsbG9jYXRvcjxfVDI+JikKICAgIHsgcmV0dXJuIGZhbHNlOyB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IGFsbG9jYXRvcjxf
VHA+JiwgY29uc3QgYWxsb2NhdG9yPF9UcD4mKQogICAgeyByZXR1cm4gZmFsc2U7IH0KCgoKCgoK
ICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgYWxsb2NhdG9yPGNoYXI+OwogIGV4dGVybiB0ZW1wbGF0
ZSBjbGFzcyBhbGxvY2F0b3I8d2NoYXJfdD47CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Fs
bG9jLCBib29sID0gX19pc19lbXB0eShfQWxsb2MpPgogICAgc3RydWN0IF9fYWxsb2Nfc3dhcAog
ICAgeyBzdGF0aWMgdm9pZCBfU19kb19pdChfQWxsb2MmLCBfQWxsb2MmKSB7IH0gfTsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0FsbG9jPgogICAgc3RydWN0IF9fYWxsb2Nfc3dhcDxfQWxsb2MsIGZh
bHNlPgogICAgewogICAgICBzdGF0aWMgdm9pZAogICAgICBfU19kb19pdChfQWxsb2MmIF9fb25l
LCBfQWxsb2MmIF9fdHdvKQogICAgICB7CgogaWYgKF9fb25lICE9IF9fdHdvKQogICBzd2FwKF9f
b25lLCBfX3R3byk7CiAgICAgIH0KICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2Ms
IGJvb2wgPSBfX2lzX2VtcHR5KF9BbGxvYyk+CiAgICBzdHJ1Y3QgX19hbGxvY19uZXEKICAgIHsK
ICAgICAgc3RhdGljIGJvb2wKICAgICAgX1NfZG9faXQoY29uc3QgX0FsbG9jJiwgY29uc3QgX0Fs
bG9jJikKICAgICAgeyByZXR1cm4gZmFsc2U7IH0KICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9BbGxvYz4KICAgIHN0cnVjdCBfX2FsbG9jX25lcTxfQWxsb2MsIGZhbHNlPgogICAgewogICAg
ICBzdGF0aWMgYm9vbAogICAgICBfU19kb19pdChjb25zdCBfQWxsb2MmIF9fb25lLCBjb25zdCBf
QWxsb2MmIF9fdHdvKQogICAgICB7IHJldHVybiBfX29uZSAhPSBfX3R3bzsgfQogICAgfTsKCgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgYm9vbAogICAgPSBfX29yXzxpc19jb3B5X2NvbnN0cnVj
dGlibGU8dHlwZW5hbWUgX1RwOjp2YWx1ZV90eXBlPiwKICAgICAgICAgICAgaXNfbm90aHJvd19t
b3ZlX2NvbnN0cnVjdGlibGU8dHlwZW5hbWUgX1RwOjp2YWx1ZV90eXBlPj46OnZhbHVlPgogICAg
c3RydWN0IF9fc2hyaW5rX3RvX2ZpdF9hdXgKICAgIHsgc3RhdGljIGJvb2wgX1NfZG9faXQoX1Rw
JikgeyByZXR1cm4gZmFsc2U7IH0gfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3Ry
dWN0IF9fc2hyaW5rX3RvX2ZpdF9hdXg8X1RwLCB0cnVlPgogICAgewogICAgICBzdGF0aWMgYm9v
bAogICAgICBfU19kb19pdChfVHAmIF9fYykKICAgICAgewogaWYgKHRydWUpCiAgIHsKICAgICBf
VHAoX19tYWtlX21vdmVfaWZfbm9leGNlcHRfaXRlcmF0b3IoX19jLmJlZ2luKCkpLAogIF9fbWFr
ZV9tb3ZlX2lmX25vZXhjZXB0X2l0ZXJhdG9yKF9fYy5lbmQoKSksCiAgX19jLmdldF9hbGxvY2F0
b3IoKSkuc3dhcChfX2MpOwogICAgIHJldHVybiB0cnVlOwogICB9CiBpZiAoZmFsc2UpCiAgIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgIH0KICAgIH07CgoKCn0KIyA2NCAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL21lbW9yeSIgMiAzCiMgMSAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2NvbnN0
cnVjdC5oIiAxIDMKIyA2MSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOC4xL2JpdHMvc3RsX2NvbnN0cnVjdC5oIiAzCiMgMSAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2V4dC9hbGxvY190cmFpdHMuaCIgMSAzCiMg
MzIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9leHQv
YWxsb2NfdHJhaXRzLmgiIDMKICAgICAgIAojIDMzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC44LjEvZXh0L2FsbG9jX3RyYWl0cy5oIiAzCgoKCiMgMSAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44
LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYWxsb2Nf
dHJhaXRzLmgiIDEgMwojIDM2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC44LjEvYml0cy9hbGxvY190cmFpdHMuaCIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3B0cl90cmFpdHMuaCIgMSAzCiMg
MzcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRz
L3B0cl90cmFpdHMuaCIgMwpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxp
dHlfXyAoImRlZmF1bHQiKSkpCnsKCgp0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGNsYXNzIF9faGFz
X2VsZW1lbnRfdHlwZV9oZWxwZXIgOiBfX3NmaW5hZV90eXBlcyB7IHRlbXBsYXRlPHR5cGVuYW1l
IF9VcD4gc3RydWN0IF9XcmFwX3R5cGUgeyB9OyB0ZW1wbGF0ZTx0eXBlbmFtZSBfVXA+IHN0YXRp
YyBfX29uZSBfX3Rlc3QoX1dyYXBfdHlwZTx0eXBlbmFtZSBfVXA6OmVsZW1lbnRfdHlwZT4qKTsg
dGVtcGxhdGU8dHlwZW5hbWUgX1VwPiBzdGF0aWMgX190d28gX190ZXN0KC4uLik7IHB1YmxpYzog
c3RhdGljIGNvbnN0ZXhwciBib29sIHZhbHVlID0gc2l6ZW9mKF9fdGVzdDxfVHA+KDApKSA9PSAx
OyB9OyB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IHN0cnVjdCBfX2hhc19lbGVtZW50X3R5cGUgOiBp
bnRlZ3JhbF9jb25zdGFudDxib29sLCBfX2hhc19lbGVtZW50X3R5cGVfaGVscGVyIDx0eXBlbmFt
ZSByZW1vdmVfY3Y8X1RwPjo6dHlwZT46OnZhbHVlPiB7IH07CnRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4gY2xhc3MgX19oYXNfZGlmZmVyZW5jZV90eXBlX2hlbHBlciA6IF9fc2ZpbmFlX3R5cGVzIHsg
dGVtcGxhdGU8dHlwZW5hbWUgX1VwPiBzdHJ1Y3QgX1dyYXBfdHlwZSB7IH07IHRlbXBsYXRlPHR5
cGVuYW1lIF9VcD4gc3RhdGljIF9fb25lIF9fdGVzdChfV3JhcF90eXBlPHR5cGVuYW1lIF9VcDo6
ZGlmZmVyZW5jZV90eXBlPiopOyB0ZW1wbGF0ZTx0eXBlbmFtZSBfVXA+IHN0YXRpYyBfX3R3byBf
X3Rlc3QoLi4uKTsgcHVibGljOiBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSBzaXplb2Yo
X190ZXN0PF9UcD4oMCkpID09IDE7IH07IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gc3RydWN0IF9f
aGFzX2RpZmZlcmVuY2VfdHlwZSA6IGludGVncmFsX2NvbnN0YW50PGJvb2wsIF9faGFzX2RpZmZl
cmVuY2VfdHlwZV9oZWxwZXIgPHR5cGVuYW1lIHJlbW92ZV9jdjxfVHA+Ojp0eXBlPjo6dmFsdWU+
IHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBib29sID0gX19oYXNfZWxlbWVudF90eXBl
PF9UcD46OnZhbHVlPgogICAgc3RydWN0IF9fcHRydHJfZWx0X3R5cGU7CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX3B0cnRyX2VsdF90eXBlPF9UcCwgdHJ1ZT4KICAgIHsK
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHA6OmVsZW1lbnRfdHlwZSBfX3R5cGU7CiAgICB9OwoK
ICB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUuLi4+IGNsYXNzIF9Tb21lUHRy
LCB0eXBlbmFtZSBfVHAsCiAgICAgICAgICAgIHR5cGVuYW1lLi4uIF9BcmdzPgogICAgc3RydWN0
IF9fcHRydHJfZWx0X3R5cGU8X1NvbWVQdHI8X1RwLCBfQXJncy4uLj4sIGZhbHNlPgogICAgewog
ICAgICB0eXBlZGVmIF9UcCBfX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAs
IGJvb2wgPSBfX2hhc19kaWZmZXJlbmNlX3R5cGU8X1RwPjo6dmFsdWU+CiAgICBzdHJ1Y3QgX19w
dHJ0cl9kaWZmX3R5cGUKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHA6OmRpZmZlcmVu
Y2VfdHlwZSBfX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1
Y3QgX19wdHJ0cl9kaWZmX3R5cGU8X1RwLCBmYWxzZT4KICAgIHsKICAgICAgdHlwZWRlZiBwdHJk
aWZmX3QgX190eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1B0ciwgdHlwZW5hbWUg
X1VwPgogICAgY2xhc3MgX19wdHJ0cl9yZWJpbmRfaGVscGVyCiAgICB7CiAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIF9QdHIyLCB0eXBlbmFtZSBfVXAyPgogc3RhdGljIGNvbnN0ZXhwciBib29sCiAg
ICAgICAgX1NfY2hrKHR5cGVuYW1lIF9QdHIyOjp0ZW1wbGF0ZSByZWJpbmQ8X1VwMj4qKQogICAg
ICAgIHsgcmV0dXJuIHRydWU7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4K
ICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wKICAgICAgICBfU19jaGsoLi4uKQogICAgICAg
IHsgcmV0dXJuIGZhbHNlOyB9CgogICAgcHVibGljOgogICAgICBzdGF0aWMgY29uc3QgYm9vbCBf
X3ZhbHVlID0gX1NfY2hrPF9QdHIsIF9VcD4obnVsbHB0cik7CiAgICB9OwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUHRyLCB0eXBlbmFtZSBfVXA+CiAgICBjb25zdCBib29sIF9fcHRydHJfcmViaW5k
X2hlbHBlcjxfUHRyLCBfVXA+OjpfX3ZhbHVlOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5
cGVuYW1lIF9VcCwKICAgICAgICAgICBib29sID0gX19wdHJ0cl9yZWJpbmRfaGVscGVyPF9UcCwg
X1VwPjo6X192YWx1ZT4KICAgIHN0cnVjdCBfX3B0cnRyX3JlYmluZDsKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXA+CiAgICBzdHJ1Y3QgX19wdHJ0cl9yZWJpbmQ8X1RwLCBf
VXAsIHRydWU+CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX1RwOjp0ZW1wbGF0ZSByZWJp
bmQ8X1VwPiBfX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlw
ZW5hbWUuLi4+IGNsYXNzIF9Tb21lUHRyLCB0eXBlbmFtZSBfVXAsCiAgICAgICAgICAgIHR5cGVu
YW1lIF9UcCwgdHlwZW5hbWUuLi4gX0FyZ3M+CiAgICBzdHJ1Y3QgX19wdHJ0cl9yZWJpbmQ8X1Nv
bWVQdHI8X1RwLCBfQXJncy4uLj4sIF9VcCwgZmFsc2U+CiAgICB7CiAgICAgIHR5cGVkZWYgX1Nv
bWVQdHI8X1VwLCBfQXJncy4uLj4gX190eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHJlbW92ZV9jdjxfVHA+Ojp0eXBlPgogICAgc3RydWN0
IF9fcHRydHJfbm90X3ZvaWQKICAgIHsKICAgICAgdHlwZWRlZiBfVHAgX190eXBlOwogICAgfTsK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9fcHRydHJfbm90X3ZvaWQ8X1Rw
LCB2b2lkPgogICAgewogICAgICBzdHJ1Y3QgX190eXBlIHsgfTsKICAgIH07CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9QdHI+CiAgICBjbGFzcyBfX3B0cnRyX3BvaW50ZXJfdG8KICAgIHsKICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBfX3B0cnRyX2VsdF90eXBlPF9QdHI+OjpfX3R5cGUgX19vcmlnX3R5
cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19wdHJ0cl9ub3Rfdm9pZDxfX29yaWdfdHlwZT46
Ol9fdHlwZSBfX2VsZW1lbnRfdHlwZTsKCiAgICBwdWJsaWM6CiAgICAgIHN0YXRpYyBfUHRyIHBv
aW50ZXJfdG8oX19lbGVtZW50X3R5cGUmIF9fZSkKICAgICAgeyByZXR1cm4gX1B0cjo6cG9pbnRl
cl90byhfX2UpOyB9CiAgICB9OwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1B0cj4KICAgIHN0
cnVjdCBwb2ludGVyX3RyYWl0cyA6IF9fcHRydHJfcG9pbnRlcl90bzxfUHRyPgogICAgewoKICAg
ICAgdHlwZWRlZiBfUHRyIHBvaW50ZXI7CgogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fcHRydHJf
ZWx0X3R5cGU8X1B0cj46Ol9fdHlwZSBlbGVtZW50X3R5cGU7CgogICAgICB0eXBlZGVmIHR5cGVu
YW1lIF9fcHRydHJfZGlmZl90eXBlPF9QdHI+OjpfX3R5cGUgZGlmZmVyZW5jZV90eXBlOwoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VwPgogICAgICAgIHVzaW5nIHJlYmluZCA9IHR5cGVuYW1l
IF9fcHRydHJfcmViaW5kPF9QdHIsIF9VcD46Ol9fdHlwZTsKICAgIH07CgoKCgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgcG9pbnRlcl90cmFpdHM8X1RwKj4KICAgIHsKCiAg
ICAgIHR5cGVkZWYgX1RwKiBwb2ludGVyOwoKICAgICAgdHlwZWRlZiBfVHAgZWxlbWVudF90eXBl
OwoKICAgICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwoKICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgX1VwPgogICAgICAgIHVzaW5nIHJlYmluZCA9IF9VcCo7CgoKCgoKCiAgICAg
IHN0YXRpYyBwb2ludGVyCiAgICAgIHBvaW50ZXJfdG8odHlwZW5hbWUgX19wdHJ0cl9ub3Rfdm9p
ZDxlbGVtZW50X3R5cGU+OjpfX3R5cGUmIF9fcikgbm9leGNlcHQKICAgICAgeyByZXR1cm4gc3Rk
OjphZGRyZXNzb2YoX19yKTsgfQogICAgfTsKCgp9CiMgMzcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2FsbG9jX3RyYWl0cy5oIiAyIDMKCgpu
YW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkp
CnsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYywgdHlwZW5hbWUgX1RwPgogICAgY2xhc3Mg
X19hbGxvY3RyX3JlYmluZF9oZWxwZXIKICAgIHsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Fs
bG9jMiwgdHlwZW5hbWUgX1RwMj4KIHN0YXRpYyBjb25zdGV4cHIgYm9vbAogICAgICAgIF9TX2No
ayh0eXBlbmFtZSBfQWxsb2MyOjp0ZW1wbGF0ZSByZWJpbmQ8X1RwMj46Om90aGVyKikKIHsgcmV0
dXJuIHRydWU7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4KICAgICAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wKICAgICAgICBfU19jaGsoLi4uKQogICAgICAgIHsgcmV0dXJu
IGZhbHNlOyB9CgogICAgcHVibGljOgogICAgICBzdGF0aWMgY29uc3QgYm9vbCBfX3ZhbHVlID0g
X1NfY2hrPF9BbGxvYywgX1RwPihudWxscHRyKTsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9BbGxvYywgdHlwZW5hbWUgX1RwPgogICAgY29uc3QgYm9vbCBfX2FsbG9jdHJfcmViaW5kX2hl
bHBlcjxfQWxsb2MsIF9UcD46Ol9fdmFsdWU7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYywg
dHlwZW5hbWUgX1RwLAogICAgICAgICAgIGJvb2wgPSBfX2FsbG9jdHJfcmViaW5kX2hlbHBlcjxf
QWxsb2MsIF9UcD46Ol9fdmFsdWU+CiAgICBzdHJ1Y3QgX19hbGxvY3RyX3JlYmluZDsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19hbGxvY3Ry
X3JlYmluZDxfQWxsb2MsIF9UcCwgdHJ1ZT4KICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBf
QWxsb2M6OnRlbXBsYXRlIHJlYmluZDxfVHA+OjpvdGhlciBfX3R5cGU7CiAgICB9OwoKICB0ZW1w
bGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUuLi4+IGNsYXNzIF9BbGxvYywgdHlwZW5h
bWUgX1RwLAogICAgICAgICAgICB0eXBlbmFtZSBfVXAsIHR5cGVuYW1lLi4uIF9BcmdzPgogICAg
c3RydWN0IF9fYWxsb2N0cl9yZWJpbmQ8X0FsbG9jPF9VcCwgX0FyZ3MuLi4+LCBfVHAsIGZhbHNl
PgogICAgewogICAgICB0eXBlZGVmIF9BbGxvYzxfVHAsIF9BcmdzLi4uPiBfX3R5cGU7CiAgICB9
OwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jPgogICAgc3RydWN0IGFsbG9jYXRvcl90
cmFpdHMKICAgIHsKCiAgICAgIHR5cGVkZWYgX0FsbG9jIGFsbG9jYXRvcl90eXBlOwoKICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBfQWxsb2M6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKIyAxMDAgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2FsbG9j
X3RyYWl0cy5oIiAzCnByaXZhdGU6IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gc3RhdGljIHR5cGVu
YW1lIF9UcDo6cG9pbnRlciBfU19wb2ludGVyX2hlbHBlcihfVHAqKTsgc3RhdGljIHZhbHVlX3R5
cGUqIF9TX3BvaW50ZXJfaGVscGVyKC4uLik7IHR5cGVkZWYgZGVjbHR5cGUoX1NfcG9pbnRlcl9o
ZWxwZXIoKF9BbGxvYyopMCkpIF9fcG9pbnRlcjsgcHVibGljOgoKCgoKCgogICAgICB0eXBlZGVm
IF9fcG9pbnRlciBwb2ludGVyOwoKcHJpdmF0ZTogdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBzdGF0
aWMgdHlwZW5hbWUgX1RwOjpjb25zdF9wb2ludGVyIF9TX2NvbnN0X3BvaW50ZXJfaGVscGVyKF9U
cCopOyBzdGF0aWMgdHlwZW5hbWUgcG9pbnRlcl90cmFpdHM8cG9pbnRlcj46OnRlbXBsYXRlIHJl
YmluZDxjb25zdCB2YWx1ZV90eXBlPiBfU19jb25zdF9wb2ludGVyX2hlbHBlciguLi4pOyB0eXBl
ZGVmIGRlY2x0eXBlKF9TX2NvbnN0X3BvaW50ZXJfaGVscGVyKChfQWxsb2MqKTApKSBfX2NvbnN0
X3BvaW50ZXI7IHB1YmxpYzoKIyAxMTggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9iaXRzL2FsbG9jX3RyYWl0cy5oIiAzCiAgICAgIHR5cGVkZWYgX19j
b25zdF9wb2ludGVyIGNvbnN0X3BvaW50ZXI7Cgpwcml2YXRlOiB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+IHN0YXRpYyB0eXBlbmFtZSBfVHA6OnZvaWRfcG9pbnRlciBfU192b2lkX3BvaW50ZXJfaGVs
cGVyKF9UcCopOyBzdGF0aWMgdHlwZW5hbWUgcG9pbnRlcl90cmFpdHM8cG9pbnRlcj46OnRlbXBs
YXRlIHJlYmluZDx2b2lkPiBfU192b2lkX3BvaW50ZXJfaGVscGVyKC4uLik7IHR5cGVkZWYgZGVj
bHR5cGUoX1Nfdm9pZF9wb2ludGVyX2hlbHBlcigoX0FsbG9jKikwKSkgX192b2lkX3BvaW50ZXI7
IHB1YmxpYzoKIyAxMjkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjguMS9iaXRzL2FsbG9jX3RyYWl0cy5oIiAzCiAgICAgIHR5cGVkZWYgX192b2lkX3BvaW50
ZXIgdm9pZF9wb2ludGVyOwoKcHJpdmF0ZTogdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBzdGF0aWMg
dHlwZW5hbWUgX1RwOjpjb25zdF92b2lkX3BvaW50ZXIgX1NfY29uc3Rfdm9pZF9wb2ludGVyX2hl
bHBlcihfVHAqKTsgc3RhdGljIHR5cGVuYW1lIHBvaW50ZXJfdHJhaXRzPHBvaW50ZXI+Ojp0ZW1w
bGF0ZSByZWJpbmQ8Y29uc3Qgdm9pZD4gX1NfY29uc3Rfdm9pZF9wb2ludGVyX2hlbHBlciguLi4p
OyB0eXBlZGVmIGRlY2x0eXBlKF9TX2NvbnN0X3ZvaWRfcG9pbnRlcl9oZWxwZXIoKF9BbGxvYyop
MCkpIF9fY29uc3Rfdm9pZF9wb2ludGVyOyBwdWJsaWM6CiMgMTQwICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9hbGxvY190cmFpdHMuaCIgMwog
ICAgICB0eXBlZGVmIF9fY29uc3Rfdm9pZF9wb2ludGVyIGNvbnN0X3ZvaWRfcG9pbnRlcjsKCnBy
aXZhdGU6IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gc3RhdGljIHR5cGVuYW1lIF9UcDo6ZGlmZmVy
ZW5jZV90eXBlIF9TX2RpZmZlcmVuY2VfdHlwZV9oZWxwZXIoX1RwKik7IHN0YXRpYyB0eXBlbmFt
ZSBwb2ludGVyX3RyYWl0czxwb2ludGVyPjo6ZGlmZmVyZW5jZV90eXBlIF9TX2RpZmZlcmVuY2Vf
dHlwZV9oZWxwZXIoLi4uKTsgdHlwZWRlZiBkZWNsdHlwZShfU19kaWZmZXJlbmNlX3R5cGVfaGVs
cGVyKChfQWxsb2MqKTApKSBfX2RpZmZlcmVuY2VfdHlwZTsgcHVibGljOgojIDE1MSAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYWxsb2NfdHJh
aXRzLmgiIDMKICAgICAgdHlwZWRlZiBfX2RpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7
Cgpwcml2YXRlOiB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IHN0YXRpYyB0eXBlbmFtZSBfVHA6OnNp
emVfdHlwZSBfU19zaXplX3R5cGVfaGVscGVyKF9UcCopOyBzdGF0aWMgdHlwZW5hbWUgbWFrZV91
bnNpZ25lZDxkaWZmZXJlbmNlX3R5cGU+Ojp0eXBlIF9TX3NpemVfdHlwZV9oZWxwZXIoLi4uKTsg
dHlwZWRlZiBkZWNsdHlwZShfU19zaXplX3R5cGVfaGVscGVyKChfQWxsb2MqKTApKSBfX3NpemVf
dHlwZTsgcHVibGljOgojIDE2MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOC4xL2JpdHMvYWxsb2NfdHJhaXRzLmgiIDMKICAgICAgdHlwZWRlZiBfX3NpemVf
dHlwZSBzaXplX3R5cGU7Cgpwcml2YXRlOiB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IHN0YXRpYyB0
eXBlbmFtZSBfVHA6OnByb3BhZ2F0ZV9vbl9jb250YWluZXJfY29weV9hc3NpZ25tZW50IF9TX3By
b3BhZ2F0ZV9vbl9jb250YWluZXJfY29weV9hc3NpZ25tZW50X2hlbHBlcihfVHAqKTsgc3RhdGlj
IGZhbHNlX3R5cGUgX1NfcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9jb3B5X2Fzc2lnbm1lbnRfaGVs
cGVyKC4uLik7IHR5cGVkZWYgZGVjbHR5cGUoX1NfcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9jb3B5
X2Fzc2lnbm1lbnRfaGVscGVyKChfQWxsb2MqKTApKSBfX3Byb3BhZ2F0ZV9vbl9jb250YWluZXJf
Y29weV9hc3NpZ25tZW50OyBwdWJsaWM6CiMgMTczICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9hbGxvY190cmFpdHMuaCIgMwogICAgICB0eXBl
ZGVmIF9fcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9jb3B5X2Fzc2lnbm1lbnQKICAgICAgICBwcm9w
YWdhdGVfb25fY29udGFpbmVyX2NvcHlfYXNzaWdubWVudDsKCnByaXZhdGU6IHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4gc3RhdGljIHR5cGVuYW1lIF9UcDo6cHJvcGFnYXRlX29uX2NvbnRhaW5lcl9t
b3ZlX2Fzc2lnbm1lbnQgX1NfcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9tb3ZlX2Fzc2lnbm1lbnRf
aGVscGVyKF9UcCopOyBzdGF0aWMgZmFsc2VfdHlwZSBfU19wcm9wYWdhdGVfb25fY29udGFpbmVy
X21vdmVfYXNzaWdubWVudF9oZWxwZXIoLi4uKTsgdHlwZWRlZiBkZWNsdHlwZShfU19wcm9wYWdh
dGVfb25fY29udGFpbmVyX21vdmVfYXNzaWdubWVudF9oZWxwZXIoKF9BbGxvYyopMCkpIF9fcHJv
cGFnYXRlX29uX2NvbnRhaW5lcl9tb3ZlX2Fzc2lnbm1lbnQ7IHB1YmxpYzoKIyAxODUgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4x
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2FsbG9jX3Ry
YWl0cy5oIiAzCiAgICAgIHR5cGVkZWYgX19wcm9wYWdhdGVfb25fY29udGFpbmVyX21vdmVfYXNz
aWdubWVudAogICAgICAgIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfbW92ZV9hc3NpZ25tZW50OwoK
cHJpdmF0ZTogdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBzdGF0aWMgdHlwZW5hbWUgX1RwOjpwcm9w
YWdhdGVfb25fY29udGFpbmVyX3N3YXAgX1NfcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwX2hl
bHBlcihfVHAqKTsgc3RhdGljIGZhbHNlX3R5cGUgX1NfcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9z
d2FwX2hlbHBlciguLi4pOyB0eXBlZGVmIGRlY2x0eXBlKF9TX3Byb3BhZ2F0ZV9vbl9jb250YWlu
ZXJfc3dhcF9oZWxwZXIoKF9BbGxvYyopMCkpIF9fcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2Fw
OyBwdWJsaWM6CiMgMTk3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC44LjEvYml0cy9hbGxvY190cmFpdHMuaCIgMwogICAgICB0eXBlZGVmIF9fcHJvcGFnYXRl
X29uX2NvbnRhaW5lcl9zd2FwIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcDsKCgoKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgICAgIHVzaW5nIHJlYmluZF9hbGxvYyA9IHR5cGVu
YW1lIF9fYWxsb2N0cl9yZWJpbmQ8X0FsbG9jLCBfVHA+OjpfX3R5cGU7CiAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4KICAgICAgICB1c2luZyByZWJpbmRfdHJhaXRzID0gYWxsb2NhdG9yX3Ry
YWl0czxyZWJpbmRfYWxsb2M8X1RwPj47CgogICAgcHJpdmF0ZToKICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0FsbG9jMj4KIHN0cnVjdCBfX2FsbG9jYXRlX2hlbHBlcgogewogICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQWxsb2MzLAogICAgIHR5cGVuYW1lID0gZGVjbHR5cGUoc3RkOjpkZWNsdmFsPF9B
bGxvYzMqPigpLT5hbGxvY2F0ZSgKICAgIHN0ZDo6ZGVjbHZhbDxzaXplX3R5cGU+KCksCiAgICBz
dGQ6OmRlY2x2YWw8Y29uc3Rfdm9pZF9wb2ludGVyPigpKSk+CiAgICAgc3RhdGljIHRydWVfdHlw
ZSBfX3Rlc3QoaW50KTsKCiAgIHRlbXBsYXRlPHR5cGVuYW1lPgogICAgIHN0YXRpYyBmYWxzZV90
eXBlIF9fdGVzdCguLi4pOwoKICAgdHlwZWRlZiBkZWNsdHlwZShfX3Rlc3Q8X0FsbG9jPigwKSkg
dHlwZTsKICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0eXBlOjp2YWx1ZTsKIH07CgogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2MyPgogc3RhdGljIHR5cGVuYW1lCiAgICAgICAgZW5h
YmxlX2lmPF9fYWxsb2NhdGVfaGVscGVyPF9BbGxvYzI+Ojp2YWx1ZSwgcG9pbnRlcj46OnR5cGUK
ICAgICAgICBfU19hbGxvY2F0ZShfQWxsb2MyJiBfX2EsIHNpemVfdHlwZSBfX24sIGNvbnN0X3Zv
aWRfcG9pbnRlciBfX2hpbnQpCiB7IHJldHVybiBfX2EuYWxsb2NhdGUoX19uLCBfX2hpbnQpOyB9
CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2MyPgogc3RhdGljIHR5cGVuYW1lCiAgICAg
ICAgZW5hYmxlX2lmPCFfX2FsbG9jYXRlX2hlbHBlcjxfQWxsb2MyPjo6dmFsdWUsIHBvaW50ZXI+
Ojp0eXBlCiAgICAgICAgX1NfYWxsb2NhdGUoX0FsbG9jMiYgX19hLCBzaXplX3R5cGUgX19uLCAu
Li4pCiB7IHJldHVybiBfX2EuYWxsb2NhdGUoX19uKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwLCB0eXBlbmFtZS4uLiBfQXJncz4KIHN0cnVjdCBfX2NvbnN0cnVjdF9oZWxwZXIKIHsK
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jMiwKICAgICB0eXBlbmFtZSA9IGRlY2x0eXBlKHN0
ZDo6ZGVjbHZhbDxfQWxsb2MyKj4oKS0+Y29uc3RydWN0KAogICAgc3RkOjpkZWNsdmFsPF9UcCo+
KCksIHN0ZDo6ZGVjbHZhbDxfQXJncz4oKS4uLikpPgogICAgIHN0YXRpYyB0cnVlX3R5cGUgX190
ZXN0KGludCk7CgogICB0ZW1wbGF0ZTx0eXBlbmFtZT4KICAgICBzdGF0aWMgZmFsc2VfdHlwZSBf
X3Rlc3QoLi4uKTsKCiAgIHR5cGVkZWYgZGVjbHR5cGUoX190ZXN0PF9BbGxvYz4oMCkpIHR5cGU7
CiAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHlwZTo6dmFsdWU7CiB9OwoKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZS4uLiBfQXJncz4KIHN0YXRpYyB0eXBlbmFtZQog
ICAgICAgIGVuYWJsZV9pZjxfX2NvbnN0cnVjdF9oZWxwZXI8X1RwLCBfQXJncy4uLj46OnZhbHVl
LCB2b2lkPjo6dHlwZQogICAgICAgIF9TX2NvbnN0cnVjdChfQWxsb2MmIF9fYSwgX1RwKiBfX3As
IF9BcmdzJiYuLi4gX19hcmdzKQogeyBfX2EuY29uc3RydWN0KF9fcCwgc3RkOjpmb3J3YXJkPF9B
cmdzPihfX2FyZ3MpLi4uKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFt
ZS4uLiBfQXJncz4KIHN0YXRpYyB0eXBlbmFtZQogZW5hYmxlX2lmPF9fYW5kXzxfX25vdF88X19j
b25zdHJ1Y3RfaGVscGVyPF9UcCwgX0FyZ3MuLi4+PiwKICAgIGlzX2NvbnN0cnVjdGlibGU8X1Rw
LCBfQXJncy4uLj4+Ojp2YWx1ZSwgdm9pZD46OnR5cGUKICAgICAgICBfU19jb25zdHJ1Y3QoX0Fs
bG9jJiwgX1RwKiBfX3AsIF9BcmdzJiYuLi4gX19hcmdzKQogeyA6Om5ldygodm9pZCopX19wKSBf
VHAoc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsgfQoKICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwPgogc3RydWN0IF9fZGVzdHJveV9oZWxwZXIKIHsKICAgdGVtcGxhdGU8dHlwZW5h
bWUgX0FsbG9jMiwKICAgICB0eXBlbmFtZSA9IGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxfQWxsb2My
Kj4oKS0+ZGVzdHJveSgKICAgIHN0ZDo6ZGVjbHZhbDxfVHAqPigpKSk+CiAgICAgc3RhdGljIHRy
dWVfdHlwZSBfX3Rlc3QoaW50KTsKCiAgIHRlbXBsYXRlPHR5cGVuYW1lPgogICAgIHN0YXRpYyBm
YWxzZV90eXBlIF9fdGVzdCguLi4pOwoKICAgdHlwZWRlZiBkZWNsdHlwZShfX3Rlc3Q8X0FsbG9j
PigwKSkgdHlwZTsKICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0eXBlOjp2YWx1ZTsKIH07
CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiBzdGF0aWMgdHlwZW5hbWUgZW5hYmxlX2lm
PF9fZGVzdHJveV9oZWxwZXI8X1RwPjo6dmFsdWUsIHZvaWQ+Ojp0eXBlCiAgICAgICAgX1NfZGVz
dHJveShfQWxsb2MmIF9fYSwgX1RwKiBfX3ApCiB7IF9fYS5kZXN0cm95KF9fcCk7IH0KCiAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KIHN0YXRpYyB0eXBlbmFtZSBlbmFibGVfaWY8IV9fZGVz
dHJveV9oZWxwZXI8X1RwPjo6dmFsdWUsIHZvaWQ+Ojp0eXBlCiAgICAgICAgX1NfZGVzdHJveShf
QWxsb2MmLCBfVHAqIF9fcCkKIHsgX19wLT5+X1RwKCk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9BbGxvYzI+CiBzdHJ1Y3QgX19tYXhzaXplX2hlbHBlcgogewogICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQWxsb2MzLAogICAgIHR5cGVuYW1lID0gZGVjbHR5cGUoc3RkOjpkZWNsdmFsPF9BbGxv
YzMqPigpLT5tYXhfc2l6ZSgpKT4KICAgICBzdGF0aWMgdHJ1ZV90eXBlIF9fdGVzdChpbnQpOwoK
ICAgdGVtcGxhdGU8dHlwZW5hbWU+CiAgICAgc3RhdGljIGZhbHNlX3R5cGUgX190ZXN0KC4uLik7
CgogICB0eXBlZGVmIGRlY2x0eXBlKF9fdGVzdDxfQWxsb2MyPigwKSkgdHlwZTsKICAgc3RhdGlj
IGNvbnN0IGJvb2wgdmFsdWUgPSB0eXBlOjp2YWx1ZTsKIH07CgogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQWxsb2MyPgogc3RhdGljIHR5cGVuYW1lCiAgICAgICAgZW5hYmxlX2lmPF9fbWF4c2l6
ZV9oZWxwZXI8X0FsbG9jMj46OnZhbHVlLCBzaXplX3R5cGU+Ojp0eXBlCiAgICAgICAgX1NfbWF4
X3NpemUoX0FsbG9jMiYgX19hKQogeyByZXR1cm4gX19hLm1heF9zaXplKCk7IH0KCiAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9BbGxvYzI+CiBzdGF0aWMgdHlwZW5hbWUKICAgICAgICBlbmFibGVf
aWY8IV9fbWF4c2l6ZV9oZWxwZXI8X0FsbG9jMj46OnZhbHVlLCBzaXplX3R5cGU+Ojp0eXBlCiBf
U19tYXhfc2l6ZShfQWxsb2MyJikKIHsgcmV0dXJuIF9fZ251X2N4eDo6X19udW1lcmljX3RyYWl0
czxzaXplX3R5cGU+OjpfX21heDsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jMj4K
IHN0cnVjdCBfX3NlbGVjdF9oZWxwZXIKIHsKICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jMywg
dHlwZW5hbWUKICAgICA9IGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxfQWxsb2MzKj4oKQogIC0+c2Vs
ZWN0X29uX2NvbnRhaW5lcl9jb3B5X2NvbnN0cnVjdGlvbigpKT4KICAgICBzdGF0aWMgdHJ1ZV90
eXBlIF9fdGVzdChpbnQpOwoKICAgdGVtcGxhdGU8dHlwZW5hbWU+CiAgICAgc3RhdGljIGZhbHNl
X3R5cGUgX190ZXN0KC4uLik7CgogICB0eXBlZGVmIGRlY2x0eXBlKF9fdGVzdDxfQWxsb2MyPigw
KSkgdHlwZTsKICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0eXBlOjp2YWx1ZTsKIH07CiAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYzI+CiBzdGF0aWMgdHlwZW5hbWUKICAgICAgICBl
bmFibGVfaWY8X19zZWxlY3RfaGVscGVyPF9BbGxvYzI+Ojp2YWx1ZSwgX0FsbG9jMj46OnR5cGUK
ICAgICAgICBfU19zZWxlY3QoX0FsbG9jMiYgX19hKQogeyByZXR1cm4gX19hLnNlbGVjdF9vbl9j
b250YWluZXJfY29weV9jb25zdHJ1Y3Rpb24oKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
X0FsbG9jMj4KIHN0YXRpYyB0eXBlbmFtZQogICAgICAgIGVuYWJsZV9pZjwhX19zZWxlY3RfaGVs
cGVyPF9BbGxvYzI+Ojp2YWx1ZSwgX0FsbG9jMj46OnR5cGUKICAgICAgICBfU19zZWxlY3QoX0Fs
bG9jMiYgX19hKQogeyByZXR1cm4gX19hOyB9CgogICAgcHVibGljOgojIDM0OSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYWxsb2NfdHJhaXRz
LmgiIDMKICAgICAgc3RhdGljIHBvaW50ZXIKICAgICAgYWxsb2NhdGUoX0FsbG9jJiBfX2EsIHNp
emVfdHlwZSBfX24pCiAgICAgIHsgcmV0dXJuIF9fYS5hbGxvY2F0ZShfX24pOyB9CiMgMzY0ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9hbGxv
Y190cmFpdHMuaCIgMwogICAgICBzdGF0aWMgcG9pbnRlcgogICAgICBhbGxvY2F0ZShfQWxsb2Mm
IF9fYSwgc2l6ZV90eXBlIF9fbiwgY29uc3Rfdm9pZF9wb2ludGVyIF9faGludCkKICAgICAgeyBy
ZXR1cm4gX1NfYWxsb2NhdGUoX19hLCBfX24sIF9faGludCk7IH0KIyAzNzYgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2FsbG9jX3RyYWl0cy5o
IiAzCiAgICAgIHN0YXRpYyB2b2lkIGRlYWxsb2NhdGUoX0FsbG9jJiBfX2EsIHBvaW50ZXIgX19w
LCBzaXplX3R5cGUgX19uKQogICAgICB7IF9fYS5kZWFsbG9jYXRlKF9fcCwgX19uKTsgfQojIDM5
MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMv
YWxsb2NfdHJhaXRzLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZS4u
LiBfQXJncz4KIHN0YXRpYyBhdXRvIGNvbnN0cnVjdChfQWxsb2MmIF9fYSwgX1RwKiBfX3AsIF9B
cmdzJiYuLi4gX19hcmdzKQogLT4gZGVjbHR5cGUoX1NfY29uc3RydWN0KF9fYSwgX19wLCBzdGQ6
OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pKQogeyBfU19jb25zdHJ1Y3QoX19hLCBfX3AsIHN0
ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLik7IH0KIyA0MDMgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2FsbG9jX3RyYWl0cy5oIiAzCiAg
ICAgIHRlbXBsYXRlIDxjbGFzcyBfVHA+CiBzdGF0aWMgdm9pZCBkZXN0cm95KF9BbGxvYyYgX19h
LCBfVHAqIF9fcCkKIHsgX1NfZGVzdHJveShfX2EsIF9fcCk7IH0KIyA0MTUgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2FsbG9jX3RyYWl0cy5o
IiAzCiAgICAgIHN0YXRpYyBzaXplX3R5cGUgbWF4X3NpemUoY29uc3QgX0FsbG9jJiBfX2EpCiAg
ICAgIHsgcmV0dXJuIF9TX21heF9zaXplKF9fYSk7IH0KIyA0MjYgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2FsbG9jX3RyYWl0cy5oIiAzCiAg
ICAgIHN0YXRpYyBfQWxsb2MKICAgICAgc2VsZWN0X29uX2NvbnRhaW5lcl9jb3B5X2NvbnN0cnVj
dGlvbihjb25zdCBfQWxsb2MmIF9fcmhzKQogICAgICB7IHJldHVybiBfU19zZWxlY3QoX19yaHMp
OyB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0FsbG9jMj4KICAgIGNvbnN0IGJvb2wgYWxsb2NhdG9yX3RyYWl0czxfQWxsb2M+OjpfX2Fs
bG9jYXRlX2hlbHBlcjxfQWxsb2MyPjo6dmFsdWU7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxv
Yz4KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lLi4uIF9BcmdzPgogICAgY29uc3Qg
Ym9vbAogICAgYWxsb2NhdG9yX3RyYWl0czxfQWxsb2M+OjpfX2NvbnN0cnVjdF9oZWxwZXI8X1Rw
LCBfQXJncy4uLj46OnZhbHVlOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgY29uc3QgYm9vbCBhbGxvY2F0b3JfdHJhaXRzPF9BbGxvYz46
Ol9fZGVzdHJveV9oZWxwZXI8X1RwPjo6dmFsdWU7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxv
Yz4KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2MyPgogICAgY29uc3QgYm9vbCBhbGxvY2F0b3Jf
dHJhaXRzPF9BbGxvYz46Ol9fbWF4c2l6ZV9oZWxwZXI8X0FsbG9jMj46OnZhbHVlOwoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jMj4KICAgIGNv
bnN0IGJvb2wgYWxsb2NhdG9yX3RyYWl0czxfQWxsb2M+OjpfX3NlbGVjdF9oZWxwZXI8X0FsbG9j
Mj46OnZhbHVlOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgdm9pZAog
ICAgX19kb19hbGxvY19vbl9jb3B5KF9BbGxvYyYgX19vbmUsIGNvbnN0IF9BbGxvYyYgX190d28s
IHRydWVfdHlwZSkKICAgIHsgX19vbmUgPSBfX3R3bzsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
QWxsb2M+CiAgICBpbmxpbmUgdm9pZAogICAgX19kb19hbGxvY19vbl9jb3B5KF9BbGxvYyYsIGNv
bnN0IF9BbGxvYyYsIGZhbHNlX3R5cGUpCiAgICB7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Fs
bG9jPgogICAgaW5saW5lIHZvaWQgX19hbGxvY19vbl9jb3B5KF9BbGxvYyYgX19vbmUsIGNvbnN0
IF9BbGxvYyYgX190d28pCiAgICB7CiAgICAgIHR5cGVkZWYgYWxsb2NhdG9yX3RyYWl0czxfQWxs
b2M+IF9fdHJhaXRzOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fdHJhaXRzOjpwcm9wYWdhdGVf
b25fY29udGFpbmVyX2NvcHlfYXNzaWdubWVudCBfX3BvY2NhOwogICAgICBfX2RvX2FsbG9jX29u
X2NvcHkoX19vbmUsIF9fdHdvLCBfX3BvY2NhKCkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQWxsb2M+CiAgICBpbmxpbmUgX0FsbG9jIF9fYWxsb2Nfb25fY29weShjb25zdCBfQWxsb2Mm
IF9fYSkKICAgIHsKICAgICAgdHlwZWRlZiBhbGxvY2F0b3JfdHJhaXRzPF9BbGxvYz4gX190cmFp
dHM7CiAgICAgIHJldHVybiBfX3RyYWl0czo6c2VsZWN0X29uX2NvbnRhaW5lcl9jb3B5X2NvbnN0
cnVjdGlvbihfX2EpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxp
bmUgdm9pZCBfX2RvX2FsbG9jX29uX21vdmUoX0FsbG9jJiBfX29uZSwgX0FsbG9jJiBfX3R3bywg
dHJ1ZV90eXBlKQogICAgeyBfX29uZSA9IHN0ZDo6bW92ZShfX3R3byk7IH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIHZvaWQgX19kb19hbGxvY19vbl9tb3ZlKF9BbGxv
YyYsIF9BbGxvYyYsIGZhbHNlX3R5cGUpCiAgICB7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Fs
bG9jPgogICAgaW5saW5lIHZvaWQgX19hbGxvY19vbl9tb3ZlKF9BbGxvYyYgX19vbmUsIF9BbGxv
YyYgX190d28pCiAgICB7CiAgICAgIHR5cGVkZWYgYWxsb2NhdG9yX3RyYWl0czxfQWxsb2M+IF9f
dHJhaXRzOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fdHJhaXRzOjpwcm9wYWdhdGVfb25fY29u
dGFpbmVyX21vdmVfYXNzaWdubWVudCBfX3BvY21hOwogICAgICBfX2RvX2FsbG9jX29uX21vdmUo
X19vbmUsIF9fdHdvLCBfX3BvY21hKCkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxs
b2M+CiAgICBpbmxpbmUgdm9pZCBfX2RvX2FsbG9jX29uX3N3YXAoX0FsbG9jJiBfX29uZSwgX0Fs
bG9jJiBfX3R3bywgdHJ1ZV90eXBlKQogICAgewogICAgICB1c2luZyBzdGQ6OnN3YXA7CiAgICAg
IHN3YXAoX19vbmUsIF9fdHdvKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jPgog
ICAgaW5saW5lIHZvaWQgX19kb19hbGxvY19vbl9zd2FwKF9BbGxvYyYsIF9BbGxvYyYsIGZhbHNl
X3R5cGUpCiAgICB7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIHZv
aWQgX19hbGxvY19vbl9zd2FwKF9BbGxvYyYgX19vbmUsIF9BbGxvYyYgX190d28pCiAgICB7CiAg
ICAgIHR5cGVkZWYgYWxsb2NhdG9yX3RyYWl0czxfQWxsb2M+IF9fdHJhaXRzOwogICAgICB0eXBl
ZGVmIHR5cGVuYW1lIF9fdHJhaXRzOjpwcm9wYWdhdGVfb25fY29udGFpbmVyX3N3YXAgX19wb2Nz
OwogICAgICBfX2RvX2FsbG9jX29uX3N3YXAoX19vbmUsIF9fdHdvLCBfX3BvY3MoKSk7CiAgICB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYz4KICAgIGNsYXNzIF9faXNfY29weV9pbnNlcnRh
YmxlX2ltcGwKICAgIHsKICAgICAgdHlwZWRlZiBhbGxvY2F0b3JfdHJhaXRzPF9BbGxvYz4gX1Ry
YWl0czsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VcCwgdHlwZW5hbWUKICAgICAgICA9IGRl
Y2x0eXBlKF9UcmFpdHM6OmNvbnN0cnVjdChzdGQ6OmRlY2x2YWw8X0FsbG9jJj4oKSwKICAgICAg
ICAgIHN0ZDo6ZGVjbHZhbDxfVXAqPigpLAogICAgICAgICAgc3RkOjpkZWNsdmFsPGNvbnN0IF9V
cCY+KCkpKT4KIHN0YXRpYyB0cnVlX3R5cGUKIF9NX3NlbGVjdChpbnQpOwoKICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgX1VwPgogc3RhdGljIGZhbHNlX3R5cGUKIF9NX3NlbGVjdCguLi4pOwoKICAg
IHB1YmxpYzoKICAgICAgdHlwZWRlZiBkZWNsdHlwZShfTV9zZWxlY3Q8dHlwZW5hbWUgX0FsbG9j
Ojp2YWx1ZV90eXBlPigwKSkgdHlwZTsKICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxs
b2M+CiAgICBzdHJ1Y3QgX19pc19jb3B5X2luc2VydGFibGUKICAgIDogX19pc19jb3B5X2luc2Vy
dGFibGVfaW1wbDxfQWxsb2M+Ojp0eXBlCiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+CiAgICBzdHJ1Y3QgX19pc19jb3B5X2luc2VydGFibGU8YWxsb2NhdG9yPF9UcD4+CiAgICA6
IGlzX2NvcHlfY29uc3RydWN0aWJsZTxfVHA+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTxib29sPiBz
dHJ1Y3QgX19hbGxvd19jb3B5X2NvbnMgeyB9OwoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9f
YWxsb3dfY29weV9jb25zPGZhbHNlPgogICAgewogICAgICBfX2FsbG93X2NvcHlfY29ucygpID0g
ZGVmYXVsdDsKICAgICAgX19hbGxvd19jb3B5X2NvbnMoY29uc3QgX19hbGxvd19jb3B5X2NvbnMm
KSA9IGRlbGV0ZTsKICAgICAgX19hbGxvd19jb3B5X2NvbnMoX19hbGxvd19jb3B5X2NvbnMmJikg
PSBkZWZhdWx0OwogICAgICBfX2FsbG93X2NvcHlfY29ucyYgb3BlcmF0b3I9KGNvbnN0IF9fYWxs
b3dfY29weV9jb25zJikgPSBkZWZhdWx0OwogICAgICBfX2FsbG93X2NvcHlfY29ucyYgb3BlcmF0
b3I9KF9fYWxsb3dfY29weV9jb25zJiYpID0gZGVmYXVsdDsKICAgIH07CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9BbGxvYz4KICAgIHVzaW5nIF9fY2hlY2tfY29weV9jb25zdHJ1Y3RpYmxlCiAgICAg
ID0gX19hbGxvd19jb3B5X2NvbnM8X19pc19jb3B5X2luc2VydGFibGU8X0FsbG9jPjo6dmFsdWU+
OwoKCn0KIyAzNyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OC4xL2V4dC9hbGxvY190cmFpdHMuaCIgMiAzCgoKCgpuYW1lc3BhY2UgX19nbnVfY3h4IF9fYXR0
cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQWxsb2M+CiAgICBzdHJ1Y3QgX19hbGxvY2F0b3JfYWx3YXlzX2NvbXBhcmVzX2Vx
dWFsCiAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7IH07CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9BbGxvYz4KICAgIGNvbnN0IGJvb2wgX19hbGxvY2F0b3JfYWx3YXlzX2NvbXBh
cmVzX2VxdWFsPF9BbGxvYz46OnZhbHVlOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBz
dHJ1Y3QgX19hbGxvY2F0b3JfYWx3YXlzX2NvbXBhcmVzX2VxdWFsPHN0ZDo6YWxsb2NhdG9yPF9U
cD4+CiAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwPgogICAgY29uc3QgYm9vbCBfX2FsbG9jYXRvcl9hbHdheXNfY29tcGFyZXNf
ZXF1YWw8c3RkOjphbGxvY2F0b3I8X1RwPj46OnZhbHVlOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSwg
dHlwZW5hbWU+IHN0cnVjdCBhcnJheV9hbGxvY2F0b3I7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cCwgdHlwZW5hbWUgX0FycmF5PgogICAgc3RydWN0IF9fYWxsb2NhdG9yX2Fsd2F5c19jb21wYXJl
c19lcXVhbDxhcnJheV9hbGxvY2F0b3I8X1RwLCBfQXJyYXk+PgogICAgeyBzdGF0aWMgY29uc3Qg
Ym9vbCB2YWx1ZSA9IHRydWU7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUg
X0FycmF5PgogICAgY29uc3QgYm9vbAogICAgX19hbGxvY2F0b3JfYWx3YXlzX2NvbXBhcmVzX2Vx
dWFsPGFycmF5X2FsbG9jYXRvcjxfVHAsIF9BcnJheT4+Ojp2YWx1ZTsKCiAgdGVtcGxhdGU8dHlw
ZW5hbWU+IHN0cnVjdCBiaXRtYXBfYWxsb2NhdG9yOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
CiAgICBzdHJ1Y3QgX19hbGxvY2F0b3JfYWx3YXlzX2NvbXBhcmVzX2VxdWFsPGJpdG1hcF9hbGxv
Y2F0b3I8X1RwPj4KICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjb25zdCBib29sIF9fYWxsb2NhdG9yX2Fsd2F5c19j
b21wYXJlc19lcXVhbDxiaXRtYXBfYWxsb2NhdG9yPF9UcD4+Ojp2YWx1ZTsKCiAgdGVtcGxhdGU8
dHlwZW5hbWU+IHN0cnVjdCBtYWxsb2NfYWxsb2NhdG9yOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+CiAgICBzdHJ1Y3QgX19hbGxvY2F0b3JfYWx3YXlzX2NvbXBhcmVzX2VxdWFsPG1hbGxvY19h
bGxvY2F0b3I8X1RwPj4KICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjb25zdCBib29sIF9fYWxsb2NhdG9yX2Fsd2F5
c19jb21wYXJlc19lcXVhbDxtYWxsb2NfYWxsb2NhdG9yPF9UcD4+Ojp2YWx1ZTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWU+IHN0cnVjdCBtdF9hbGxvY2F0b3I7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4KICAgIHN0cnVjdCBfX2FsbG9jYXRvcl9hbHdheXNfY29tcGFyZXNfZXF1YWw8bXRfYWxsb2Nh
dG9yPF9UcD4+CiAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY29uc3QgYm9vbCBfX2FsbG9jYXRvcl9hbHdheXNfY29t
cGFyZXNfZXF1YWw8bXRfYWxsb2NhdG9yPF9UcD4+Ojp2YWx1ZTsKCiAgdGVtcGxhdGU8dHlwZW5h
bWU+IHN0cnVjdCBuZXdfYWxsb2NhdG9yOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBz
dHJ1Y3QgX19hbGxvY2F0b3JfYWx3YXlzX2NvbXBhcmVzX2VxdWFsPG5ld19hbGxvY2F0b3I8X1Rw
Pj4KICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+CiAgICBjb25zdCBib29sIF9fYWxsb2NhdG9yX2Fsd2F5c19jb21wYXJlc19l
cXVhbDxuZXdfYWxsb2NhdG9yPF9UcD4+Ojp2YWx1ZTsKCiAgdGVtcGxhdGU8dHlwZW5hbWU+IHN0
cnVjdCBwb29sX2FsbG9jYXRvcjsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0
IF9fYWxsb2NhdG9yX2Fsd2F5c19jb21wYXJlc19lcXVhbDxwb29sX2FsbG9jYXRvcjxfVHA+Pgog
ICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4KICAgIGNvbnN0IGJvb2wgX19hbGxvY2F0b3JfYWx3YXlzX2NvbXBhcmVzX2VxdWFs
PHBvb2xfYWxsb2NhdG9yPF9UcD4+Ojp2YWx1ZTsKCgoKCgoKdGVtcGxhdGU8dHlwZW5hbWUgX0Fs
bG9jPgogIHN0cnVjdCBfX2FsbG9jX3RyYWl0cwoKICA6IHN0ZDo6YWxsb2NhdG9yX3RyYWl0czxf
QWxsb2M+CgogIHsKICAgIHR5cGVkZWYgX0FsbG9jIGFsbG9jYXRvcl90eXBlOwoKICAgIHR5cGVk
ZWYgc3RkOjphbGxvY2F0b3JfdHJhaXRzPF9BbGxvYz4gX0Jhc2VfdHlwZTsKICAgIHR5cGVkZWYg
dHlwZW5hbWUgX0Jhc2VfdHlwZTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwogICAgdHlwZWRlZiB0
eXBlbmFtZSBfQmFzZV90eXBlOjpwb2ludGVyIHBvaW50ZXI7CiAgICB0eXBlZGVmIHR5cGVuYW1l
IF9CYXNlX3R5cGU6OmNvbnN0X3BvaW50ZXIgY29uc3RfcG9pbnRlcjsKICAgIHR5cGVkZWYgdHlw
ZW5hbWUgX0Jhc2VfdHlwZTo6c2l6ZV90eXBlIHNpemVfdHlwZTsKICAgIHR5cGVkZWYgdHlwZW5h
bWUgX0Jhc2VfdHlwZTo6ZGlmZmVyZW5jZV90eXBlIGRpZmZlcmVuY2VfdHlwZTsKCiAgICB0eXBl
ZGVmIHZhbHVlX3R5cGUmIHJlZmVyZW5jZTsKICAgIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSYg
Y29uc3RfcmVmZXJlbmNlOwogICAgdXNpbmcgX0Jhc2VfdHlwZTo6YWxsb2NhdGU7CiAgICB1c2lu
ZyBfQmFzZV90eXBlOjpkZWFsbG9jYXRlOwogICAgdXNpbmcgX0Jhc2VfdHlwZTo6Y29uc3RydWN0
OwogICAgdXNpbmcgX0Jhc2VfdHlwZTo6ZGVzdHJveTsKICAgIHVzaW5nIF9CYXNlX3R5cGU6Om1h
eF9zaXplOwoKICBwcml2YXRlOgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1B0cj4KICAgICAgc3Ry
dWN0IF9faXNfY3VzdG9tX3BvaW50ZXIKICAgICAgOiBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJv
b2wsIHN0ZDo6aXNfc2FtZTxwb2ludGVyLCBfUHRyPjo6dmFsdWUKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICYmICFzdGQ6OmlzX3BvaW50ZXI8X1B0cj46OnZhbHVlPgogICAg
ICB7IH07CgogIHB1YmxpYzoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUHRyLCB0eXBlbmFtZS4u
LiBfQXJncz4KICAgICAgc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPF9faXNfY3VzdG9t
X3BvaW50ZXI8X1B0cj46OnZhbHVlPjo6dHlwZQogICAgICBjb25zdHJ1Y3QoX0FsbG9jJiBfX2Es
IF9QdHIgX19wLCBfQXJncyYmLi4uIF9fYXJncykKICAgICAgewogX0Jhc2VfdHlwZTo6Y29uc3Ry
dWN0KF9fYSwgc3RkOjphZGRyZXNzb2YoKl9fcCksCiAgICAgICAgIHN0ZDo6Zm9yd2FyZDxfQXJn
cz4oX19hcmdzKS4uLik7CiAgICAgIH0KCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1B0cj4KICAg
ICAgc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPF9faXNfY3VzdG9tX3BvaW50ZXI8X1B0
cj46OnZhbHVlPjo6dHlwZQogICAgICBkZXN0cm95KF9BbGxvYyYgX19hLCBfUHRyIF9fcCkKICAg
ICAgeyBfQmFzZV90eXBlOjpkZXN0cm95KF9fYSwgc3RkOjphZGRyZXNzb2YoKl9fcCkpOyB9Cgog
ICAgc3RhdGljIF9BbGxvYyBfU19zZWxlY3Rfb25fY29weShjb25zdCBfQWxsb2MmIF9fYSkKICAg
IHsgcmV0dXJuIF9CYXNlX3R5cGU6OnNlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rp
b24oX19hKTsgfQoKICAgIHN0YXRpYyB2b2lkIF9TX29uX3N3YXAoX0FsbG9jJiBfX2EsIF9BbGxv
YyYgX19iKQogICAgeyBzdGQ6Ol9fYWxsb2Nfb25fc3dhcChfX2EsIF9fYik7IH0KCiAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgX1NfcHJvcGFnYXRlX29uX2NvcHlfYXNzaWduKCkKICAgIHsgcmV0
dXJuIF9CYXNlX3R5cGU6OnByb3BhZ2F0ZV9vbl9jb250YWluZXJfY29weV9hc3NpZ25tZW50Ojp2
YWx1ZTsgfQoKICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBfU19wcm9wYWdhdGVfb25fbW92ZV9h
c3NpZ24oKQogICAgeyByZXR1cm4gX0Jhc2VfdHlwZTo6cHJvcGFnYXRlX29uX2NvbnRhaW5lcl9t
b3ZlX2Fzc2lnbm1lbnQ6OnZhbHVlOyB9CgogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIF9TX3By
b3BhZ2F0ZV9vbl9zd2FwKCkKICAgIHsgcmV0dXJuIF9CYXNlX3R5cGU6OnByb3BhZ2F0ZV9vbl9j
b250YWluZXJfc3dhcDo6dmFsdWU7IH0KCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgX1NfYWx3
YXlzX2VxdWFsKCkKICAgIHsgcmV0dXJuIF9fYWxsb2NhdG9yX2Fsd2F5c19jb21wYXJlc19lcXVh
bDxfQWxsb2M+Ojp2YWx1ZTsgfQoKICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBfU19ub3Rocm93
X21vdmUoKQogICAgeyByZXR1cm4gX1NfcHJvcGFnYXRlX29uX21vdmVfYXNzaWduKCkgfHwgX1Nf
YWx3YXlzX2VxdWFsKCk7IH0KCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgX1Nfbm90aHJvd19z
d2FwKCkKICAgIHsKICAgICAgdXNpbmcgc3RkOjpzd2FwOwogICAgICByZXR1cm4gIV9TX3Byb3Bh
Z2F0ZV9vbl9zd2FwKCkKICAgICAgICB8fCBub2V4Y2VwdChzd2FwKHN0ZDo6ZGVjbHZhbDxfQWxs
b2MmPigpLCBzdGQ6OmRlY2x2YWw8X0FsbG9jJj4oKSkpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICAgICAgc3RydWN0IHJlYmluZAogICAgICB7IHR5cGVkZWYgdHlwZW5hbWUg
X0Jhc2VfdHlwZTo6dGVtcGxhdGUgcmViaW5kX2FsbG9jPF9UcD4gb3RoZXI7IH07CiMgMjM3ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvZXh0L2FsbG9j
X3RyYWl0cy5oIiAzCiAgfTsKCgp9CiMgNjIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9jb25zdHJ1Y3QuaCIgMiAzCgpuYW1lc3BhY2Ug
c3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgoKCgoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1QxLCB0eXBlbmFtZS4uLiBfQXJncz4KICAgIGlubGluZSB2
b2lkCiAgICBfQ29uc3RydWN0KF9UMSogX19wLCBfQXJncyYmLi4uIF9fYXJncykKICAgIHsgOjpu
ZXcoc3RhdGljX2Nhc3Q8dm9pZCo+KF9fcCkpIF9UMShzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJn
cykuLi4pOyB9CiMgOTAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjguMS9iaXRzL3N0bF9jb25zdHJ1Y3QuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4K
ICAgIGlubGluZSB2b2lkCiAgICBfRGVzdHJveShfVHAqIF9fcG9pbnRlcikKICAgIHsgX19wb2lu
dGVyLT5+X1RwKCk7IH0KCiAgdGVtcGxhdGU8Ym9vbD4KICAgIHN0cnVjdCBfRGVzdHJveV9hdXgK
ICAgIHsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcj4KICAgICAgICBz
dGF0aWMgdm9pZAogICAgICAgIF9fZGVzdHJveShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9G
b3J3YXJkSXRlcmF0b3IgX19sYXN0KQogewogICBmb3IgKDsgX19maXJzdCAhPSBfX2xhc3Q7ICsr
X19maXJzdCkKICAgICBzdGQ6Ol9EZXN0cm95KHN0ZDo6X19hZGRyZXNzb2YoKl9fZmlyc3QpKTsK
IH0KICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfRGVzdHJveV9hdXg8dHJ1ZT4KICAg
IHsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcj4KICAgICAgICBzdGF0
aWMgdm9pZAogICAgICAgIF9fZGVzdHJveShfRm9yd2FyZEl0ZXJhdG9yLCBfRm9yd2FyZEl0ZXJh
dG9yKSB7IH0KICAgIH07CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRv
cj4KICAgIGlubGluZSB2b2lkCiAgICBfRGVzdHJveShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3Qs
IF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZQogICAgICAgICAgICAg
ICAgICAgICAgIF9WYWx1ZV90eXBlOwogICAgICBzdGQ6Ol9EZXN0cm95X2F1eDxfX2hhc190cml2
aWFsX2Rlc3RydWN0b3IoX1ZhbHVlX3R5cGUpPjo6CiBfX2Rlc3Ryb3koX19maXJzdCwgX19sYXN0
KTsKICAgIH0KCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlw
ZW5hbWUgX0FsbG9jYXRvcj4KICAgIHZvaWQKICAgIF9EZXN0cm95KF9Gb3J3YXJkSXRlcmF0b3Ig
X19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgIF9BbGxvY2F0b3ImIF9fYWxs
b2MpCiAgICB7CiAgICAgIHR5cGVkZWYgX19nbnVfY3h4OjpfX2FsbG9jX3RyYWl0czxfQWxsb2Nh
dG9yPiBfX3RyYWl0czsKICAgICAgZm9yICg7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3Qp
CiBfX3RyYWl0czo6ZGVzdHJveShfX2FsbG9jLCBzdGQ6Ol9fYWRkcmVzc29mKCpfX2ZpcnN0KSk7
CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9U
cD4KICAgIGlubGluZSB2b2lkCiAgICBfRGVzdHJveShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3Qs
IF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgICBhbGxvY2F0b3I8X1RwPiYpCiAgICB7CiAg
ICAgIF9EZXN0cm95KF9fZmlyc3QsIF9fbGFzdCk7CiAgICB9CgoKfQojIDY1ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvbWVtb3J5IiAyIDMKIyAxICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxf
dW5pbml0aWFsaXplZC5oIiAxIDMKIyA1OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX3VuaW5pdGlhbGl6ZWQuaCIgMwpuYW1lc3BhY2Ug
c3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgogIHRl
bXBsYXRlPGJvb2wgX1RyaXZpYWxWYWx1ZVR5cGVzPgogICAgc3RydWN0IF9fdW5pbml0aWFsaXpl
ZF9jb3B5CiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBl
bmFtZSBfRm9yd2FyZEl0ZXJhdG9yPgogICAgICAgIHN0YXRpYyBfRm9yd2FyZEl0ZXJhdG9yCiAg
ICAgICAgX191bmluaXRfY29weShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRv
ciBfX2xhc3QsCiAgICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX3Jlc3VsdCkKICAgICAgICB7CiAg
IF9Gb3J3YXJkSXRlcmF0b3IgX19jdXIgPSBfX3Jlc3VsdDsKICAgaWYgKHRydWUpCiAgICAgewog
ICAgICAgZm9yICg7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QsICsrX19jdXIpCiAgc3Rk
OjpfQ29uc3RydWN0KHN0ZDo6X19hZGRyZXNzb2YoKl9fY3VyKSwgKl9fZmlyc3QpOwogICAgICAg
cmV0dXJuIF9fY3VyOwogICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsKICAgICAgIHN0ZDo6X0Rl
c3Ryb3koX19yZXN1bHQsIF9fY3VyKTsKICAgICAgIDsKICAgICB9CiB9CiAgICB9OwoKICB0ZW1w
bGF0ZTw+CiAgICBzdHJ1Y3QgX191bmluaXRpYWxpemVkX2NvcHk8dHJ1ZT4KICAgIHsKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0
b3I+CiAgICAgICAgc3RhdGljIF9Gb3J3YXJkSXRlcmF0b3IKICAgICAgICBfX3VuaW5pdF9jb3B5
KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgICBf
Rm9yd2FyZEl0ZXJhdG9yIF9fcmVzdWx0KQogICAgICAgIHsgcmV0dXJuIHN0ZDo6Y29weShfX2Zp
cnN0LCBfX2xhc3QsIF9fcmVzdWx0KTsgfQogICAgfTsKIyAxMDUgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF91bmluaXRpYWxpemVkLmgi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX0ZvcndhcmRJ
dGVyYXRvcj4KICAgIGlubGluZSBfRm9yd2FyZEl0ZXJhdG9yCiAgICB1bmluaXRpYWxpemVkX2Nv
cHkoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgICAg
ICBfRm9yd2FyZEl0ZXJhdG9yIF9fcmVzdWx0KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1l
IGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGUx
OwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXJhdG9y
Pjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTI7CgogICAgICByZXR1cm4gc3RkOjpfX3VuaW5pdGlh
bGl6ZWRfY29weTwoX19pc190cml2aWFsKF9WYWx1ZVR5cGUxKQogICAgICYmIF9faXNfdHJpdmlh
bChfVmFsdWVUeXBlMikpPjo6CiBfX3VuaW5pdF9jb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1
bHQpOwogICAgfQoKCiAgdGVtcGxhdGU8Ym9vbCBfVHJpdmlhbFZhbHVlVHlwZT4KICAgIHN0cnVj
dCBfX3VuaW5pdGlhbGl6ZWRfZmlsbAogICAgewogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9y
d2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfVHA+CiAgICAgICAgc3RhdGljIHZvaWQKICAgICAgICBf
X3VuaW5pdF9maWxsKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBf
X2xhc3QsCiAgICAgICAgY29uc3QgX1RwJiBfX3gpCiAgICAgICAgewogICBfRm9yd2FyZEl0ZXJh
dG9yIF9fY3VyID0gX19maXJzdDsKICAgaWYgKHRydWUpCiAgICAgewogICAgICAgZm9yICg7IF9f
Y3VyICE9IF9fbGFzdDsgKytfX2N1cikKICBzdGQ6Ol9Db25zdHJ1Y3Qoc3RkOjpfX2FkZHJlc3Nv
ZigqX19jdXIpLCBfX3gpOwogICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsKICAgICAgIHN0ZDo6
X0Rlc3Ryb3koX19maXJzdCwgX19jdXIpOwogICAgICAgOwogICAgIH0KIH0KICAgIH07CgogIHRl
bXBsYXRlPD4KICAgIHN0cnVjdCBfX3VuaW5pdGlhbGl6ZWRfZmlsbDx0cnVlPgogICAgewogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfVHA+CiAgICAg
ICAgc3RhdGljIHZvaWQKICAgICAgICBfX3VuaW5pdF9maWxsKF9Gb3J3YXJkSXRlcmF0b3IgX19m
aXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgY29uc3QgX1RwJiBfX3gpCiAg
ICAgICAgeyBzdGQ6OmZpbGwoX19maXJzdCwgX19sYXN0LCBfX3gpOyB9CiAgICB9OwojIDE2MiAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3Rs
X3VuaW5pdGlhbGl6ZWQuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3Is
IHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSB2b2lkCiAgICB1bmluaXRpYWxpemVkX2ZpbGwoX0Zv
cndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgICAg
Y29uc3QgX1RwJiBfX3gpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJh
aXRzPF9Gb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBlOwoKICAgICAgc3Rk
OjpfX3VuaW5pdGlhbGl6ZWRfZmlsbDxfX2lzX3RyaXZpYWwoX1ZhbHVlVHlwZSk+OjoKIF9fdW5p
bml0X2ZpbGwoX19maXJzdCwgX19sYXN0LCBfX3gpOwogICAgfQoKCiAgdGVtcGxhdGU8Ym9vbCBf
VHJpdmlhbFZhbHVlVHlwZT4KICAgIHN0cnVjdCBfX3VuaW5pdGlhbGl6ZWRfZmlsbF9uCiAgICB7
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9TaXpl
LCB0eXBlbmFtZSBfVHA+CiAgICAgICAgc3RhdGljIHZvaWQKICAgICAgICBfX3VuaW5pdF9maWxs
X24oX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfU2l6ZSBfX24sCiAgIGNvbnN0IF9UcCYgX194
KQogICAgICAgIHsKICAgX0ZvcndhcmRJdGVyYXRvciBfX2N1ciA9IF9fZmlyc3Q7CiAgIGlmICh0
cnVlKQogICAgIHsKICAgICAgIGZvciAoOyBfX24gPiAwOyAtLV9fbiwgKytfX2N1cikKICBzdGQ6
Ol9Db25zdHJ1Y3Qoc3RkOjpfX2FkZHJlc3NvZigqX19jdXIpLCBfX3gpOwogICAgIH0KICAgaWYg
KGZhbHNlKQogICAgIHsKICAgICAgIHN0ZDo6X0Rlc3Ryb3koX19maXJzdCwgX19jdXIpOwogICAg
ICAgOwogICAgIH0KIH0KICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX3VuaW5pdGlh
bGl6ZWRfZmlsbF9uPHRydWU+CiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJk
SXRlcmF0b3IsIHR5cGVuYW1lIF9TaXplLCB0eXBlbmFtZSBfVHA+CiAgICAgICAgc3RhdGljIHZv
aWQKICAgICAgICBfX3VuaW5pdF9maWxsX24oX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfU2l6
ZSBfX24sCiAgIGNvbnN0IF9UcCYgX194KQogICAgICAgIHsgc3RkOjpmaWxsX24oX19maXJzdCwg
X19uLCBfX3gpOyB9CiAgICB9OwojIDIxNiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX3VuaW5pdGlhbGl6ZWQuaCIgMwogIHRlbXBsYXRl
PHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9TaXplLCB0eXBlbmFtZSBfVHA+
CiAgICBpbmxpbmUgdm9pZAogICAgdW5pbml0aWFsaXplZF9maWxsX24oX0ZvcndhcmRJdGVyYXRv
ciBfX2ZpcnN0LCBfU2l6ZSBfX24sIGNvbnN0IF9UcCYgX194KQogICAgewogICAgICB0eXBlZGVm
IHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZQog
X1ZhbHVlVHlwZTsKCiAgICAgIHN0ZDo6X191bmluaXRpYWxpemVkX2ZpbGxfbjxfX2lzX3RyaXZp
YWwoX1ZhbHVlVHlwZSk+OjoKIF9fdW5pbml0X2ZpbGxfbihfX2ZpcnN0LCBfX24sIF9feCk7CiAg
ICB9CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBf
Rm9yd2FyZEl0ZXJhdG9yLAogICAgdHlwZW5hbWUgX0FsbG9jYXRvcj4KICAgIF9Gb3J3YXJkSXRl
cmF0b3IKICAgIF9fdW5pbml0aWFsaXplZF9jb3B5X2EoX0lucHV0SXRlcmF0b3IgX19maXJzdCwg
X0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fcmVzdWx0LCBf
QWxsb2NhdG9yJiBfX2FsbG9jKQogICAgewogICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fY3VyID0g
X19yZXN1bHQ7CiAgICAgIGlmICh0cnVlKQogewogICB0eXBlZGVmIF9fZ251X2N4eDo6X19hbGxv
Y190cmFpdHM8X0FsbG9jYXRvcj4gX190cmFpdHM7CiAgIGZvciAoOyBfX2ZpcnN0ICE9IF9fbGFz
dDsgKytfX2ZpcnN0LCArK19fY3VyKQogICAgIF9fdHJhaXRzOjpjb25zdHJ1Y3QoX19hbGxvYywg
c3RkOjpfX2FkZHJlc3NvZigqX19jdXIpLCAqX19maXJzdCk7CiAgIHJldHVybiBfX2N1cjsKIH0K
ICAgICAgaWYgKGZhbHNlKQogewogICBzdGQ6Ol9EZXN0cm95KF9fcmVzdWx0LCBfX2N1ciwgX19h
bGxvYyk7CiAgIDsKIH0KICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3Is
IHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBfRm9y
d2FyZEl0ZXJhdG9yCiAgICBfX3VuaW5pdGlhbGl6ZWRfY29weV9hKF9JbnB1dEl0ZXJhdG9yIF9f
Zmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX3Jl
c3VsdCwgYWxsb2NhdG9yPF9UcD4mKQogICAgeyByZXR1cm4gc3RkOjp1bmluaXRpYWxpemVkX2Nv
cHkoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lu
cHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICB0eXBlbmFtZSBfQWxs
b2NhdG9yPgogICAgaW5saW5lIF9Gb3J3YXJkSXRlcmF0b3IKICAgIF9fdW5pbml0aWFsaXplZF9t
b3ZlX2EoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAg
ICBfRm9yd2FyZEl0ZXJhdG9yIF9fcmVzdWx0LCBfQWxsb2NhdG9yJiBfX2FsbG9jKQogICAgewog
ICAgICByZXR1cm4gc3RkOjpfX3VuaW5pdGlhbGl6ZWRfY29weV9hKHN0ZDo6bWFrZV9tb3ZlX2l0
ZXJhdG9yKF9fZmlyc3QpLAogICAgICBzdGQ6Om1ha2VfbW92ZV9pdGVyYXRvcihfX2xhc3QpLAog
ICAgICBfX3Jlc3VsdCwgX19hbGxvYyk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1
dEl0ZXJhdG9yLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgdHlwZW5hbWUgX0FsbG9j
YXRvcj4KICAgIGlubGluZSBfRm9yd2FyZEl0ZXJhdG9yCiAgICBfX3VuaW5pdGlhbGl6ZWRfbW92
ZV9pZl9ub2V4Y2VwdF9hKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICAgICAgX0lucHV0
SXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19yZXN1bHQsCiAg
ICAgICAgICAgX0FsbG9jYXRvciYgX19hbGxvYykKICAgIHsKICAgICAgcmV0dXJuIHN0ZDo6X191
bmluaXRpYWxpemVkX2NvcHlfYQogKHN0ZDo6X19tYWtlX21vdmVfaWZfbm9leGNlcHRfaXRlcmF0
b3IoX19maXJzdCksCiAgc3RkOjpfX21ha2VfbW92ZV9pZl9ub2V4Y2VwdF9pdGVyYXRvcihfX2xh
c3QpLCBfX3Jlc3VsdCwgX19hbGxvYyk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3
YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9jYXRvcj4KICAgIHZvaWQK
ICAgIF9fdW5pbml0aWFsaXplZF9maWxsX2EoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9y
d2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgY29uc3QgX1RwJiBfX3gsIF9BbGxvY2F0b3ImIF9f
YWxsb2MpCiAgICB7CiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19jdXIgPSBfX2ZpcnN0OwogICAg
ICBpZiAodHJ1ZSkKIHsKICAgdHlwZWRlZiBfX2dudV9jeHg6Ol9fYWxsb2NfdHJhaXRzPF9BbGxv
Y2F0b3I+IF9fdHJhaXRzOwogICBmb3IgKDsgX19jdXIgIT0gX19sYXN0OyArK19fY3VyKQogICAg
IF9fdHJhaXRzOjpjb25zdHJ1Y3QoX19hbGxvYywgc3RkOjpfX2FkZHJlc3NvZigqX19jdXIpLCBf
X3gpOwogfQogICAgICBpZiAoZmFsc2UpCiB7CiAgIHN0ZDo6X0Rlc3Ryb3koX19maXJzdCwgX19j
dXIsIF9fYWxsb2MpOwogICA7CiB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJk
SXRlcmF0b3IsIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1RwMj4KICAgIGlubGluZSB2b2lkCiAg
ICBfX3VuaW5pdGlhbGl6ZWRfZmlsbF9hKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0Zvcndh
cmRJdGVyYXRvciBfX2xhc3QsCiAgICAgIGNvbnN0IF9UcCYgX194LCBhbGxvY2F0b3I8X1RwMj4m
KQogICAgeyBzdGQ6OnVuaW5pdGlhbGl6ZWRfZmlsbChfX2ZpcnN0LCBfX2xhc3QsIF9feCk7IH0K
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1NpemUsIHR5
cGVuYW1lIF9UcCwKICAgIHR5cGVuYW1lIF9BbGxvY2F0b3I+CiAgICB2b2lkCiAgICBfX3VuaW5p
dGlhbGl6ZWRfZmlsbF9uX2EoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfU2l6ZSBfX24sCiAg
ICAgICAgY29uc3QgX1RwJiBfX3gsIF9BbGxvY2F0b3ImIF9fYWxsb2MpCiAgICB7CiAgICAgIF9G
b3J3YXJkSXRlcmF0b3IgX19jdXIgPSBfX2ZpcnN0OwogICAgICBpZiAodHJ1ZSkKIHsKICAgdHlw
ZWRlZiBfX2dudV9jeHg6Ol9fYWxsb2NfdHJhaXRzPF9BbGxvY2F0b3I+IF9fdHJhaXRzOwogICBm
b3IgKDsgX19uID4gMDsgLS1fX24sICsrX19jdXIpCiAgICAgX190cmFpdHM6OmNvbnN0cnVjdChf
X2FsbG9jLCBzdGQ6Ol9fYWRkcmVzc29mKCpfX2N1ciksIF9feCk7CiB9CiAgICAgIGlmIChmYWxz
ZSkKIHsKICAgc3RkOjpfRGVzdHJveShfX2ZpcnN0LCBfX2N1ciwgX19hbGxvYyk7CiAgIDsKIH0K
ICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1Np
emUsIHR5cGVuYW1lIF9UcCwKICAgIHR5cGVuYW1lIF9UcDI+CiAgICBpbmxpbmUgdm9pZAogICAg
X191bmluaXRpYWxpemVkX2ZpbGxfbl9hKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX1NpemUg
X19uLAogICAgICAgIGNvbnN0IF9UcCYgX194LCBhbGxvY2F0b3I8X1RwMj4mKQogICAgeyBzdGQ6
OnVuaW5pdGlhbGl6ZWRfZmlsbF9uKF9fZmlyc3QsIF9fbiwgX194KTsgfQojIDM0NiAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX3VuaW5p
dGlhbGl6ZWQuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMSwgdHlwZW5h
bWUgX0lucHV0SXRlcmF0b3IyLAogICAgdHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5h
bWUgX0FsbG9jYXRvcj4KICAgIGlubGluZSBfRm9yd2FyZEl0ZXJhdG9yCiAgICBfX3VuaW5pdGlh
bGl6ZWRfY29weV9tb3ZlKF9JbnB1dEl0ZXJhdG9yMSBfX2ZpcnN0MSwKICAgICAgICAgX0lucHV0
SXRlcmF0b3IxIF9fbGFzdDEsCiAgICAgICAgIF9JbnB1dEl0ZXJhdG9yMiBfX2ZpcnN0MiwKICAg
ICAgICAgX0lucHV0SXRlcmF0b3IyIF9fbGFzdDIsCiAgICAgICAgIF9Gb3J3YXJkSXRlcmF0b3Ig
X19yZXN1bHQsCiAgICAgICAgIF9BbGxvY2F0b3ImIF9fYWxsb2MpCiAgICB7CiAgICAgIF9Gb3J3
YXJkSXRlcmF0b3IgX19taWQgPSBzdGQ6Ol9fdW5pbml0aWFsaXplZF9jb3B5X2EoX19maXJzdDEs
IF9fbGFzdDEsCiAgICAgICAgICBfX3Jlc3VsdCwKICAgICAgICAgIF9fYWxsb2MpOwogICAgICBp
ZiAodHJ1ZSkKIHsKICAgcmV0dXJuIHN0ZDo6X191bmluaXRpYWxpemVkX21vdmVfYShfX2ZpcnN0
MiwgX19sYXN0MiwgX19taWQsIF9fYWxsb2MpOwogfQogICAgICBpZiAoZmFsc2UpCiB7CiAgIHN0
ZDo6X0Rlc3Ryb3koX19yZXN1bHQsIF9fbWlkLCBfX2FsbG9jKTsKICAgOwogfQogICAgfQoKCgoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBfSW5wdXRJdGVy
YXRvcjIsCiAgICB0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfQWxsb2NhdG9y
PgogICAgaW5saW5lIF9Gb3J3YXJkSXRlcmF0b3IKICAgIF9fdW5pbml0aWFsaXplZF9tb3ZlX2Nv
cHkoX0lucHV0SXRlcmF0b3IxIF9fZmlyc3QxLAogICAgICAgICBfSW5wdXRJdGVyYXRvcjEgX19s
YXN0MSwKICAgICAgICAgX0lucHV0SXRlcmF0b3IyIF9fZmlyc3QyLAogICAgICAgICBfSW5wdXRJ
dGVyYXRvcjIgX19sYXN0MiwKICAgICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX3Jlc3VsdCwKICAg
ICAgICAgX0FsbG9jYXRvciYgX19hbGxvYykKICAgIHsKICAgICAgX0ZvcndhcmRJdGVyYXRvciBf
X21pZCA9IHN0ZDo6X191bmluaXRpYWxpemVkX21vdmVfYShfX2ZpcnN0MSwgX19sYXN0MSwKICAg
ICAgICAgIF9fcmVzdWx0LAogICAgICAgICAgX19hbGxvYyk7CiAgICAgIGlmICh0cnVlKQogewog
ICByZXR1cm4gc3RkOjpfX3VuaW5pdGlhbGl6ZWRfY29weV9hKF9fZmlyc3QyLCBfX2xhc3QyLCBf
X21pZCwgX19hbGxvYyk7CiB9CiAgICAgIGlmIChmYWxzZSkKIHsKICAgc3RkOjpfRGVzdHJveShf
X3Jlc3VsdCwgX19taWQsIF9fYWxsb2MpOwogICA7CiB9CiAgICB9CgoKCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0lucHV0SXRl
cmF0b3IsCiAgICB0eXBlbmFtZSBfQWxsb2NhdG9yPgogICAgaW5saW5lIF9Gb3J3YXJkSXRlcmF0
b3IKICAgIF9fdW5pbml0aWFsaXplZF9maWxsX21vdmUoX0ZvcndhcmRJdGVyYXRvciBfX3Jlc3Vs
dCwgX0ZvcndhcmRJdGVyYXRvciBfX21pZCwKICAgICAgICAgY29uc3QgX1RwJiBfX3gsIF9JbnB1
dEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICAgIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwgX0FsbG9j
YXRvciYgX19hbGxvYykKICAgIHsKICAgICAgc3RkOjpfX3VuaW5pdGlhbGl6ZWRfZmlsbF9hKF9f
cmVzdWx0LCBfX21pZCwgX194LCBfX2FsbG9jKTsKICAgICAgaWYgKHRydWUpCiB7CiAgIHJldHVy
biBzdGQ6Ol9fdW5pbml0aWFsaXplZF9tb3ZlX2EoX19maXJzdCwgX19sYXN0LCBfX21pZCwgX19h
bGxvYyk7CiB9CiAgICAgIGlmIChmYWxzZSkKIHsKICAgc3RkOjpfRGVzdHJveShfX3Jlc3VsdCwg
X19taWQsIF9fYWxsb2MpOwogICA7CiB9CiAgICB9CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9J
bnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfVHAsCiAg
ICB0eXBlbmFtZSBfQWxsb2NhdG9yPgogICAgaW5saW5lIHZvaWQKICAgIF9fdW5pbml0aWFsaXpl
ZF9tb3ZlX2ZpbGwoX0lucHV0SXRlcmF0b3IgX19maXJzdDEsIF9JbnB1dEl0ZXJhdG9yIF9fbGFz
dDEsCiAgICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdDIsCiAgICAgICAgIF9Gb3J3YXJk
SXRlcmF0b3IgX19sYXN0MiwgY29uc3QgX1RwJiBfX3gsCiAgICAgICAgIF9BbGxvY2F0b3ImIF9f
YWxsb2MpCiAgICB7CiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19taWQyID0gc3RkOjpfX3VuaW5p
dGlhbGl6ZWRfbW92ZV9hKF9fZmlyc3QxLCBfX2xhc3QxLAogICAgICAgICAgIF9fZmlyc3QyLAog
ICAgICAgICAgIF9fYWxsb2MpOwogICAgICBpZiAodHJ1ZSkKIHsKICAgc3RkOjpfX3VuaW5pdGlh
bGl6ZWRfZmlsbF9hKF9fbWlkMiwgX19sYXN0MiwgX194LCBfX2FsbG9jKTsKIH0KICAgICAgaWYg
KGZhbHNlKQogewogICBzdGQ6Ol9EZXN0cm95KF9fZmlyc3QyLCBfX21pZDIsIF9fYWxsb2MpOwog
ICA7CiB9CiAgICB9CgoKCgoKICB0ZW1wbGF0ZTxib29sIF9Ucml2aWFsVmFsdWVUeXBlPgogICAg
c3RydWN0IF9fdW5pbml0aWFsaXplZF9kZWZhdWx0XzEKICAgIHsKICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0ZvcndhcmRJdGVyYXRvcj4KICAgICAgICBzdGF0aWMgdm9pZAogICAgICAgIF9fdW5p
bml0X2RlZmF1bHQoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9f
bGFzdCkKICAgICAgICB7CiAgIF9Gb3J3YXJkSXRlcmF0b3IgX19jdXIgPSBfX2ZpcnN0OwogICBp
ZiAodHJ1ZSkKICAgICB7CiAgICAgICBmb3IgKDsgX19jdXIgIT0gX19sYXN0OyArK19fY3VyKQog
IHN0ZDo6X0NvbnN0cnVjdChzdGQ6Ol9fYWRkcmVzc29mKCpfX2N1cikpOwogICAgIH0KICAgaWYg
KGZhbHNlKQogICAgIHsKICAgICAgIHN0ZDo6X0Rlc3Ryb3koX19maXJzdCwgX19jdXIpOwogICAg
ICAgOwogICAgIH0KIH0KICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX3VuaW5pdGlh
bGl6ZWRfZGVmYXVsdF8xPHRydWU+CiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3
YXJkSXRlcmF0b3I+CiAgICAgICAgc3RhdGljIHZvaWQKICAgICAgICBfX3VuaW5pdF9kZWZhdWx0
KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QpCiAgICAg
ICAgewogICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXJhdG9y
Pjo6dmFsdWVfdHlwZQogICAgIF9WYWx1ZVR5cGU7CgogICBzdGQ6OmZpbGwoX19maXJzdCwgX19s
YXN0LCBfVmFsdWVUeXBlKCkpOwogfQogICAgfTsKCiAgdGVtcGxhdGU8Ym9vbCBfVHJpdmlhbFZh
bHVlVHlwZT4KICAgIHN0cnVjdCBfX3VuaW5pdGlhbGl6ZWRfZGVmYXVsdF9uXzEKICAgIHsKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1NpemU+CiAg
ICAgICAgc3RhdGljIHZvaWQKICAgICAgICBfX3VuaW5pdF9kZWZhdWx0X24oX0ZvcndhcmRJdGVy
YXRvciBfX2ZpcnN0LCBfU2l6ZSBfX24pCiAgICAgICAgewogICBfRm9yd2FyZEl0ZXJhdG9yIF9f
Y3VyID0gX19maXJzdDsKICAgaWYgKHRydWUpCiAgICAgewogICAgICAgZm9yICg7IF9fbiA+IDA7
IC0tX19uLCArK19fY3VyKQogIHN0ZDo6X0NvbnN0cnVjdChzdGQ6Ol9fYWRkcmVzc29mKCpfX2N1
cikpOwogICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsKICAgICAgIHN0ZDo6X0Rlc3Ryb3koX19m
aXJzdCwgX19jdXIpOwogICAgICAgOwogICAgIH0KIH0KICAgIH07CgogIHRlbXBsYXRlPD4KICAg
IHN0cnVjdCBfX3VuaW5pdGlhbGl6ZWRfZGVmYXVsdF9uXzE8dHJ1ZT4KICAgIHsKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1NpemU+CiAgICAgICAg
c3RhdGljIHZvaWQKICAgICAgICBfX3VuaW5pdF9kZWZhdWx0X24oX0ZvcndhcmRJdGVyYXRvciBf
X2ZpcnN0LCBfU2l6ZSBfX24pCiAgICAgICAgewogICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9y
X3RyYWl0czxfRm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZQogICAgIF9WYWx1ZVR5cGU7Cgog
ICBzdGQ6OmZpbGxfbihfX2ZpcnN0LCBfX24sIF9WYWx1ZVR5cGUoKSk7CiB9CiAgICB9OwoKCgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yPgogICAgaW5saW5lIHZvaWQKICAg
IF9fdW5pbml0aWFsaXplZF9kZWZhdWx0KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwKICAgICAg
IF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTsK
CiAgICAgIHN0ZDo6X191bmluaXRpYWxpemVkX2RlZmF1bHRfMTxfX2lzX3RyaXZpYWwoX1ZhbHVl
VHlwZSk+OjoKIF9fdW5pbml0X2RlZmF1bHQoX19maXJzdCwgX19sYXN0KTsKICAgIH0KCgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfU2l6ZT4KICAgIGlu
bGluZSB2b2lkCiAgICBfX3VuaW5pdGlhbGl6ZWRfZGVmYXVsdF9uKF9Gb3J3YXJkSXRlcmF0b3Ig
X19maXJzdCwgX1NpemUgX19uKQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9y
X3RyYWl0czxfRm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTsKCiAgICAg
IHN0ZDo6X191bmluaXRpYWxpemVkX2RlZmF1bHRfbl8xPF9faXNfdHJpdmlhbChfVmFsdWVUeXBl
KT46OgogX191bmluaXRfZGVmYXVsdF9uKF9fZmlyc3QsIF9fbik7CiAgICB9CgoKCgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfQWxsb2NhdG9yPgogICAg
dm9pZAogICAgX191bmluaXRpYWxpemVkX2RlZmF1bHRfYShfRm9yd2FyZEl0ZXJhdG9yIF9fZmly
c3QsCiAgICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgICAgICBfQWxsb2NhdG9y
JiBfX2FsbG9jKQogICAgewogICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fY3VyID0gX19maXJzdDsK
ICAgICAgaWYgKHRydWUpCiB7CiAgIHR5cGVkZWYgX19nbnVfY3h4OjpfX2FsbG9jX3RyYWl0czxf
QWxsb2NhdG9yPiBfX3RyYWl0czsKICAgZm9yICg7IF9fY3VyICE9IF9fbGFzdDsgKytfX2N1cikK
ICAgICBfX3RyYWl0czo6Y29uc3RydWN0KF9fYWxsb2MsIHN0ZDo6X19hZGRyZXNzb2YoKl9fY3Vy
KSk7CiB9CiAgICAgIGlmIChmYWxzZSkKIHsKICAgc3RkOjpfRGVzdHJveShfX2ZpcnN0LCBfX2N1
ciwgX19hbGxvYyk7CiAgIDsKIH0KICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJ
dGVyYXRvciwgdHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHZvaWQKICAgIF9fdW5pbml0aWFsaXpl
ZF9kZWZhdWx0X2EoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LAogICAgICAgICBfRm9yd2FyZEl0
ZXJhdG9yIF9fbGFzdCwKICAgICAgICAgYWxsb2NhdG9yPF9UcD4mKQogICAgeyBzdGQ6Ol9fdW5p
bml0aWFsaXplZF9kZWZhdWx0KF9fZmlyc3QsIF9fbGFzdCk7IH0KCgoKCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9TaXplLCB0eXBlbmFtZSBfQWxsb2Nh
dG9yPgogICAgdm9pZAogICAgX191bmluaXRpYWxpemVkX2RlZmF1bHRfbl9hKF9Gb3J3YXJkSXRl
cmF0b3IgX19maXJzdCwgX1NpemUgX19uLAogICAgX0FsbG9jYXRvciYgX19hbGxvYykKICAgIHsK
ICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX2N1ciA9IF9fZmlyc3Q7CiAgICAgIGlmICh0cnVlKQog
ewogICB0eXBlZGVmIF9fZ251X2N4eDo6X19hbGxvY190cmFpdHM8X0FsbG9jYXRvcj4gX190cmFp
dHM7CiAgIGZvciAoOyBfX24gPiAwOyAtLV9fbiwgKytfX2N1cikKICAgICBfX3RyYWl0czo6Y29u
c3RydWN0KF9fYWxsb2MsIHN0ZDo6X19hZGRyZXNzb2YoKl9fY3VyKSk7CiB9CiAgICAgIGlmIChm
YWxzZSkKIHsKICAgc3RkOjpfRGVzdHJveShfX2ZpcnN0LCBfX2N1ciwgX19hbGxvYyk7CiAgIDsK
IH0KICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUg
X1NpemUsIHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSB2b2lkCiAgICBfX3VuaW5pdGlhbGl6ZWRf
ZGVmYXVsdF9uX2EoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfU2l6ZSBfX24sCiAgICBhbGxv
Y2F0b3I8X1RwPiYpCiAgICB7IHN0ZDo6X191bmluaXRpYWxpemVkX2RlZmF1bHRfbihfX2ZpcnN0
LCBfX24pOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUg
X1NpemUsCiAgICB0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yPgogICAgX0ZvcndhcmRJdGVyYXRv
cgogICAgX191bmluaXRpYWxpemVkX2NvcHlfbihfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfU2l6
ZSBfX24sCiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19yZXN1bHQsIGlucHV0X2l0ZXJhdG9yX3Rh
ZykKICAgIHsKICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX2N1ciA9IF9fcmVzdWx0OwogICAgICBp
ZiAodHJ1ZSkKIHsKICAgZm9yICg7IF9fbiA+IDA7IC0tX19uLCArK19fZmlyc3QsICsrX19jdXIp
CiAgICAgc3RkOjpfQ29uc3RydWN0KHN0ZDo6X19hZGRyZXNzb2YoKl9fY3VyKSwgKl9fZmlyc3Qp
OwogICByZXR1cm4gX19jdXI7CiB9CiAgICAgIGlmIChmYWxzZSkKIHsKICAgc3RkOjpfRGVzdHJv
eShfX3Jlc3VsdCwgX19jdXIpOwogICA7CiB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9S
YW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX1NpemUsCiAgICB0eXBlbmFtZSBfRm9yd2Fy
ZEl0ZXJhdG9yPgogICAgaW5saW5lIF9Gb3J3YXJkSXRlcmF0b3IKICAgIF9fdW5pbml0aWFsaXpl
ZF9jb3B5X24oX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9TaXplIF9fbiwKICAgICAg
X0ZvcndhcmRJdGVyYXRvciBfX3Jlc3VsdCwKICAgICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90
YWcpCiAgICB7IHJldHVybiBzdGQ6OnVuaW5pdGlhbGl6ZWRfY29weShfX2ZpcnN0LCBfX2ZpcnN0
ICsgX19uLCBfX3Jlc3VsdCk7IH0KIyA2NDUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF91bmluaXRpYWxpemVkLmgiIDMKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX1NpemUsIHR5cGVuYW1lIF9Gb3J3
YXJkSXRlcmF0b3I+CiAgICBpbmxpbmUgX0ZvcndhcmRJdGVyYXRvcgogICAgdW5pbml0aWFsaXpl
ZF9jb3B5X24oX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX1NpemUgX19uLAogICAgX0ZvcndhcmRJ
dGVyYXRvciBfX3Jlc3VsdCkKICAgIHsgcmV0dXJuIHN0ZDo6X191bmluaXRpYWxpemVkX2NvcHlf
bihfX2ZpcnN0LCBfX24sIF9fcmVzdWx0LAogICAgICBzdGQ6Ol9faXRlcmF0b3JfY2F0ZWdvcnko
X19maXJzdCkpOyB9CgoKCn0KIyA2NiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOC4xL21lbW9yeSIgMiAzCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX3RlbXBidWYuaCIgMSAzCiMgNjIgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF90
ZW1wYnVmLmgiIDMKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18g
KCJkZWZhdWx0IikpKQp7CgojIDgzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC44LjEvYml0cy9zdGxfdGVtcGJ1Zi5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgcGFpcjxfVHAqLCBwdHJkaWZmX3Q+CiAgICBnZXRfdGVtcG9yYXJ5X2J1ZmZlcihw
dHJkaWZmX3QgX19sZW4pIG5vZXhjZXB0CiAgICB7CiAgICAgIGNvbnN0IHB0cmRpZmZfdCBfX21h
eCA9CiBfX2dudV9jeHg6Ol9fbnVtZXJpY190cmFpdHM8cHRyZGlmZl90Pjo6X19tYXggLyBzaXpl
b2YoX1RwKTsKICAgICAgaWYgKF9fbGVuID4gX19tYXgpCiBfX2xlbiA9IF9fbWF4OwoKICAgICAg
d2hpbGUgKF9fbGVuID4gMCkKIHsKICAgX1RwKiBfX3RtcCA9IHN0YXRpY19jYXN0PF9UcCo+KDo6
b3BlcmF0b3IgbmV3KF9fbGVuICogc2l6ZW9mKF9UcCksCiAgICAgICBzdGQ6Om5vdGhyb3cpKTsK
ICAgaWYgKF9fdG1wICE9IDApCiAgICAgcmV0dXJuIHN0ZDo6cGFpcjxfVHAqLCBwdHJkaWZmX3Q+
KF9fdG1wLCBfX2xlbik7CiAgIF9fbGVuIC89IDI7CiB9CiAgICAgIHJldHVybiBzdGQ6OnBhaXI8
X1RwKiwgcHRyZGlmZl90PihzdGF0aWNfY2FzdDxfVHAqPigwKSwgMCk7CiAgICB9CiMgMTEwICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxf
dGVtcGJ1Zi5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHZvaWQKICAg
IHJldHVybl90ZW1wb3JhcnlfYnVmZmVyKF9UcCogX19wKQogICAgeyA6Om9wZXJhdG9yIGRlbGV0
ZShfX3AsIHN0ZDo6bm90aHJvdyk7IH0KCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zvcndh
cmRJdGVyYXRvciwgdHlwZW5hbWUgX1RwPgogICAgY2xhc3MgX1RlbXBvcmFyeV9idWZmZXIKICAg
IHsKCiAgICAgCgogICAgcHVibGljOgogICAgICB0eXBlZGVmIF9UcCB2YWx1ZV90eXBlOwogICAg
ICB0eXBlZGVmIHZhbHVlX3R5cGUqIHBvaW50ZXI7CiAgICAgIHR5cGVkZWYgcG9pbnRlciBpdGVy
YXRvcjsKICAgICAgdHlwZWRlZiBwdHJkaWZmX3Qgc2l6ZV90eXBlOwoKICAgIHByb3RlY3RlZDoK
ICAgICAgc2l6ZV90eXBlIF9NX29yaWdpbmFsX2xlbjsKICAgICAgc2l6ZV90eXBlIF9NX2xlbjsK
ICAgICAgcG9pbnRlciBfTV9idWZmZXI7CgogICAgcHVibGljOgoKICAgICAgc2l6ZV90eXBlCiAg
ICAgIHNpemUoKSBjb25zdAogICAgICB7IHJldHVybiBfTV9sZW47IH0KCgogICAgICBzaXplX3R5
cGUKICAgICAgcmVxdWVzdGVkX3NpemUoKSBjb25zdAogICAgICB7IHJldHVybiBfTV9vcmlnaW5h
bF9sZW47IH0KCgogICAgICBpdGVyYXRvcgogICAgICBiZWdpbigpCiAgICAgIHsgcmV0dXJuIF9N
X2J1ZmZlcjsgfQoKCiAgICAgIGl0ZXJhdG9yCiAgICAgIGVuZCgpCiAgICAgIHsgcmV0dXJuIF9N
X2J1ZmZlciArIF9NX2xlbjsgfQoKCgoKCiAgICAgIF9UZW1wb3JhcnlfYnVmZmVyKF9Gb3J3YXJk
SXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QpOwoKICAgICAgfl9UZW1w
b3JhcnlfYnVmZmVyKCkKICAgICAgewogc3RkOjpfRGVzdHJveShfTV9idWZmZXIsIF9NX2J1ZmZl
ciArIF9NX2xlbik7CiBzdGQ6OnJldHVybl90ZW1wb3JhcnlfYnVmZmVyKF9NX2J1ZmZlcik7CiAg
ICAgIH0KCiAgICBwcml2YXRlOgoKICAgICAgX1RlbXBvcmFyeV9idWZmZXIoY29uc3QgX1RlbXBv
cmFyeV9idWZmZXImKTsKCiAgICAgIHZvaWQKICAgICAgb3BlcmF0b3I9KGNvbnN0IF9UZW1wb3Jh
cnlfYnVmZmVyJik7CiAgICB9OwoKCiAgdGVtcGxhdGU8Ym9vbD4KICAgIHN0cnVjdCBfX3VuaW5p
dGlhbGl6ZWRfY29uc3RydWN0X2J1Zl9kaXNwYXRjaAogICAgewogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUG9pbnRlciwgdHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcj4KICAgICAgICBzdGF0aWMg
dm9pZAogICAgICAgIF9fdWNyKF9Qb2ludGVyIF9fZmlyc3QsIF9Qb2ludGVyIF9fbGFzdCwKICAg
ICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19zZWVkKQogICAgICAgIHsKICAgaWYoX19maXJzdCA9PSBf
X2xhc3QpCiAgICAgcmV0dXJuOwoKICAgX1BvaW50ZXIgX19jdXIgPSBfX2ZpcnN0OwogICBpZiAo
dHJ1ZSkKICAgICB7CiAgICAgICBzdGQ6Ol9Db25zdHJ1Y3Qoc3RkOjpfX2FkZHJlc3NvZigqX19m
aXJzdCksCiAgICAgICAgIHN0ZDo6bW92ZSgqX19zZWVkKSk7CiAgICAgICBfUG9pbnRlciBfX3By
ZXYgPSBfX2N1cjsKICAgICAgICsrX19jdXI7CiAgICAgICBmb3IoOyBfX2N1ciAhPSBfX2xhc3Q7
ICsrX19jdXIsICsrX19wcmV2KQogIHN0ZDo6X0NvbnN0cnVjdChzdGQ6Ol9fYWRkcmVzc29mKCpf
X2N1ciksCiAgICBzdGQ6Om1vdmUoKl9fcHJldikpOwogICAgICAgKl9fc2VlZCA9IHN0ZDo6bW92
ZSgqX19wcmV2KTsKICAgICB9CiAgIGlmIChmYWxzZSkKICAgICB7CiAgICAgICBzdGQ6Ol9EZXN0
cm95KF9fZmlyc3QsIF9fY3VyKTsKICAgICAgIDsKICAgICB9CiB9CiAgICB9OwoKICB0ZW1wbGF0
ZTw+CiAgICBzdHJ1Y3QgX191bmluaXRpYWxpemVkX2NvbnN0cnVjdF9idWZfZGlzcGF0Y2g8dHJ1
ZT4KICAgIHsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1BvaW50ZXIsIHR5cGVuYW1lIF9Gb3J3
YXJkSXRlcmF0b3I+CiAgICAgICAgc3RhdGljIHZvaWQKICAgICAgICBfX3VjcihfUG9pbnRlciwg
X1BvaW50ZXIsIF9Gb3J3YXJkSXRlcmF0b3IpIHsgfQogICAgfTsKIyAyMjkgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF90ZW1wYnVmLmgi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUG9pbnRlciwgdHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRv
cj4KICAgIGlubGluZSB2b2lkCiAgICBfX3VuaW5pdGlhbGl6ZWRfY29uc3RydWN0X2J1ZihfUG9p
bnRlciBfX2ZpcnN0LCBfUG9pbnRlciBfX2xhc3QsCiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19z
ZWVkKQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPF9Q
b2ludGVyPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTsKCiAgICAgIHN0ZDo6X191bmluaXRpYWxp
emVkX2NvbnN0cnVjdF9idWZfZGlzcGF0Y2g8CiAgICAgICAgX19oYXNfdHJpdmlhbF9jb25zdHJ1
Y3RvcihfVmFsdWVUeXBlKT46OgogICBfX3VjcihfX2ZpcnN0LCBfX2xhc3QsIF9fc2VlZCk7CiAg
ICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9UcD4K
ICAgIF9UZW1wb3JhcnlfYnVmZmVyPF9Gb3J3YXJkSXRlcmF0b3IsIF9UcD46OgogICAgX1RlbXBv
cmFyeV9idWZmZXIoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9f
bGFzdCkKICAgIDogX01fb3JpZ2luYWxfbGVuKHN0ZDo6ZGlzdGFuY2UoX19maXJzdCwgX19sYXN0
KSksCiAgICAgIF9NX2xlbigwKSwgX01fYnVmZmVyKDApCiAgICB7CiAgICAgIGlmICh0cnVlKQog
ewogICBzdGQ6OnBhaXI8cG9pbnRlciwgc2l6ZV90eXBlPiBfX3Aoc3RkOjpnZXRfdGVtcG9yYXJ5
X2J1ZmZlcjwKICAgICAgICAgdmFsdWVfdHlwZT4oX01fb3JpZ2luYWxfbGVuKSk7CiAgIF9NX2J1
ZmZlciA9IF9fcC5maXJzdDsKICAgX01fbGVuID0gX19wLnNlY29uZDsKICAgaWYgKF9NX2J1ZmZl
cikKICAgICBzdGQ6Ol9fdW5pbml0aWFsaXplZF9jb25zdHJ1Y3RfYnVmKF9NX2J1ZmZlciwgX01f
YnVmZmVyICsgX01fbGVuLAogICAgICAgICAgICBfX2ZpcnN0KTsKIH0KICAgICAgaWYgKGZhbHNl
KQogewogICBzdGQ6OnJldHVybl90ZW1wb3JhcnlfYnVmZmVyKF9NX2J1ZmZlcik7CiAgIF9NX2J1
ZmZlciA9IDA7CiAgIF9NX2xlbiA9IDA7CiAgIDsKIH0KICAgIH0KCgp9CiMgNjcgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9tZW1vcnkiIDIgMwojIDEg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0
bF9yYXdfc3RvcmFnZV9pdGVyLmgiIDEgMwojIDU5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfcmF3X3N0b3JhZ2VfaXRlci5oIiAzCm5h
bWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkK
ewoKCgoKCgogIHRlbXBsYXRlIDxjbGFzcyBfT3V0cHV0SXRlcmF0b3IsIGNsYXNzIF9UcD4KICAg
IGNsYXNzIHJhd19zdG9yYWdlX2l0ZXJhdG9yCiAgICA6IHB1YmxpYyBpdGVyYXRvcjxvdXRwdXRf
aXRlcmF0b3JfdGFnLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkPgogICAgewogICAgcHJvdGVjdGVk
OgogICAgICBfT3V0cHV0SXRlcmF0b3IgX01faXRlcjsKCiAgICBwdWJsaWM6CiAgICAgIGV4cGxp
Y2l0CiAgICAgIHJhd19zdG9yYWdlX2l0ZXJhdG9yKF9PdXRwdXRJdGVyYXRvciBfX3gpCiAgICAg
IDogX01faXRlcihfX3gpIHt9CgogICAgICByYXdfc3RvcmFnZV9pdGVyYXRvciYKICAgICAgb3Bl
cmF0b3IqKCkgeyByZXR1cm4gKnRoaXM7IH0KCiAgICAgIHJhd19zdG9yYWdlX2l0ZXJhdG9yJgog
ICAgICBvcGVyYXRvcj0oY29uc3QgX1RwJiBfX2VsZW1lbnQpCiAgICAgIHsKIHN0ZDo6X0NvbnN0
cnVjdChzdGQ6Ol9fYWRkcmVzc29mKCpfTV9pdGVyKSwgX19lbGVtZW50KTsKIHJldHVybiAqdGhp
czsKICAgICAgfQoKICAgICAgcmF3X3N0b3JhZ2VfaXRlcmF0b3I8X091dHB1dEl0ZXJhdG9yLCBf
VHA+JgogICAgICBvcGVyYXRvcisrKCkKICAgICAgewogKytfTV9pdGVyOwogcmV0dXJuICp0aGlz
OwogICAgICB9CgogICAgICByYXdfc3RvcmFnZV9pdGVyYXRvcjxfT3V0cHV0SXRlcmF0b3IsIF9U
cD4KICAgICAgb3BlcmF0b3IrKyhpbnQpCiAgICAgIHsKIHJhd19zdG9yYWdlX2l0ZXJhdG9yPF9P
dXRwdXRJdGVyYXRvciwgX1RwPiBfX3RtcCA9ICp0aGlzOwogKytfTV9pdGVyOwogcmV0dXJuIF9f
dG1wOwogICAgICB9CiAgICB9OwoKCn0KIyA2OCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOC4xL21lbW9yeSIgMiAzCgoKCiMgMSAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL3R5cGVpbmZvIiAxIDMKIyAzMiAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44
LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL3R5cGVpbmZvIiAz
CiAgICAgICAKIyAzMyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOC4xL3R5cGVpbmZvIiAzCgoKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvaGFzaF9ieXRlcy5oIiAxIDMKIyAzMyAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvaGFzaF9ieXRlcy5o
IiAzCiAgICAgICAKIyAzNCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOC4xL2JpdHMvaGFzaF9ieXRlcy5oIiAzCgoKCm5hbWVzcGFjZSBzdGQKewoKCgoKCgoK
ICBzaXplX3QKICBfSGFzaF9ieXRlcyhjb25zdCB2b2lkKiBfX3B0ciwgc2l6ZV90IF9fbGVuLCBz
aXplX3QgX19zZWVkKTsKCgoKCgogIHNpemVfdAogIF9GbnZfaGFzaF9ieXRlcyhjb25zdCB2b2lk
KiBfX3B0ciwgc2l6ZV90IF9fbGVuLCBzaXplX3QgX19zZWVkKTsKCgp9CiMgMzcgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS90eXBlaW5mbyIgMiAzCgoK
I3ByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwdXNoKGRlZmF1bHQpCgpleHRlcm4gIkMrKyIgewoKbmFt
ZXNwYWNlIF9fY3h4YWJpdjEKewogIGNsYXNzIF9fY2xhc3NfdHlwZV9pbmZvOwp9CiMgODAgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS90eXBlaW5mbyIg
MwpuYW1lc3BhY2Ugc3RkCnsKCgoKCgoKICBjbGFzcyB0eXBlX2luZm8KICB7CiAgcHVibGljOgoK
CgoKICAgIHZpcnR1YWwgfnR5cGVfaW5mbygpOwoKCgogICAgY29uc3QgY2hhciogbmFtZSgpIGNv
bnN0IG5vZXhjZXB0CiAgICB7IHJldHVybiBfX25hbWVbMF0gPT0gJyonID8gX19uYW1lICsgMSA6
IF9fbmFtZTsgfQoKCgoKCiAgICBib29sIGJlZm9yZShjb25zdCB0eXBlX2luZm8mIF9fYXJnKSBj
b25zdCBub2V4Y2VwdDsKICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCB0eXBlX2luZm8mIF9fYXJn
KSBjb25zdCBub2V4Y2VwdDsKIyAxMzYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS90eXBlaW5mbyIgMwogICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHR5
cGVfaW5mbyYgX19hcmcpIGNvbnN0IG5vZXhjZXB0CiAgICB7IHJldHVybiAhb3BlcmF0b3I9PShf
X2FyZyk7IH0KCgogICAgc2l6ZV90IGhhc2hfY29kZSgpIGNvbnN0IG5vZXhjZXB0CiAgICB7Cgog
ICAgICByZXR1cm4gX0hhc2hfYnl0ZXMobmFtZSgpLCBfX2J1aWx0aW5fc3RybGVuKG5hbWUoKSks
CiAgICBzdGF0aWNfY2FzdDxzaXplX3Q+KDB4YzcwZjY5MDdVTCkpOwoKCgogICAgfQoKCgogICAg
dmlydHVhbCBib29sIF9faXNfcG9pbnRlcl9wKCkgY29uc3Q7CgoKICAgIHZpcnR1YWwgYm9vbCBf
X2lzX2Z1bmN0aW9uX3AoKSBjb25zdDsKCgoKCgoKCiAgICB2aXJ0dWFsIGJvb2wgX19kb19jYXRj
aChjb25zdCB0eXBlX2luZm8gKl9fdGhyX3R5cGUsIHZvaWQgKipfX3Rocl9vYmosCiAgICAgICB1
bnNpZ25lZCBfX291dGVyKSBjb25zdDsKCgogICAgdmlydHVhbCBib29sIF9fZG9fdXBjYXN0KGNv
bnN0IF9fY3h4YWJpdjE6Ol9fY2xhc3NfdHlwZV9pbmZvICpfX3RhcmdldCwKICAgICAgICB2b2lk
ICoqX19vYmpfcHRyKSBjb25zdDsKCiAgcHJvdGVjdGVkOgogICAgY29uc3QgY2hhciAqX19uYW1l
OwoKICAgIGV4cGxpY2l0IHR5cGVfaW5mbyhjb25zdCBjaGFyICpfX24pOiBfX25hbWUoX19uKSB7
IH0KCiAgcHJpdmF0ZToKCiAgICB0eXBlX2luZm8mIG9wZXJhdG9yPShjb25zdCB0eXBlX2luZm8m
KTsKICAgIHR5cGVfaW5mbyhjb25zdCB0eXBlX2luZm8mKTsKICB9OwoKCgoKCgoKICBjbGFzcyBi
YWRfY2FzdCA6IHB1YmxpYyBleGNlcHRpb24KICB7CiAgcHVibGljOgogICAgYmFkX2Nhc3QoKSBu
b2V4Y2VwdCB7IH0KCgoKICAgIHZpcnR1YWwgfmJhZF9jYXN0KCkgbm9leGNlcHQ7CgoKICAgIHZp
cnR1YWwgY29uc3QgY2hhciogd2hhdCgpIGNvbnN0IG5vZXhjZXB0OwogIH07CgoKCgoKICBjbGFz
cyBiYWRfdHlwZWlkIDogcHVibGljIGV4Y2VwdGlvbgogIHsKICBwdWJsaWM6CiAgICBiYWRfdHlw
ZWlkICgpIG5vZXhjZXB0IHsgfQoKCgogICAgdmlydHVhbCB+YmFkX3R5cGVpZCgpIG5vZXhjZXB0
OwoKCiAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHdoYXQoKSBjb25zdCBub2V4Y2VwdDsKICB9Owp9
Cgp9CgojcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHBvcAojIDcyICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvbWVtb3J5IiAyIDMKIyAxICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvaW9zZndkIiAxIDMKIyAzNiAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2lvc2Z3ZCIg
MwogICAgICAgCiMgMzcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjguMS9pb3Nmd2QiIDMKCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9iaXRzL3N0cmluZ2Z3ZC5oIiAxIDMKIyAzNyAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RyaW5nZndkLmgiIDMK
ICAgICAgIAojIDM4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC44LjEvYml0cy9zdHJpbmdmd2QuaCIgMwoKCgoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9f
ICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKCgoKCgoKICB0ZW1wbGF0ZTxjbGFz
cyBfQ2hhclQ+CiAgICBzdHJ1Y3QgY2hhcl90cmFpdHM7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4sCiAgICAgICAgICAg
dHlwZW5hbWUgX0FsbG9jID0gYWxsb2NhdG9yPF9DaGFyVD4gPgogICAgY2xhc3MgYmFzaWNfc3Ry
aW5nOwoKICB0ZW1wbGF0ZTw+IHN0cnVjdCBjaGFyX3RyYWl0czxjaGFyPjsKCgogIHR5cGVkZWYg
YmFzaWNfc3RyaW5nPGNoYXI+IHN0cmluZzsKCgogIHRlbXBsYXRlPD4gc3RydWN0IGNoYXJfdHJh
aXRzPHdjaGFyX3Q+OwoKCiAgdHlwZWRlZiBiYXNpY19zdHJpbmc8d2NoYXJfdD4gd3N0cmluZzsK
CgoKCgogIHRlbXBsYXRlPD4gc3RydWN0IGNoYXJfdHJhaXRzPGNoYXIxNl90PjsKICB0ZW1wbGF0
ZTw+IHN0cnVjdCBjaGFyX3RyYWl0czxjaGFyMzJfdD47CgoKICB0eXBlZGVmIGJhc2ljX3N0cmlu
ZzxjaGFyMTZfdD4gdTE2c3RyaW5nOwoKCiAgdHlwZWRlZiBiYXNpY19zdHJpbmc8Y2hhcjMyX3Q+
IHUzMnN0cmluZzsKCgoKCgp9CiMgNDAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9pb3Nmd2QiIDIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3Bvc3R5cGVzLmgiIDEgMwojIDM4ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljgu
MS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9wb3N0eXBl
cy5oIiAzCiAgICAgICAKIyAzOSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOC4xL2JpdHMvcG9zdHlwZXMuaCIgMwoKIyAxICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvY3djaGFyIiAxIDMKIyAzOSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2N3Y2hhciIgMwogICAgICAg
CiMgNDAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9j
d2NoYXIiIDMKCgoKCiMgMSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1I
Ri91c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMgNAojIDM3ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1
bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMgNAojIDEgIi9tbnQvc3Rv
cmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMSAz
IDQKIyA0NSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5j
bHVkZS9zdGRpby5oIiAzIDQKc3RydWN0IF9JT19GSUxFOwoKCgp0eXBlZGVmIHN0cnVjdCBfSU9f
RklMRSBGSUxFOwoKCgoKCiMgNjUgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4t
QVJNSEYvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIF9f
RklMRTsKIyAzOCAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3Iv
aW5jbHVkZS93Y2hhci5oIiAyIDMgNAojIDUyICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBh
bmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMgNAojIDEgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2xpYi9nY2Mv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMg
MzUzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjguMS9saWIvZ2NjL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS80LjguMS9pbmNsdWRl
L3N0ZGRlZi5oIiAzIDQKdHlwZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90OwojIDUzICIvbW50L3N0
b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIg
MyA0CiMgODMgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2lu
Y2x1ZGUvd2NoYXIuaCIgMyA0CnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19jb3VudDsKICB1bmlv
bgogIHsKCiAgICB1bnNpZ25lZCBpbnQgX193Y2g7CgoKCiAgICBjaGFyIF9fd2NoYls0XTsKICB9
IF9fdmFsdWU7Cn0gX19tYnN0YXRlX3Q7CiMgMTA0ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1
LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMgNAoKCnR5cGVkZWYgX19tYnN0
YXRlX3QgbWJzdGF0ZV90OwoKCgojIDEyOSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5n
b2xpbi1BUk1IRi91c3IvaW5jbHVkZS93Y2hhci5oIiAzIDQKZXh0ZXJuICJDIiB7CgoKCgpzdHJ1
Y3QgdG07CgoKCgoKCgoKCmV4dGVybiB3Y2hhcl90ICp3Y3NjcHkgKHdjaGFyX3QgKl9fcmVzdHJp
Y3QgX19kZXN0LAogICBfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zcmMpIHRocm93ICgp
OwoKZXh0ZXJuIHdjaGFyX3QgKndjc25jcHkgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19kZXN0LAog
ICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKQogICAgIHRo
cm93ICgpOwoKCmV4dGVybiB3Y2hhcl90ICp3Y3NjYXQgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19k
ZXN0LAogICBfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zcmMpIHRocm93ICgpOwoKZXh0
ZXJuIHdjaGFyX3QgKndjc25jYXQgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgX19j
b25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKQogICAgIHRocm93ICgp
OwoKCmV4dGVybiBpbnQgd2NzY21wIChfX2NvbnN0IHdjaGFyX3QgKl9fczEsIF9fY29uc3Qgd2No
YXJfdCAqX19zMikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4
dGVybiBpbnQgd2NzbmNtcCAoX19jb25zdCB3Y2hhcl90ICpfX3MxLCBfX2NvbnN0IHdjaGFyX3Qg
Kl9fczIsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSk7CgoKCgpleHRlcm4gaW50IHdjc2Nhc2VjbXAgKF9fY29uc3Qgd2NoYXJfdCAqX19zMSwgX19j
b25zdCB3Y2hhcl90ICpfX3MyKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHdjc25jYXNlY21wIChf
X2NvbnN0IHdjaGFyX3QgKl9fczEsIF9fY29uc3Qgd2NoYXJfdCAqX19zMiwKICAgc2l6ZV90IF9f
bikgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCB3Y3NjYXNlY21wX2wgKF9fY29uc3Qgd2NoYXJf
dCAqX19zMSwgX19jb25zdCB3Y2hhcl90ICpfX3MyLAogICAgX19sb2NhbGVfdCBfX2xvYykgdGhy
b3cgKCk7CgpleHRlcm4gaW50IHdjc25jYXNlY21wX2wgKF9fY29uc3Qgd2NoYXJfdCAqX19zMSwg
X19jb25zdCB3Y2hhcl90ICpfX3MyLAogICAgIHNpemVfdCBfX24sIF9fbG9jYWxlX3QgX19sb2Mp
IHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgd2NzY29sbCAoX19jb25zdCB3Y2hhcl90ICpfX3Mx
LCBfX2NvbnN0IHdjaGFyX3QgKl9fczIpIHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90IHdjc3hm
cm0gKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zMSwKICAgICAgICAgX19jb25zdCB3Y2hhcl90ICpf
X3Jlc3RyaWN0IF9fczIsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgoKCgoKCmV4dGVybiBpbnQg
d2NzY29sbF9sIChfX2NvbnN0IHdjaGFyX3QgKl9fczEsIF9fY29uc3Qgd2NoYXJfdCAqX19zMiwK
ICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBzaXplX3Qgd2Nz
eGZybV9sICh3Y2hhcl90ICpfX3MxLCBfX2NvbnN0IHdjaGFyX3QgKl9fczIsCiAgICBzaXplX3Qg
X19uLCBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsKCgpleHRlcm4gd2NoYXJfdCAqd2NzZHVw
IChfX2NvbnN0IHdjaGFyX3QgKl9fcykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9j
X18pKTsKCgoKCgpleHRlcm4gIkMrKyIgd2NoYXJfdCAqd2NzY2hyICh3Y2hhcl90ICpfX3djcywg
d2NoYXJfdCBfX3djKQogICAgIHRocm93ICgpIF9fYXNtICgid2NzY2hyIikgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSk7CmV4dGVybiAiQysrIiBfX2NvbnN0IHdjaGFyX3QgKndjc2NociAoX19j
b25zdCB3Y2hhcl90ICpfX3djcywgd2NoYXJfdCBfX3djKQogICAgIHRocm93ICgpIF9fYXNtICgi
d2NzY2hyIikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKCmV4dGVybiAiQysrIiB3
Y2hhcl90ICp3Y3NyY2hyICh3Y2hhcl90ICpfX3djcywgd2NoYXJfdCBfX3djKQogICAgIHRocm93
ICgpIF9fYXNtICgid2NzcmNociIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwpleHRlcm4g
IkMrKyIgX19jb25zdCB3Y2hhcl90ICp3Y3NyY2hyIChfX2NvbnN0IHdjaGFyX3QgKl9fd2NzLCB3
Y2hhcl90IF9fd2MpCiAgICAgdGhyb3cgKCkgX19hc20gKCJ3Y3NyY2hyIikgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSk7CgoKCgoKCgoKCmV4dGVybiB3Y2hhcl90ICp3Y3NjaHJudWwgKF9fY29u
c3Qgd2NoYXJfdCAqX19zLCB3Y2hhcl90IF9fd2MpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJuIHNpemVfdCB3Y3Njc3BuIChfX2NvbnN0IHdjaGFy
X3QgKl9fd2NzLCBfX2NvbnN0IHdjaGFyX3QgKl9fcmVqZWN0KQogICAgIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBzaXplX3Qgd2Nzc3BuIChfX2NvbnN0IHdj
aGFyX3QgKl9fd2NzLCBfX2NvbnN0IHdjaGFyX3QgKl9fYWNjZXB0KQogICAgIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiAiQysrIiB3Y2hhcl90ICp3Y3NwYnJr
ICh3Y2hhcl90ICpfX3djcywgX19jb25zdCB3Y2hhcl90ICpfX2FjY2VwdCkKICAgICB0aHJvdyAo
KSBfX2FzbSAoIndjc3BicmsiKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKZXh0ZXJuICJD
KysiIF9fY29uc3Qgd2NoYXJfdCAqd2NzcGJyayAoX19jb25zdCB3Y2hhcl90ICpfX3djcywKICAg
ICAgICAgICBfX2NvbnN0IHdjaGFyX3QgKl9fYWNjZXB0KQogICAgIHRocm93ICgpIF9fYXNtICgi
d2NzcGJyayIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCgpleHRlcm4gIkMrKyIg
d2NoYXJfdCAqd2Nzc3RyICh3Y2hhcl90ICpfX2hheXN0YWNrLCBfX2NvbnN0IHdjaGFyX3QgKl9f
bmVlZGxlKQogICAgIHRocm93ICgpIF9fYXNtICgid2Nzc3RyIikgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CmV4dGVybiAiQysrIiBfX2NvbnN0IHdjaGFyX3QgKndjc3N0ciAoX19jb25zdCB3
Y2hhcl90ICpfX2hheXN0YWNrLAogICAgICAgICAgX19jb25zdCB3Y2hhcl90ICpfX25lZWRsZSkK
ICAgICB0aHJvdyAoKSBfX2FzbSAoIndjc3N0ciIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKCgoKCgpleHRlcm4gd2NoYXJfdCAqd2NzdG9rICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcywK
ICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgIHdjaGFyX3QgKipfX3Jl
c3RyaWN0IF9fcHRyKSB0aHJvdyAoKTsKCgpleHRlcm4gc2l6ZV90IHdjc2xlbiAoX19jb25zdCB3
Y2hhcl90ICpfX3MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4
dGVybiAiQysrIiB3Y2hhcl90ICp3Y3N3Y3MgKHdjaGFyX3QgKl9faGF5c3RhY2ssIF9fY29uc3Qg
d2NoYXJfdCAqX19uZWVkbGUpCiAgICAgdGhyb3cgKCkgX19hc20gKCJ3Y3N3Y3MiKSBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKZXh0ZXJuICJDKysiIF9fY29uc3Qgd2NoYXJfdCAqd2Nzd2Nz
IChfX2NvbnN0IHdjaGFyX3QgKl9faGF5c3RhY2ssCiAgICAgICAgICBfX2NvbnN0IHdjaGFyX3Qg
Kl9fbmVlZGxlKQogICAgIHRocm93ICgpIF9fYXNtICgid2Nzd2NzIikgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7CiMgMzAzICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFS
TUhGL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMgNApleHRlcm4gc2l6ZV90IHdjc25sZW4gKF9fY29u
c3Qgd2NoYXJfdCAqX19zLCBzaXplX3QgX19tYXhsZW4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKCmV4dGVybiAiQysrIiB3Y2hhcl90ICp3bWVtY2hyICh3
Y2hhcl90ICpfX3MsIHdjaGFyX3QgX19jLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9fYXNt
ICgid21lbWNociIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwpleHRlcm4gIkMrKyIgX19j
b25zdCB3Y2hhcl90ICp3bWVtY2hyIChfX2NvbnN0IHdjaGFyX3QgKl9fcywgd2NoYXJfdCBfX2Ms
CiAgICAgICAgICAgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2FzbSAoIndtZW1jaHIiKSBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgoKZXh0ZXJuIGludCB3bWVtY21wIChfX2Nv
bnN0IHdjaGFyX3QgKl9fczEsIF9fY29uc3Qgd2NoYXJfdCAqX19zMiwgc2l6ZV90IF9fbikKICAg
ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gd2NoYXJfdCAq
d21lbWNweSAod2NoYXJfdCAqX19yZXN0cmljdCBfX3MxLAogICAgX19jb25zdCB3Y2hhcl90ICpf
X3Jlc3RyaWN0IF9fczIsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gd2NoYXJfdCAq
d21lbW1vdmUgKHdjaGFyX3QgKl9fczEsIF9fY29uc3Qgd2NoYXJfdCAqX19zMiwgc2l6ZV90IF9f
bikKICAgICB0aHJvdyAoKTsKCgpleHRlcm4gd2NoYXJfdCAqd21lbXNldCAod2NoYXJfdCAqX19z
LCB3Y2hhcl90IF9fYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHdjaGFyX3Qg
KndtZW1wY3B5ICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fczEsCiAgICAgX19jb25zdCB3Y2hhcl90
ICpfX3Jlc3RyaWN0IF9fczIsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCk7CgoKCgoKCmV4dGVy
biB3aW50X3QgYnRvd2MgKGludCBfX2MpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHdjdG9iICh3
aW50X3QgX19jKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBtYnNpbml0IChfX2NvbnN0IG1ic3Rh
dGVfdCAqX19wcykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVy
biBzaXplX3QgbWJydG93YyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3YywKICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbiwKICAgICAgICAgbWJzdGF0ZV90
ICpfX3ApIHRocm93ICgpOwoKCmV4dGVybiBzaXplX3Qgd2NydG9tYiAoY2hhciAqX19yZXN0cmlj
dCBfX3MsIHdjaGFyX3QgX193YywKICAgICAgICAgbWJzdGF0ZV90ICpfX3Jlc3RyaWN0IF9fcHMp
IHRocm93ICgpOwoKCmV4dGVybiBzaXplX3QgX19tYnJsZW4gKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX3MsIHNpemVfdCBfX24sCiAgIG1ic3RhdGVfdCAqX19yZXN0cmljdCBfX3BzKSB0aHJv
dyAoKTsKZXh0ZXJuIHNpemVfdCBtYnJsZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ms
IHNpemVfdCBfX24sCiAgICAgICAgbWJzdGF0ZV90ICpfX3Jlc3RyaWN0IF9fcHMpIHRocm93ICgp
OwoKCgoKCgoKCmV4dGVybiB3aW50X3QgX19idG93Y19hbGlhcyAoaW50IF9fYykgX19hc20gKCJi
dG93YyIpOwpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkg
d2ludF90Cl9fYXR0cmlidXRlX18gKChfX2xlYWZfXykpIGJ0b3djIChpbnQgX19jKSB0aHJvdyAo
KQp7IHJldHVybiAoX19idWlsdGluX2NvbnN0YW50X3AgKF9fYykgJiYgX19jID49ICdcMCcgJiYg
X19jIDw9ICdceDdmJwogICA/ICh3aW50X3QpIF9fYyA6IF9fYnRvd2NfYWxpYXMgKF9fYykpOyB9
CgpleHRlcm4gaW50IF9fd2N0b2JfYWxpYXMgKHdpbnRfdCBfX2MpIF9fYXNtICgid2N0b2IiKTsK
ZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykpIGludApfX2F0
dHJpYnV0ZV9fICgoX19sZWFmX18pKSB3Y3RvYiAod2ludF90IF9fd2MpIHRocm93ICgpCnsgcmV0
dXJuIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoX193YykgJiYgX193YyA+PSBMJ1wwJyAmJiBfX3dj
IDw9IEwnXHg3ZicKICAgPyAoaW50KSBfX3djIDogX193Y3RvYl9hbGlhcyAoX193YykpOyB9Cgpl
eHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgc2l6ZV90Cl9f
YXR0cmlidXRlX18gKChfX2xlYWZfXykpIG1icmxlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fcywgc2l6ZV90IF9fbiwgbWJzdGF0ZV90ICpfX3Jlc3RyaWN0IF9fcHMpIHRocm93ICgpCgp7
IHJldHVybiAoX19wcyAhPSBfX251bGwKICAgPyBtYnJ0b3djIChfX251bGwsIF9fcywgX19uLCBf
X3BzKSA6IF9fbWJybGVuIChfX3MsIF9fbiwgX19udWxsKSk7IH0KCgoKCgpleHRlcm4gc2l6ZV90
IG1ic3J0b3djcyAod2NoYXJfdCAqX19yZXN0cmljdCBfX2RzdCwKICAgIF9fY29uc3QgY2hhciAq
Kl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX2xlbiwKICAgIG1ic3RhdGVfdCAqX19yZXN0cmlj
dCBfX3BzKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHNpemVfdCB3Y3NydG9tYnMgKGNoYXIgKl9fcmVz
dHJpY3QgX19kc3QsCiAgICBfX2NvbnN0IHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fc3JjLCBzaXpl
X3QgX19sZW4sCiAgICBtYnN0YXRlX3QgKl9fcmVzdHJpY3QgX19wcykgdGhyb3cgKCk7CgoKCgoK
CmV4dGVybiBzaXplX3QgbWJzbnJ0b3djcyAod2NoYXJfdCAqX19yZXN0cmljdCBfX2RzdCwKICAg
ICBfX2NvbnN0IGNoYXIgKipfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19ubWMsCiAgICAgc2l6
ZV90IF9fbGVuLCBtYnN0YXRlX3QgKl9fcmVzdHJpY3QgX19wcykgdGhyb3cgKCk7CgoKCmV4dGVy
biBzaXplX3Qgd2NzbnJ0b21icyAoY2hhciAqX19yZXN0cmljdCBfX2RzdCwKICAgICBfX2NvbnN0
IHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fc3JjLAogICAgIHNpemVfdCBfX253Yywgc2l6ZV90IF9f
bGVuLAogICAgIG1ic3RhdGVfdCAqX19yZXN0cmljdCBfX3BzKSB0aHJvdyAoKTsKCgoKCgoKZXh0
ZXJuIGludCB3Y3dpZHRoICh3Y2hhcl90IF9fYykgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgd2Nz
d2lkdGggKF9fY29uc3Qgd2NoYXJfdCAqX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoKCgoK
ZXh0ZXJuIGRvdWJsZSB3Y3N0b2QgKF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIs
CiAgICAgICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpOwoKCgoKCmV4
dGVybiBmbG9hdCB3Y3N0b2YgKF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsCiAg
ICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0cikgdGhyb3cgKCk7CmV4dGVybiBsb25n
IGRvdWJsZSB3Y3N0b2xkIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAg
ICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJu
IGxvbmcgaW50IHdjc3RvbCAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
d2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIHRocm93ICgpOwoKCgpl
eHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgd2NzdG91bCAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3Ry
aWN0IF9fbnB0ciwKICAgICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jh
c2UpCiAgICAgdGhyb3cgKCk7CgoKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBp
bnQgd2NzdG9sbCAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAg
d2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgdGhyb3cgKCk7
CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgd2NzdG91bGwg
KF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgd2NoYXJfdCAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsCiAgICAgaW50IF9fYmFzZSkgdGhyb3cgKCk7CgoKCgoKCl9fZXh0ZW5z
aW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgd2NzdG9xIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVz
dHJpY3QgX19ucHRyLAogICAgICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQg
X19iYXNlKQogICAgIHRocm93ICgpOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBs
b25nIGxvbmcgaW50IHdjc3RvdXEgKF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIs
CiAgICAgICAgICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgaW50
IF9fYmFzZSkgdGhyb3cgKCk7CiMgNTI3ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdv
bGluLUFSTUhGL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMgNApleHRlcm4gbG9uZyBpbnQgd2NzdG9s
X2wgKF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgd2NoYXJfdCAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UsCiAgICAgX19sb2NhbGVfdCBfX2xvYykgdGhy
b3cgKCk7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgd2NzdG91bF9sIChfX2NvbnN0IHdjaGFy
X3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLAogICAgICAgIGludCBfX2Jhc2UsIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKX19l
eHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCB3Y3N0b2xsX2wgKF9fY29uc3Qgd2NoYXJf
dCAqX19yZXN0cmljdCBfX25wdHIsCiAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwK
ICAgIGludCBfX2Jhc2UsIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKX19leHRlbnNpb25f
XwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCB3Y3N0b3VsbF9sIChfX2NvbnN0IHdjaGFy
X3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsCiAgICAgICBpbnQgX19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKQogICAgIHRocm93ICgpOwoK
ZXh0ZXJuIGRvdWJsZSB3Y3N0b2RfbCAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIF9fbG9jYWxlX3QgX19sb2MpCiAg
ICAgdGhyb3cgKCk7CgpleHRlcm4gZmxvYXQgd2NzdG9mX2wgKF9fY29uc3Qgd2NoYXJfdCAqX19y
ZXN0cmljdCBfX25wdHIsCiAgICAgICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBf
X2xvY2FsZV90IF9fbG9jKQogICAgIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHdjc3Rv
bGRfbCAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgd2NoYXJf
dCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIHRocm93
ICgpOwoKCgoKCgpleHRlcm4gd2NoYXJfdCAqd2NwY3B5ICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9f
ZGVzdCwKICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fc3JjKSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIHdjaGFyX3QgKndjcG5jcHkgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19kZXN0LAogICAg
X19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKQogICAgIHRocm93
ICgpOwoKCgoKCgpleHRlcm4gX19GSUxFICpvcGVuX3dtZW1zdHJlYW0gKHdjaGFyX3QgKipfX2J1
ZmxvYywgc2l6ZV90ICpfX3NpemVsb2MpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IGZ3aWRl
IChfX0ZJTEUgKl9fZnAsIGludCBfX21vZGUpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IGZ3
cHJpbnRmIChfX0ZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICBfX2NvbnN0IHdjaGFy
X3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKCgpleHRlcm4gaW50IHdwcmludGYg
KF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCmV4dGVybiBp
bnQgc3dwcmludGYgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uLAogICAgICAg
X19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pCiAgICAgdGhyb3cgKCkg
OwoKCgoKCmV4dGVybiBpbnQgdmZ3cHJpbnRmIChfX0ZJTEUgKl9fcmVzdHJpY3QgX19zLAogICAg
ICAgIF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICBfX2dudWNf
dmFfbGlzdCBfX2FyZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA7CgoKCgpleHRlcm4gaW50IHZ3cHJpbnRmIChfX2NvbnN0IHdjaGFy
X3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7
CgoKZXh0ZXJuIGludCB2c3dwcmludGYgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zLCBzaXplX3Qg
X19uLAogICAgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAg
ICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0aHJvdyAoKSA7CgoKCgoKCmV4dGVybiBpbnQg
ZndzY2FuZiAoX19GSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICBfX2NvbnN0IHdjaGFy
X3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKCmV4dGVybiBpbnQgd3NjYW5mIChf
X2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCmV4dGVybiBpbnQg
c3dzY2FuZiAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcywKICAgICAgX19jb25zdCB3
Y2hhcl90ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pCiAgICAgdGhyb3cgKCkgOwojIDY3NyAi
L21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS93Y2hh
ci5oIiAzIDQKCgoKCgoKCgoKZXh0ZXJuIGludCB2ZndzY2FuZiAoX19GSUxFICpfX3Jlc3RyaWN0
IF9fcywKICAgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAg
IF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgoKZXh0ZXJuIGludCB2d3NjYW5mIChfX2NvbnN0
IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgIF9fZ251Y192YV9saXN0IF9fYXJn
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOwoKZXh0ZXJuIGludCB2c3dzY2FuZiAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9f
cywKICAgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgIF9f
Z251Y192YV9saXN0IF9fYXJnKQogICAgIHRocm93ICgpIDsKIyA3MzMgIi9tbnQvc3RvcmUvY2hy
b290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMyA0CgoKCgoK
CgoKCmV4dGVybiB3aW50X3QgZmdldHdjIChfX0ZJTEUgKl9fc3RyZWFtKTsKZXh0ZXJuIHdpbnRf
dCBnZXR3YyAoX19GSUxFICpfX3N0cmVhbSk7CgoKCgoKZXh0ZXJuIHdpbnRfdCBnZXR3Y2hhciAo
dm9pZCk7CgoKCgoKCmV4dGVybiB3aW50X3QgZnB1dHdjICh3Y2hhcl90IF9fd2MsIF9fRklMRSAq
X19zdHJlYW0pOwpleHRlcm4gd2ludF90IHB1dHdjICh3Y2hhcl90IF9fd2MsIF9fRklMRSAqX19z
dHJlYW0pOwoKCgoKCmV4dGVybiB3aW50X3QgcHV0d2NoYXIgKHdjaGFyX3QgX193Yyk7CgoKCgoK
CgpleHRlcm4gd2NoYXJfdCAqZmdldHdzICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fd3MsIGludCBf
X24sCiAgIF9fRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSk7CgoKCgoKZXh0ZXJuIGludCBmcHV0
d3MgKF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3dzLAogICAgIF9fRklMRSAqX19yZXN0
cmljdCBfX3N0cmVhbSk7CgoKCgoKCmV4dGVybiB3aW50X3QgdW5nZXR3YyAod2ludF90IF9fd2Ms
IF9fRklMRSAqX19zdHJlYW0pOwoKIyA3OTggIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFu
Z29saW4tQVJNSEYvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMyA0CmV4dGVybiB3aW50X3QgZ2V0d2Nf
dW5sb2NrZWQgKF9fRklMRSAqX19zdHJlYW0pOwpleHRlcm4gd2ludF90IGdldHdjaGFyX3VubG9j
a2VkICh2b2lkKTsKCgoKCgoKCmV4dGVybiB3aW50X3QgZmdldHdjX3VubG9ja2VkIChfX0ZJTEUg
Kl9fc3RyZWFtKTsKCgoKCgoKCmV4dGVybiB3aW50X3QgZnB1dHdjX3VubG9ja2VkICh3Y2hhcl90
IF9fd2MsIF9fRklMRSAqX19zdHJlYW0pOwojIDgyNCAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50
dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS93Y2hhci5oIiAzIDQKZXh0ZXJuIHdpbnRfdCBw
dXR3Y191bmxvY2tlZCAod2NoYXJfdCBfX3djLCBfX0ZJTEUgKl9fc3RyZWFtKTsKZXh0ZXJuIHdp
bnRfdCBwdXR3Y2hhcl91bmxvY2tlZCAod2NoYXJfdCBfX3djKTsKIyA4MzQgIi9tbnQvc3RvcmUv
Y2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMyA0CmV4
dGVybiB3Y2hhcl90ICpmZ2V0d3NfdW5sb2NrZWQgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX193cywg
aW50IF9fbiwKICAgICBfX0ZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pOwoKCgoKCgoKZXh0ZXJu
IGludCBmcHV0d3NfdW5sb2NrZWQgKF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3dzLAog
ICAgICAgX19GSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKTsKCgoKCgoKCmV4dGVybiBzaXplX3Qg
d2NzZnRpbWUgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhzaXplLAogICBf
X2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgIF9fY29uc3Qgc3RydWN0IHRt
ICpfX3Jlc3RyaWN0IF9fdHApIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIHNpemVfdCB3Y3NmdGlt
ZV9sICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4c2l6ZSwKICAgICBfX2Nv
bnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgX19jb25zdCBzdHJ1Y3QgdG0g
Kl9fcmVzdHJpY3QgX190cCwKICAgICBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsKIyA4ODgg
Ii9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvd2No
YXIuaCIgMyA0Cn0KIyA0NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOC4xL2N3Y2hhciIgMiAzCiMgNjIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9jd2NoYXIiIDMKbmFtZXNwYWNlIHN0ZAp7CiAgdXNpbmcgOjpt
YnN0YXRlX3Q7Cn0KIyAxMzUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjguMS9jd2NoYXIiIDMKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNp
YmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKICB1c2luZyA6OndpbnRfdDsKCiAgdXNpbmcgOjpi
dG93YzsKICB1c2luZyA6OmZnZXR3YzsKICB1c2luZyA6OmZnZXR3czsKICB1c2luZyA6OmZwdXR3
YzsKICB1c2luZyA6OmZwdXR3czsKICB1c2luZyA6OmZ3aWRlOwogIHVzaW5nIDo6ZndwcmludGY7
CiAgdXNpbmcgOjpmd3NjYW5mOwogIHVzaW5nIDo6Z2V0d2M7CiAgdXNpbmcgOjpnZXR3Y2hhcjsK
ICB1c2luZyA6Om1icmxlbjsKICB1c2luZyA6Om1icnRvd2M7CiAgdXNpbmcgOjptYnNpbml0Owog
IHVzaW5nIDo6bWJzcnRvd2NzOwogIHVzaW5nIDo6cHV0d2M7CiAgdXNpbmcgOjpwdXR3Y2hhcjsK
CiAgdXNpbmcgOjpzd3ByaW50ZjsKCiAgdXNpbmcgOjpzd3NjYW5mOwogIHVzaW5nIDo6dW5nZXR3
YzsKICB1c2luZyA6OnZmd3ByaW50ZjsKCiAgdXNpbmcgOjp2ZndzY2FuZjsKCgogIHVzaW5nIDo6
dnN3cHJpbnRmOwoKCiAgdXNpbmcgOjp2c3dzY2FuZjsKCiAgdXNpbmcgOjp2d3ByaW50ZjsKCiAg
dXNpbmcgOjp2d3NjYW5mOwoKICB1c2luZyA6OndjcnRvbWI7CiAgdXNpbmcgOjp3Y3NjYXQ7CiAg
dXNpbmcgOjp3Y3NjbXA7CiAgdXNpbmcgOjp3Y3Njb2xsOwogIHVzaW5nIDo6d2NzY3B5OwogIHVz
aW5nIDo6d2NzY3NwbjsKICB1c2luZyA6Ondjc2Z0aW1lOwogIHVzaW5nIDo6d2NzbGVuOwogIHVz
aW5nIDo6d2NzbmNhdDsKICB1c2luZyA6Ondjc25jbXA7CiAgdXNpbmcgOjp3Y3NuY3B5OwogIHVz
aW5nIDo6d2NzcnRvbWJzOwogIHVzaW5nIDo6d2Nzc3BuOwogIHVzaW5nIDo6d2NzdG9kOwoKICB1
c2luZyA6Ondjc3RvZjsKCiAgdXNpbmcgOjp3Y3N0b2s7CiAgdXNpbmcgOjp3Y3N0b2w7CiAgdXNp
bmcgOjp3Y3N0b3VsOwogIHVzaW5nIDo6d2NzeGZybTsKICB1c2luZyA6OndjdG9iOwogIHVzaW5n
IDo6d21lbWNtcDsKICB1c2luZyA6OndtZW1jcHk7CiAgdXNpbmcgOjp3bWVtbW92ZTsKICB1c2lu
ZyA6OndtZW1zZXQ7CiAgdXNpbmcgOjp3cHJpbnRmOwogIHVzaW5nIDo6d3NjYW5mOwogIHVzaW5n
IDo6d2NzY2hyOwogIHVzaW5nIDo6d2NzcGJyazsKICB1c2luZyA6Ondjc3JjaHI7CiAgdXNpbmcg
Ojp3Y3NzdHI7CiAgdXNpbmcgOjp3bWVtY2hyOwojIDIzMiAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2N3Y2hhciIgMwoKfQoKCgoKCgoKbmFtZXNwYWNl
IF9fZ251X2N4eAp7CgoKCgoKICB1c2luZyA6Ondjc3RvbGQ7CiMgMjU3ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvY3djaGFyIiAzCiAgdXNpbmcgOjp3
Y3N0b2xsOwogIHVzaW5nIDo6d2NzdG91bGw7Cgp9CgpuYW1lc3BhY2Ugc3RkCnsKICB1c2luZyA6
Ol9fZ251X2N4eDo6d2NzdG9sZDsKICB1c2luZyA6Ol9fZ251X2N4eDo6d2NzdG9sbDsKICB1c2lu
ZyA6Ol9fZ251X2N4eDo6d2NzdG91bGw7Cn0KIyAyNzcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9jd2NoYXIiIDMKbmFtZXNwYWNlIHN0ZAp7CgogIHVz
aW5nIHN0ZDo6d2NzdG9mOwoKCiAgdXNpbmcgc3RkOjp2ZndzY2FuZjsKCgogIHVzaW5nIHN0ZDo6
dnN3c2NhbmY7CgoKICB1c2luZyBzdGQ6OnZ3c2NhbmY7CgoKCiAgdXNpbmcgc3RkOjp3Y3N0b2xk
OwogIHVzaW5nIHN0ZDo6d2NzdG9sbDsKICB1c2luZyBzdGQ6Ondjc3RvdWxsOwoKfQojIDQxICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9wb3N0
eXBlcy5oIiAyIDMKIyA2OCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOC4xL2JpdHMvcG9zdHlwZXMuaCIgMwpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18g
KChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgOTAgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3Bvc3R5cGVzLmgiIDMKICB0eXBl
ZGVmIGxvbmcgbG9uZyBzdHJlYW1vZmY7CgoKCgoKCgogIHR5cGVkZWYgcHRyZGlmZl90IHN0cmVh
bXNpemU7CiMgMTExICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC44LjEvYml0cy9wb3N0eXBlcy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1N0YXRlVD4KICAg
IGNsYXNzIGZwb3MKICAgIHsKICAgIHByaXZhdGU6CiAgICAgIHN0cmVhbW9mZiBfTV9vZmY7CiAg
ICAgIF9TdGF0ZVQgX01fc3RhdGU7CgogICAgcHVibGljOgoKCgoKICAgICAgZnBvcygpCiAgICAg
IDogX01fb2ZmKDApLCBfTV9zdGF0ZSgpIHsgfQojIDEzMyAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvcG9zdHlwZXMuaCIgMwogICAgICBmcG9z
KHN0cmVhbW9mZiBfX29mZikKICAgICAgOiBfTV9vZmYoX19vZmYpLCBfTV9zdGF0ZSgpIHsgfQoK
CiAgICAgIG9wZXJhdG9yIHN0cmVhbW9mZigpIGNvbnN0IHsgcmV0dXJuIF9NX29mZjsgfQoKCiAg
ICAgIHZvaWQKICAgICAgc3RhdGUoX1N0YXRlVCBfX3N0KQogICAgICB7IF9NX3N0YXRlID0gX19z
dDsgfQoKCiAgICAgIF9TdGF0ZVQKICAgICAgc3RhdGUoKSBjb25zdAogICAgICB7IHJldHVybiBf
TV9zdGF0ZTsgfQoKCgoKCiAgICAgIGZwb3MmCiAgICAgIG9wZXJhdG9yKz0oc3RyZWFtb2ZmIF9f
b2ZmKQogICAgICB7CiBfTV9vZmYgKz0gX19vZmY7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCgoK
CgogICAgICBmcG9zJgogICAgICBvcGVyYXRvci09KHN0cmVhbW9mZiBfX29mZikKICAgICAgewog
X01fb2ZmIC09IF9fb2ZmOwogcmV0dXJuICp0aGlzOwogICAgICB9CgoKCgoKCgogICAgICBmcG9z
CiAgICAgIG9wZXJhdG9yKyhzdHJlYW1vZmYgX19vZmYpIGNvbnN0CiAgICAgIHsKIGZwb3MgX19w
b3MoKnRoaXMpOwogX19wb3MgKz0gX19vZmY7CiByZXR1cm4gX19wb3M7CiAgICAgIH0KCgoKCgoK
CiAgICAgIGZwb3MKICAgICAgb3BlcmF0b3ItKHN0cmVhbW9mZiBfX29mZikgY29uc3QKICAgICAg
ewogZnBvcyBfX3BvcygqdGhpcyk7CiBfX3BvcyAtPSBfX29mZjsKIHJldHVybiBfX3BvczsKICAg
ICAgfQoKCgoKCgogICAgICBzdHJlYW1vZmYKICAgICAgb3BlcmF0b3ItKGNvbnN0IGZwb3MmIF9f
b3RoZXIpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX29mZiAtIF9fb3RoZXIuX01fb2ZmOyB9CiAg
ICB9OwoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9TdGF0ZVQ+CiAgICBpbmxpbmUgYm9vbAog
ICAgb3BlcmF0b3I9PShjb25zdCBmcG9zPF9TdGF0ZVQ+JiBfX2xocywgY29uc3QgZnBvczxfU3Rh
dGVUPiYgX19yaHMpCiAgICB7IHJldHVybiBzdHJlYW1vZmYoX19saHMpID09IHN0cmVhbW9mZihf
X3Jocyk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1N0YXRlVD4KICAgIGlubGluZSBib29sCiAg
ICBvcGVyYXRvciE9KGNvbnN0IGZwb3M8X1N0YXRlVD4mIF9fbGhzLCBjb25zdCBmcG9zPF9TdGF0
ZVQ+JiBfX3JocykKICAgIHsgcmV0dXJuIHN0cmVhbW9mZihfX2xocykgIT0gc3RyZWFtb2ZmKF9f
cmhzKTsgfQoKCgoKCiAgdHlwZWRlZiBmcG9zPG1ic3RhdGVfdD4gc3RyZWFtcG9zOwoKICB0eXBl
ZGVmIGZwb3M8bWJzdGF0ZV90PiB3c3RyZWFtcG9zOwoKCgogIHR5cGVkZWYgZnBvczxtYnN0YXRl
X3Q+IHUxNnN0cmVhbXBvczsKCiAgdHlwZWRlZiBmcG9zPG1ic3RhdGVfdD4gdTMyc3RyZWFtcG9z
OwoKCgp9CiMgNDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjguMS9pb3Nmd2QiIDIgMwoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmls
aXR5X18gKCJkZWZhdWx0IikpKQp7CgojIDc0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC44LjEvaW9zZndkIiAzCiAgY2xhc3MgaW9zX2Jhc2U7CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFy
VD4gPgogICAgY2xhc3MgYmFzaWNfaW9zOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5
cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX3N0
cmVhbWJ1ZjsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0g
Y2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19pc3RyZWFtOwoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+
ID4KICAgIGNsYXNzIGJhc2ljX29zdHJlYW07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4gPgogICAgY2xhc3MgYmFzaWNf
aW9zdHJlYW07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9
IGNoYXJfdHJhaXRzPF9DaGFyVD4sCiAgICAgdHlwZW5hbWUgX0FsbG9jID0gYWxsb2NhdG9yPF9D
aGFyVD4gPgogICAgY2xhc3MgYmFzaWNfc3RyaW5nYnVmOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+LAogICAgdHlwZW5h
bWUgX0FsbG9jID0gYWxsb2NhdG9yPF9DaGFyVD4gPgogICAgY2xhc3MgYmFzaWNfaXN0cmluZ3N0
cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hh
cl90cmFpdHM8X0NoYXJUPiwKICAgIHR5cGVuYW1lIF9BbGxvYyA9IGFsbG9jYXRvcjxfQ2hhclQ+
ID4KICAgIGNsYXNzIGJhc2ljX29zdHJpbmdzdHJlYW07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4sCiAgICB0eXBlbmFt
ZSBfQWxsb2MgPSBhbGxvY2F0b3I8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19zdHJpbmdzdHJl
YW07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJf
dHJhaXRzPF9DaGFyVD4gPgogICAgY2xhc3MgYmFzaWNfZmlsZWJ1ZjsKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+CiAg
ICBjbGFzcyBiYXNpY19pZnN0cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBl
bmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19vZnN0
cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hh
cl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19mc3RyZWFtOwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4K
ICAgIGNsYXNzIGlzdHJlYW1idWZfaXRlcmF0b3I7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4gPgogICAgY2xhc3Mgb3N0
cmVhbWJ1Zl9pdGVyYXRvcjsKCgoKICB0eXBlZGVmIGJhc2ljX2lvczxjaGFyPiBpb3M7CgoKICB0
eXBlZGVmIGJhc2ljX3N0cmVhbWJ1ZjxjaGFyPiBzdHJlYW1idWY7CgoKICB0eXBlZGVmIGJhc2lj
X2lzdHJlYW08Y2hhcj4gaXN0cmVhbTsKCgogIHR5cGVkZWYgYmFzaWNfb3N0cmVhbTxjaGFyPiBv
c3RyZWFtOwoKCiAgdHlwZWRlZiBiYXNpY19pb3N0cmVhbTxjaGFyPiBpb3N0cmVhbTsKCgogIHR5
cGVkZWYgYmFzaWNfc3RyaW5nYnVmPGNoYXI+IHN0cmluZ2J1ZjsKCgogIHR5cGVkZWYgYmFzaWNf
aXN0cmluZ3N0cmVhbTxjaGFyPiBpc3RyaW5nc3RyZWFtOwoKCiAgdHlwZWRlZiBiYXNpY19vc3Ry
aW5nc3RyZWFtPGNoYXI+IG9zdHJpbmdzdHJlYW07CgoKICB0eXBlZGVmIGJhc2ljX3N0cmluZ3N0
cmVhbTxjaGFyPiBzdHJpbmdzdHJlYW07CgoKICB0eXBlZGVmIGJhc2ljX2ZpbGVidWY8Y2hhcj4g
ZmlsZWJ1ZjsKCgogIHR5cGVkZWYgYmFzaWNfaWZzdHJlYW08Y2hhcj4gaWZzdHJlYW07CgoKICB0
eXBlZGVmIGJhc2ljX29mc3RyZWFtPGNoYXI+IG9mc3RyZWFtOwoKCiAgdHlwZWRlZiBiYXNpY19m
c3RyZWFtPGNoYXI+IGZzdHJlYW07CgoKCiAgdHlwZWRlZiBiYXNpY19pb3M8d2NoYXJfdD4gd2lv
czsKCgogIHR5cGVkZWYgYmFzaWNfc3RyZWFtYnVmPHdjaGFyX3Q+IHdzdHJlYW1idWY7CgoKICB0
eXBlZGVmIGJhc2ljX2lzdHJlYW08d2NoYXJfdD4gd2lzdHJlYW07CgoKICB0eXBlZGVmIGJhc2lj
X29zdHJlYW08d2NoYXJfdD4gd29zdHJlYW07CgoKICB0eXBlZGVmIGJhc2ljX2lvc3RyZWFtPHdj
aGFyX3Q+IHdpb3N0cmVhbTsKCgogIHR5cGVkZWYgYmFzaWNfc3RyaW5nYnVmPHdjaGFyX3Q+IHdz
dHJpbmdidWY7CgoKICB0eXBlZGVmIGJhc2ljX2lzdHJpbmdzdHJlYW08d2NoYXJfdD4gd2lzdHJp
bmdzdHJlYW07CgoKICB0eXBlZGVmIGJhc2ljX29zdHJpbmdzdHJlYW08d2NoYXJfdD4gd29zdHJp
bmdzdHJlYW07CgoKICB0eXBlZGVmIGJhc2ljX3N0cmluZ3N0cmVhbTx3Y2hhcl90PiB3c3RyaW5n
c3RyZWFtOwoKCiAgdHlwZWRlZiBiYXNpY19maWxlYnVmPHdjaGFyX3Q+IHdmaWxlYnVmOwoKCiAg
dHlwZWRlZiBiYXNpY19pZnN0cmVhbTx3Y2hhcl90PiB3aWZzdHJlYW07CgoKICB0eXBlZGVmIGJh
c2ljX29mc3RyZWFtPHdjaGFyX3Q+IHdvZnN0cmVhbTsKCgogIHR5cGVkZWYgYmFzaWNfZnN0cmVh
bTx3Y2hhcl90PiB3ZnN0cmVhbTsKCgoKCn0KIyA3MyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL21lbW9yeSIgMiAzCiMgMSAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2V4dC9hdG9taWNpdHkuaCIgMSAzCiMg
MzMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9leHQv
YXRvbWljaXR5LmgiIDMKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2JpdHMvZ3Roci5oIiAxIDMKIyAz
MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9iaXRzL2d0aHIuaCIgMwojcHJhZ21hIEdDQyB2aXNpYmlsaXR5
IHB1c2goZGVmYXVsdCkKIyAxNDggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvYml0cy9ndGhyLmgiIDMKIyAx
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2JpdHMvZ3Roci1kZWZhdWx0LmgiIDEgMwojIDM1ICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2JpdHMvZ3Roci1kZWZhdWx0LmgiIDMKIyAxICIvbW50L3N0b3JlL2Nocm9vdHMv
dWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMSAzIDQKIyAyNSAi
L21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9wdGhy
ZWFkLmgiIDMgNAojIDEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYv
dXNyL2luY2x1ZGUvc2NoZWQuaCIgMSAzIDQKIyAzMCAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50
dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9zY2hlZC5oIiAzIDQKIyAxICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9saWIv
Z2NjL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS80LjguMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMg
NAojIDMxICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNs
dWRlL3NjaGVkLmgiIDIgMyA0CiMgNDMgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29s
aW4tQVJNSEYvdXNyL2luY2x1ZGUvc2NoZWQuaCIgMyA0CiMgMSAiL21udC9zdG9yZS9jaHJvb3Rz
L3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2Jp
dHMvc2NoZWQuaCIgMSAzIDQKIyA3NCAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xp
bi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvc2NoZWQuaCIgMyA0
CnN0cnVjdCBzY2hlZF9wYXJhbQogIHsKICAgIGludCBfX3NjaGVkX3ByaW9yaXR5OwogIH07Cgpl
eHRlcm4gIkMiIHsKCgoKZXh0ZXJuIGludCBjbG9uZSAoaW50ICgqX19mbikgKHZvaWQgKl9fYXJn
KSwgdm9pZCAqX19jaGlsZF9zdGFjaywKICAgIGludCBfX2ZsYWdzLCB2b2lkICpfX2FyZywgLi4u
KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHVuc2hhcmUgKGludCBfX2ZsYWdzKSB0aHJvdyAoKTsK
CgpleHRlcm4gaW50IHNjaGVkX2dldGNwdSAodm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBz
ZXRucyAoaW50IF9fZmQsIGludCBfX25zdHlwZSkgdGhyb3cgKCk7CgoKCn0KCgoKCgoKCnN0cnVj
dCBfX3NjaGVkX3BhcmFtCiAgewogICAgaW50IF9fc2NoZWRfcHJpb3JpdHk7CiAgfTsKIyAxMjAg
Ii9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvYXJt
LWxpbnV4LWdudWVhYmloZi9iaXRzL3NjaGVkLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
aW50IF9fY3B1X21hc2s7CgoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBfX2NwdV9tYXNrIF9fYml0
c1sxMDI0IC8gKDggKiBzaXplb2YgKF9fY3B1X21hc2spKV07Cn0gY3B1X3NldF90OwojIDIwMyAi
L21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0t
bGludXgtZ251ZWFiaWhmL2JpdHMvc2NoZWQuaCIgMyA0CmV4dGVybiAiQyIgewoKZXh0ZXJuIGlu
dCBfX3NjaGVkX2NwdWNvdW50IChzaXplX3QgX19zZXRzaXplLCBjb25zdCBjcHVfc2V0X3QgKl9f
c2V0cCkKICB0aHJvdyAoKTsKZXh0ZXJuIGNwdV9zZXRfdCAqX19zY2hlZF9jcHVhbGxvYyAoc2l6
ZV90IF9fY291bnQpIHRocm93ICgpIDsKZXh0ZXJuIHZvaWQgX19zY2hlZF9jcHVmcmVlIChjcHVf
c2V0X3QgKl9fc2V0KSB0aHJvdyAoKTsKCn0KIyA0NCAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50
dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9zY2hlZC5oIiAyIDMgNAoKCgoKZXh0ZXJuICJD
IiB7CgoKZXh0ZXJuIGludCBzY2hlZF9zZXRwYXJhbSAoX19waWRfdCBfX3BpZCwgX19jb25zdCBz
dHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcGFyYW0pCiAgICAgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBz
Y2hlZF9nZXRwYXJhbSAoX19waWRfdCBfX3BpZCwgc3RydWN0IHNjaGVkX3BhcmFtICpfX3BhcmFt
KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHNjaGVkX3NldHNjaGVkdWxlciAoX19waWRfdCBfX3Bp
ZCwgaW50IF9fcG9saWN5LAogICAgICAgICAgX19jb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9f
cGFyYW0pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgc2NoZWRfZ2V0c2NoZWR1bGVyIChfX3BpZF90
IF9fcGlkKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHNjaGVkX3lpZWxkICh2b2lkKSB0aHJvdyAo
KTsKCgpleHRlcm4gaW50IHNjaGVkX2dldF9wcmlvcml0eV9tYXggKGludCBfX2FsZ29yaXRobSkg
dGhyb3cgKCk7CgoKZXh0ZXJuIGludCBzY2hlZF9nZXRfcHJpb3JpdHlfbWluIChpbnQgX19hbGdv
cml0aG0pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgc2NoZWRfcnJfZ2V0X2ludGVydmFsIChfX3Bp
ZF90IF9fcGlkLCBzdHJ1Y3QgdGltZXNwZWMgKl9fdCkgdGhyb3cgKCk7CiMgMTE4ICIvbW50L3N0
b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3NjaGVkLmgiIDMg
NApleHRlcm4gaW50IHNjaGVkX3NldGFmZmluaXR5IChfX3BpZF90IF9fcGlkLCBzaXplX3QgX19j
cHVzZXRzaXplLAogICAgICAgICBfX2NvbnN0IGNwdV9zZXRfdCAqX19jcHVzZXQpIHRocm93ICgp
OwoKCmV4dGVybiBpbnQgc2NoZWRfZ2V0YWZmaW5pdHkgKF9fcGlkX3QgX19waWQsIHNpemVfdCBf
X2NwdXNldHNpemUsCiAgICAgICAgIGNwdV9zZXRfdCAqX19jcHVzZXQpIHRocm93ICgpOwoKCn0K
IyAyNiAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVk
ZS9wdGhyZWFkLmgiIDIgMyA0CgoKCiMgMSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5n
b2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvc2V0am1wLmgi
IDEgMyA0CiMgMzUgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNy
L2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3NldGptcC5oIiAzIDQKdHlwZWRlZiBp
bnQgX19qbXBfYnVmWzY0XSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyAoOCkpKTsKIyAzMCAi
L21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9wdGhy
ZWFkLmgiIDIgMyA0CiMgMSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1I
Ri91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvd29yZHNpemUuaCIgMSAzIDQK
IyAzMSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVk
ZS9wdGhyZWFkLmgiIDIgMyA0CgoKCmVudW0KewogIFBUSFJFQURfQ1JFQVRFX0pPSU5BQkxFLAoK
ICBQVEhSRUFEX0NSRUFURV9ERVRBQ0hFRAoKfTsKCgoKZW51bQp7CiAgUFRIUkVBRF9NVVRFWF9U
SU1FRF9OUCwKICBQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRV9OUCwKICBQVEhSRUFEX01VVEVYX0VS
Uk9SQ0hFQ0tfTlAsCiAgUFRIUkVBRF9NVVRFWF9BREFQVElWRV9OUAoKICAsCiAgUFRIUkVBRF9N
VVRFWF9OT1JNQUwgPSBQVEhSRUFEX01VVEVYX1RJTUVEX05QLAogIFBUSFJFQURfTVVURVhfUkVD
VVJTSVZFID0gUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkVfTlAsCiAgUFRIUkVBRF9NVVRFWF9FUlJP
UkNIRUNLID0gUFRIUkVBRF9NVVRFWF9FUlJPUkNIRUNLX05QLAogIFBUSFJFQURfTVVURVhfREVG
QVVMVCA9IFBUSFJFQURfTVVURVhfTk9STUFMCgoKCiAgLCBQVEhSRUFEX01VVEVYX0ZBU1RfTlAg
PSBQVEhSRUFEX01VVEVYX1RJTUVEX05QCgp9OwoKCgoKZW51bQp7CiAgUFRIUkVBRF9NVVRFWF9T
VEFMTEVELAogIFBUSFJFQURfTVVURVhfU1RBTExFRF9OUCA9IFBUSFJFQURfTVVURVhfU1RBTExF
RCwKICBQVEhSRUFEX01VVEVYX1JPQlVTVCwKICBQVEhSRUFEX01VVEVYX1JPQlVTVF9OUCA9IFBU
SFJFQURfTVVURVhfUk9CVVNUCn07CgoKCgoKZW51bQp7CiAgUFRIUkVBRF9QUklPX05PTkUsCiAg
UFRIUkVBRF9QUklPX0lOSEVSSVQsCiAgUFRIUkVBRF9QUklPX1BST1RFQ1QKfTsKIyAxMTUgIi9t
bnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvcHRocmVh
ZC5oIiAzIDQKZW51bQp7CiAgUFRIUkVBRF9SV0xPQ0tfUFJFRkVSX1JFQURFUl9OUCwKICBQVEhS
RUFEX1JXTE9DS19QUkVGRVJfV1JJVEVSX05QLAogIFBUSFJFQURfUldMT0NLX1BSRUZFUl9XUklU
RVJfTk9OUkVDVVJTSVZFX05QLAogIFBUSFJFQURfUldMT0NLX0RFRkFVTFRfTlAgPSBQVEhSRUFE
X1JXTE9DS19QUkVGRVJfUkVBREVSX05QCn07CiMgMTQ3ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1
bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMyA0CmVudW0KewogIFBU
SFJFQURfSU5IRVJJVF9TQ0hFRCwKCiAgUFRIUkVBRF9FWFBMSUNJVF9TQ0hFRAoKfTsKCgoKZW51
bQp7CiAgUFRIUkVBRF9TQ09QRV9TWVNURU0sCgogIFBUSFJFQURfU0NPUEVfUFJPQ0VTUwoKfTsK
CgoKZW51bQp7CiAgUFRIUkVBRF9QUk9DRVNTX1BSSVZBVEUsCgogIFBUSFJFQURfUFJPQ0VTU19T
SEFSRUQKCn07CiMgMTgyICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhG
L3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMyA0CnN0cnVjdCBfcHRocmVhZF9jbGVhbnVwX2J1ZmZl
cgp7CiAgdm9pZCAoKl9fcm91dGluZSkgKHZvaWQgKik7CiAgdm9pZCAqX19hcmc7CiAgaW50IF9f
Y2FuY2VsdHlwZTsKICBzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIgKl9fcHJldjsKfTsK
CgplbnVtCnsKICBQVEhSRUFEX0NBTkNFTF9FTkFCTEUsCgogIFBUSFJFQURfQ0FOQ0VMX0RJU0FC
TEUKCn07CmVudW0KewogIFBUSFJFQURfQ0FOQ0VMX0RFRkVSUkVELAoKICBQVEhSRUFEX0NBTkNF
TF9BU1lOQ0hST05PVVMKCn07CiMgMjIwICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdv
bGluLUFSTUhGL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMyA0CmV4dGVybiAiQyIgewoKCgoKZXh0
ZXJuIGludCBwdGhyZWFkX2NyZWF0ZSAocHRocmVhZF90ICpfX3Jlc3RyaWN0IF9fbmV3dGhyZWFk
LAogICAgICBfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX3Jlc3RyaWN0IF9fYXR0ciwKICAgICAg
dm9pZCAqKCpfX3N0YXJ0X3JvdXRpbmUpICh2b2lkICopLAogICAgICB2b2lkICpfX3Jlc3RyaWN0
IF9fYXJnKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDMpKSk7CgoK
CgoKZXh0ZXJuIHZvaWQgcHRocmVhZF9leGl0ICh2b2lkICpfX3JldHZhbCkgX19hdHRyaWJ1dGVf
XyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2pvaW4gKHB0aHJl
YWRfdCBfX3RoLCB2b2lkICoqX190aHJlYWRfcmV0dXJuKTsKCgoKCmV4dGVybiBpbnQgcHRocmVh
ZF90cnlqb2luX25wIChwdGhyZWFkX3QgX190aCwgdm9pZCAqKl9fdGhyZWFkX3JldHVybikgdGhy
b3cgKCk7CgoKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRfdGltZWRqb2luX25wIChwdGhyZWFkX3Qg
X190aCwgdm9pZCAqKl9fdGhyZWFkX3JldHVybiwKICAgICBfX2NvbnN0IHN0cnVjdCB0aW1lc3Bl
YyAqX19hYnN0aW1lKTsKCgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2RldGFjaCAocHRocmVhZF90
IF9fdGgpIHRocm93ICgpOwoKCgpleHRlcm4gcHRocmVhZF90IHB0aHJlYWRfc2VsZiAodm9pZCkg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgcHRocmVh
ZF9lcXVhbCAocHRocmVhZF90IF9fdGhyZWFkMSwgcHRocmVhZF90IF9fdGhyZWFkMikgdGhyb3cg
KCk7CgoKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9pbml0IChwdGhyZWFkX2F0dHJfdCAq
X19hdHRyKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0
ZXJuIGludCBwdGhyZWFkX2F0dHJfZGVzdHJveSAocHRocmVhZF9hdHRyX3QgKl9fYXR0cikKICAg
ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGlu
dCBwdGhyZWFkX2F0dHJfZ2V0ZGV0YWNoc3RhdGUgKF9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9f
YXR0ciwKICAgICBpbnQgKl9fZGV0YWNoc3RhdGUpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldGRl
dGFjaHN0YXRlIChwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAogICAgIGludCBfX2RldGFjaHN0YXRl
KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKZXh0
ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0Z3VhcmRzaXplIChfX2NvbnN0IHB0aHJlYWRfYXR0cl90
ICpfX2F0dHIsCiAgICAgICAgICBzaXplX3QgKl9fZ3VhcmRzaXplKQogICAgIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRf
YXR0cl9zZXRndWFyZHNpemUgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCiAgICAgICAgICBzaXpl
X3QgX19ndWFyZHNpemUpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f
ICgxKSkpOwoKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRzY2hlZHBhcmFtIChfX2NvbnN0
IHB0aHJlYWRfYXR0cl90ICpfX3Jlc3RyaWN0CiAgICAgICAgICAgX19hdHRyLAogICAgICAgICAg
IHN0cnVjdCBzY2hlZF9wYXJhbSAqX19yZXN0cmljdCBfX3BhcmFtKQogICAgIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRf
YXR0cl9zZXRzY2hlZHBhcmFtIChwdGhyZWFkX2F0dHJfdCAqX19yZXN0cmljdCBfX2F0dHIsCiAg
ICAgICAgICAgX19jb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcmVzdHJpY3QKICAgICAgICAg
ICBfX3BhcmFtKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7
CgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0c2NoZWRwb2xpY3kgKF9fY29uc3QgcHRocmVh
ZF9hdHRyX3QgKl9fcmVzdHJpY3QKICAgICBfX2F0dHIsIGludCAqX19yZXN0cmljdCBfX3BvbGlj
eSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoK
ZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c2NoZWRwb2xpY3kgKHB0aHJlYWRfYXR0cl90ICpf
X2F0dHIsIGludCBfX3BvbGljeSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u
dWxsX18gKDEpKSk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0aW5oZXJpdHNjaGVkIChf
X2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX3Jlc3RyaWN0CiAgICAgIF9fYXR0ciwgaW50ICpfX3Jl
c3RyaWN0IF9faW5oZXJpdCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs
X18gKDEsIDIpKSk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0aW5oZXJpdHNjaGVkIChw
dGhyZWFkX2F0dHJfdCAqX19hdHRyLAogICAgICBpbnQgX19pbmhlcml0KQogICAgIHRocm93ICgp
IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFk
X2F0dHJfZ2V0c2NvcGUgKF9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fcmVzdHJpY3QgX19hdHRy
LAogICAgICBpbnQgKl9fcmVzdHJpY3QgX19zY29wZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0
c2NvcGUgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsIGludCBfX3Njb3BlKQogICAgIHRocm93ICgp
IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRf
YXR0cl9nZXRzdGFja2FkZHIgKF9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fcmVzdHJpY3QKICAg
ICAgICAgIF9fYXR0ciwgdm9pZCAqKl9fcmVzdHJpY3QgX19zdGFja2FkZHIpCiAgICAgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpIF9fYXR0cmlidXRlX18gKChf
X2RlcHJlY2F0ZWRfXykpOwoKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldHN0YWNrYWRk
ciAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKICAgICAgICAgIHZvaWQgKl9fc3RhY2thZGRyKQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSBfX2F0dHJpYnV0
ZV9fICgoX19kZXByZWNhdGVkX18pKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRzdGFj
a3NpemUgKF9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fcmVzdHJpY3QKICAgICAgICAgIF9fYXR0
ciwgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fc3RhY2tzaXplKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRy
X3NldHN0YWNrc2l6ZSAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKICAgICAgICAgIHNpemVfdCBf
X3N0YWNrc2l6ZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEp
KSk7CgoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2dldHN0YWNrIChfX2NvbnN0IHB0aHJlYWRf
YXR0cl90ICpfX3Jlc3RyaWN0IF9fYXR0ciwKICAgICAgdm9pZCAqKl9fcmVzdHJpY3QgX19zdGFj
a2FkZHIsCiAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX3N0YWNrc2l6ZSkKICAgICB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIsIDMpKSk7CgoKCgpleHRlcm4gaW50
IHB0aHJlYWRfYXR0cl9zZXRzdGFjayAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwgdm9pZCAqX19z
dGFja2FkZHIsCiAgICAgIHNpemVfdCBfX3N0YWNrc2l6ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldGFm
ZmluaXR5X25wIChwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAogICAgIHNpemVfdCBfX2NwdXNldHNp
emUsCiAgICAgX19jb25zdCBjcHVfc2V0X3QgKl9fY3B1c2V0KQogICAgIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMykpKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0
dHJfZ2V0YWZmaW5pdHlfbnAgKF9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKICAgICBz
aXplX3QgX19jcHVzZXRzaXplLAogICAgIGNwdV9zZXRfdCAqX19jcHVzZXQpCiAgICAgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAzKSkpOwoKCgoKCmV4dGVybiBpbnQg
cHRocmVhZF9nZXRhdHRyX25wIChwdGhyZWFkX3QgX190aCwgcHRocmVhZF9hdHRyX3QgKl9fYXR0
cikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgoKCgoK
CgpleHRlcm4gaW50IHB0aHJlYWRfc2V0c2NoZWRwYXJhbSAocHRocmVhZF90IF9fdGFyZ2V0X3Ro
cmVhZCwgaW50IF9fcG9saWN5LAogICAgICBfX2NvbnN0IHN0cnVjdCBzY2hlZF9wYXJhbSAqX19w
YXJhbSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMpKSk7CgoK
ZXh0ZXJuIGludCBwdGhyZWFkX2dldHNjaGVkcGFyYW0gKHB0aHJlYWRfdCBfX3RhcmdldF90aHJl
YWQsCiAgICAgIGludCAqX19yZXN0cmljdCBfX3BvbGljeSwKICAgICAgc3RydWN0IHNjaGVkX3Bh
cmFtICpfX3Jlc3RyaWN0IF9fcGFyYW0pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
bm9ubnVsbF9fICgyLCAzKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9zZXRzY2hlZHByaW8gKHB0
aHJlYWRfdCBfX3RhcmdldF90aHJlYWQsIGludCBfX3ByaW8pCiAgICAgdGhyb3cgKCk7CgoKCgpl
eHRlcm4gaW50IHB0aHJlYWRfZ2V0bmFtZV9ucCAocHRocmVhZF90IF9fdGFyZ2V0X3RocmVhZCwg
Y2hhciAqX19idWYsCiAgICAgICAgICBzaXplX3QgX19idWZsZW4pCiAgICAgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9zZXRu
YW1lX25wIChwdGhyZWFkX3QgX190YXJnZXRfdGhyZWFkLCBfX2NvbnN0IGNoYXIgKl9fbmFtZSkK
ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgoKCgoKZXh0
ZXJuIGludCBwdGhyZWFkX2dldGNvbmN1cnJlbmN5ICh2b2lkKSB0aHJvdyAoKTsKCgpleHRlcm4g
aW50IHB0aHJlYWRfc2V0Y29uY3VycmVuY3kgKGludCBfX2xldmVsKSB0aHJvdyAoKTsKCgoKCgoK
CmV4dGVybiBpbnQgcHRocmVhZF95aWVsZCAodm9pZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50
IHB0aHJlYWRfc2V0YWZmaW5pdHlfbnAgKHB0aHJlYWRfdCBfX3RoLCBzaXplX3QgX19jcHVzZXRz
aXplLAogICAgICAgX19jb25zdCBjcHVfc2V0X3QgKl9fY3B1c2V0KQogICAgIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMykpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfZ2V0
YWZmaW5pdHlfbnAgKHB0aHJlYWRfdCBfX3RoLCBzaXplX3QgX19jcHVzZXRzaXplLAogICAgICAg
Y3B1X3NldF90ICpfX2NwdXNldCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u
dWxsX18gKDMpKSk7CiMgNDc4ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFS
TUhGL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMyA0CmV4dGVybiBpbnQgcHRocmVhZF9vbmNlIChw
dGhyZWFkX29uY2VfdCAqX19vbmNlX2NvbnRyb2wsCiAgICB2b2lkICgqX19pbml0X3JvdXRpbmUp
ICh2b2lkKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwojIDQ5MCAiL21u
dC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9wdGhyZWFk
LmgiIDMgNApleHRlcm4gaW50IHB0aHJlYWRfc2V0Y2FuY2Vsc3RhdGUgKGludCBfX3N0YXRlLCBp
bnQgKl9fb2xkc3RhdGUpOwoKCgpleHRlcm4gaW50IHB0aHJlYWRfc2V0Y2FuY2VsdHlwZSAoaW50
IF9fdHlwZSwgaW50ICpfX29sZHR5cGUpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9jYW5jZWwgKHB0
aHJlYWRfdCBfX3RoKTsKCgoKCmV4dGVybiB2b2lkIHB0aHJlYWRfdGVzdGNhbmNlbCAodm9pZCk7
CgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgc3RydWN0CiAgewogICAgX19qbXBfYnVmIF9fY2FuY2Vs
X2ptcF9idWY7CiAgICBpbnQgX19tYXNrX3dhc19zYXZlZDsKICB9IF9fY2FuY2VsX2ptcF9idWZb
MV07CiAgdm9pZCAqX19wYWRbNF07Cn0gX19wdGhyZWFkX3Vud2luZF9idWZfdCBfX2F0dHJpYnV0
ZV9fICgoX19hbGlnbmVkX18pKTsKIyA1MjQgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFu
Z29saW4tQVJNSEYvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzIDQKc3RydWN0IF9fcHRocmVhZF9j
bGVhbnVwX2ZyYW1lCnsKICB2b2lkICgqX19jYW5jZWxfcm91dGluZSkgKHZvaWQgKik7CiAgdm9p
ZCAqX19jYW5jZWxfYXJnOwogIGludCBfX2RvX2l0OwogIGludCBfX2NhbmNlbF90eXBlOwp9Owoj
IDY2NCAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVk
ZS9wdGhyZWFkLmgiIDMgNApleHRlcm4gdm9pZCBfX3B0aHJlYWRfcmVnaXN0ZXJfY2FuY2VsIChf
X3B0aHJlYWRfdW53aW5kX2J1Zl90ICpfX2J1ZikKICAgICA7CiMgNjc2ICIvbW50L3N0b3JlL2No
cm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMyA0CmV4
dGVybiB2b2lkIF9fcHRocmVhZF91bnJlZ2lzdGVyX2NhbmNlbCAoX19wdGhyZWFkX3Vud2luZF9i
dWZfdCAqX19idWYpCiAgOwojIDY5OSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xp
bi1BUk1IRi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDMgNApleHRlcm4gdm9pZCBfX3B0aHJlYWRf
cmVnaXN0ZXJfY2FuY2VsX2RlZmVyIChfX3B0aHJlYWRfdW53aW5kX2J1Zl90ICpfX2J1ZikKICAg
ICA7CiMgNzEyICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9p
bmNsdWRlL3B0aHJlYWQuaCIgMyA0CmV4dGVybiB2b2lkIF9fcHRocmVhZF91bnJlZ2lzdGVyX2Nh
bmNlbF9yZXN0b3JlIChfX3B0aHJlYWRfdW53aW5kX2J1Zl90ICpfX2J1ZikKICA7CgoKCmV4dGVy
biB2b2lkIF9fcHRocmVhZF91bndpbmRfbmV4dCAoX19wdGhyZWFkX3Vud2luZF9idWZfdCAqX19i
dWYpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpCgogICAgIF9fYXR0cmlidXRl
X18gKChfX3dlYWtfXykpCgogICAgIDsKCgoKc3RydWN0IF9fam1wX2J1Zl90YWc7CmV4dGVybiBp
bnQgX19zaWdzZXRqbXAgKHN0cnVjdCBfX2ptcF9idWZfdGFnICpfX2VudiwgaW50IF9fc2F2ZW1h
c2spIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9tdXRleF9pbml0IChwdGhyZWFk
X211dGV4X3QgKl9fbXV0ZXgsCiAgICAgICAgICBfX2NvbnN0IHB0aHJlYWRfbXV0ZXhhdHRyX3Qg
Kl9fbXV0ZXhhdHRyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo
MSkpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfZGVzdHJveSAocHRocmVhZF9tdXRleF90
ICpfX211dGV4KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp
KTsKCgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfdHJ5bG9jayAocHRocmVhZF9tdXRleF90ICpf
X211dGV4KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsK
CgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfbG9jayAocHRocmVhZF9tdXRleF90ICpfX211dGV4
KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKZXh0
ZXJuIGludCBwdGhyZWFkX211dGV4X3RpbWVkbG9jayAocHRocmVhZF9tdXRleF90ICpfX3Jlc3Ry
aWN0IF9fbXV0ZXgsCiAgICAgICAgX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QK
ICAgICAgICBfX2Fic3RpbWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo
MSwgMikpKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4X3VubG9jayAocHRocmVhZF9tdXRl
eF90ICpfX211dGV4KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo
MSkpKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4X2dldHByaW9jZWlsaW5nIChfX2NvbnN0
IHB0aHJlYWRfbXV0ZXhfdCAqCiAgICAgIF9fcmVzdHJpY3QgX19tdXRleCwKICAgICAgaW50ICpf
X3Jlc3RyaWN0IF9fcHJpb2NlaWxpbmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
bm9ubnVsbF9fICgxLCAyKSkpOwoKCgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfc2V0cHJpb2Nl
aWxpbmcgKHB0aHJlYWRfbXV0ZXhfdCAqX19yZXN0cmljdCBfX211dGV4LAogICAgICBpbnQgX19w
cmlvY2VpbGluZywKICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fb2xkX2NlaWxpbmcpCiAgICAgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAzKSkpOwoKCgoKZXh0ZXJuIGlu
dCBwdGhyZWFkX211dGV4X2NvbnNpc3RlbnQgKHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkKICAg
ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgpleHRlcm4gaW50
IHB0aHJlYWRfbXV0ZXhfY29uc2lzdGVudF9ucCAocHRocmVhZF9tdXRleF90ICpfX211dGV4KQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKIyA3OTAgIi9t
bnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvcHRocmVh
ZC5oIiAzIDQKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9pbml0IChwdGhyZWFkX211dGV4
YXR0cl90ICpfX2F0dHIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f
ICgxKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJfZGVzdHJveSAocHRocmVhZF9t
dXRleGF0dHJfdCAqX19hdHRyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51
bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2dldHBzaGFyZWQgKF9f
Y29uc3QgcHRocmVhZF9tdXRleGF0dHJfdCAqCiAgICAgIF9fcmVzdHJpY3QgX19hdHRyLAogICAg
ICBpbnQgKl9fcmVzdHJpY3QgX19wc2hhcmVkKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX3Nl
dHBzaGFyZWQgKHB0aHJlYWRfbXV0ZXhhdHRyX3QgKl9fYXR0ciwKICAgICAgaW50IF9fcHNoYXJl
ZCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCmV4
dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJfZ2V0dHlwZSAoX19jb25zdCBwdGhyZWFkX211dGV4
YXR0cl90ICpfX3Jlc3RyaWN0CiAgICAgICAgICBfX2F0dHIsIGludCAqX19yZXN0cmljdCBfX2tp
bmQpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoK
CgoKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlIChwdGhyZWFkX211dGV4YXR0
cl90ICpfX2F0dHIsIGludCBfX2tpbmQpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
bm9ubnVsbF9fICgxKSkpOwoKCgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2dldHByb3Rv
Y29sIChfX2NvbnN0IHB0aHJlYWRfbXV0ZXhhdHRyX3QgKgogICAgICAgX19yZXN0cmljdCBfX2F0
dHIsCiAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19wcm90b2NvbCkKICAgICB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCmV4dGVybiBpbnQgcHRocmVhZF9t
dXRleGF0dHJfc2V0cHJvdG9jb2wgKHB0aHJlYWRfbXV0ZXhhdHRyX3QgKl9fYXR0ciwKICAgICAg
IGludCBfX3Byb3RvY29sKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf
XyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2dldHByaW9jZWlsaW5nIChf
X2NvbnN0IHB0aHJlYWRfbXV0ZXhhdHRyX3QgKgogICAgICAgICAgX19yZXN0cmljdCBfX2F0dHIs
CiAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19wcmlvY2VpbGluZykKICAgICB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJuIGludCBwdGhyZWFk
X211dGV4YXR0cl9zZXRwcmlvY2VpbGluZyAocHRocmVhZF9tdXRleGF0dHJfdCAqX19hdHRyLAog
ICAgICAgICAgaW50IF9fcHJpb2NlaWxpbmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fbm9ubnVsbF9fICgxKSkpOwoKCgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2dldHJv
YnVzdCAoX19jb25zdCBwdGhyZWFkX211dGV4YXR0cl90ICpfX2F0dHIsCiAgICAgaW50ICpfX3Jv
YnVzdG5lc3MpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAy
KSkpOwoKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9nZXRyb2J1c3RfbnAgKF9fY29uc3Qg
cHRocmVhZF9tdXRleGF0dHJfdCAqX19hdHRyLAogICAgICAgIGludCAqX19yb2J1c3RuZXNzKQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgoKZXh0
ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9zZXRyb2J1c3QgKHB0aHJlYWRfbXV0ZXhhdHRyX3Qg
Kl9fYXR0ciwKICAgICBpbnQgX19yb2J1c3RuZXNzKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX25vbm51bGxfXyAoMSkpKTsKCmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJfc2V0
cm9idXN0X25wIChwdGhyZWFkX211dGV4YXR0cl90ICpfX2F0dHIsCiAgICAgICAgaW50IF9fcm9i
dXN0bmVzcykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7
CiMgODcyICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNs
dWRlL3B0aHJlYWQuaCIgMyA0CmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2tfaW5pdCAocHRocmVh
ZF9yd2xvY2tfdCAqX19yZXN0cmljdCBfX3J3bG9jaywKICAgIF9fY29uc3QgcHRocmVhZF9yd2xv
Y2thdHRyX3QgKl9fcmVzdHJpY3QKICAgIF9fYXR0cikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2tfZGVzdHJveSAo
cHRocmVhZF9yd2xvY2tfdCAqX19yd2xvY2spCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2tfcmRsb2NrIChw
dGhyZWFkX3J3bG9ja190ICpfX3J3bG9jaykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX3J3bG9ja190cnlyZGxvY2sg
KHB0aHJlYWRfcndsb2NrX3QgKl9fcndsb2NrKQogIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X25vbm51bGxfXyAoMSkpKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX3J3bG9ja190aW1lZHJkbG9j
ayAocHRocmVhZF9yd2xvY2tfdCAqX19yZXN0cmljdCBfX3J3bG9jaywKICAgICAgICAgICBfX2Nv
bnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXN0cmljdAogICAgICAgICAgIF9fYWJzdGltZSkgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgpleHRlcm4gaW50
IHB0aHJlYWRfcndsb2NrX3dybG9jayAocHRocmVhZF9yd2xvY2tfdCAqX19yd2xvY2spCiAgICAg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQg
cHRocmVhZF9yd2xvY2tfdHJ5d3Jsb2NrIChwdGhyZWFkX3J3bG9ja190ICpfX3J3bG9jaykKICAg
ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCmV4dGVybiBp
bnQgcHRocmVhZF9yd2xvY2tfdGltZWR3cmxvY2sgKHB0aHJlYWRfcndsb2NrX3QgKl9fcmVzdHJp
Y3QgX19yd2xvY2ssCiAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJp
Y3QKICAgICAgICAgICBfX2Fic3RpbWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51
bGxfXyAoMSwgMikpKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX3J3bG9ja191bmxvY2sgKHB0aHJl
YWRfcndsb2NrX3QgKl9fcndsb2NrKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25v
bm51bGxfXyAoMSkpKTsKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrYXR0cl9pbml0IChw
dGhyZWFkX3J3bG9ja2F0dHJfdCAqX19hdHRyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrYXR0cl9kZXN0
cm95IChwdGhyZWFkX3J3bG9ja2F0dHJfdCAqX19hdHRyKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrYXR0
cl9nZXRwc2hhcmVkIChfX2NvbnN0IHB0aHJlYWRfcndsb2NrYXR0cl90ICoKICAgICAgIF9fcmVz
dHJpY3QgX19hdHRyLAogICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fcHNoYXJlZCkKICAgICB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJuIGludCBw
dGhyZWFkX3J3bG9ja2F0dHJfc2V0cHNoYXJlZCAocHRocmVhZF9yd2xvY2thdHRyX3QgKl9fYXR0
ciwKICAgICAgIGludCBfX3BzaGFyZWQpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
bm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2thdHRyX2dldGtpbmRf
bnAgKF9fY29uc3QgcHRocmVhZF9yd2xvY2thdHRyX3QgKgogICAgICAgX19yZXN0cmljdCBfX2F0
dHIsCiAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19wcmVmKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfcndsb2Nr
YXR0cl9zZXRraW5kX25wIChwdGhyZWFkX3J3bG9ja2F0dHJfdCAqX19hdHRyLAogICAgICAgaW50
IF9fcHJlZikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoK
CgoKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfaW5pdCAocHRocmVhZF9jb25kX3QgKl9fcmVzdHJp
Y3QgX19jb25kLAogICAgICAgICBfX2NvbnN0IHB0aHJlYWRfY29uZGF0dHJfdCAqX19yZXN0cmlj
dAogICAgICAgICBfX2NvbmRfYXR0cikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs
bF9fICgxKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9jb25kX2Rlc3Ryb3kgKHB0aHJlYWRfY29u
ZF90ICpfX2NvbmQpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx
KSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9jb25kX3NpZ25hbCAocHRocmVhZF9jb25kX3QgKl9f
Y29uZCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoK
ZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0IChwdGhyZWFkX2NvbmRfdCAqX19jb25k
KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgoK
ZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfd2FpdCAocHRocmVhZF9jb25kX3QgKl9fcmVzdHJpY3Qg
X19jb25kLAogICAgICAgICBwdGhyZWFkX211dGV4X3QgKl9fcmVzdHJpY3QgX19tdXRleCkKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CiMgOTg0ICIvbW50L3N0b3Jl
L2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMyA0
CmV4dGVybiBpbnQgcHRocmVhZF9jb25kX3RpbWVkd2FpdCAocHRocmVhZF9jb25kX3QgKl9fcmVz
dHJpY3QgX19jb25kLAogICAgICAgcHRocmVhZF9tdXRleF90ICpfX3Jlc3RyaWN0IF9fbXV0ZXgs
CiAgICAgICBfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXN0cmljdAogICAgICAgX19hYnN0
aW1lKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIsIDMpKSk7CgoKCgpleHRlcm4g
aW50IHB0aHJlYWRfY29uZGF0dHJfaW5pdCAocHRocmVhZF9jb25kYXR0cl90ICpfX2F0dHIpCiAg
ICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBp
bnQgcHRocmVhZF9jb25kYXR0cl9kZXN0cm95IChwdGhyZWFkX2NvbmRhdHRyX3QgKl9fYXR0cikK
ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJu
IGludCBwdGhyZWFkX2NvbmRhdHRyX2dldHBzaGFyZWQgKF9fY29uc3QgcHRocmVhZF9jb25kYXR0
cl90ICoKICAgICBfX3Jlc3RyaWN0IF9fYXR0ciwKICAgICBpbnQgKl9fcmVzdHJpY3QgX19wc2hh
cmVkKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsK
CgpleHRlcm4gaW50IHB0aHJlYWRfY29uZGF0dHJfc2V0cHNoYXJlZCAocHRocmVhZF9jb25kYXR0
cl90ICpfX2F0dHIsCiAgICAgaW50IF9fcHNoYXJlZCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fbm9ubnVsbF9fICgxKSkpOwoKCgpleHRlcm4gaW50IHB0aHJlYWRfY29uZGF0dHJfZ2V0Y2xv
Y2sgKF9fY29uc3QgcHRocmVhZF9jb25kYXR0cl90ICoKICAgICAgICAgIF9fcmVzdHJpY3QgX19h
dHRyLAogICAgICAgICAgX19jbG9ja2lkX3QgKl9fcmVzdHJpY3QgX19jbG9ja19pZCkKICAgICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJuIGlu
dCBwdGhyZWFkX2NvbmRhdHRyX3NldGNsb2NrIChwdGhyZWFkX2NvbmRhdHRyX3QgKl9fYXR0ciwK
ICAgICAgICAgIF9fY2xvY2tpZF90IF9fY2xvY2tfaWQpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwojIDEwMjggIi9tbnQvc3RvcmUvY2hyb290cy91YnVu
dHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzIDQKZXh0ZXJuIGludCBw
dGhyZWFkX3NwaW5faW5pdCAocHRocmVhZF9zcGlubG9ja190ICpfX2xvY2ssIGludCBfX3BzaGFy
ZWQpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4
dGVybiBpbnQgcHRocmVhZF9zcGluX2Rlc3Ryb3kgKHB0aHJlYWRfc3BpbmxvY2tfdCAqX19sb2Nr
KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRl
cm4gaW50IHB0aHJlYWRfc3Bpbl9sb2NrIChwdGhyZWFkX3NwaW5sb2NrX3QgKl9fbG9jaykKICAg
ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGlu
dCBwdGhyZWFkX3NwaW5fdHJ5bG9jayAocHRocmVhZF9zcGlubG9ja190ICpfX2xvY2spCiAgICAg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQg
cHRocmVhZF9zcGluX3VubG9jayAocHRocmVhZF9zcGlubG9ja190ICpfX2xvY2spCiAgICAgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCgpleHRlcm4gaW50
IHB0aHJlYWRfYmFycmllcl9pbml0IChwdGhyZWFkX2JhcnJpZXJfdCAqX19yZXN0cmljdCBfX2Jh
cnJpZXIsCiAgICAgX19jb25zdCBwdGhyZWFkX2JhcnJpZXJhdHRyX3QgKl9fcmVzdHJpY3QKICAg
ICBfX2F0dHIsIHVuc2lnbmVkIGludCBfX2NvdW50KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfYmFycmllcl9kZXN0
cm95IChwdGhyZWFkX2JhcnJpZXJfdCAqX19iYXJyaWVyKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfYmFycmllcl93
YWl0IChwdGhyZWFkX2JhcnJpZXJfdCAqX19iYXJyaWVyKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2JhcnJpZXJh
dHRyX2luaXQgKHB0aHJlYWRfYmFycmllcmF0dHJfdCAqX19hdHRyKQogICAgIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfYmFy
cmllcmF0dHJfZGVzdHJveSAocHRocmVhZF9iYXJyaWVyYXR0cl90ICpfX2F0dHIpCiAgICAgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgcHRo
cmVhZF9iYXJyaWVyYXR0cl9nZXRwc2hhcmVkIChfX2NvbnN0IHB0aHJlYWRfYmFycmllcmF0dHJf
dCAqCiAgICAgICAgX19yZXN0cmljdCBfX2F0dHIsCiAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9f
cHNoYXJlZCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIp
KSk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2JhcnJpZXJhdHRyX3NldHBzaGFyZWQgKHB0aHJlYWRf
YmFycmllcmF0dHJfdCAqX19hdHRyLAogICAgICAgIGludCBfX3BzaGFyZWQpCiAgICAgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwojIDEwOTUgIi9tbnQvc3RvcmUv
Y2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzIDQK
ZXh0ZXJuIGludCBwdGhyZWFkX2tleV9jcmVhdGUgKHB0aHJlYWRfa2V5X3QgKl9fa2V5LAogICAg
ICAgICAgdm9pZCAoKl9fZGVzdHJfZnVuY3Rpb24pICh2b2lkICopKQogICAgIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfa2V5
X2RlbGV0ZSAocHRocmVhZF9rZXlfdCBfX2tleSkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgKnB0
aHJlYWRfZ2V0c3BlY2lmaWMgKHB0aHJlYWRfa2V5X3QgX19rZXkpIHRocm93ICgpOwoKCmV4dGVy
biBpbnQgcHRocmVhZF9zZXRzcGVjaWZpYyAocHRocmVhZF9rZXlfdCBfX2tleSwKICAgIF9fY29u
c3Qgdm9pZCAqX19wb2ludGVyKSB0aHJvdyAoKSA7CgoKCgpleHRlcm4gaW50IHB0aHJlYWRfZ2V0
Y3B1Y2xvY2tpZCAocHRocmVhZF90IF9fdGhyZWFkX2lkLAogICAgICBfX2Nsb2NraWRfdCAqX19j
bG9ja19pZCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7
CiMgMTEyOSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5j
bHVkZS9wdGhyZWFkLmgiIDMgNApleHRlcm4gaW50IHB0aHJlYWRfYXRmb3JrICh2b2lkICgqX19w
cmVwYXJlKSAodm9pZCksCiAgICAgIHZvaWQgKCpfX3BhcmVudCkgKHZvaWQpLAogICAgICB2b2lk
ICgqX19jaGlsZCkgKHZvaWQpKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBfX2lubGluZSBfX2F0dHJp
YnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBpbnQKX19hdHRyaWJ1dGVfXyAoKF9fbGVhZl9fKSkg
cHRocmVhZF9lcXVhbCAocHRocmVhZF90IF9fdGhyZWFkMSwgcHRocmVhZF90IF9fdGhyZWFkMikg
dGhyb3cgKCkKewogIHJldHVybiBfX3RocmVhZDEgPT0gX190aHJlYWQyOwp9CgoKfQojIDM2ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2JpdHMvZ3Roci1kZWZhdWx0LmgiIDIgMwojIDQ3ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2JpdHMvZ3Roci1kZWZhdWx0LmgiIDMKdHlwZWRlZiBwdGhyZWFkX3QgX19ndGhyZWFk
X3Q7CnR5cGVkZWYgcHRocmVhZF9rZXlfdCBfX2d0aHJlYWRfa2V5X3Q7CnR5cGVkZWYgcHRocmVh
ZF9vbmNlX3QgX19ndGhyZWFkX29uY2VfdDsKdHlwZWRlZiBwdGhyZWFkX211dGV4X3QgX19ndGhy
ZWFkX211dGV4X3Q7CnR5cGVkZWYgcHRocmVhZF9tdXRleF90IF9fZ3RocmVhZF9yZWN1cnNpdmVf
bXV0ZXhfdDsKdHlwZWRlZiBwdGhyZWFkX2NvbmRfdCBfX2d0aHJlYWRfY29uZF90Owp0eXBlZGVm
IHN0cnVjdCB0aW1lc3BlYyBfX2d0aHJlYWRfdGltZV90OwojIDEwMSAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9iaXRzL2d0aHItZGVmYXVsdC5oIiAzCnN0YXRpYyBfX3R5cGVvZihwdGhyZWFkX29uY2UpIF9f
Z3RocndfcHRocmVhZF9vbmNlIF9fYXR0cmlidXRlX18gKChfX3dlYWtyZWZfXygicHRocmVhZF9v
bmNlIikpKTsKc3RhdGljIF9fdHlwZW9mKHB0aHJlYWRfZ2V0c3BlY2lmaWMpIF9fZ3RocndfcHRo
cmVhZF9nZXRzcGVjaWZpYyBfX2F0dHJpYnV0ZV9fICgoX193ZWFrcmVmX18oInB0aHJlYWRfZ2V0
c3BlY2lmaWMiKSkpOwpzdGF0aWMgX190eXBlb2YocHRocmVhZF9zZXRzcGVjaWZpYykgX19ndGhy
d19wdGhyZWFkX3NldHNwZWNpZmljIF9fYXR0cmlidXRlX18gKChfX3dlYWtyZWZfXygicHRocmVh
ZF9zZXRzcGVjaWZpYyIpKSk7CgpzdGF0aWMgX190eXBlb2YocHRocmVhZF9jcmVhdGUpIF9fZ3Ro
cndfcHRocmVhZF9jcmVhdGUgX19hdHRyaWJ1dGVfXyAoKF9fd2Vha3JlZl9fKCJwdGhyZWFkX2Ny
ZWF0ZSIpKSk7CnN0YXRpYyBfX3R5cGVvZihwdGhyZWFkX2pvaW4pIF9fZ3RocndfcHRocmVhZF9q
b2luIF9fYXR0cmlidXRlX18gKChfX3dlYWtyZWZfXygicHRocmVhZF9qb2luIikpKTsKc3RhdGlj
IF9fdHlwZW9mKHB0aHJlYWRfZXF1YWwpIF9fZ3RocndfcHRocmVhZF9lcXVhbCBfX2F0dHJpYnV0
ZV9fICgoX193ZWFrcmVmX18oInB0aHJlYWRfZXF1YWwiKSkpOwpzdGF0aWMgX190eXBlb2YocHRo
cmVhZF9zZWxmKSBfX2d0aHJ3X3B0aHJlYWRfc2VsZiBfX2F0dHJpYnV0ZV9fICgoX193ZWFrcmVm
X18oInB0aHJlYWRfc2VsZiIpKSk7CnN0YXRpYyBfX3R5cGVvZihwdGhyZWFkX2RldGFjaCkgX19n
dGhyd19wdGhyZWFkX2RldGFjaCBfX2F0dHJpYnV0ZV9fICgoX193ZWFrcmVmX18oInB0aHJlYWRf
ZGV0YWNoIikpKTsKCnN0YXRpYyBfX3R5cGVvZihwdGhyZWFkX2NhbmNlbCkgX19ndGhyd19wdGhy
ZWFkX2NhbmNlbCBfX2F0dHJpYnV0ZV9fICgoX193ZWFrcmVmX18oInB0aHJlYWRfY2FuY2VsIikp
KTsKCnN0YXRpYyBfX3R5cGVvZihzY2hlZF95aWVsZCkgX19ndGhyd19zY2hlZF95aWVsZCBfX2F0
dHJpYnV0ZV9fICgoX193ZWFrcmVmX18oInNjaGVkX3lpZWxkIikpKTsKCnN0YXRpYyBfX3R5cGVv
ZihwdGhyZWFkX211dGV4X2xvY2spIF9fZ3RocndfcHRocmVhZF9tdXRleF9sb2NrIF9fYXR0cmli
dXRlX18gKChfX3dlYWtyZWZfXygicHRocmVhZF9tdXRleF9sb2NrIikpKTsKc3RhdGljIF9fdHlw
ZW9mKHB0aHJlYWRfbXV0ZXhfdHJ5bG9jaykgX19ndGhyd19wdGhyZWFkX211dGV4X3RyeWxvY2sg
X19hdHRyaWJ1dGVfXyAoKF9fd2Vha3JlZl9fKCJwdGhyZWFkX211dGV4X3RyeWxvY2siKSkpOwoK
c3RhdGljIF9fdHlwZW9mKHB0aHJlYWRfbXV0ZXhfdGltZWRsb2NrKSBfX2d0aHJ3X3B0aHJlYWRf
bXV0ZXhfdGltZWRsb2NrIF9fYXR0cmlidXRlX18gKChfX3dlYWtyZWZfXygicHRocmVhZF9tdXRl
eF90aW1lZGxvY2siKSkpOwoKc3RhdGljIF9fdHlwZW9mKHB0aHJlYWRfbXV0ZXhfdW5sb2NrKSBf
X2d0aHJ3X3B0aHJlYWRfbXV0ZXhfdW5sb2NrIF9fYXR0cmlidXRlX18gKChfX3dlYWtyZWZfXygi
cHRocmVhZF9tdXRleF91bmxvY2siKSkpOwpzdGF0aWMgX190eXBlb2YocHRocmVhZF9tdXRleF9p
bml0KSBfX2d0aHJ3X3B0aHJlYWRfbXV0ZXhfaW5pdCBfX2F0dHJpYnV0ZV9fICgoX193ZWFrcmVm
X18oInB0aHJlYWRfbXV0ZXhfaW5pdCIpKSk7CnN0YXRpYyBfX3R5cGVvZihwdGhyZWFkX211dGV4
X2Rlc3Ryb3kpIF9fZ3RocndfcHRocmVhZF9tdXRleF9kZXN0cm95IF9fYXR0cmlidXRlX18gKChf
X3dlYWtyZWZfXygicHRocmVhZF9tdXRleF9kZXN0cm95IikpKTsKCnN0YXRpYyBfX3R5cGVvZihw
dGhyZWFkX2NvbmRfaW5pdCkgX19ndGhyd19wdGhyZWFkX2NvbmRfaW5pdCBfX2F0dHJpYnV0ZV9f
ICgoX193ZWFrcmVmX18oInB0aHJlYWRfY29uZF9pbml0IikpKTsKc3RhdGljIF9fdHlwZW9mKHB0
aHJlYWRfY29uZF9icm9hZGNhc3QpIF9fZ3RocndfcHRocmVhZF9jb25kX2Jyb2FkY2FzdCBfX2F0
dHJpYnV0ZV9fICgoX193ZWFrcmVmX18oInB0aHJlYWRfY29uZF9icm9hZGNhc3QiKSkpOwpzdGF0
aWMgX190eXBlb2YocHRocmVhZF9jb25kX3NpZ25hbCkgX19ndGhyd19wdGhyZWFkX2NvbmRfc2ln
bmFsIF9fYXR0cmlidXRlX18gKChfX3dlYWtyZWZfXygicHRocmVhZF9jb25kX3NpZ25hbCIpKSk7
CnN0YXRpYyBfX3R5cGVvZihwdGhyZWFkX2NvbmRfd2FpdCkgX19ndGhyd19wdGhyZWFkX2NvbmRf
d2FpdCBfX2F0dHJpYnV0ZV9fICgoX193ZWFrcmVmX18oInB0aHJlYWRfY29uZF93YWl0IikpKTsK
c3RhdGljIF9fdHlwZW9mKHB0aHJlYWRfY29uZF90aW1lZHdhaXQpIF9fZ3RocndfcHRocmVhZF9j
b25kX3RpbWVkd2FpdCBfX2F0dHJpYnV0ZV9fICgoX193ZWFrcmVmX18oInB0aHJlYWRfY29uZF90
aW1lZHdhaXQiKSkpOwpzdGF0aWMgX190eXBlb2YocHRocmVhZF9jb25kX2Rlc3Ryb3kpIF9fZ3Ro
cndfcHRocmVhZF9jb25kX2Rlc3Ryb3kgX19hdHRyaWJ1dGVfXyAoKF9fd2Vha3JlZl9fKCJwdGhy
ZWFkX2NvbmRfZGVzdHJveSIpKSk7CgpzdGF0aWMgX190eXBlb2YocHRocmVhZF9rZXlfY3JlYXRl
KSBfX2d0aHJ3X3B0aHJlYWRfa2V5X2NyZWF0ZSBfX2F0dHJpYnV0ZV9fICgoX193ZWFrcmVmX18o
InB0aHJlYWRfa2V5X2NyZWF0ZSIpKSk7CnN0YXRpYyBfX3R5cGVvZihwdGhyZWFkX2tleV9kZWxl
dGUpIF9fZ3RocndfcHRocmVhZF9rZXlfZGVsZXRlIF9fYXR0cmlidXRlX18gKChfX3dlYWtyZWZf
XygicHRocmVhZF9rZXlfZGVsZXRlIikpKTsKc3RhdGljIF9fdHlwZW9mKHB0aHJlYWRfbXV0ZXhh
dHRyX2luaXQpIF9fZ3RocndfcHRocmVhZF9tdXRleGF0dHJfaW5pdCBfX2F0dHJpYnV0ZV9fICgo
X193ZWFrcmVmX18oInB0aHJlYWRfbXV0ZXhhdHRyX2luaXQiKSkpOwpzdGF0aWMgX190eXBlb2Yo
cHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZSkgX19ndGhyd19wdGhyZWFkX211dGV4YXR0cl9zZXR0
eXBlIF9fYXR0cmlidXRlX18gKChfX3dlYWtyZWZfXygicHRocmVhZF9tdXRleGF0dHJfc2V0dHlw
ZSIpKSk7CnN0YXRpYyBfX3R5cGVvZihwdGhyZWFkX211dGV4YXR0cl9kZXN0cm95KSBfX2d0aHJ3
X3B0aHJlYWRfbXV0ZXhhdHRyX2Rlc3Ryb3kgX19hdHRyaWJ1dGVfXyAoKF9fd2Vha3JlZl9fKCJw
dGhyZWFkX211dGV4YXR0cl9kZXN0cm95IikpKTsKIyAyMzYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvYml0
cy9ndGhyLWRlZmF1bHQuaCIgMwpzdGF0aWMgX190eXBlb2YocHRocmVhZF9rZXlfY3JlYXRlKSBf
X2d0aHJ3X19fcHRocmVhZF9rZXlfY3JlYXRlIF9fYXR0cmlidXRlX18gKChfX3dlYWtyZWZfXygi
X19wdGhyZWFkX2tleV9jcmVhdGUiKSkpOwojIDI0NiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9iaXRzL2d0
aHItZGVmYXVsdC5oIiAzCnN0YXRpYyBpbmxpbmUgaW50Cl9fZ3RocmVhZF9hY3RpdmVfcCAodm9p
ZCkKewogIHN0YXRpYyB2b2lkICpjb25zdCBfX2d0aHJlYWRfYWN0aXZlX3B0cgogICAgPSBfX2V4
dGVuc2lvbl9fICh2b2lkICopICZfX2d0aHJ3X19fcHRocmVhZF9rZXlfY3JlYXRlOwogIHJldHVy
biBfX2d0aHJlYWRfYWN0aXZlX3B0ciAhPSAwOwp9CiMgNjU4ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2Jp
dHMvZ3Roci1kZWZhdWx0LmgiIDMKc3RhdGljIGlubGluZSBpbnQKX19ndGhyZWFkX2NyZWF0ZSAo
X19ndGhyZWFkX3QgKl9fdGhyZWFkaWQsIHZvaWQgKigqX19mdW5jKSAodm9pZCopLAogICAgdm9p
ZCAqX19hcmdzKQp7CiAgcmV0dXJuIF9fZ3RocndfcHRocmVhZF9jcmVhdGUgKF9fdGhyZWFkaWQs
IF9fbnVsbCwgX19mdW5jLCBfX2FyZ3MpOwp9CgpzdGF0aWMgaW5saW5lIGludApfX2d0aHJlYWRf
am9pbiAoX19ndGhyZWFkX3QgX190aHJlYWRpZCwgdm9pZCAqKl9fdmFsdWVfcHRyKQp7CiAgcmV0
dXJuIF9fZ3RocndfcHRocmVhZF9qb2luIChfX3RocmVhZGlkLCBfX3ZhbHVlX3B0cik7Cn0KCnN0
YXRpYyBpbmxpbmUgaW50Cl9fZ3RocmVhZF9kZXRhY2ggKF9fZ3RocmVhZF90IF9fdGhyZWFkaWQp
CnsKICByZXR1cm4gX19ndGhyd19wdGhyZWFkX2RldGFjaCAoX190aHJlYWRpZCk7Cn0KCnN0YXRp
YyBpbmxpbmUgaW50Cl9fZ3RocmVhZF9lcXVhbCAoX19ndGhyZWFkX3QgX190MSwgX19ndGhyZWFk
X3QgX190MikKewogIHJldHVybiBfX2d0aHJ3X3B0aHJlYWRfZXF1YWwgKF9fdDEsIF9fdDIpOwp9
CgpzdGF0aWMgaW5saW5lIF9fZ3RocmVhZF90Cl9fZ3RocmVhZF9zZWxmICh2b2lkKQp7CiAgcmV0
dXJuIF9fZ3RocndfcHRocmVhZF9zZWxmICgpOwp9CgpzdGF0aWMgaW5saW5lIGludApfX2d0aHJl
YWRfeWllbGQgKHZvaWQpCnsKICByZXR1cm4gX19ndGhyd19zY2hlZF95aWVsZCAoKTsKfQoKc3Rh
dGljIGlubGluZSBpbnQKX19ndGhyZWFkX29uY2UgKF9fZ3RocmVhZF9vbmNlX3QgKl9fb25jZSwg
dm9pZCAoKl9fZnVuYykgKHZvaWQpKQp7CiAgaWYgKF9fZ3RocmVhZF9hY3RpdmVfcCAoKSkKICAg
IHJldHVybiBfX2d0aHJ3X3B0aHJlYWRfb25jZSAoX19vbmNlLCBfX2Z1bmMpOwogIGVsc2UKICAg
IHJldHVybiAtMTsKfQoKc3RhdGljIGlubGluZSBpbnQKX19ndGhyZWFkX2tleV9jcmVhdGUgKF9f
Z3RocmVhZF9rZXlfdCAqX19rZXksIHZvaWQgKCpfX2R0b3IpICh2b2lkICopKQp7CiAgcmV0dXJu
IF9fZ3RocndfcHRocmVhZF9rZXlfY3JlYXRlIChfX2tleSwgX19kdG9yKTsKfQoKc3RhdGljIGlu
bGluZSBpbnQKX19ndGhyZWFkX2tleV9kZWxldGUgKF9fZ3RocmVhZF9rZXlfdCBfX2tleSkKewog
IHJldHVybiBfX2d0aHJ3X3B0aHJlYWRfa2V5X2RlbGV0ZSAoX19rZXkpOwp9CgpzdGF0aWMgaW5s
aW5lIHZvaWQgKgpfX2d0aHJlYWRfZ2V0c3BlY2lmaWMgKF9fZ3RocmVhZF9rZXlfdCBfX2tleSkK
ewogIHJldHVybiBfX2d0aHJ3X3B0aHJlYWRfZ2V0c3BlY2lmaWMgKF9fa2V5KTsKfQoKc3RhdGlj
IGlubGluZSBpbnQKX19ndGhyZWFkX3NldHNwZWNpZmljIChfX2d0aHJlYWRfa2V5X3QgX19rZXks
IGNvbnN0IHZvaWQgKl9fcHRyKQp7CiAgcmV0dXJuIF9fZ3RocndfcHRocmVhZF9zZXRzcGVjaWZp
YyAoX19rZXksIF9fcHRyKTsKfQoKc3RhdGljIGlubGluZSB2b2lkCl9fZ3RocmVhZF9tdXRleF9p
bml0X2Z1bmN0aW9uIChfX2d0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkKewogIGlmIChfX2d0aHJl
YWRfYWN0aXZlX3AgKCkpCiAgICBfX2d0aHJ3X3B0aHJlYWRfbXV0ZXhfaW5pdCAoX19tdXRleCwg
X19udWxsKTsKfQoKc3RhdGljIGlubGluZSBpbnQKX19ndGhyZWFkX211dGV4X2Rlc3Ryb3kgKF9f
Z3RocmVhZF9tdXRleF90ICpfX211dGV4KQp7CiAgaWYgKF9fZ3RocmVhZF9hY3RpdmVfcCAoKSkK
ICAgIHJldHVybiBfX2d0aHJ3X3B0aHJlYWRfbXV0ZXhfZGVzdHJveSAoX19tdXRleCk7CiAgZWxz
ZQogICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgaW50Cl9fZ3RocmVhZF9tdXRleF9sb2Nr
IChfX2d0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkKewogIGlmIChfX2d0aHJlYWRfYWN0aXZlX3Ag
KCkpCiAgICByZXR1cm4gX19ndGhyd19wdGhyZWFkX211dGV4X2xvY2sgKF9fbXV0ZXgpOwogIGVs
c2UKICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIGludApfX2d0aHJlYWRfbXV0ZXhfdHJ5
bG9jayAoX19ndGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpCnsKICBpZiAoX19ndGhyZWFkX2FjdGl2
ZV9wICgpKQogICAgcmV0dXJuIF9fZ3RocndfcHRocmVhZF9tdXRleF90cnlsb2NrIChfX211dGV4
KTsKICBlbHNlCiAgICByZXR1cm4gMDsKfQoKCnN0YXRpYyBpbmxpbmUgaW50Cl9fZ3RocmVhZF9t
dXRleF90aW1lZGxvY2sgKF9fZ3RocmVhZF9tdXRleF90ICpfX211dGV4LAogICAgICBjb25zdCBf
X2d0aHJlYWRfdGltZV90ICpfX2Fic190aW1lb3V0KQp7CiAgaWYgKF9fZ3RocmVhZF9hY3RpdmVf
cCAoKSkKICAgIHJldHVybiBfX2d0aHJ3X3B0aHJlYWRfbXV0ZXhfdGltZWRsb2NrIChfX211dGV4
LCBfX2Fic190aW1lb3V0KTsKICBlbHNlCiAgICByZXR1cm4gMDsKfQoKCnN0YXRpYyBpbmxpbmUg
aW50Cl9fZ3RocmVhZF9tdXRleF91bmxvY2sgKF9fZ3RocmVhZF9tdXRleF90ICpfX211dGV4KQp7
CiAgaWYgKF9fZ3RocmVhZF9hY3RpdmVfcCAoKSkKICAgIHJldHVybiBfX2d0aHJ3X3B0aHJlYWRf
bXV0ZXhfdW5sb2NrIChfX211dGV4KTsKICBlbHNlCiAgICByZXR1cm4gMDsKfQojIDgwNyAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44
LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9iaXRzL2d0aHItZGVmYXVsdC5oIiAzCnN0YXRpYyBpbmxpbmUgaW50Cl9f
Z3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfbG9jayAoX19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleF90
ICpfX211dGV4KQp7CiAgcmV0dXJuIF9fZ3RocmVhZF9tdXRleF9sb2NrIChfX211dGV4KTsKfQoK
c3RhdGljIGlubGluZSBpbnQKX19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleF90cnlsb2NrIChfX2d0
aHJlYWRfcmVjdXJzaXZlX211dGV4X3QgKl9fbXV0ZXgpCnsKICByZXR1cm4gX19ndGhyZWFkX211
dGV4X3RyeWxvY2sgKF9fbXV0ZXgpOwp9CgoKc3RhdGljIGlubGluZSBpbnQKX19ndGhyZWFkX3Jl
Y3Vyc2l2ZV9tdXRleF90aW1lZGxvY2sgKF9fZ3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfdCAqX19t
dXRleCwKICAgICAgICAgY29uc3QgX19ndGhyZWFkX3RpbWVfdCAqX19hYnNfdGltZW91dCkKewog
IHJldHVybiBfX2d0aHJlYWRfbXV0ZXhfdGltZWRsb2NrIChfX211dGV4LCBfX2Fic190aW1lb3V0
KTsKfQoKCnN0YXRpYyBpbmxpbmUgaW50Cl9fZ3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfdW5sb2Nr
IChfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X3QgKl9fbXV0ZXgpCnsKICByZXR1cm4gX19ndGhy
ZWFkX211dGV4X3VubG9jayAoX19tdXRleCk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50Cl9fZ3RocmVh
ZF9yZWN1cnNpdmVfbXV0ZXhfZGVzdHJveSAoX19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleF90ICpf
X211dGV4KQp7CiAgcmV0dXJuIF9fZ3RocmVhZF9tdXRleF9kZXN0cm95IChfX211dGV4KTsKfQoj
IDg0OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9iaXRzL2d0aHItZGVmYXVsdC5oIiAzCnN0YXRpYyBpbmxp
bmUgaW50Cl9fZ3RocmVhZF9jb25kX2Jyb2FkY2FzdCAoX19ndGhyZWFkX2NvbmRfdCAqX19jb25k
KQp7CiAgcmV0dXJuIF9fZ3RocndfcHRocmVhZF9jb25kX2Jyb2FkY2FzdCAoX19jb25kKTsKfQoK
c3RhdGljIGlubGluZSBpbnQKX19ndGhyZWFkX2NvbmRfc2lnbmFsIChfX2d0aHJlYWRfY29uZF90
ICpfX2NvbmQpCnsKICByZXR1cm4gX19ndGhyd19wdGhyZWFkX2NvbmRfc2lnbmFsIChfX2NvbmQp
Owp9CgpzdGF0aWMgaW5saW5lIGludApfX2d0aHJlYWRfY29uZF93YWl0IChfX2d0aHJlYWRfY29u
ZF90ICpfX2NvbmQsIF9fZ3RocmVhZF9tdXRleF90ICpfX211dGV4KQp7CiAgcmV0dXJuIF9fZ3Ro
cndfcHRocmVhZF9jb25kX3dhaXQgKF9fY29uZCwgX19tdXRleCk7Cn0KCnN0YXRpYyBpbmxpbmUg
aW50Cl9fZ3RocmVhZF9jb25kX3RpbWVkd2FpdCAoX19ndGhyZWFkX2NvbmRfdCAqX19jb25kLCBf
X2d0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCwKICAgICBjb25zdCBfX2d0aHJlYWRfdGltZV90ICpf
X2Fic190aW1lb3V0KQp7CiAgcmV0dXJuIF9fZ3RocndfcHRocmVhZF9jb25kX3RpbWVkd2FpdCAo
X19jb25kLCBfX211dGV4LCBfX2Fic190aW1lb3V0KTsKfQoKc3RhdGljIGlubGluZSBpbnQKX19n
dGhyZWFkX2NvbmRfd2FpdF9yZWN1cnNpdmUgKF9fZ3RocmVhZF9jb25kX3QgKl9fY29uZCwKICAg
ICAgICAgIF9fZ3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfdCAqX19tdXRleCkKewogIHJldHVybiBf
X2d0aHJlYWRfY29uZF93YWl0IChfX2NvbmQsIF9fbXV0ZXgpOwp9CgpzdGF0aWMgaW5saW5lIGlu
dApfX2d0aHJlYWRfY29uZF9kZXN0cm95IChfX2d0aHJlYWRfY29uZF90KiBfX2NvbmQpCnsKICBy
ZXR1cm4gX19ndGhyd19wdGhyZWFkX2NvbmRfZGVzdHJveSAoX19jb25kKTsKfQojIDE0OSAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44
LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9iaXRzL2d0aHIuaCIgMiAzCgoKI3ByYWdtYSBHQ0MgdmlzaWJpbGl0eSBw
b3AKIyAzNCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4x
L2V4dC9hdG9taWNpdHkuaCIgMiAzCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9iaXRzL2F0b21pY193
b3JkLmgiIDEgMwojIDMyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2JpdHMvYXRvbWljX3dvcmQuaCIgMwp0
eXBlZGVmIGludCBfQXRvbWljX3dvcmQ7CiMgMzUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9leHQvYXRvbWljaXR5LmgiIDIgMwoKbmFtZXNwYWNlIF9f
Z251X2N4eCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoK
CgoKCgogIHN0YXRpYyBpbmxpbmUgX0F0b21pY193b3JkCiAgX19leGNoYW5nZV9hbmRfYWRkKHZv
bGF0aWxlIF9BdG9taWNfd29yZCogX19tZW0sIGludCBfX3ZhbCkKICB7IHJldHVybiBfX2F0b21p
Y19mZXRjaF9hZGQoX19tZW0sIF9fdmFsLCA0KTsgfQoKICBzdGF0aWMgaW5saW5lIHZvaWQKICBf
X2F0b21pY19hZGQodm9sYXRpbGUgX0F0b21pY193b3JkKiBfX21lbSwgaW50IF9fdmFsKQogIHsg
X19hdG9taWNfZmV0Y2hfYWRkKF9fbWVtLCBfX3ZhbCwgNCk7IH0KIyA2MiAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2V4dC9hdG9taWNpdHkuaCIgMwog
IHN0YXRpYyBpbmxpbmUgX0F0b21pY193b3JkCiAgX19leGNoYW5nZV9hbmRfYWRkX3NpbmdsZShf
QXRvbWljX3dvcmQqIF9fbWVtLCBpbnQgX192YWwpCiAgewogICAgX0F0b21pY193b3JkIF9fcmVz
dWx0ID0gKl9fbWVtOwogICAgKl9fbWVtICs9IF9fdmFsOwogICAgcmV0dXJuIF9fcmVzdWx0Owog
IH0KCiAgc3RhdGljIGlubGluZSB2b2lkCiAgX19hdG9taWNfYWRkX3NpbmdsZShfQXRvbWljX3dv
cmQqIF9fbWVtLCBpbnQgX192YWwpCiAgeyAqX19tZW0gKz0gX192YWw7IH0KCiAgc3RhdGljIGlu
bGluZSBfQXRvbWljX3dvcmQKICBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpCiAgX19leGNo
YW5nZV9hbmRfYWRkX2Rpc3BhdGNoKF9BdG9taWNfd29yZCogX19tZW0sIGludCBfX3ZhbCkKICB7
CgogICAgaWYgKF9fZ3RocmVhZF9hY3RpdmVfcCgpKQogICAgICByZXR1cm4gX19leGNoYW5nZV9h
bmRfYWRkKF9fbWVtLCBfX3ZhbCk7CiAgICBlbHNlCiAgICAgIHJldHVybiBfX2V4Y2hhbmdlX2Fu
ZF9hZGRfc2luZ2xlKF9fbWVtLCBfX3ZhbCk7CgoKCiAgfQoKICBzdGF0aWMgaW5saW5lIHZvaWQK
ICBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpCiAgX19hdG9taWNfYWRkX2Rpc3BhdGNoKF9B
dG9taWNfd29yZCogX19tZW0sIGludCBfX3ZhbCkKICB7CgogICAgaWYgKF9fZ3RocmVhZF9hY3Rp
dmVfcCgpKQogICAgICBfX2F0b21pY19hZGQoX19tZW0sIF9fdmFsKTsKICAgIGVsc2UKICAgICAg
X19hdG9taWNfYWRkX3NpbmdsZShfX21lbSwgX192YWwpOwoKCgogIH0KCgp9CiMgNzQgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4x
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9tZW1vcnkiIDIgMwoj
IDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9leHQv
Y29uY3VycmVuY2UuaCIgMSAzCiMgMzIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9leHQvY29uY3VycmVuY2UuaCIgMwogICAgICAgCiMgMzMgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4x
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9leHQvY29uY3VycmVu
Y2UuaCIgMwoKCgoKCgoKbmFtZXNwYWNlIF9fZ251X2N4eCBfX2F0dHJpYnV0ZV9fICgoX192aXNp
YmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKCgoKCgogIGVudW0gX0xvY2tfcG9saWN5IHsgX1Nf
c2luZ2xlLCBfU19tdXRleCwgX1NfYXRvbWljIH07CgoKCiAgc3RhdGljIGNvbnN0IF9Mb2NrX3Bv
bGljeSBfX2RlZmF1bHRfbG9ja19wb2xpY3kgPQoKCgogIF9TX2F0b21pYzsKIyA2NyAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2V4dC9jb25jdXJyZW5j
ZS5oIiAzCiAgY2xhc3MgX19jb25jdXJyZW5jZV9sb2NrX2Vycm9yIDogcHVibGljIHN0ZDo6ZXhj
ZXB0aW9uCiAgewogIHB1YmxpYzoKICAgIHZpcnR1YWwgY2hhciBjb25zdCoKICAgIHdoYXQoKSBj
b25zdCB0aHJvdygpCiAgICB7IHJldHVybiAiX19nbnVfY3h4OjpfX2NvbmN1cnJlbmNlX2xvY2tf
ZXJyb3IiOyB9CiAgfTsKCiAgY2xhc3MgX19jb25jdXJyZW5jZV91bmxvY2tfZXJyb3IgOiBwdWJs
aWMgc3RkOjpleGNlcHRpb24KICB7CiAgcHVibGljOgogICAgdmlydHVhbCBjaGFyIGNvbnN0Kgog
ICAgd2hhdCgpIGNvbnN0IHRocm93KCkKICAgIHsgcmV0dXJuICJfX2dudV9jeHg6Ol9fY29uY3Vy
cmVuY2VfdW5sb2NrX2Vycm9yIjsgfQogIH07CgogIGNsYXNzIF9fY29uY3VycmVuY2VfYnJvYWRj
YXN0X2Vycm9yIDogcHVibGljIHN0ZDo6ZXhjZXB0aW9uCiAgewogIHB1YmxpYzoKICAgIHZpcnR1
YWwgY2hhciBjb25zdCoKICAgIHdoYXQoKSBjb25zdCB0aHJvdygpCiAgICB7IHJldHVybiAiX19n
bnVfY3h4OjpfX2NvbmN1cnJlbmNlX2Jyb2FkY2FzdF9lcnJvciI7IH0KICB9OwoKICBjbGFzcyBf
X2NvbmN1cnJlbmNlX3dhaXRfZXJyb3IgOiBwdWJsaWMgc3RkOjpleGNlcHRpb24KICB7CiAgcHVi
bGljOgogICAgdmlydHVhbCBjaGFyIGNvbnN0KgogICAgd2hhdCgpIGNvbnN0IHRocm93KCkKICAg
IHsgcmV0dXJuICJfX2dudV9jeHg6Ol9fY29uY3VycmVuY2Vfd2FpdF9lcnJvciI7IH0KICB9OwoK
CiAgaW5saW5lIHZvaWQKICBfX3Rocm93X2NvbmN1cnJlbmNlX2xvY2tfZXJyb3IoKQogIHsgKF9f
YnVpbHRpbl9hYm9ydCgpKTsgfQoKICBpbmxpbmUgdm9pZAogIF9fdGhyb3dfY29uY3VycmVuY2Vf
dW5sb2NrX2Vycm9yKCkKICB7IChfX2J1aWx0aW5fYWJvcnQoKSk7IH0KCgogIGlubGluZSB2b2lk
CiAgX190aHJvd19jb25jdXJyZW5jZV9icm9hZGNhc3RfZXJyb3IoKQogIHsgKF9fYnVpbHRpbl9h
Ym9ydCgpKTsgfQoKICBpbmxpbmUgdm9pZAogIF9fdGhyb3dfY29uY3VycmVuY2Vfd2FpdF9lcnJv
cigpCiAgeyAoX19idWlsdGluX2Fib3J0KCkpOyB9CgoKICBjbGFzcyBfX211dGV4CiAgewogIHBy
aXZhdGU6CgogICAgX19ndGhyZWFkX211dGV4X3QgX01fbXV0ZXggPSB7IHsgMCwgMCwgMCwgMCwg
MCwgeyAwIH0gfSB9OwoKCgoKICAgIF9fbXV0ZXgoY29uc3QgX19tdXRleCYpOwogICAgX19tdXRl
eCYgb3BlcmF0b3I9KGNvbnN0IF9fbXV0ZXgmKTsKCiAgcHVibGljOgogICAgX19tdXRleCgpCiAg
ICB7CgoKCgogICAgfQojIDE0NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOC4xL2V4dC9jb25jdXJyZW5jZS5oIiAzCiAgICB2b2lkIGxvY2soKQogICAgewoK
ICAgICAgaWYgKF9fZ3RocmVhZF9hY3RpdmVfcCgpKQogewogICBpZiAoX19ndGhyZWFkX211dGV4
X2xvY2soJl9NX211dGV4KSAhPSAwKQogICAgIF9fdGhyb3dfY29uY3VycmVuY2VfbG9ja19lcnJv
cigpOwogfQoKICAgIH0KCiAgICB2b2lkIHVubG9jaygpCiAgICB7CgogICAgICBpZiAoX19ndGhy
ZWFkX2FjdGl2ZV9wKCkpCiB7CiAgIGlmIChfX2d0aHJlYWRfbXV0ZXhfdW5sb2NrKCZfTV9tdXRl
eCkgIT0gMCkKICAgICBfX3Rocm93X2NvbmN1cnJlbmNlX3VubG9ja19lcnJvcigpOwogfQoKICAg
IH0KCiAgICBfX2d0aHJlYWRfbXV0ZXhfdCogZ3RocmVhZF9tdXRleCh2b2lkKQogICAgICB7IHJl
dHVybiAmX01fbXV0ZXg7IH0KICB9OwoKICBjbGFzcyBfX3JlY3Vyc2l2ZV9tdXRleAogIHsKICBw
cml2YXRlOgoKICAgIF9fZ3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfdCBfTV9tdXRleCA9IHsgeyAw
LCAwLCAwLCBQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRV9OUCwgMCwgeyAwIH0gfSB9OwoKCgoKICAg
IF9fcmVjdXJzaXZlX211dGV4KGNvbnN0IF9fcmVjdXJzaXZlX211dGV4Jik7CiAgICBfX3JlY3Vy
c2l2ZV9tdXRleCYgb3BlcmF0b3I9KGNvbnN0IF9fcmVjdXJzaXZlX211dGV4Jik7CgogIHB1Ymxp
YzoKICAgIF9fcmVjdXJzaXZlX211dGV4KCkKICAgIHsKCgoKCiAgICB9CiMgMjAyICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvZXh0L2NvbmN1cnJlbmNl
LmgiIDMKICAgIHZvaWQgbG9jaygpCiAgICB7CgogICAgICBpZiAoX19ndGhyZWFkX2FjdGl2ZV9w
KCkpCiB7CiAgIGlmIChfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X2xvY2soJl9NX211dGV4KSAh
PSAwKQogICAgIF9fdGhyb3dfY29uY3VycmVuY2VfbG9ja19lcnJvcigpOwogfQoKICAgIH0KCiAg
ICB2b2lkIHVubG9jaygpCiAgICB7CgogICAgICBpZiAoX19ndGhyZWFkX2FjdGl2ZV9wKCkpCiB7
CiAgIGlmIChfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X3VubG9jaygmX01fbXV0ZXgpICE9IDAp
CiAgICAgX190aHJvd19jb25jdXJyZW5jZV91bmxvY2tfZXJyb3IoKTsKIH0KCiAgICB9CgogICAg
X19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleF90KiBndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleCh2b2lk
KQogICAgeyByZXR1cm4gJl9NX211dGV4OyB9CiAgfTsKCgoKCiAgY2xhc3MgX19zY29wZWRfbG9j
awogIHsKICBwdWJsaWM6CiAgICB0eXBlZGVmIF9fbXV0ZXggX19tdXRleF90eXBlOwoKICBwcml2
YXRlOgogICAgX19tdXRleF90eXBlJiBfTV9kZXZpY2U7CgogICAgX19zY29wZWRfbG9jayhjb25z
dCBfX3Njb3BlZF9sb2NrJik7CiAgICBfX3Njb3BlZF9sb2NrJiBvcGVyYXRvcj0oY29uc3QgX19z
Y29wZWRfbG9jayYpOwoKICBwdWJsaWM6CiAgICBleHBsaWNpdCBfX3Njb3BlZF9sb2NrKF9fbXV0
ZXhfdHlwZSYgX19uYW1lKSA6IF9NX2RldmljZShfX25hbWUpCiAgICB7IF9NX2RldmljZS5sb2Nr
KCk7IH0KCiAgICB+X19zY29wZWRfbG9jaygpIHRocm93KCkKICAgIHsgX01fZGV2aWNlLnVubG9j
aygpOyB9CiAgfTsKCgogIGNsYXNzIF9fY29uZAogIHsKICBwcml2YXRlOgoKICAgIF9fZ3RocmVh
ZF9jb25kX3QgX01fY29uZCA9IHsgeyAwLCAwLCAwLCAwLCAwLCAodm9pZCAqKSAwLCAwLCAwIH0g
fTsKCgoKCiAgICBfX2NvbmQoY29uc3QgX19jb25kJik7CiAgICBfX2NvbmQmIG9wZXJhdG9yPShj
b25zdCBfX2NvbmQmKTsKCiAgcHVibGljOgogICAgX19jb25kKCkKICAgIHsKCgoKCiAgICB9CiMg
MjgwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvZXh0
L2NvbmN1cnJlbmNlLmgiIDMKICAgIHZvaWQgYnJvYWRjYXN0KCkKICAgIHsKCiAgICAgIGlmIChf
X2d0aHJlYWRfYWN0aXZlX3AoKSkKIHsKICAgaWYgKF9fZ3RocmVhZF9jb25kX2Jyb2FkY2FzdCgm
X01fY29uZCkgIT0gMCkKICAgICBfX3Rocm93X2NvbmN1cnJlbmNlX2Jyb2FkY2FzdF9lcnJvcigp
OwogfQoKICAgIH0KCiAgICB2b2lkIHdhaXQoX19tdXRleCAqbXV0ZXgpCiAgICB7CgogICAgICB7
CiAgIGlmIChfX2d0aHJlYWRfY29uZF93YWl0KCZfTV9jb25kLCBtdXRleC0+Z3RocmVhZF9tdXRl
eCgpKSAhPSAwKQogICAgIF9fdGhyb3dfY29uY3VycmVuY2Vfd2FpdF9lcnJvcigpOwogICAgICB9
CgogICAgfQoKICAgIHZvaWQgd2FpdF9yZWN1cnNpdmUoX19yZWN1cnNpdmVfbXV0ZXggKm11dGV4
KQogICAgewoKICAgICAgewogICBpZiAoX19ndGhyZWFkX2NvbmRfd2FpdF9yZWN1cnNpdmUoJl9N
X2NvbmQsCiAgICAgICAgIG11dGV4LT5ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleCgpKQogICAgICAg
IT0gMCkKICAgICBfX3Rocm93X2NvbmN1cnJlbmNlX3dhaXRfZXJyb3IoKTsKICAgICAgfQoKICAg
IH0KICB9OwoKCgp9CiMgNzUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjguMS9tZW1vcnkiIDIgMwoKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfZnVuY3Rpb24uaCIgMSAzCiMgNTkgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4x
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9mdW5j
dGlvbi5oIiAzCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgi
ZGVmYXVsdCIpKSkKewoKIyAxMDAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjguMS9iaXRzL3N0bF9mdW5jdGlvbi5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0FyZywgdHlwZW5hbWUgX1Jlc3VsdD4KICAgIHN0cnVjdCB1bmFyeV9mdW5jdGlvbgogICAgewoK
ICAgICAgdHlwZWRlZiBfQXJnIGFyZ3VtZW50X3R5cGU7CgoKICAgICAgdHlwZWRlZiBfUmVzdWx0
IHJlc3VsdF90eXBlOwogICAgfTsKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FyZzEsIHR5cGVu
YW1lIF9BcmcyLCB0eXBlbmFtZSBfUmVzdWx0PgogICAgc3RydWN0IGJpbmFyeV9mdW5jdGlvbgog
ICAgewoKICAgICAgdHlwZWRlZiBfQXJnMSBmaXJzdF9hcmd1bWVudF90eXBlOwoKCiAgICAgIHR5
cGVkZWYgX0FyZzIgc2Vjb25kX2FyZ3VtZW50X3R5cGU7CgoKICAgICAgdHlwZWRlZiBfUmVzdWx0
IHJlc3VsdF90eXBlOwogICAgfTsKIyAxMzkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9mdW5jdGlvbi5oIiAzCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwPgogICAgc3RydWN0IHBsdXMgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCwg
X1RwLCBfVHA+CiAgICB7CiAgICAgIF9UcAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194
LCBjb25zdCBfVHAmIF9feSkgY29uc3QKICAgICAgeyByZXR1cm4gX194ICsgX195OyB9CiAgICB9
OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IG1pbnVzIDogcHVibGljIGJp
bmFyeV9mdW5jdGlvbjxfVHAsIF9UcCwgX1RwPgogICAgewogICAgICBfVHAKICAgICAgb3BlcmF0
b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0CiAgICAgIHsgcmV0dXJu
IF9feCAtIF9feTsgfQogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVj
dCBtdWx0aXBsaWVzIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsIF9UcCwgX1RwPgogICAg
ewogICAgICBfVHAKICAgICAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBf
X3kpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9feCAqIF9feTsgfQogICAgfTsKCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBkaXZpZGVzIDogcHVibGljIGJpbmFyeV9mdW5jdGlv
bjxfVHAsIF9UcCwgX1RwPgogICAgewogICAgICBfVHAKICAgICAgb3BlcmF0b3IoKShjb25zdCBf
VHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9feCAvIF9feTsg
fQogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBtb2R1bHVzIDog
cHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsIF9UcCwgX1RwPgogICAgewogICAgICBfVHAKICAg
ICAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0CiAgICAg
IHsgcmV0dXJuIF9feCAlIF9feTsgfQogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4K
ICAgIHN0cnVjdCBuZWdhdGUgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1RwLCBfVHA+CiAgICB7
CiAgICAgIF9UcAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194KSBjb25zdAogICAgICB7
IHJldHVybiAtX194OyB9CiAgICB9OwojIDIwMyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2Z1bmN0aW9uLmgiIDMKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgZXF1YWxfdG8gOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9u
PF9UcCwgX1RwLCBib29sPgogICAgewogICAgICBib29sCiAgICAgIG9wZXJhdG9yKCkoY29uc3Qg
X1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdAogICAgICB7IHJldHVybiBfX3ggPT0gX195
OyB9CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IG5vdF9lcXVh
bF90byA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLCBfVHAsIGJvb2w+CiAgICB7CiAgICAg
IGJvb2wKICAgICAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNv
bnN0CiAgICAgIHsgcmV0dXJuIF9feCAhPSBfX3k7IH0KICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICBzdHJ1Y3QgZ3JlYXRlciA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1Rw
LCBfVHAsIGJvb2w+CiAgICB7CiAgICAgIGJvb2wKICAgICAgb3BlcmF0b3IoKShjb25zdCBfVHAm
IF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9feCA+IF9feTsgfQog
ICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBsZXNzIDogcHVibGlj
IGJpbmFyeV9mdW5jdGlvbjxfVHAsIF9UcCwgYm9vbD4KICAgIHsKICAgICAgYm9vbAogICAgICBv
cGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QKICAgICAgeyBy
ZXR1cm4gX194IDwgX195OyB9CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAg
c3RydWN0IGdyZWF0ZXJfZXF1YWwgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCwgX1RwLCBi
b29sPgogICAgewogICAgICBib29sCiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNv
bnN0IF9UcCYgX195KSBjb25zdAogICAgICB7IHJldHVybiBfX3ggPj0gX195OyB9CiAgICB9OwoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGxlc3NfZXF1YWwgOiBwdWJsaWMg
YmluYXJ5X2Z1bmN0aW9uPF9UcCwgX1RwLCBib29sPgogICAgewogICAgICBib29sCiAgICAgIG9w
ZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdAogICAgICB7IHJl
dHVybiBfX3ggPD0gX195OyB9CiAgICB9OwojIDI2NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2Z1bmN0aW9uLmgiIDMKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgbG9naWNhbF9hbmQgOiBwdWJsaWMgYmluYXJ5X2Z1
bmN0aW9uPF9UcCwgX1RwLCBib29sPgogICAgewogICAgICBib29sCiAgICAgIG9wZXJhdG9yKCko
Y29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdAogICAgICB7IHJldHVybiBfX3gg
JiYgX195OyB9CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGxv
Z2ljYWxfb3IgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCwgX1RwLCBib29sPgogICAgewog
ICAgICBib29sCiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195
KSBjb25zdAogICAgICB7IHJldHVybiBfX3ggfHwgX195OyB9CiAgICB9OwoKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGxvZ2ljYWxfbm90IDogcHVibGljIHVuYXJ5X2Z1bmN0
aW9uPF9UcCwgYm9vbD4KICAgIHsKICAgICAgYm9vbAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9U
cCYgX194KSBjb25zdAogICAgICB7IHJldHVybiAhX194OyB9CiAgICB9OwoKCgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgYml0X2FuZCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rp
b248X1RwLCBfVHAsIF9UcD4KICAgIHsKICAgICAgX1RwCiAgICAgIG9wZXJhdG9yKCkoY29uc3Qg
X1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdAogICAgICB7IHJldHVybiBfX3ggJiBfX3k7
IH0KICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBiaXRfb3IgOiBw
dWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCwgX1RwLCBfVHA+CiAgICB7CiAgICAgIF9UcAogICAg
ICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QKICAgICAg
eyByZXR1cm4gX194IHwgX195OyB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBzdHJ1Y3QgYml0X3hvciA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLCBfVHAsIF9UcD4K
ICAgIHsKICAgICAgX1RwCiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9U
cCYgX195KSBjb25zdAogICAgICB7IHJldHVybiBfX3ggXiBfX3k7IH0KICAgIH07CiMgMzUwICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxf
ZnVuY3Rpb24uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgICBjbGFzcyB1
bmFyeV9uZWdhdGUKICAgIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIF9QcmVkaWNh
dGU6OmFyZ3VtZW50X3R5cGUsIGJvb2w+CiAgICB7CiAgICBwcm90ZWN0ZWQ6CiAgICAgIF9QcmVk
aWNhdGUgX01fcHJlZDsKCiAgICBwdWJsaWM6CiAgICAgIGV4cGxpY2l0CiAgICAgIHVuYXJ5X25l
Z2F0ZShjb25zdCBfUHJlZGljYXRlJiBfX3gpIDogX01fcHJlZChfX3gpIHsgfQoKICAgICAgYm9v
bAogICAgICBvcGVyYXRvcigpKGNvbnN0IHR5cGVuYW1lIF9QcmVkaWNhdGU6OmFyZ3VtZW50X3R5
cGUmIF9feCkgY29uc3QKICAgICAgeyByZXR1cm4gIV9NX3ByZWQoX194KTsgfQogICAgfTsKCgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgICBpbmxpbmUgdW5hcnlfbmVnYXRlPF9Q
cmVkaWNhdGU+CiAgICBub3QxKGNvbnN0IF9QcmVkaWNhdGUmIF9fcHJlZCkKICAgIHsgcmV0dXJu
IHVuYXJ5X25lZ2F0ZTxfUHJlZGljYXRlPihfX3ByZWQpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfUHJlZGljYXRlPgogICAgY2xhc3MgYmluYXJ5X25lZ2F0ZQogICAgOiBwdWJsaWMgYmluYXJ5
X2Z1bmN0aW9uPHR5cGVuYW1lIF9QcmVkaWNhdGU6OmZpcnN0X2FyZ3VtZW50X3R5cGUsCiAgICAg
ICAgdHlwZW5hbWUgX1ByZWRpY2F0ZTo6c2Vjb25kX2FyZ3VtZW50X3R5cGUsIGJvb2w+CiAgICB7
CiAgICBwcm90ZWN0ZWQ6CiAgICAgIF9QcmVkaWNhdGUgX01fcHJlZDsKCiAgICBwdWJsaWM6CiAg
ICAgIGV4cGxpY2l0CiAgICAgIGJpbmFyeV9uZWdhdGUoY29uc3QgX1ByZWRpY2F0ZSYgX194KSA6
IF9NX3ByZWQoX194KSB7IH0KCiAgICAgIGJvb2wKICAgICAgb3BlcmF0b3IoKShjb25zdCB0eXBl
bmFtZSBfUHJlZGljYXRlOjpmaXJzdF9hcmd1bWVudF90eXBlJiBfX3gsCiAgIGNvbnN0IHR5cGVu
YW1lIF9QcmVkaWNhdGU6OnNlY29uZF9hcmd1bWVudF90eXBlJiBfX3kpIGNvbnN0CiAgICAgIHsg
cmV0dXJuICFfTV9wcmVkKF9feCwgX195KTsgfQogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9QcmVkaWNhdGU+CiAgICBpbmxpbmUgYmluYXJ5X25lZ2F0ZTxfUHJlZGljYXRlPgogICAgbm90
Mihjb25zdCBfUHJlZGljYXRlJiBfX3ByZWQpCiAgICB7IHJldHVybiBiaW5hcnlfbmVnYXRlPF9Q
cmVkaWNhdGU+KF9fcHJlZCk7IH0KIyA0MjEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9mdW5jdGlvbi5oIiAzCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0FyZywgdHlwZW5hbWUgX1Jlc3VsdD4KICAgIGNsYXNzIHBvaW50ZXJfdG9fdW5hcnlf
ZnVuY3Rpb24gOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X0FyZywgX1Jlc3VsdD4KICAgIHsKICAg
IHByb3RlY3RlZDoKICAgICAgX1Jlc3VsdCAoKl9NX3B0cikoX0FyZyk7CgogICAgcHVibGljOgog
ICAgICBwb2ludGVyX3RvX3VuYXJ5X2Z1bmN0aW9uKCkgeyB9CgogICAgICBleHBsaWNpdAogICAg
ICBwb2ludGVyX3RvX3VuYXJ5X2Z1bmN0aW9uKF9SZXN1bHQgKCpfX3gpKF9BcmcpKQogICAgICA6
IF9NX3B0cihfX3gpIHsgfQoKICAgICAgX1Jlc3VsdAogICAgICBvcGVyYXRvcigpKF9BcmcgX194
KSBjb25zdAogICAgICB7IHJldHVybiBfTV9wdHIoX194KTsgfQogICAgfTsKCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9BcmcsIHR5cGVuYW1lIF9SZXN1bHQ+CiAgICBpbmxpbmUgcG9pbnRlcl90b191
bmFyeV9mdW5jdGlvbjxfQXJnLCBfUmVzdWx0PgogICAgcHRyX2Z1bihfUmVzdWx0ICgqX194KShf
QXJnKSkKICAgIHsgcmV0dXJuIHBvaW50ZXJfdG9fdW5hcnlfZnVuY3Rpb248X0FyZywgX1Jlc3Vs
dD4oX194KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FyZzEsIHR5cGVuYW1lIF9BcmcyLCB0
eXBlbmFtZSBfUmVzdWx0PgogICAgY2xhc3MgcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb24KICAg
IDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfQXJnMSwgX0FyZzIsIF9SZXN1bHQ+CiAgICB7CiAg
ICBwcm90ZWN0ZWQ6CiAgICAgIF9SZXN1bHQgKCpfTV9wdHIpKF9BcmcxLCBfQXJnMik7CgogICAg
cHVibGljOgogICAgICBwb2ludGVyX3RvX2JpbmFyeV9mdW5jdGlvbigpIHsgfQoKICAgICAgZXhw
bGljaXQKICAgICAgcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb24oX1Jlc3VsdCAoKl9feCkoX0Fy
ZzEsIF9BcmcyKSkKICAgICAgOiBfTV9wdHIoX194KSB7IH0KCiAgICAgIF9SZXN1bHQKICAgICAg
b3BlcmF0b3IoKShfQXJnMSBfX3gsIF9BcmcyIF9feSkgY29uc3QKICAgICAgeyByZXR1cm4gX01f
cHRyKF9feCwgX195KTsgfQogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9BcmcxLCB0eXBl
bmFtZSBfQXJnMiwgdHlwZW5hbWUgX1Jlc3VsdD4KICAgIGlubGluZSBwb2ludGVyX3RvX2JpbmFy
eV9mdW5jdGlvbjxfQXJnMSwgX0FyZzIsIF9SZXN1bHQ+CiAgICBwdHJfZnVuKF9SZXN1bHQgKCpf
X3gpKF9BcmcxLCBfQXJnMikpCiAgICB7IHJldHVybiBwb2ludGVyX3RvX2JpbmFyeV9mdW5jdGlv
bjxfQXJnMSwgX0FyZzIsIF9SZXN1bHQ+KF9feCk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4KICAgIHN0cnVjdCBfSWRlbnRpdHkKICAgIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9UcCxf
VHA+CiAgICB7CiAgICAgIF9UcCYKICAgICAgb3BlcmF0b3IoKShfVHAmIF9feCkgY29uc3QKICAg
ICAgeyByZXR1cm4gX194OyB9CgogICAgICBjb25zdCBfVHAmCiAgICAgIG9wZXJhdG9yKCkoY29u
c3QgX1RwJiBfX3gpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9feDsgfQogICAgfTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1BhaXI+CiAgICBzdHJ1Y3QgX1NlbGVjdDFzdAogICAgOiBwdWJsaWMgdW5h
cnlfZnVuY3Rpb248X1BhaXIsIHR5cGVuYW1lIF9QYWlyOjpmaXJzdF90eXBlPgogICAgewogICAg
ICB0eXBlbmFtZSBfUGFpcjo6Zmlyc3RfdHlwZSYKICAgICAgb3BlcmF0b3IoKShfUGFpciYgX194
KSBjb25zdAogICAgICB7IHJldHVybiBfX3guZmlyc3Q7IH0KCiAgICAgIGNvbnN0IHR5cGVuYW1l
IF9QYWlyOjpmaXJzdF90eXBlJgogICAgICBvcGVyYXRvcigpKGNvbnN0IF9QYWlyJiBfX3gpIGNv
bnN0CiAgICAgIHsgcmV0dXJuIF9feC5maXJzdDsgfQoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IF9QYWlyMj4KICAgICAgICB0eXBlbmFtZSBfUGFpcjI6OmZpcnN0X3R5cGUmCiAgICAgICAgb3Bl
cmF0b3IoKShfUGFpcjImIF9feCkgY29uc3QKICAgICAgICB7IHJldHVybiBfX3guZmlyc3Q7IH0K
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9QYWlyMj4KICAgICAgICBjb25zdCB0eXBlbmFtZSBf
UGFpcjI6OmZpcnN0X3R5cGUmCiAgICAgICAgb3BlcmF0b3IoKShjb25zdCBfUGFpcjImIF9feCkg
Y29uc3QKICAgICAgICB7IHJldHVybiBfX3guZmlyc3Q7IH0KCiAgICB9OwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUGFpcj4KICAgIHN0cnVjdCBfU2VsZWN0Mm5kCiAgICA6IHB1YmxpYyB1bmFyeV9m
dW5jdGlvbjxfUGFpciwgdHlwZW5hbWUgX1BhaXI6OnNlY29uZF90eXBlPgogICAgewogICAgICB0
eXBlbmFtZSBfUGFpcjo6c2Vjb25kX3R5cGUmCiAgICAgIG9wZXJhdG9yKCkoX1BhaXImIF9feCkg
Y29uc3QKICAgICAgeyByZXR1cm4gX194LnNlY29uZDsgfQoKICAgICAgY29uc3QgdHlwZW5hbWUg
X1BhaXI6OnNlY29uZF90eXBlJgogICAgICBvcGVyYXRvcigpKGNvbnN0IF9QYWlyJiBfX3gpIGNv
bnN0CiAgICAgIHsgcmV0dXJuIF9feC5zZWNvbmQ7IH0KICAgIH07CiMgNTQxICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfZnVuY3Rpb24u
aCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXQsIHR5cGVuYW1lIF9UcD4KICAgIGNsYXNzIG1l
bV9mdW5fdCA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfVHAqLCBfUmV0PgogICAgewogICAgcHVi
bGljOgogICAgICBleHBsaWNpdAogICAgICBtZW1fZnVuX3QoX1JldCAoX1RwOjoqX19wZikoKSkK
ICAgICAgOiBfTV9mKF9fcGYpIHsgfQoKICAgICAgX1JldAogICAgICBvcGVyYXRvcigpKF9UcCog
X19wKSBjb25zdAogICAgICB7IHJldHVybiAoX19wLT4qX01fZikoKTsgfQoKICAgIHByaXZhdGU6
CiAgICAgIF9SZXQgKF9UcDo6Kl9NX2YpKCk7CiAgICB9OwoKCgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9SZXQsIHR5cGVuYW1lIF9UcD4KICAgIGNsYXNzIGNvbnN0X21lbV9mdW5fdCA6IHB1YmxpYyB1
bmFyeV9mdW5jdGlvbjxjb25zdCBfVHAqLCBfUmV0PgogICAgewogICAgcHVibGljOgogICAgICBl
eHBsaWNpdAogICAgICBjb25zdF9tZW1fZnVuX3QoX1JldCAoX1RwOjoqX19wZikoKSBjb25zdCkK
ICAgICAgOiBfTV9mKF9fcGYpIHsgfQoKICAgICAgX1JldAogICAgICBvcGVyYXRvcigpKGNvbnN0
IF9UcCogX19wKSBjb25zdAogICAgICB7IHJldHVybiAoX19wLT4qX01fZikoKTsgfQoKICAgIHBy
aXZhdGU6CiAgICAgIF9SZXQgKF9UcDo6Kl9NX2YpKCkgY29uc3Q7CiAgICB9OwoKCgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9SZXQsIHR5cGVuYW1lIF9UcD4KICAgIGNsYXNzIG1lbV9mdW5fcmVmX3Qg
OiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1RwLCBfUmV0PgogICAgewogICAgcHVibGljOgogICAg
ICBleHBsaWNpdAogICAgICBtZW1fZnVuX3JlZl90KF9SZXQgKF9UcDo6Kl9fcGYpKCkpCiAgICAg
IDogX01fZihfX3BmKSB7IH0KCiAgICAgIF9SZXQKICAgICAgb3BlcmF0b3IoKShfVHAmIF9fcikg
Y29uc3QKICAgICAgeyByZXR1cm4gKF9fci4qX01fZikoKTsgfQoKICAgIHByaXZhdGU6CiAgICAg
IF9SZXQgKF9UcDo6Kl9NX2YpKCk7CiAgfTsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCB0
eXBlbmFtZSBfVHA+CiAgICBjbGFzcyBjb25zdF9tZW1fZnVuX3JlZl90IDogcHVibGljIHVuYXJ5
X2Z1bmN0aW9uPF9UcCwgX1JldD4KICAgIHsKICAgIHB1YmxpYzoKICAgICAgZXhwbGljaXQKICAg
ICAgY29uc3RfbWVtX2Z1bl9yZWZfdChfUmV0IChfVHA6OipfX3BmKSgpIGNvbnN0KQogICAgICA6
IF9NX2YoX19wZikgeyB9CgogICAgICBfUmV0CiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBf
X3IpIGNvbnN0CiAgICAgIHsgcmV0dXJuIChfX3IuKl9NX2YpKCk7IH0KCiAgICBwcml2YXRlOgog
ICAgICBfUmV0IChfVHA6OipfTV9mKSgpIGNvbnN0OwogICAgfTsKCgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUmV0LCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Bcmc+CiAgICBjbGFzcyBtZW1fZnVu
MV90IDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAqLCBfQXJnLCBfUmV0PgogICAgewogICAg
cHVibGljOgogICAgICBleHBsaWNpdAogICAgICBtZW1fZnVuMV90KF9SZXQgKF9UcDo6Kl9fcGYp
KF9BcmcpKQogICAgICA6IF9NX2YoX19wZikgeyB9CgogICAgICBfUmV0CiAgICAgIG9wZXJhdG9y
KCkoX1RwKiBfX3AsIF9BcmcgX194KSBjb25zdAogICAgICB7IHJldHVybiAoX19wLT4qX01fZiko
X194KTsgfQoKICAgIHByaXZhdGU6CiAgICAgIF9SZXQgKF9UcDo6Kl9NX2YpKF9BcmcpOwogICAg
fTsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9B
cmc+CiAgICBjbGFzcyBjb25zdF9tZW1fZnVuMV90IDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxj
b25zdCBfVHAqLCBfQXJnLCBfUmV0PgogICAgewogICAgcHVibGljOgogICAgICBleHBsaWNpdAog
ICAgICBjb25zdF9tZW1fZnVuMV90KF9SZXQgKF9UcDo6Kl9fcGYpKF9BcmcpIGNvbnN0KQogICAg
ICA6IF9NX2YoX19wZikgeyB9CgogICAgICBfUmV0CiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX1Rw
KiBfX3AsIF9BcmcgX194KSBjb25zdAogICAgICB7IHJldHVybiAoX19wLT4qX01fZikoX194KTsg
fQoKICAgIHByaXZhdGU6CiAgICAgIF9SZXQgKF9UcDo6Kl9NX2YpKF9BcmcpIGNvbnN0OwogICAg
fTsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9B
cmc+CiAgICBjbGFzcyBtZW1fZnVuMV9yZWZfdCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1Rw
LCBfQXJnLCBfUmV0PgogICAgewogICAgcHVibGljOgogICAgICBleHBsaWNpdAogICAgICBtZW1f
ZnVuMV9yZWZfdChfUmV0IChfVHA6OipfX3BmKShfQXJnKSkKICAgICAgOiBfTV9mKF9fcGYpIHsg
fQoKICAgICAgX1JldAogICAgICBvcGVyYXRvcigpKF9UcCYgX19yLCBfQXJnIF9feCkgY29uc3QK
ICAgICAgeyByZXR1cm4gKF9fci4qX01fZikoX194KTsgfQoKICAgIHByaXZhdGU6CiAgICAgIF9S
ZXQgKF9UcDo6Kl9NX2YpKF9BcmcpOwogICAgfTsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0
LCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Bcmc+CiAgICBjbGFzcyBjb25zdF9tZW1fZnVuMV9y
ZWZfdCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLCBfQXJnLCBfUmV0PgogICAgewogICAg
cHVibGljOgogICAgICBleHBsaWNpdAogICAgICBjb25zdF9tZW1fZnVuMV9yZWZfdChfUmV0IChf
VHA6OipfX3BmKShfQXJnKSBjb25zdCkKICAgICAgOiBfTV9mKF9fcGYpIHsgfQoKICAgICAgX1Jl
dAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX19yLCBfQXJnIF9feCkgY29uc3QKICAgICAg
eyByZXR1cm4gKF9fci4qX01fZikoX194KTsgfQoKICAgIHByaXZhdGU6CiAgICAgIF9SZXQgKF9U
cDo6Kl9NX2YpKF9BcmcpIGNvbnN0OwogICAgfTsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0
LCB0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgbWVtX2Z1bl90PF9SZXQsIF9UcD4KICAgIG1lbV9m
dW4oX1JldCAoX1RwOjoqX19mKSgpKQogICAgeyByZXR1cm4gbWVtX2Z1bl90PF9SZXQsIF9UcD4o
X19mKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCB0eXBlbmFtZSBfVHA+CiAgICBpbmxp
bmUgY29uc3RfbWVtX2Z1bl90PF9SZXQsIF9UcD4KICAgIG1lbV9mdW4oX1JldCAoX1RwOjoqX19m
KSgpIGNvbnN0KQogICAgeyByZXR1cm4gY29uc3RfbWVtX2Z1bl90PF9SZXQsIF9UcD4oX19mKTsg
fQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCB0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgbWVt
X2Z1bl9yZWZfdDxfUmV0LCBfVHA+CiAgICBtZW1fZnVuX3JlZihfUmV0IChfVHA6OipfX2YpKCkp
CiAgICB7IHJldHVybiBtZW1fZnVuX3JlZl90PF9SZXQsIF9UcD4oX19mKTsgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfUmV0LCB0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgY29uc3RfbWVtX2Z1bl9y
ZWZfdDxfUmV0LCBfVHA+CiAgICBtZW1fZnVuX3JlZihfUmV0IChfVHA6OipfX2YpKCkgY29uc3Qp
CiAgICB7IHJldHVybiBjb25zdF9tZW1fZnVuX3JlZl90PF9SZXQsIF9UcD4oX19mKTsgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Bcmc+CiAgICBp
bmxpbmUgbWVtX2Z1bjFfdDxfUmV0LCBfVHAsIF9Bcmc+CiAgICBtZW1fZnVuKF9SZXQgKF9UcDo6
Kl9fZikoX0FyZykpCiAgICB7IHJldHVybiBtZW1fZnVuMV90PF9SZXQsIF9UcCwgX0FyZz4oX19m
KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9B
cmc+CiAgICBpbmxpbmUgY29uc3RfbWVtX2Z1bjFfdDxfUmV0LCBfVHAsIF9Bcmc+CiAgICBtZW1f
ZnVuKF9SZXQgKF9UcDo6Kl9fZikoX0FyZykgY29uc3QpCiAgICB7IHJldHVybiBjb25zdF9tZW1f
ZnVuMV90PF9SZXQsIF9UcCwgX0FyZz4oX19mKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0
LCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Bcmc+CiAgICBpbmxpbmUgbWVtX2Z1bjFfcmVmX3Q8
X1JldCwgX1RwLCBfQXJnPgogICAgbWVtX2Z1bl9yZWYoX1JldCAoX1RwOjoqX19mKShfQXJnKSkK
ICAgIHsgcmV0dXJuIG1lbV9mdW4xX3JlZl90PF9SZXQsIF9UcCwgX0FyZz4oX19mKTsgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Bcmc+CiAgICBp
bmxpbmUgY29uc3RfbWVtX2Z1bjFfcmVmX3Q8X1JldCwgX1RwLCBfQXJnPgogICAgbWVtX2Z1bl9y
ZWYoX1JldCAoX1RwOjoqX19mKShfQXJnKSBjb25zdCkKICAgIHsgcmV0dXJuIGNvbnN0X21lbV9m
dW4xX3JlZl90PF9SZXQsIF9UcCwgX0FyZz4oX19mKTsgfQoKCgoKfQoKCiMgMSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JhY2t3YXJkL2JpbmRlcnMu
aCIgMSAzCiMgNTkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjguMS9iYWNrd2FyZC9iaW5kZXJzLmgiIDMKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgo
X192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgojIDEwMyAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JhY2t3YXJkL2JpbmRlcnMuaCIgMwogIHRl
bXBsYXRlPHR5cGVuYW1lIF9PcGVyYXRpb24+CiAgICBjbGFzcyBiaW5kZXIxc3QKICAgIDogcHVi
bGljIHVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIF9PcGVyYXRpb246OnNlY29uZF9hcmd1bWVudF90
eXBlLAogICAgICAgdHlwZW5hbWUgX09wZXJhdGlvbjo6cmVzdWx0X3R5cGU+CiAgICB7CiAgICBw
cm90ZWN0ZWQ6CiAgICAgIF9PcGVyYXRpb24gb3A7CiAgICAgIHR5cGVuYW1lIF9PcGVyYXRpb246
OmZpcnN0X2FyZ3VtZW50X3R5cGUgdmFsdWU7CgogICAgcHVibGljOgogICAgICBiaW5kZXIxc3Qo
Y29uc3QgX09wZXJhdGlvbiYgX194LAogIGNvbnN0IHR5cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0
X2FyZ3VtZW50X3R5cGUmIF9feSkKICAgICAgOiBvcChfX3gpLCB2YWx1ZShfX3kpIHsgfQoKICAg
ICAgdHlwZW5hbWUgX09wZXJhdGlvbjo6cmVzdWx0X3R5cGUKICAgICAgb3BlcmF0b3IoKShjb25z
dCB0eXBlbmFtZSBfT3BlcmF0aW9uOjpzZWNvbmRfYXJndW1lbnRfdHlwZSYgX194KSBjb25zdAog
ICAgICB7IHJldHVybiBvcCh2YWx1ZSwgX194KTsgfQoKCgogICAgICB0eXBlbmFtZSBfT3BlcmF0
aW9uOjpyZXN1bHRfdHlwZQogICAgICBvcGVyYXRvcigpKHR5cGVuYW1lIF9PcGVyYXRpb246OnNl
Y29uZF9hcmd1bWVudF90eXBlJiBfX3gpIGNvbnN0CiAgICAgIHsgcmV0dXJuIG9wKHZhbHVlLCBf
X3gpOyB9CiAgICB9IF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpOwoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX09wZXJhdGlvbiwgdHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGJpbmRlcjFz
dDxfT3BlcmF0aW9uPgogICAgYmluZDFzdChjb25zdCBfT3BlcmF0aW9uJiBfX2ZuLCBjb25zdCBf
VHAmIF9feCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfT3BlcmF0aW9uOjpmaXJzdF9h
cmd1bWVudF90eXBlIF9BcmcxX3R5cGU7CiAgICAgIHJldHVybiBiaW5kZXIxc3Q8X09wZXJhdGlv
bj4oX19mbiwgX0FyZzFfdHlwZShfX3gpKTsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9P
cGVyYXRpb24+CiAgICBjbGFzcyBiaW5kZXIybmQKICAgIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9u
PHR5cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3VtZW50X3R5cGUsCiAgICAgICB0eXBlbmFt
ZSBfT3BlcmF0aW9uOjpyZXN1bHRfdHlwZT4KICAgIHsKICAgIHByb3RlY3RlZDoKICAgICAgX09w
ZXJhdGlvbiBvcDsKICAgICAgdHlwZW5hbWUgX09wZXJhdGlvbjo6c2Vjb25kX2FyZ3VtZW50X3R5
cGUgdmFsdWU7CgogICAgcHVibGljOgogICAgICBiaW5kZXIybmQoY29uc3QgX09wZXJhdGlvbiYg
X194LAogIGNvbnN0IHR5cGVuYW1lIF9PcGVyYXRpb246OnNlY29uZF9hcmd1bWVudF90eXBlJiBf
X3kpCiAgICAgIDogb3AoX194KSwgdmFsdWUoX195KSB7IH0KCiAgICAgIHR5cGVuYW1lIF9PcGVy
YXRpb246OnJlc3VsdF90eXBlCiAgICAgIG9wZXJhdG9yKCkoY29uc3QgdHlwZW5hbWUgX09wZXJh
dGlvbjo6Zmlyc3RfYXJndW1lbnRfdHlwZSYgX194KSBjb25zdAogICAgICB7IHJldHVybiBvcChf
X3gsIHZhbHVlKTsgfQoKCgogICAgICB0eXBlbmFtZSBfT3BlcmF0aW9uOjpyZXN1bHRfdHlwZQog
ICAgICBvcGVyYXRvcigpKHR5cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3VtZW50X3R5cGUm
IF9feCkgY29uc3QKICAgICAgeyByZXR1cm4gb3AoX194LCB2YWx1ZSk7IH0KICAgIH0gX19hdHRy
aWJ1dGVfXyAoKF9fZGVwcmVjYXRlZF9fKSk7CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfT3BlcmF0
aW9uLCB0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgYmluZGVyMm5kPF9PcGVyYXRpb24+CiAgICBi
aW5kMm5kKGNvbnN0IF9PcGVyYXRpb24mIF9fZm4sIGNvbnN0IF9UcCYgX194KQogICAgewogICAg
ICB0eXBlZGVmIHR5cGVuYW1lIF9PcGVyYXRpb246OnNlY29uZF9hcmd1bWVudF90eXBlIF9Bcmcy
X3R5cGU7CiAgICAgIHJldHVybiBiaW5kZXIybmQ8X09wZXJhdGlvbj4oX19mbiwgX0FyZzJfdHlw
ZShfX3gpKTsKICAgIH0KCgoKfQojIDczMiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2Z1bmN0aW9uLmgiIDIgMwojIDc3ICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvbWVtb3J5IiAyIDMKIyAx
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy91
c2VzX2FsbG9jYXRvci5oIiAxIDMKIyAzNCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvdXNlc19hbGxvY2F0b3IuaCIgMwpuYW1lc3BhY2Ugc3Rk
IF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgoKICBzdHJ1
Y3QgYWxsb2NhdG9yX2FyZ190IHsgfTsKCiAgY29uc3RleHByIGFsbG9jYXRvcl9hcmdfdCBhbGxv
Y2F0b3JfYXJnID0gYWxsb2NhdG9yX2FyZ190KCk7Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGNs
YXNzIF9faGFzX2FsbG9jYXRvcl90eXBlX2hlbHBlciA6IF9fc2ZpbmFlX3R5cGVzIHsgdGVtcGxh
dGU8dHlwZW5hbWUgX1VwPiBzdHJ1Y3QgX1dyYXBfdHlwZSB7IH07IHRlbXBsYXRlPHR5cGVuYW1l
IF9VcD4gc3RhdGljIF9fb25lIF9fdGVzdChfV3JhcF90eXBlPHR5cGVuYW1lIF9VcDo6YWxsb2Nh
dG9yX3R5cGU+Kik7IHRlbXBsYXRlPHR5cGVuYW1lIF9VcD4gc3RhdGljIF9fdHdvIF9fdGVzdCgu
Li4pOyBwdWJsaWM6IHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1ZSA9IHNpemVvZihfX3Rlc3Q8
X1RwPigwKSkgPT0gMTsgfTsgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBzdHJ1Y3QgX19oYXNfYWxs
b2NhdG9yX3R5cGUgOiBpbnRlZ3JhbF9jb25zdGFudDxib29sLCBfX2hhc19hbGxvY2F0b3JfdHlw
ZV9oZWxwZXIgPHR5cGVuYW1lIHJlbW92ZV9jdjxfVHA+Ojp0eXBlPjo6dmFsdWU+IHsgfTsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQWxsb2MsCiAgICBib29sID0gX19oYXNf
YWxsb2NhdG9yX3R5cGU8X1RwPjo6dmFsdWU+CiAgICBzdHJ1Y3QgX191c2VzX2FsbG9jYXRvcl9o
ZWxwZXIKICAgIDogcHVibGljIGZhbHNlX3R5cGUgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHN0cnVjdCBfX3VzZXNfYWxsb2NhdG9yX2hlbHBlcjxf
VHAsIF9BbGxvYywgdHJ1ZT4KICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGJvb2wsIGlz
X2NvbnZlcnRpYmxlPF9BbGxvYywKICAgICAgICAgdHlwZW5hbWUgX1RwOjphbGxvY2F0b3JfdHlw
ZT46OnZhbHVlPgogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBf
QWxsb2M+CiAgICBzdHJ1Y3QgdXNlc19hbGxvY2F0b3IKICAgIDogcHVibGljIGludGVncmFsX2Nv
bnN0YW50PGJvb2wsCiAgICAgICAgICBfX3VzZXNfYWxsb2NhdG9yX2hlbHBlcjxfVHAsIF9BbGxv
Yz46OnZhbHVlPgogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9B
bGxvYywgdHlwZW5hbWUuLi4gX0FyZ3M+CiAgICBzdHJ1Y3QgX191c2VzX2FsbG9jYXRvcl9hcmcK
ICAgIDogaXNfY29uc3RydWN0aWJsZTxfVHAsIF9BbGxvYywgX0FyZ3MuLi4+CiAgICB7IHN0YXRp
Y19hc3NlcnQoIHVzZXNfYWxsb2NhdG9yPF9UcCwgX0FsbG9jPjo6dmFsdWUsICJ1c2VzIGFsbG9j
YXRvciIgKTsgfTsKCiAgc3RydWN0IF9fdXNlc19hbGxvY19iYXNlIHsgfTsKICBzdHJ1Y3QgX191
c2VzX2FsbG9jMCA6IF9fdXNlc19hbGxvY19iYXNlCiAgeyBzdHJ1Y3QgX0FueXRoaW5nIHsgX0Fu
eXRoaW5nKC4uLikgeyB9IH0gX01fYTsgfTsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiAg
ICBzdHJ1Y3QgX191c2VzX2FsbG9jMSA6IF9fdXNlc19hbGxvY19iYXNlIHsgY29uc3QgX0FsbG9j
KiBfTV9hOyB9OwogIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYz4KICAgIHN0cnVjdCBfX3VzZXNf
YWxsb2MyIDogX191c2VzX2FsbG9jX2Jhc2UgeyBjb25zdCBfQWxsb2MqIF9NX2E7IH07CgogIHRl
bXBsYXRlPGJvb2wsIHR5cGVuYW1lIF9BbGxvYywgdHlwZW5hbWUuLi4gX0FyZ3M+CiAgICBzdHJ1
Y3QgX191c2VzX2FsbG9jOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxv
YywgdHlwZW5hbWUuLi4gX0FyZ3M+CiAgICBzdHJ1Y3QgX191c2VzX2FsbG9jPHRydWUsIF9UcCwg
X0FsbG9jLCBfQXJncy4uLj4KICAgIDogY29uZGl0aW9uYWw8CiAgICAgICAgaXNfY29uc3RydWN0
aWJsZTxfVHAsIGFsbG9jYXRvcl9hcmdfdCwgX0FsbG9jLCBfQXJncy4uLj46OnZhbHVlLAogICAg
ICAgIF9fdXNlc19hbGxvYzE8X0FsbG9jPiwKICAgICAgICBfX3VzZXNfYWxsb2MyPF9BbGxvYz4+
Ojp0eXBlCiAgICB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9j
LCB0eXBlbmFtZS4uLiBfQXJncz4KICAgIHN0cnVjdCBfX3VzZXNfYWxsb2M8ZmFsc2UsIF9UcCwg
X0FsbG9jLCBfQXJncy4uLj4KICAgIDogX191c2VzX2FsbG9jMCB7IH07CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZS4uLiBfQXJncz4KICAgIHN0cnVj
dCBfX3VzZXNfYWxsb2NfaW1wbAogICAgOiBfX3VzZXNfYWxsb2M8dXNlc19hbGxvY2F0b3I8X1Rw
LCBfQWxsb2M+Ojp2YWx1ZSwgX1RwLCBfQWxsb2MsIF9BcmdzLi4uPgogICAgeyB9OwoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYywgdHlwZW5hbWUuLi4gX0FyZ3M+CiAg
ICBfX3VzZXNfYWxsb2NfaW1wbDxfVHAsIF9BbGxvYywgX0FyZ3MuLi4+CiAgICBfX3VzZV9hbGxv
Yyhjb25zdCBfQWxsb2MmIF9fYSkKICAgIHsKICAgICAgX191c2VzX2FsbG9jX2ltcGw8X1RwLCBf
QWxsb2MsIF9BcmdzLi4uPiBfX3JldDsKICAgICAgX19yZXQuX01fYSA9ICZfX2E7CiAgICAgIHJl
dHVybiBfX3JldDsKICAgIH0KCgp9CiMgNzggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9tZW1vcnkiIDIgMwoKIyAxICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvZnVuY3Rpb25hbCIgMSAzCiMgNDYgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4x
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9mdW5jdGlvbmFsIiAz
CiAgICAgICAKIyA0NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOC4xL2Z1bmN0aW9uYWwiIDMKIyA1NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOC4xL2Z1bmN0aW9uYWwiIDMKIyAxICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvdHVwbGUiIDEgMwojIDMyICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvdHVwbGUiIDMKICAgICAgIAoj
IDMzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvdHVw
bGUiIDMKCgoKCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjguMS91dGlsaXR5IiAxIDMKIyA1OCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOC4xL3V0aWxpdHkiIDMKICAgICAgIAojIDU5ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvdXRpbGl0eSIgMwojIDY5ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljgu
MS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvdXRpbGl0eSIgMwoj
IDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRz
L3N0bF9yZWxvcHMuaCIgMSAzCiMgNjcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9yZWxvcHMuaCIgMwpuYW1lc3BhY2Ugc3RkIF9fYXR0
cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKICBuYW1lc3BhY2UgcmVs
X29wcwogIHsKIAojIDg1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC44LjEvYml0cy9zdGxfcmVsb3BzLmgiIDMKICAgIHRlbXBsYXRlIDxjbGFzcyBfVHA+CiAg
ICAgIGlubGluZSBib29sCiAgICAgIG9wZXJhdG9yIT0oY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9U
cCYgX195KQogICAgICB7IHJldHVybiAhKF9feCA9PSBfX3kpOyB9CiMgOTggIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9yZWxvcHMuaCIg
MwogICAgdGVtcGxhdGUgPGNsYXNzIF9UcD4KICAgICAgaW5saW5lIGJvb2wKICAgICAgb3BlcmF0
b3I+KGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkKICAgICAgeyByZXR1cm4gX195IDwg
X194OyB9CiMgMTExICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC44LjEvYml0cy9zdGxfcmVsb3BzLmgiIDMKICAgIHRlbXBsYXRlIDxjbGFzcyBfVHA+CiAgICAg
IGlubGluZSBib29sCiAgICAgIG9wZXJhdG9yPD0oY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYg
X195KQogICAgICB7IHJldHVybiAhKF9feSA8IF9feCk7IH0KIyAxMjQgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9yZWxvcHMuaCIgMwog
ICAgdGVtcGxhdGUgPGNsYXNzIF9UcD4KICAgICAgaW5saW5lIGJvb2wKICAgICAgb3BlcmF0b3I+
PShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpCiAgICAgIHsgcmV0dXJuICEoX194IDwg
X195KTsgfQoKIAogIH0KCn0KIyA3MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOC4xL3V0aWxpdHkiIDIgMwoKCgoKIyAxICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvaW5pdGlhbGl6ZXJfbGlzdCIgMSAzCiMgMzMg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9pbml0aWFs
aXplcl9saXN0IiAzCiAgICAgICAKIyAzNCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOC4xL2luaXRpYWxpemVyX2xpc3QiIDMKCgoKCgojcHJhZ21hIEdDQyB2
aXNpYmlsaXR5IHB1c2goZGVmYXVsdCkKCgoKbmFtZXNwYWNlIHN0ZAp7CgogIHRlbXBsYXRlPGNs
YXNzIF9FPgogICAgY2xhc3MgaW5pdGlhbGl6ZXJfbGlzdAogICAgewogICAgcHVibGljOgogICAg
ICB0eXBlZGVmIF9FIHZhbHVlX3R5cGU7CiAgICAgIHR5cGVkZWYgY29uc3QgX0UmIHJlZmVyZW5j
ZTsKICAgICAgdHlwZWRlZiBjb25zdCBfRSYgY29uc3RfcmVmZXJlbmNlOwogICAgICB0eXBlZGVm
IHNpemVfdCBzaXplX3R5cGU7CiAgICAgIHR5cGVkZWYgY29uc3QgX0UqIGl0ZXJhdG9yOwogICAg
ICB0eXBlZGVmIGNvbnN0IF9FKiBjb25zdF9pdGVyYXRvcjsKCiAgICBwcml2YXRlOgogICAgICBp
dGVyYXRvciBfTV9hcnJheTsKICAgICAgc2l6ZV90eXBlIF9NX2xlbjsKCgogICAgICBjb25zdGV4
cHIgaW5pdGlhbGl6ZXJfbGlzdChjb25zdF9pdGVyYXRvciBfX2EsIHNpemVfdHlwZSBfX2wpCiAg
ICAgIDogX01fYXJyYXkoX19hKSwgX01fbGVuKF9fbCkgeyB9CgogICAgcHVibGljOgogICAgICBj
b25zdGV4cHIgaW5pdGlhbGl6ZXJfbGlzdCgpIG5vZXhjZXB0CiAgICAgIDogX01fYXJyYXkoMCks
IF9NX2xlbigwKSB7IH0KCgogICAgICBjb25zdGV4cHIgc2l6ZV90eXBlCiAgICAgIHNpemUoKSBj
b25zdCBub2V4Y2VwdCB7IHJldHVybiBfTV9sZW47IH0KCgogICAgICBjb25zdGV4cHIgY29uc3Rf
aXRlcmF0b3IKICAgICAgYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfTV9hcnJheTsg
fQoKCiAgICAgIGNvbnN0ZXhwciBjb25zdF9pdGVyYXRvcgogICAgICBlbmQoKSBjb25zdCBub2V4
Y2VwdCB7IHJldHVybiBiZWdpbigpICsgc2l6ZSgpOyB9CiAgICB9OwoKCgoKCgogIHRlbXBsYXRl
PGNsYXNzIF9UcD4KICAgIGNvbnN0ZXhwciBjb25zdCBfVHAqCiAgICBiZWdpbihpbml0aWFsaXpl
cl9saXN0PF9UcD4gX19pbHMpIG5vZXhjZXB0CiAgICB7IHJldHVybiBfX2lscy5iZWdpbigpOyB9
CgoKCgoKCiAgdGVtcGxhdGU8Y2xhc3MgX1RwPgogICAgY29uc3RleHByIGNvbnN0IF9UcCoKICAg
IGVuZChpbml0aWFsaXplcl9saXN0PF9UcD4gX19pbHMpIG5vZXhjZXB0CiAgICB7IHJldHVybiBf
X2lscy5lbmQoKTsgfQp9CgojcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHBvcAojIDc1ICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvdXRpbGl0eSIgMiAzCgpu
YW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkp
CnsKCgogIHRlbXBsYXRlPGNsYXNzIF9UcD4KICAgIGNsYXNzIHR1cGxlX3NpemU7CgogIHRlbXBs
YXRlPHN0ZDo6c2l6ZV90IF9JbnQsIGNsYXNzIF9UcD4KICAgIGNsYXNzIHR1cGxlX2VsZW1lbnQ7
CgoKICB0ZW1wbGF0ZTxjbGFzcyBfVHAxLCBjbGFzcyBfVHAyPgogICAgc3RydWN0IHR1cGxlX3Np
emU8c3RkOjpwYWlyPF9UcDEsIF9UcDI+PgogICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8
c3RkOjpzaXplX3QsIDI+IHsgfTsKCiAgdGVtcGxhdGU8Y2xhc3MgX1RwMSwgY2xhc3MgX1RwMj4K
ICAgIHN0cnVjdCB0dXBsZV9lbGVtZW50PDAsIHN0ZDo6cGFpcjxfVHAxLCBfVHAyPj4KICAgIHsg
dHlwZWRlZiBfVHAxIHR5cGU7IH07CgogIHRlbXBsYXRlPGNsYXNzIF9UcDEsIGNsYXNzIF9UcDI+
CiAgICBzdHJ1Y3QgdHVwbGVfZWxlbWVudDwxLCBzdGQ6OnBhaXI8X1RwMSwgX1RwMj4+CiAgICB7
IHR5cGVkZWYgX1RwMiB0eXBlOyB9OwoKICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBfSW50PgogICAg
c3RydWN0IF9fcGFpcl9nZXQ7CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX3BhaXJfZ2V0PDA+
CiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDEsIHR5cGVuYW1lIF9UcDI+CiAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBfVHAxJgogICAgICAgIF9fZ2V0KHN0ZDo6cGFpcjxfVHAxLCBf
VHAyPiYgX19wYWlyKSBub2V4Y2VwdAogICAgICAgIHsgcmV0dXJuIF9fcGFpci5maXJzdDsgfQoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwgdHlwZW5hbWUgX1RwMj4KICAgICAgICBzdGF0
aWMgY29uc3RleHByIF9UcDEmJgogICAgICAgIF9fbW92ZV9nZXQoc3RkOjpwYWlyPF9UcDEsIF9U
cDI+JiYgX19wYWlyKSBub2V4Y2VwdAogICAgICAgIHsgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxfVHAx
PihfX3BhaXIuZmlyc3QpOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxLCB0eXBlbmFt
ZSBfVHAyPgogICAgICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgX1RwMSYKICAgICAgICBfX2Nv
bnN0X2dldChjb25zdCBzdGQ6OnBhaXI8X1RwMSwgX1RwMj4mIF9fcGFpcikgbm9leGNlcHQKICAg
ICAgICB7IHJldHVybiBfX3BhaXIuZmlyc3Q7IH0KICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0
cnVjdCBfX3BhaXJfZ2V0PDE+CiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDEsIHR5
cGVuYW1lIF9UcDI+CiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBfVHAyJgogICAgICAgIF9fZ2V0
KHN0ZDo6cGFpcjxfVHAxLCBfVHAyPiYgX19wYWlyKSBub2V4Y2VwdAogICAgICAgIHsgcmV0dXJu
IF9fcGFpci5zZWNvbmQ7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDEsIHR5cGVuYW1l
IF9UcDI+CiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBfVHAyJiYKICAgICAgICBfX21vdmVfZ2V0
KHN0ZDo6cGFpcjxfVHAxLCBfVHAyPiYmIF9fcGFpcikgbm9leGNlcHQKICAgICAgICB7IHJldHVy
biBzdGQ6OmZvcndhcmQ8X1RwMj4oX19wYWlyLnNlY29uZCk7IH0KCiAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcDEsIHR5cGVuYW1lIF9UcDI+CiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25z
dCBfVHAyJgogICAgICAgIF9fY29uc3RfZ2V0KGNvbnN0IHN0ZDo6cGFpcjxfVHAxLCBfVHAyPiYg
X19wYWlyKSBub2V4Y2VwdAogICAgICAgIHsgcmV0dXJuIF9fcGFpci5zZWNvbmQ7IH0KICAgIH07
CgogIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IF9JbnQsIGNsYXNzIF9UcDEsIGNsYXNzIF9UcDI+CiAg
ICBjb25zdGV4cHIgdHlwZW5hbWUgdHVwbGVfZWxlbWVudDxfSW50LCBzdGQ6OnBhaXI8X1RwMSwg
X1RwMj4+Ojp0eXBlJgogICAgZ2V0KHN0ZDo6cGFpcjxfVHAxLCBfVHAyPiYgX19pbikgbm9leGNl
cHQKICAgIHsgcmV0dXJuIF9fcGFpcl9nZXQ8X0ludD46Ol9fZ2V0KF9faW4pOyB9CgogIHRlbXBs
YXRlPHN0ZDo6c2l6ZV90IF9JbnQsIGNsYXNzIF9UcDEsIGNsYXNzIF9UcDI+CiAgICBjb25zdGV4
cHIgdHlwZW5hbWUgdHVwbGVfZWxlbWVudDxfSW50LCBzdGQ6OnBhaXI8X1RwMSwgX1RwMj4+Ojp0
eXBlJiYKICAgIGdldChzdGQ6OnBhaXI8X1RwMSwgX1RwMj4mJiBfX2luKSBub2V4Y2VwdAogICAg
eyByZXR1cm4gX19wYWlyX2dldDxfSW50Pjo6X19tb3ZlX2dldChzdGQ6Om1vdmUoX19pbikpOyB9
CgogIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IF9JbnQsIGNsYXNzIF9UcDEsIGNsYXNzIF9UcDI+CiAg
ICBjb25zdGV4cHIgY29uc3QgdHlwZW5hbWUgdHVwbGVfZWxlbWVudDxfSW50LCBzdGQ6OnBhaXI8
X1RwMSwgX1RwMj4+Ojp0eXBlJgogICAgZ2V0KGNvbnN0IHN0ZDo6cGFpcjxfVHAxLCBfVHAyPiYg
X19pbikgbm9leGNlcHQKICAgIHsgcmV0dXJuIF9fcGFpcl9nZXQ8X0ludD46Ol9fY29uc3RfZ2V0
KF9faW4pOyB9CgoKfQojIDM5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC44LjEvdHVwbGUiIDIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9hcnJheSIgMSAzCiMgMzIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9hcnJheSIgMwogICAgICAgCiMgMzMgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4x
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9hcnJheSIgMwoKCgoK
CiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL3N0
ZGV4Y2VwdCIgMSAzCiMgMzYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjguMS9zdGRleGNlcHQiIDMKICAgICAgIAojIDM3ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvc3RkZXhjZXB0IiAzCgoKIyAxICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvc3RyaW5nIiAxIDMKIyAz
NiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL3N0cmlu
ZyIgMwogICAgICAgCiMgMzcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjguMS9zdHJpbmciIDMKCgoKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9jaGFyX3RyYWl0cy5oIiAxIDMKIyAzNyAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvY2hhcl90cmFp
dHMuaCIgMwogICAgICAgCiMgMzggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjguMS9iaXRzL2NoYXJfdHJhaXRzLmgiIDMKCgoKIyAxICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvY3djaGFyIiAxIDMKIyAzOSAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44
LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2N3Y2hhciIgMwog
ICAgICAgCiMgNDAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjguMS9jd2NoYXIiIDMKCgoKCiMgMSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xp
bi1BUk1IRi91c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMgNAojIDQ1ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvY3djaGFyIiAyIDMKIyA0MiAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvY2hhcl90cmFp
dHMuaCIgMiAzCgpuYW1lc3BhY2UgX19nbnVfY3h4IF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxp
dHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgNTcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2NoYXJfdHJhaXRzLmgiIDMKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQ+CiAgICBzdHJ1Y3QgX0NoYXJfdHlwZXMKICAgIHsKICAgICAgdHlwZWRlZiB1
bnNpZ25lZCBsb25nIGludF90eXBlOwogICAgICB0eXBlZGVmIHN0ZDo6c3RyZWFtcG9zIHBvc190
eXBlOwogICAgICB0eXBlZGVmIHN0ZDo6c3RyZWFtb2ZmIG9mZl90eXBlOwogICAgICB0eXBlZGVm
IHN0ZDo6bWJzdGF0ZV90IHN0YXRlX3R5cGU7CiAgICB9OwojIDgyICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9jaGFyX3RyYWl0cy5oIiAzCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgc3RydWN0IGNoYXJfdHJhaXRzCiAgICB7CiAg
ICAgIHR5cGVkZWYgX0NoYXJUIGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQ2hh
cl90eXBlczxfQ2hhclQ+OjppbnRfdHlwZSBpbnRfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBfQ2hhcl90eXBlczxfQ2hhclQ+Ojpwb3NfdHlwZSBwb3NfdHlwZTsKICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBfQ2hhcl90eXBlczxfQ2hhclQ+OjpvZmZfdHlwZSBvZmZfdHlwZTsKICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBfQ2hhcl90eXBlczxfQ2hhclQ+OjpzdGF0ZV90eXBlIHN0YXRlX3R5cGU7
CgogICAgICBzdGF0aWMgdm9pZAogICAgICBhc3NpZ24oY2hhcl90eXBlJiBfX2MxLCBjb25zdCBj
aGFyX3R5cGUmIF9fYzIpCiAgICAgIHsgX19jMSA9IF9fYzI7IH0KCiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbAogICAgICBlcShjb25zdCBjaGFyX3R5cGUmIF9fYzEsIGNvbnN0IGNoYXJfdHlw
ZSYgX19jMikKICAgICAgeyByZXR1cm4gX19jMSA9PSBfX2MyOyB9CgogICAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wKICAgICAgbHQoY29uc3QgY2hhcl90eXBlJiBfX2MxLCBjb25zdCBjaGFyX3R5
cGUmIF9fYzIpCiAgICAgIHsgcmV0dXJuIF9fYzEgPCBfX2MyOyB9CgogICAgICBzdGF0aWMgaW50
CiAgICAgIGNvbXBhcmUoY29uc3QgY2hhcl90eXBlKiBfX3MxLCBjb25zdCBjaGFyX3R5cGUqIF9f
czIsIHN0ZDo6c2l6ZV90IF9fbik7CgogICAgICBzdGF0aWMgc3RkOjpzaXplX3QKICAgICAgbGVu
Z3RoKGNvbnN0IGNoYXJfdHlwZSogX19zKTsKCiAgICAgIHN0YXRpYyBjb25zdCBjaGFyX3R5cGUq
CiAgICAgIGZpbmQoY29uc3QgY2hhcl90eXBlKiBfX3MsIHN0ZDo6c2l6ZV90IF9fbiwgY29uc3Qg
Y2hhcl90eXBlJiBfX2EpOwoKICAgICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAgbW92ZShjaGFy
X3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSogX19zMiwgc3RkOjpzaXplX3QgX19uKTsKCiAg
ICAgIHN0YXRpYyBjaGFyX3R5cGUqCiAgICAgIGNvcHkoY2hhcl90eXBlKiBfX3MxLCBjb25zdCBj
aGFyX3R5cGUqIF9fczIsIHN0ZDo6c2l6ZV90IF9fbik7CgogICAgICBzdGF0aWMgY2hhcl90eXBl
KgogICAgICBhc3NpZ24oY2hhcl90eXBlKiBfX3MsIHN0ZDo6c2l6ZV90IF9fbiwgY2hhcl90eXBl
IF9fYSk7CgogICAgICBzdGF0aWMgY29uc3RleHByIGNoYXJfdHlwZQogICAgICB0b19jaGFyX3R5
cGUoY29uc3QgaW50X3R5cGUmIF9fYykKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcl90
eXBlPihfX2MpOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGludF90eXBlCiAgICAgIHRvX2lu
dF90eXBlKGNvbnN0IGNoYXJfdHlwZSYgX19jKQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxp
bnRfdHlwZT4oX19jKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sCiAgICAgIGVxX2lu
dF90eXBlKGNvbnN0IGludF90eXBlJiBfX2MxLCBjb25zdCBpbnRfdHlwZSYgX19jMikKICAgICAg
eyByZXR1cm4gX19jMSA9PSBfX2MyOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGludF90eXBl
CiAgICAgIGVvZigpCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGludF90eXBlPigtMSk7IH0K
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50X3R5cGUKICAgICAgbm90X2VvZihjb25zdCBpbnRf
dHlwZSYgX19jKQogICAgICB7IHJldHVybiAhZXFfaW50X3R5cGUoX19jLCBlb2YoKSkgPyBfX2Mg
OiB0b19pbnRfdHlwZShjaGFyX3R5cGUoKSk7IH0KICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9DaGFyVD4KICAgIGludAogICAgY2hhcl90cmFpdHM8X0NoYXJUPjo6CiAgICBjb21wYXJlKGNv
bnN0IGNoYXJfdHlwZSogX19zMSwgY29uc3QgY2hhcl90eXBlKiBfX3MyLCBzdGQ6OnNpemVfdCBf
X24pCiAgICB7CiAgICAgIGZvciAoc3RkOjpzaXplX3QgX19pID0gMDsgX19pIDwgX19uOyArK19f
aSkKIGlmIChsdChfX3MxW19faV0sIF9fczJbX19pXSkpCiAgIHJldHVybiAtMTsKIGVsc2UgaWYg
KGx0KF9fczJbX19pXSwgX19zMVtfX2ldKSkKICAgcmV0dXJuIDE7CiAgICAgIHJldHVybiAwOwog
ICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBzdGQ6OnNpemVfdAogICAgY2hh
cl90cmFpdHM8X0NoYXJUPjo6CiAgICBsZW5ndGgoY29uc3QgY2hhcl90eXBlKiBfX3ApCiAgICB7
CiAgICAgIHN0ZDo6c2l6ZV90IF9faSA9IDA7CiAgICAgIHdoaWxlICghZXEoX19wW19faV0sIGNo
YXJfdHlwZSgpKSkKICAgICAgICArK19faTsKICAgICAgcmV0dXJuIF9faTsKICAgIH0KCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgY29uc3QgdHlwZW5hbWUgY2hhcl90cmFpdHM8X0No
YXJUPjo6Y2hhcl90eXBlKgogICAgY2hhcl90cmFpdHM8X0NoYXJUPjo6CiAgICBmaW5kKGNvbnN0
IGNoYXJfdHlwZSogX19zLCBzdGQ6OnNpemVfdCBfX24sIGNvbnN0IGNoYXJfdHlwZSYgX19hKQog
ICAgewogICAgICBmb3IgKHN0ZDo6c2l6ZV90IF9faSA9IDA7IF9faSA8IF9fbjsgKytfX2kpCiAg
ICAgICAgaWYgKGVxKF9fc1tfX2ldLCBfX2EpKQogICAgICAgICAgcmV0dXJuIF9fcyArIF9faTsK
ICAgICAgcmV0dXJuIDA7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIHR5
cGVuYW1lIGNoYXJfdHJhaXRzPF9DaGFyVD46OmNoYXJfdHlwZSoKICAgIGNoYXJfdHJhaXRzPF9D
aGFyVD46OgogICAgbW92ZShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSogX19zMiwg
c3RkOjpzaXplX3QgX19uKQogICAgewogICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8X0NoYXJUKj4o
X19idWlsdGluX21lbW1vdmUoX19zMSwgX19zMiwKICAgICAgICAgIF9fbiAqIHNpemVvZihjaGFy
X3R5cGUpKSk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIHR5cGVuYW1l
IGNoYXJfdHJhaXRzPF9DaGFyVD46OmNoYXJfdHlwZSoKICAgIGNoYXJfdHJhaXRzPF9DaGFyVD46
OgogICAgY29weShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSogX19zMiwgc3RkOjpz
aXplX3QgX19uKQogICAgewoKICAgICAgc3RkOjpjb3B5KF9fczIsIF9fczIgKyBfX24sIF9fczEp
OwogICAgICByZXR1cm4gX19zMTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgog
ICAgdHlwZW5hbWUgY2hhcl90cmFpdHM8X0NoYXJUPjo6Y2hhcl90eXBlKgogICAgY2hhcl90cmFp
dHM8X0NoYXJUPjo6CiAgICBhc3NpZ24oY2hhcl90eXBlKiBfX3MsIHN0ZDo6c2l6ZV90IF9fbiwg
Y2hhcl90eXBlIF9fYSkKICAgIHsKCiAgICAgIHN0ZDo6ZmlsbF9uKF9fcywgX19uLCBfX2EpOwog
ICAgICByZXR1cm4gX19zOwogICAgfQoKCn0KCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAo
KF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKIyAyMjYgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2NoYXJfdHJhaXRzLmgiIDMKICB0
ZW1wbGF0ZTxjbGFzcyBfQ2hhclQ+CiAgICBzdHJ1Y3QgY2hhcl90cmFpdHMgOiBwdWJsaWMgX19n
bnVfY3h4OjpjaGFyX3RyYWl0czxfQ2hhclQ+CiAgICB7IH07CgoKCiAgdGVtcGxhdGU8PgogICAg
c3RydWN0IGNoYXJfdHJhaXRzPGNoYXI+CiAgICB7CiAgICAgIHR5cGVkZWYgY2hhciBjaGFyX3R5
cGU7CiAgICAgIHR5cGVkZWYgaW50IGludF90eXBlOwogICAgICB0eXBlZGVmIHN0cmVhbXBvcyBw
b3NfdHlwZTsKICAgICAgdHlwZWRlZiBzdHJlYW1vZmYgb2ZmX3R5cGU7CiAgICAgIHR5cGVkZWYg
bWJzdGF0ZV90IHN0YXRlX3R5cGU7CgogICAgICBzdGF0aWMgdm9pZAogICAgICBhc3NpZ24oY2hh
cl90eXBlJiBfX2MxLCBjb25zdCBjaGFyX3R5cGUmIF9fYzIpIG5vZXhjZXB0CiAgICAgIHsgX19j
MSA9IF9fYzI7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbAogICAgICBlcShjb25zdCBj
aGFyX3R5cGUmIF9fYzEsIGNvbnN0IGNoYXJfdHlwZSYgX19jMikgbm9leGNlcHQKICAgICAgeyBy
ZXR1cm4gX19jMSA9PSBfX2MyOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wKICAgICAg
bHQoY29uc3QgY2hhcl90eXBlJiBfX2MxLCBjb25zdCBjaGFyX3R5cGUmIF9fYzIpIG5vZXhjZXB0
CiAgICAgIHsgcmV0dXJuIF9fYzEgPCBfX2MyOyB9CgogICAgICBzdGF0aWMgaW50CiAgICAgIGNv
bXBhcmUoY29uc3QgY2hhcl90eXBlKiBfX3MxLCBjb25zdCBjaGFyX3R5cGUqIF9fczIsIHNpemVf
dCBfX24pCiAgICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9tZW1jbXAoX19zMSwgX19zMiwgX19uKTsg
fQoKICAgICAgc3RhdGljIHNpemVfdAogICAgICBsZW5ndGgoY29uc3QgY2hhcl90eXBlKiBfX3Mp
CiAgICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9zdHJsZW4oX19zKTsgfQoKICAgICAgc3RhdGljIGNv
bnN0IGNoYXJfdHlwZSoKICAgICAgZmluZChjb25zdCBjaGFyX3R5cGUqIF9fcywgc2l6ZV90IF9f
biwgY29uc3QgY2hhcl90eXBlJiBfX2EpCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IGNoYXJfdHlwZSo+KF9fYnVpbHRpbl9tZW1jaHIoX19zLCBfX2EsIF9fbikpOyB9CgogICAgICBz
dGF0aWMgY2hhcl90eXBlKgogICAgICBtb3ZlKGNoYXJfdHlwZSogX19zMSwgY29uc3QgY2hhcl90
eXBlKiBfX3MyLCBzaXplX3QgX19uKQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxjaGFyX3R5
cGUqPihfX2J1aWx0aW5fbWVtbW92ZShfX3MxLCBfX3MyLCBfX24pKTsgfQoKICAgICAgc3RhdGlj
IGNoYXJfdHlwZSoKICAgICAgY29weShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSog
X19zMiwgc2l6ZV90IF9fbikKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcl90eXBlKj4o
X19idWlsdGluX21lbWNweShfX3MxLCBfX3MyLCBfX24pKTsgfQoKICAgICAgc3RhdGljIGNoYXJf
dHlwZSoKICAgICAgYXNzaWduKGNoYXJfdHlwZSogX19zLCBzaXplX3QgX19uLCBjaGFyX3R5cGUg
X19hKQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxjaGFyX3R5cGUqPihfX2J1aWx0aW5fbWVt
c2V0KF9fcywgX19hLCBfX24pKTsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyX3R5cGUK
ICAgICAgdG9fY2hhcl90eXBlKGNvbnN0IGludF90eXBlJiBfX2MpIG5vZXhjZXB0CiAgICAgIHsg
cmV0dXJuIHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oX19jKTsgfQoKCgogICAgICBzdGF0aWMgY29u
c3RleHByIGludF90eXBlCiAgICAgIHRvX2ludF90eXBlKGNvbnN0IGNoYXJfdHlwZSYgX19jKSBu
b2V4Y2VwdAogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnRfdHlwZT4oc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oX19jKSk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbAogICAg
ICBlcV9pbnRfdHlwZShjb25zdCBpbnRfdHlwZSYgX19jMSwgY29uc3QgaW50X3R5cGUmIF9fYzIp
IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9fYzEgPT0gX19jMjsgfQoKICAgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnRfdHlwZQogICAgICBlb2YoKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGF0
aWNfY2FzdDxpbnRfdHlwZT4oLTEpOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGludF90eXBl
CiAgICAgIG5vdF9lb2YoY29uc3QgaW50X3R5cGUmIF9fYykgbm9leGNlcHQKICAgICAgeyByZXR1
cm4gKF9fYyA9PSBlb2YoKSkgPyAwIDogX19jOyB9CiAgfTsKCgoKCiAgdGVtcGxhdGU8PgogICAg
c3RydWN0IGNoYXJfdHJhaXRzPHdjaGFyX3Q+CiAgICB7CiAgICAgIHR5cGVkZWYgd2NoYXJfdCBj
aGFyX3R5cGU7CiAgICAgIHR5cGVkZWYgd2ludF90IGludF90eXBlOwogICAgICB0eXBlZGVmIHN0
cmVhbW9mZiBvZmZfdHlwZTsKICAgICAgdHlwZWRlZiB3c3RyZWFtcG9zIHBvc190eXBlOwogICAg
ICB0eXBlZGVmIG1ic3RhdGVfdCBzdGF0ZV90eXBlOwoKICAgICAgc3RhdGljIHZvaWQKICAgICAg
YXNzaWduKGNoYXJfdHlwZSYgX19jMSwgY29uc3QgY2hhcl90eXBlJiBfX2MyKSBub2V4Y2VwdAog
ICAgICB7IF9fYzEgPSBfX2MyOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wKICAgICAg
ZXEoY29uc3QgY2hhcl90eXBlJiBfX2MxLCBjb25zdCBjaGFyX3R5cGUmIF9fYzIpIG5vZXhjZXB0
CiAgICAgIHsgcmV0dXJuIF9fYzEgPT0gX19jMjsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sCiAgICAgIGx0KGNvbnN0IGNoYXJfdHlwZSYgX19jMSwgY29uc3QgY2hhcl90eXBlJiBfX2My
KSBub2V4Y2VwdAogICAgICB7IHJldHVybiBfX2MxIDwgX19jMjsgfQoKICAgICAgc3RhdGljIGlu
dAogICAgICBjb21wYXJlKGNvbnN0IGNoYXJfdHlwZSogX19zMSwgY29uc3QgY2hhcl90eXBlKiBf
X3MyLCBzaXplX3QgX19uKQogICAgICB7IHJldHVybiB3bWVtY21wKF9fczEsIF9fczIsIF9fbik7
IH0KCiAgICAgIHN0YXRpYyBzaXplX3QKICAgICAgbGVuZ3RoKGNvbnN0IGNoYXJfdHlwZSogX19z
KQogICAgICB7IHJldHVybiB3Y3NsZW4oX19zKTsgfQoKICAgICAgc3RhdGljIGNvbnN0IGNoYXJf
dHlwZSoKICAgICAgZmluZChjb25zdCBjaGFyX3R5cGUqIF9fcywgc2l6ZV90IF9fbiwgY29uc3Qg
Y2hhcl90eXBlJiBfX2EpCiAgICAgIHsgcmV0dXJuIHdtZW1jaHIoX19zLCBfX2EsIF9fbik7IH0K
CiAgICAgIHN0YXRpYyBjaGFyX3R5cGUqCiAgICAgIG1vdmUoY2hhcl90eXBlKiBfX3MxLCBjb25z
dCBjaGFyX3R5cGUqIF9fczIsIHNpemVfdCBfX24pCiAgICAgIHsgcmV0dXJuIHdtZW1tb3ZlKF9f
czEsIF9fczIsIF9fbik7IH0KCiAgICAgIHN0YXRpYyBjaGFyX3R5cGUqCiAgICAgIGNvcHkoY2hh
cl90eXBlKiBfX3MxLCBjb25zdCBjaGFyX3R5cGUqIF9fczIsIHNpemVfdCBfX24pCiAgICAgIHsg
cmV0dXJuIHdtZW1jcHkoX19zMSwgX19zMiwgX19uKTsgfQoKICAgICAgc3RhdGljIGNoYXJfdHlw
ZSoKICAgICAgYXNzaWduKGNoYXJfdHlwZSogX19zLCBzaXplX3QgX19uLCBjaGFyX3R5cGUgX19h
KQogICAgICB7IHJldHVybiB3bWVtc2V0KF9fcywgX19hLCBfX24pOyB9CgogICAgICBzdGF0aWMg
Y29uc3RleHByIGNoYXJfdHlwZQogICAgICB0b19jaGFyX3R5cGUoY29uc3QgaW50X3R5cGUmIF9f
Yykgbm9leGNlcHQKICAgICAgeyByZXR1cm4gY2hhcl90eXBlKF9fYyk7IH0KCiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50X3R5cGUKICAgICAgdG9faW50X3R5cGUoY29uc3QgY2hhcl90eXBlJiBf
X2MpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIGludF90eXBlKF9fYyk7IH0KCiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbAogICAgICBlcV9pbnRfdHlwZShjb25zdCBpbnRfdHlwZSYgX19jMSwg
Y29uc3QgaW50X3R5cGUmIF9fYzIpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9fYzEgPT0gX19j
MjsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnRfdHlwZQogICAgICBlb2YoKSBub2V4Y2Vw
dAogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnRfdHlwZT4oKDB4ZmZmZmZmZmZ1KSk7IH0K
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50X3R5cGUKICAgICAgbm90X2VvZihjb25zdCBpbnRf
dHlwZSYgX19jKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBlcV9pbnRfdHlwZShfX2MsIGVvZigp
KSA/IDAgOiBfX2M7IH0KICB9OwoKCgp9CgoKCgoKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVf
XyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCiAgdGVtcGxhdGU8PgogICAgc3Ry
dWN0IGNoYXJfdHJhaXRzPGNoYXIxNl90PgogICAgewogICAgICB0eXBlZGVmIGNoYXIxNl90IGNo
YXJfdHlwZTsKICAgICAgdHlwZWRlZiB1aW50X2xlYXN0MTZfdCBpbnRfdHlwZTsKICAgICAgdHlw
ZWRlZiBzdHJlYW1vZmYgb2ZmX3R5cGU7CiAgICAgIHR5cGVkZWYgdTE2c3RyZWFtcG9zIHBvc190
eXBlOwogICAgICB0eXBlZGVmIG1ic3RhdGVfdCBzdGF0ZV90eXBlOwoKICAgICAgc3RhdGljIHZv
aWQKICAgICAgYXNzaWduKGNoYXJfdHlwZSYgX19jMSwgY29uc3QgY2hhcl90eXBlJiBfX2MyKSBu
b2V4Y2VwdAogICAgICB7IF9fYzEgPSBfX2MyOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wKICAgICAgZXEoY29uc3QgY2hhcl90eXBlJiBfX2MxLCBjb25zdCBjaGFyX3R5cGUmIF9fYzIp
IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9fYzEgPT0gX19jMjsgfQoKICAgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sCiAgICAgIGx0KGNvbnN0IGNoYXJfdHlwZSYgX19jMSwgY29uc3QgY2hhcl90
eXBlJiBfX2MyKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBfX2MxIDwgX19jMjsgfQoKICAgICAg
c3RhdGljIGludAogICAgICBjb21wYXJlKGNvbnN0IGNoYXJfdHlwZSogX19zMSwgY29uc3QgY2hh
cl90eXBlKiBfX3MyLCBzaXplX3QgX19uKQogICAgICB7CiBmb3IgKHNpemVfdCBfX2kgPSAwOyBf
X2kgPCBfX247ICsrX19pKQogICBpZiAobHQoX19zMVtfX2ldLCBfX3MyW19faV0pKQogICAgIHJl
dHVybiAtMTsKICAgZWxzZSBpZiAobHQoX19zMltfX2ldLCBfX3MxW19faV0pKQogICAgIHJldHVy
biAxOwogcmV0dXJuIDA7CiAgICAgIH0KCiAgICAgIHN0YXRpYyBzaXplX3QKICAgICAgbGVuZ3Ro
KGNvbnN0IGNoYXJfdHlwZSogX19zKQogICAgICB7CiBzaXplX3QgX19pID0gMDsKIHdoaWxlICgh
ZXEoX19zW19faV0sIGNoYXJfdHlwZSgpKSkKICAgKytfX2k7CiByZXR1cm4gX19pOwogICAgICB9
CgogICAgICBzdGF0aWMgY29uc3QgY2hhcl90eXBlKgogICAgICBmaW5kKGNvbnN0IGNoYXJfdHlw
ZSogX19zLCBzaXplX3QgX19uLCBjb25zdCBjaGFyX3R5cGUmIF9fYSkKICAgICAgewogZm9yIChz
aXplX3QgX19pID0gMDsgX19pIDwgX19uOyArK19faSkKICAgaWYgKGVxKF9fc1tfX2ldLCBfX2Ep
KQogICAgIHJldHVybiBfX3MgKyBfX2k7CiByZXR1cm4gMDsKICAgICAgfQoKICAgICAgc3RhdGlj
IGNoYXJfdHlwZSoKICAgICAgbW92ZShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSog
X19zMiwgc2l6ZV90IF9fbikKICAgICAgewogcmV0dXJuIChzdGF0aWNfY2FzdDxjaGFyX3R5cGUq
PgogIChfX2J1aWx0aW5fbWVtbW92ZShfX3MxLCBfX3MyLCBfX24gKiBzaXplb2YoY2hhcl90eXBl
KSkpKTsKICAgICAgfQoKICAgICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAgY29weShjaGFyX3R5
cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSogX19zMiwgc2l6ZV90IF9fbikKICAgICAgewogcmV0
dXJuIChzdGF0aWNfY2FzdDxjaGFyX3R5cGUqPgogIChfX2J1aWx0aW5fbWVtY3B5KF9fczEsIF9f
czIsIF9fbiAqIHNpemVvZihjaGFyX3R5cGUpKSkpOwogICAgICB9CgogICAgICBzdGF0aWMgY2hh
cl90eXBlKgogICAgICBhc3NpZ24oY2hhcl90eXBlKiBfX3MsIHNpemVfdCBfX24sIGNoYXJfdHlw
ZSBfX2EpCiAgICAgIHsKIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8IF9fbjsgKytfX2kpCiAg
IGFzc2lnbihfX3NbX19pXSwgX19hKTsKIHJldHVybiBfX3M7CiAgICAgIH0KCiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgY2hhcl90eXBlCiAgICAgIHRvX2NoYXJfdHlwZShjb25zdCBpbnRfdHlwZSYg
X19jKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBjaGFyX3R5cGUoX19jKTsgfQoKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBpbnRfdHlwZQogICAgICB0b19pbnRfdHlwZShjb25zdCBjaGFyX3R5cGUm
IF9fYykgbm9leGNlcHQKICAgICAgeyByZXR1cm4gaW50X3R5cGUoX19jKTsgfQoKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sCiAgICAgIGVxX2ludF90eXBlKGNvbnN0IGludF90eXBlJiBfX2Mx
LCBjb25zdCBpbnRfdHlwZSYgX19jMikgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX19jMSA9PSBf
X2MyOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGludF90eXBlCiAgICAgIGVvZigpIG5vZXhj
ZXB0CiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGludF90eXBlPigtMSk7IH0KCiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50X3R5cGUKICAgICAgbm90X2VvZihjb25zdCBpbnRfdHlwZSYgX19j
KSBub2V4Y2VwdAogICAgICB7IHJldHVybiBlcV9pbnRfdHlwZShfX2MsIGVvZigpKSA/IDAgOiBf
X2M7IH0KICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBjaGFyX3RyYWl0czxjaGFyMzJf
dD4KICAgIHsKICAgICAgdHlwZWRlZiBjaGFyMzJfdCBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYg
dWludF9sZWFzdDMyX3QgaW50X3R5cGU7CiAgICAgIHR5cGVkZWYgc3RyZWFtb2ZmIG9mZl90eXBl
OwogICAgICB0eXBlZGVmIHUzMnN0cmVhbXBvcyBwb3NfdHlwZTsKICAgICAgdHlwZWRlZiBtYnN0
YXRlX3Qgc3RhdGVfdHlwZTsKCiAgICAgIHN0YXRpYyB2b2lkCiAgICAgIGFzc2lnbihjaGFyX3R5
cGUmIF9fYzEsIGNvbnN0IGNoYXJfdHlwZSYgX19jMikgbm9leGNlcHQKICAgICAgeyBfX2MxID0g
X19jMjsgfQoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sCiAgICAgIGVxKGNvbnN0IGNoYXJf
dHlwZSYgX19jMSwgY29uc3QgY2hhcl90eXBlJiBfX2MyKSBub2V4Y2VwdAogICAgICB7IHJldHVy
biBfX2MxID09IF9fYzI7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbAogICAgICBsdChj
b25zdCBjaGFyX3R5cGUmIF9fYzEsIGNvbnN0IGNoYXJfdHlwZSYgX19jMikgbm9leGNlcHQKICAg
ICAgeyByZXR1cm4gX19jMSA8IF9fYzI7IH0KCiAgICAgIHN0YXRpYyBpbnQKICAgICAgY29tcGFy
ZShjb25zdCBjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSogX19zMiwgc2l6ZV90IF9f
bikKICAgICAgewogZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgX19uOyArK19faSkKICAgaWYg
KGx0KF9fczFbX19pXSwgX19zMltfX2ldKSkKICAgICByZXR1cm4gLTE7CiAgIGVsc2UgaWYgKGx0
KF9fczJbX19pXSwgX19zMVtfX2ldKSkKICAgICByZXR1cm4gMTsKIHJldHVybiAwOwogICAgICB9
CgogICAgICBzdGF0aWMgc2l6ZV90CiAgICAgIGxlbmd0aChjb25zdCBjaGFyX3R5cGUqIF9fcykK
ICAgICAgewogc2l6ZV90IF9faSA9IDA7CiB3aGlsZSAoIWVxKF9fc1tfX2ldLCBjaGFyX3R5cGUo
KSkpCiAgICsrX19pOwogcmV0dXJuIF9faTsKICAgICAgfQoKICAgICAgc3RhdGljIGNvbnN0IGNo
YXJfdHlwZSoKICAgICAgZmluZChjb25zdCBjaGFyX3R5cGUqIF9fcywgc2l6ZV90IF9fbiwgY29u
c3QgY2hhcl90eXBlJiBfX2EpCiAgICAgIHsKIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8IF9f
bjsgKytfX2kpCiAgIGlmIChlcShfX3NbX19pXSwgX19hKSkKICAgICByZXR1cm4gX19zICsgX19p
OwogcmV0dXJuIDA7CiAgICAgIH0KCiAgICAgIHN0YXRpYyBjaGFyX3R5cGUqCiAgICAgIG1vdmUo
Y2hhcl90eXBlKiBfX3MxLCBjb25zdCBjaGFyX3R5cGUqIF9fczIsIHNpemVfdCBfX24pCiAgICAg
IHsKIHJldHVybiAoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlKj4KICAoX19idWlsdGluX21lbW1vdmUo
X19zMSwgX19zMiwgX19uICogc2l6ZW9mKGNoYXJfdHlwZSkpKSk7CiAgICAgIH0KCiAgICAgIHN0
YXRpYyBjaGFyX3R5cGUqCiAgICAgIGNvcHkoY2hhcl90eXBlKiBfX3MxLCBjb25zdCBjaGFyX3R5
cGUqIF9fczIsIHNpemVfdCBfX24pCiAgICAgIHsKIHJldHVybiAoc3RhdGljX2Nhc3Q8Y2hhcl90
eXBlKj4KICAoX19idWlsdGluX21lbWNweShfX3MxLCBfX3MyLCBfX24gKiBzaXplb2YoY2hhcl90
eXBlKSkpKTsKICAgICAgfQoKICAgICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAgYXNzaWduKGNo
YXJfdHlwZSogX19zLCBzaXplX3QgX19uLCBjaGFyX3R5cGUgX19hKQogICAgICB7CiBmb3IgKHNp
emVfdCBfX2kgPSAwOyBfX2kgPCBfX247ICsrX19pKQogICBhc3NpZ24oX19zW19faV0sIF9fYSk7
CiByZXR1cm4gX19zOwogICAgICB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGNoYXJfdHlwZQog
ICAgICB0b19jaGFyX3R5cGUoY29uc3QgaW50X3R5cGUmIF9fYykgbm9leGNlcHQKICAgICAgeyBy
ZXR1cm4gY2hhcl90eXBlKF9fYyk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50X3R5cGUK
ICAgICAgdG9faW50X3R5cGUoY29uc3QgY2hhcl90eXBlJiBfX2MpIG5vZXhjZXB0CiAgICAgIHsg
cmV0dXJuIGludF90eXBlKF9fYyk7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbAogICAg
ICBlcV9pbnRfdHlwZShjb25zdCBpbnRfdHlwZSYgX19jMSwgY29uc3QgaW50X3R5cGUmIF9fYzIp
IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9fYzEgPT0gX19jMjsgfQoKICAgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnRfdHlwZQogICAgICBlb2YoKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGF0
aWNfY2FzdDxpbnRfdHlwZT4oLTEpOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGludF90eXBl
CiAgICAgIG5vdF9lb2YoY29uc3QgaW50X3R5cGUmIF9fYykgbm9leGNlcHQKICAgICAgeyByZXR1
cm4gZXFfaW50X3R5cGUoX19jLCBlb2YoKSkgPyAwIDogX19jOyB9CiAgICB9OwoKCn0KIyA0MSAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL3N0cmluZyIg
MiAzCgoKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44
LjEvYml0cy9sb2NhbGVmd2QuaCIgMSAzCiMgMzcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2xvY2FsZWZ3ZC5oIiAzCiAgICAgICAKIyAzOCAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvbG9j
YWxlZndkLmgiIDMKCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvYml0cy9jKytsb2NhbGUuaCIgMSAz
CiMgMzkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvYml0cy9jKytsb2NhbGUuaCIgMwogICAgICAgCiMgNDAg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvYml0cy9jKytsb2NhbGUuaCIgMwoKIyAxICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvY2xvY2FsZSIgMSAzCiMgMzkgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9jbG9jYWxlIiAz
CiAgICAgICAKIyA0MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOC4xL2Nsb2NhbGUiIDMKCgojIDEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29s
aW4tQVJNSEYvdXNyL2luY2x1ZGUvbG9jYWxlLmgiIDEgMyA0CiMgMjkgIi9tbnQvc3RvcmUvY2hy
b290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvbG9jYWxlLmgiIDMgNAojIDEg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOC4xL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOC4xL2luY2x1ZGUvc3Rk
ZGVmLmgiIDEgMyA0CiMgMzAgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJN
SEYvdXNyL2luY2x1ZGUvbG9jYWxlLmgiIDIgMyA0CiMgMSAiL21udC9zdG9yZS9jaHJvb3RzL3Vi
dW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMv
bG9jYWxlLmgiIDEgMyA0CiMgMjcgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4t
QVJNSEYvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL2xvY2FsZS5oIiAzIDQK
ZW51bQp7CiAgX19MQ19DVFlQRSA9IDAsCiAgX19MQ19OVU1FUklDID0gMSwKICBfX0xDX1RJTUUg
PSAyLAogIF9fTENfQ09MTEFURSA9IDMsCiAgX19MQ19NT05FVEFSWSA9IDQsCiAgX19MQ19NRVNT
QUdFUyA9IDUsCiAgX19MQ19BTEwgPSA2LAogIF9fTENfUEFQRVIgPSA3LAogIF9fTENfTkFNRSA9
IDgsCiAgX19MQ19BRERSRVNTID0gOSwKICBfX0xDX1RFTEVQSE9ORSA9IDEwLAogIF9fTENfTUVB
U1VSRU1FTlQgPSAxMSwKICBfX0xDX0lERU5USUZJQ0FUSU9OID0gMTIKfTsKIyAzMSAiL21udC9z
dG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9sb2NhbGUuaCIg
MiAzIDQKCmV4dGVybiAiQyIgewojIDUxICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdv
bGluLUFSTUhGL3Vzci9pbmNsdWRlL2xvY2FsZS5oIiAzIDQKCgoKc3RydWN0IGxjb252CnsKCgog
IGNoYXIgKmRlY2ltYWxfcG9pbnQ7CiAgY2hhciAqdGhvdXNhbmRzX3NlcDsKCgoKCgogIGNoYXIg
Kmdyb3VwaW5nOwoKCgoKCiAgY2hhciAqaW50X2N1cnJfc3ltYm9sOwogIGNoYXIgKmN1cnJlbmN5
X3N5bWJvbDsKICBjaGFyICptb25fZGVjaW1hbF9wb2ludDsKICBjaGFyICptb25fdGhvdXNhbmRz
X3NlcDsKICBjaGFyICptb25fZ3JvdXBpbmc7CiAgY2hhciAqcG9zaXRpdmVfc2lnbjsKICBjaGFy
ICpuZWdhdGl2ZV9zaWduOwogIGNoYXIgaW50X2ZyYWNfZGlnaXRzOwogIGNoYXIgZnJhY19kaWdp
dHM7CgogIGNoYXIgcF9jc19wcmVjZWRlczsKCiAgY2hhciBwX3NlcF9ieV9zcGFjZTsKCiAgY2hh
ciBuX2NzX3ByZWNlZGVzOwoKICBjaGFyIG5fc2VwX2J5X3NwYWNlOwoKCgoKCgogIGNoYXIgcF9z
aWduX3Bvc247CiAgY2hhciBuX3NpZ25fcG9zbjsKCgogIGNoYXIgaW50X3BfY3NfcHJlY2VkZXM7
CgogIGNoYXIgaW50X3Bfc2VwX2J5X3NwYWNlOwoKICBjaGFyIGludF9uX2NzX3ByZWNlZGVzOwoK
ICBjaGFyIGludF9uX3NlcF9ieV9zcGFjZTsKCgoKCgoKICBjaGFyIGludF9wX3NpZ25fcG9zbjsK
ICBjaGFyIGludF9uX3NpZ25fcG9zbjsKIyAxMjEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUt
cGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvbG9jYWxlLmgiIDMgNAp9OwoKCgpleHRlcm4gY2hh
ciAqc2V0bG9jYWxlIChpbnQgX19jYXRlZ29yeSwgX19jb25zdCBjaGFyICpfX2xvY2FsZSkgdGhy
b3cgKCk7CgoKZXh0ZXJuIHN0cnVjdCBsY29udiAqbG9jYWxlY29udiAodm9pZCkgdGhyb3cgKCk7
CgoKIyAxNTIgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2lu
Y2x1ZGUvbG9jYWxlLmgiIDMgNApleHRlcm4gX19sb2NhbGVfdCBuZXdsb2NhbGUgKGludCBfX2Nh
dGVnb3J5X21hc2ssIF9fY29uc3QgY2hhciAqX19sb2NhbGUsCiAgICAgICAgX19sb2NhbGVfdCBf
X2Jhc2UpIHRocm93ICgpOwojIDE4NyAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xp
bi1BUk1IRi91c3IvaW5jbHVkZS9sb2NhbGUuaCIgMyA0CmV4dGVybiBfX2xvY2FsZV90IGR1cGxv
Y2FsZSAoX19sb2NhbGVfdCBfX2RhdGFzZXQpIHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBmcmVl
bG9jYWxlIChfX2xvY2FsZV90IF9fZGF0YXNldCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBfX2xv
Y2FsZV90IHVzZWxvY2FsZSAoX19sb2NhbGVfdCBfX2RhdGFzZXQpIHRocm93ICgpOwoKCgoKCgoK
fQojIDQzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEv
Y2xvY2FsZSIgMiAzCiMgNTEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjguMS9jbG9jYWxlIiAzCm5hbWVzcGFjZSBzdGQKewogIHVzaW5nIDo6bGNvbnY7CiAg
dXNpbmcgOjpzZXRsb2NhbGU7CiAgdXNpbmcgOjpsb2NhbGVjb252Owp9CiMgNDIgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvYml0cy9jKytsb2NhbGUuaCIgMiAzCgoKCgoKCm5hbWVzcGFjZSBfX2dudV9jeHgg
X19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCiAgZXh0ZXJu
ICJDIiBfX3R5cGVvZih1c2Vsb2NhbGUpIF9fdXNlbG9jYWxlOwoKCn0KCgpuYW1lc3BhY2Ugc3Rk
IF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgogIHR5cGVk
ZWYgX19sb2NhbGVfdCBfX2NfbG9jYWxlOwoKCgoKCiAgaW5saW5lIGludAogIF9fY29udmVydF9m
cm9tX3YoY29uc3QgX19jX2xvY2FsZSYgX19jbG9jIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f
KSksCiAgICAgY2hhciogX19vdXQsCiAgICAgY29uc3QgaW50IF9fc2l6ZSBfX2F0dHJpYnV0ZV9f
ICgoX191bnVzZWRfXykpLAogICAgIGNvbnN0IGNoYXIqIF9fZm10LCAuLi4pCiAgewoKICAgIF9f
Y19sb2NhbGUgX19vbGQgPSBfX2dudV9jeHg6Ol9fdXNlbG9jYWxlKF9fY2xvYyk7CiMgODggIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvYml0cy9jKytsb2NhbGUuaCIgMwogICAgX19idWlsdGluX3ZhX2xpc3Qg
X19hcmdzOwogICAgX19idWlsdGluX3ZhX3N0YXJ0KF9fYXJncywgX19mbXQpOwoKCiAgICBjb25z
dCBpbnQgX19yZXQgPSBfX2J1aWx0aW5fdnNucHJpbnRmKF9fb3V0LCBfX3NpemUsIF9fZm10LCBf
X2FyZ3MpOwoKCgoKICAgIF9fYnVpbHRpbl92YV9lbmQoX19hcmdzKTsKCgogICAgX19nbnVfY3h4
OjpfX3VzZWxvY2FsZShfX29sZCk7CgoKCgoKCgogICAgcmV0dXJuIF9fcmV0OwogIH0KCgp9CiMg
NDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRz
L2xvY2FsZWZ3ZC5oIiAyIDMKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOC4xL2NjdHlwZSIgMSAzCiMgMzkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9jY3R5cGUiIDMKICAgICAgIAojIDQwICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvY2N0eXBlIiAzCgoKIyAx
ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL2N0
eXBlLmgiIDEgMyA0CiMgMzAgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJN
SEYvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMyA0CmV4dGVybiAiQyIgewojIDQ4ICIvbW50L3N0b3Jl
L2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMgNApl
bnVtCnsKICBfSVN1cHBlciA9ICgoMCkgPCA4ID8gKCgxIDw8ICgwKSkgPDwgOCkgOiAoKDEgPDwg
KDApKSA+PiA4KSksCiAgX0lTbG93ZXIgPSAoKDEpIDwgOCA/ICgoMSA8PCAoMSkpIDw8IDgpIDog
KCgxIDw8ICgxKSkgPj4gOCkpLAogIF9JU2FscGhhID0gKCgyKSA8IDggPyAoKDEgPDwgKDIpKSA8
PCA4KSA6ICgoMSA8PCAoMikpID4+IDgpKSwKICBfSVNkaWdpdCA9ICgoMykgPCA4ID8gKCgxIDw8
ICgzKSkgPDwgOCkgOiAoKDEgPDwgKDMpKSA+PiA4KSksCiAgX0lTeGRpZ2l0ID0gKCg0KSA8IDgg
PyAoKDEgPDwgKDQpKSA8PCA4KSA6ICgoMSA8PCAoNCkpID4+IDgpKSwKICBfSVNzcGFjZSA9ICgo
NSkgPCA4ID8gKCgxIDw8ICg1KSkgPDwgOCkgOiAoKDEgPDwgKDUpKSA+PiA4KSksCiAgX0lTcHJp
bnQgPSAoKDYpIDwgOCA/ICgoMSA8PCAoNikpIDw8IDgpIDogKCgxIDw8ICg2KSkgPj4gOCkpLAog
IF9JU2dyYXBoID0gKCg3KSA8IDggPyAoKDEgPDwgKDcpKSA8PCA4KSA6ICgoMSA8PCAoNykpID4+
IDgpKSwKICBfSVNibGFuayA9ICgoOCkgPCA4ID8gKCgxIDw8ICg4KSkgPDwgOCkgOiAoKDEgPDwg
KDgpKSA+PiA4KSksCiAgX0lTY250cmwgPSAoKDkpIDwgOCA/ICgoMSA8PCAoOSkpIDw8IDgpIDog
KCgxIDw8ICg5KSkgPj4gOCkpLAogIF9JU3B1bmN0ID0gKCgxMCkgPCA4ID8gKCgxIDw8ICgxMCkp
IDw8IDgpIDogKCgxIDw8ICgxMCkpID4+IDgpKSwKICBfSVNhbG51bSA9ICgoMTEpIDwgOCA/ICgo
MSA8PCAoMTEpKSA8PCA4KSA6ICgoMSA8PCAoMTEpKSA+PiA4KSkKfTsKIyA4MSAiL21udC9zdG9y
ZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzIDQK
ZXh0ZXJuIF9fY29uc3QgdW5zaWduZWQgc2hvcnQgaW50ICoqX19jdHlwZV9iX2xvYyAodm9pZCkK
ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdCkpOwpleHRlcm4gX19jb25zdCBf
X2ludDMyX3QgKipfX2N0eXBlX3RvbG93ZXJfbG9jICh2b2lkKQogICAgIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0KSk7CmV4dGVybiBfX2NvbnN0IF9faW50MzJfdCAqKl9fY3R5cGVf
dG91cHBlcl9sb2MgKHZvaWQpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Qp
KTsKIyAxMDYgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2lu
Y2x1ZGUvY3R5cGUuaCIgMyA0CgoKCgoKCmV4dGVybiBpbnQgaXNhbG51bSAoaW50KSB0aHJvdyAo
KTsKZXh0ZXJuIGludCBpc2FscGhhIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzY250cmwg
KGludCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXNkaWdpdCAoaW50KSB0aHJvdyAoKTsKZXh0ZXJu
IGludCBpc2xvd2VyIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzZ3JhcGggKGludCkgdGhy
b3cgKCk7CmV4dGVybiBpbnQgaXNwcmludCAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3B1
bmN0IChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzc3BhY2UgKGludCkgdGhyb3cgKCk7CmV4
dGVybiBpbnQgaXN1cHBlciAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3hkaWdpdCAoaW50
KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB0b2xvd2VyIChpbnQgX19jKSB0aHJvdyAoKTsKCgpl
eHRlcm4gaW50IHRvdXBwZXIgKGludCBfX2MpIHRocm93ICgpOwoKCgoKCgoKCmV4dGVybiBpbnQg
aXNibGFuayAoaW50KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBpc2N0eXBlIChpbnQgX19j
LCBpbnQgX19tYXNrKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBpc2FzY2lpIChpbnQgX19j
KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB0b2FzY2lpIChpbnQgX19jKSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGludCBfdG91cHBlciAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfdG9sb3dlciAo
aW50KSB0aHJvdyAoKTsKIyAyNzMgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4t
QVJNSEYvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMyA0CmV4dGVybiBpbnQgaXNhbG51bV9sIChpbnQs
IF9fbG9jYWxlX3QpIHRocm93ICgpOwpleHRlcm4gaW50IGlzYWxwaGFfbCAoaW50LCBfX2xvY2Fs
ZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc2NudHJsX2wgKGludCwgX19sb2NhbGVfdCkgdGhy
b3cgKCk7CmV4dGVybiBpbnQgaXNkaWdpdF9sIChpbnQsIF9fbG9jYWxlX3QpIHRocm93ICgpOwpl
eHRlcm4gaW50IGlzbG93ZXJfbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGlu
dCBpc2dyYXBoX2wgKGludCwgX19sb2NhbGVfdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXNwcmlu
dF9sIChpbnQsIF9fbG9jYWxlX3QpIHRocm93ICgpOwpleHRlcm4gaW50IGlzcHVuY3RfbCAoaW50
LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3NwYWNlX2wgKGludCwgX19sb2Nh
bGVfdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXN1cHBlcl9sIChpbnQsIF9fbG9jYWxlX3QpIHRo
cm93ICgpOwpleHRlcm4gaW50IGlzeGRpZ2l0X2wgKGludCwgX19sb2NhbGVfdCkgdGhyb3cgKCk7
CgpleHRlcm4gaW50IGlzYmxhbmtfbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKCgoKZXh0
ZXJuIGludCBfX3RvbG93ZXJfbCAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpIHRocm93ICgpOwpl
eHRlcm4gaW50IHRvbG93ZXJfbCAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpIHRocm93ICgpOwoK
CmV4dGVybiBpbnQgX190b3VwcGVyX2wgKGludCBfX2MsIF9fbG9jYWxlX3QgX19sKSB0aHJvdyAo
KTsKZXh0ZXJuIGludCB0b3VwcGVyX2wgKGludCBfX2MsIF9fbG9jYWxlX3QgX19sKSB0aHJvdyAo
KTsKIyAzNDkgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2lu
Y2x1ZGUvY3R5cGUuaCIgMyA0Cn0KIyA0MyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOC4xL2NjdHlwZSIgMiAzCiMgNjIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9jY3R5cGUiIDMKbmFtZXNwYWNlIHN0ZAp7CiAg
dXNpbmcgOjppc2FsbnVtOwogIHVzaW5nIDo6aXNhbHBoYTsKICB1c2luZyA6OmlzY250cmw7CiAg
dXNpbmcgOjppc2RpZ2l0OwogIHVzaW5nIDo6aXNncmFwaDsKICB1c2luZyA6OmlzbG93ZXI7CiAg
dXNpbmcgOjppc3ByaW50OwogIHVzaW5nIDo6aXNwdW5jdDsKICB1c2luZyA6Omlzc3BhY2U7CiAg
dXNpbmcgOjppc3VwcGVyOwogIHVzaW5nIDo6aXN4ZGlnaXQ7CiAgdXNpbmcgOjp0b2xvd2VyOwog
IHVzaW5nIDo6dG91cHBlcjsKfQoKCgoKCgoKbmFtZXNwYWNlIHN0ZAp7CiAgdXNpbmcgOjppc2Js
YW5rOwp9CiMgNDMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjguMS9iaXRzL2xvY2FsZWZ3ZC5oIiAyIDMKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAo
KF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKIyA1NSAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvbG9jYWxlZndkLmgiIDMKICBjbGFz
cyBsb2NhbGU7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9GYWNldD4KICAgIGJvb2wKICAgIGhhc19m
YWNldChjb25zdCBsb2NhbGUmKSB0aHJvdygpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRmFjZXQ+
CiAgICBjb25zdCBfRmFjZXQmCiAgICB1c2VfZmFjZXQoY29uc3QgbG9jYWxlJik7CgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBib29sCiAgICBpc3NwYWNlKF9DaGFyVCwgY29uc3Qg
bG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGJvb2wKICAgIGlzcHJp
bnQoX0NoYXJULCBjb25zdCBsb2NhbGUmKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgog
ICAgYm9vbAogICAgaXNjbnRybChfQ2hhclQsIGNvbnN0IGxvY2FsZSYpOwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQ2hhclQ+CiAgICBib29sCiAgICBpc3VwcGVyKF9DaGFyVCwgY29uc3QgbG9jYWxl
Jik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGJvb2wKICAgIGlzbG93ZXIoX0No
YXJULCBjb25zdCBsb2NhbGUmKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgYm9v
bAogICAgaXNhbHBoYShfQ2hhclQsIGNvbnN0IGxvY2FsZSYpOwoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQ+CiAgICBib29sCiAgICBpc2RpZ2l0KF9DaGFyVCwgY29uc3QgbG9jYWxlJik7Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGJvb2wKICAgIGlzcHVuY3QoX0NoYXJULCBj
b25zdCBsb2NhbGUmKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgYm9vbAogICAg
aXN4ZGlnaXQoX0NoYXJULCBjb25zdCBsb2NhbGUmKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJUPgogICAgYm9vbAogICAgaXNhbG51bShfQ2hhclQsIGNvbnN0IGxvY2FsZSYpOwoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBib29sCiAgICBpc2dyYXBoKF9DaGFyVCwgY29uc3Qg
bG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIF9DaGFyVAogICAgdG91
cHBlcihfQ2hhclQsIGNvbnN0IGxvY2FsZSYpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+
CiAgICBfQ2hhclQKICAgIHRvbG93ZXIoX0NoYXJULCBjb25zdCBsb2NhbGUmKTsKCgogIGNsYXNz
IGN0eXBlX2Jhc2U7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgY2xhc3MgY3R5cGU7
CiAgdGVtcGxhdGU8PiBjbGFzcyBjdHlwZTxjaGFyPjsKCiAgdGVtcGxhdGU8PiBjbGFzcyBjdHlw
ZTx3Y2hhcl90PjsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgY2xhc3MgY3R5cGVf
YnluYW1lOwoKCiAgY2xhc3MgY29kZWN2dF9iYXNlOwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRl
cm5ULCB0eXBlbmFtZSBfRXh0ZXJuVCwgdHlwZW5hbWUgX1N0YXRlVD4KICAgIGNsYXNzIGNvZGVj
dnQ7CiAgdGVtcGxhdGU8PiBjbGFzcyBjb2RlY3Z0PGNoYXIsIGNoYXIsIG1ic3RhdGVfdD47Cgog
IHRlbXBsYXRlPD4gY2xhc3MgY29kZWN2dDx3Y2hhcl90LCBjaGFyLCBtYnN0YXRlX3Q+OwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfSW50ZXJuVCwgdHlwZW5hbWUgX0V4dGVyblQsIHR5cGVuYW1lIF9T
dGF0ZVQ+CiAgICBjbGFzcyBjb2RlY3Z0X2J5bmFtZTsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXIgPSBpc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4gPgog
ICAgY2xhc3MgbnVtX2dldDsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9P
dXRJdGVyID0gb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIG51bV9wdXQ7
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4gY2xhc3MgbnVtcHVuY3Q7CiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJUPiBjbGFzcyBudW1wdW5jdF9ieW5hbWU7CgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQ+CiAgICBjbGFzcyBjb2xsYXRlOwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VD4gY2xhc3MKICAgIGNvbGxhdGVfYnluYW1lOwoKCiAgY2xhc3MgdGltZV9iYXNlOwogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlciA9IGlzdHJlYW1idWZfaXRlcmF0
b3I8X0NoYXJUPiA+CiAgICBjbGFzcyB0aW1lX2dldDsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9Jbkl0ZXIgPSBpc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4gPgogICAg
Y2xhc3MgdGltZV9nZXRfYnluYW1lOwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h
bWUgX091dEl0ZXIgPSBvc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4gPgogICAgY2xhc3MgdGlt
ZV9wdXQ7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfT3V0SXRlciA9IG9z
dHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPiA+CiAgICBjbGFzcyB0aW1lX3B1dF9ieW5hbWU7CgoK
ICBjbGFzcyBtb25leV9iYXNlOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9Jbkl0ZXIgPSBpc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4gPgogICAgY2xhc3MgbW9uZXlf
Z2V0OwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX091dEl0ZXIgPSBvc3Ry
ZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4gPgogICAgY2xhc3MgbW9uZXlfcHV0OwoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQ2hhclQsIGJvb2wgX0ludGwgPSBmYWxzZT4KICAgIGNsYXNzIG1vbmV5cHVu
Y3Q7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCBib29sIF9JbnRsID0gZmFsc2U+CiAgICBj
bGFzcyBtb25leXB1bmN0X2J5bmFtZTsKCgogIGNsYXNzIG1lc3NhZ2VzX2Jhc2U7CiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJUPgogICAgY2xhc3MgbWVzc2FnZXM7CiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NoYXJUPgogICAgY2xhc3MgbWVzc2FnZXNfYnluYW1lOwoKCn0KIyA0NCAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL3N0cmluZyIgMiAzCiMgMSAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvb3N0
cmVhbV9pbnNlcnQuaCIgMSAzCiMgMzMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9iaXRzL29zdHJlYW1faW5zZXJ0LmgiIDMKICAgICAgIAojIDM0ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9vc3Ry
ZWFtX2luc2VydC5oIiAzCgoKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC44LjEvYml0cy9jeHhhYmlfZm9yY2VkLmgiIDEgMwojIDM0ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9jeHhhYmlfZm9yY2Vk
LmgiIDMKICAgICAgIAojIDM1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC44LjEvYml0cy9jeHhhYmlfZm9yY2VkLmgiIDMKCiNwcmFnbWEgR0NDIHZpc2liaWxp
dHkgcHVzaChkZWZhdWx0KQoKCm5hbWVzcGFjZSBfX2N4eGFiaXYxCnsKCgoKCgoKCiAgY2xhc3Mg
X19mb3JjZWRfdW53aW5kCiAgewogICAgdmlydHVhbCB+X19mb3JjZWRfdW53aW5kKCkgdGhyb3co
KTsKCgogICAgdmlydHVhbCB2b2lkIF9fcHVyZV9kdW1teSgpID0gMDsKICB9Owp9CgoKI3ByYWdt
YSBHQ0MgdmlzaWJpbGl0eSBwb3AKIyAzNyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvb3N0cmVhbV9pbnNlcnQuaCIgMiAzCgpuYW1lc3BhY2Ug
c3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGlubGluZSB2b2lk
CiAgICBfX29zdHJlYW1fd3JpdGUoYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX291
dCwKICAgICAgY29uc3QgX0NoYXJUKiBfX3MsIHN0cmVhbXNpemUgX19uKQogICAgewogICAgICB0
eXBlZGVmIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX29zdHJlYW1fdHlwZTsKICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBfX29zdHJlYW1fdHlwZTo6aW9zX2Jhc2UgX19pb3NfYmFzZTsK
CiAgICAgIGNvbnN0IHN0cmVhbXNpemUgX19wdXQgPSBfX291dC5yZGJ1ZigpLT5zcHV0bihfX3Ms
IF9fbik7CiAgICAgIGlmIChfX3B1dCAhPSBfX24pCiBfX291dC5zZXRzdGF0ZShfX2lvc19iYXNl
OjpiYWRiaXQpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U
cmFpdHM+CiAgICBpbmxpbmUgdm9pZAogICAgX19vc3RyZWFtX2ZpbGwoYmFzaWNfb3N0cmVhbTxf
Q2hhclQsIF9UcmFpdHM+JiBfX291dCwgc3RyZWFtc2l6ZSBfX24pCiAgICB7CiAgICAgIHR5cGVk
ZWYgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9fb3N0cmVhbV90eXBlOwogICAgICB0
eXBlZGVmIHR5cGVuYW1lIF9fb3N0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19iYXNlOwoKICAg
ICAgY29uc3QgX0NoYXJUIF9fYyA9IF9fb3V0LmZpbGwoKTsKICAgICAgZm9yICg7IF9fbiA+IDA7
IC0tX19uKQogewogICBjb25zdCB0eXBlbmFtZSBfVHJhaXRzOjppbnRfdHlwZSBfX3B1dCA9IF9f
b3V0LnJkYnVmKCktPnNwdXRjKF9fYyk7CiAgIGlmIChfVHJhaXRzOjplcV9pbnRfdHlwZShfX3B1
dCwgX1RyYWl0czo6ZW9mKCkpKQogICAgIHsKICAgICAgIF9fb3V0LnNldHN0YXRlKF9faW9zX2Jh
c2U6OmJhZGJpdCk7CiAgICAgICBicmVhazsKICAgICB9CiB9CiAgICB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX29zdHJlYW08X0NoYXJU
LCBfVHJhaXRzPiYKICAgIF9fb3N0cmVhbV9pbnNlcnQoYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9U
cmFpdHM+JiBfX291dCwKICAgICAgIGNvbnN0IF9DaGFyVCogX19zLCBzdHJlYW1zaXplIF9fbikK
ICAgIHsKICAgICAgdHlwZWRlZiBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19vc3Ry
ZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19vc3RyZWFtX3R5cGU6Omlvc19iYXNl
IF9faW9zX2Jhc2U7CgogICAgICB0eXBlbmFtZSBfX29zdHJlYW1fdHlwZTo6c2VudHJ5IF9fY2Vy
YihfX291dCk7CiAgICAgIGlmIChfX2NlcmIpCiB7CiAgIGlmICh0cnVlKQogICAgIHsKICAgICAg
IGNvbnN0IHN0cmVhbXNpemUgX193ID0gX19vdXQud2lkdGgoKTsKICAgICAgIGlmIChfX3cgPiBf
X24pCiAgewogICAgY29uc3QgYm9vbCBfX2xlZnQgPSAoKF9fb3V0LmZsYWdzKCkKICAgICAmIF9f
aW9zX2Jhc2U6OmFkanVzdGZpZWxkKQogICAgICAgICAgID09IF9faW9zX2Jhc2U6OmxlZnQpOwog
ICAgaWYgKCFfX2xlZnQpCiAgICAgIF9fb3N0cmVhbV9maWxsKF9fb3V0LCBfX3cgLSBfX24pOwog
ICAgaWYgKF9fb3V0Lmdvb2QoKSkKICAgICAgX19vc3RyZWFtX3dyaXRlKF9fb3V0LCBfX3MsIF9f
bik7CiAgICBpZiAoX19sZWZ0ICYmIF9fb3V0Lmdvb2QoKSkKICAgICAgX19vc3RyZWFtX2ZpbGwo
X19vdXQsIF9fdyAtIF9fbik7CiAgfQogICAgICAgZWxzZQogIF9fb3N0cmVhbV93cml0ZShfX291
dCwgX19zLCBfX24pOwogICAgICAgX19vdXQud2lkdGgoMCk7CiAgICAgfQogICBpZiAoZmFsc2Up
CiAgICAgewogICAgICAgX19vdXQuX01fc2V0c3RhdGUoX19pb3NfYmFzZTo6YmFkYml0KTsKICAg
ICAgIDsKICAgICB9CiAgIGlmIChmYWxzZSkKICAgICB7IF9fb3V0Ll9NX3NldHN0YXRlKF9faW9z
X2Jhc2U6OmJhZGJpdCk7IH0KIH0KICAgICAgcmV0dXJuIF9fb3V0OwogICAgfQoKCgoKICBleHRl
cm4gdGVtcGxhdGUgb3N0cmVhbSYgX19vc3RyZWFtX2luc2VydChvc3RyZWFtJiwgY29uc3QgY2hh
ciosIHN0cmVhbXNpemUpOwoKCiAgZXh0ZXJuIHRlbXBsYXRlIHdvc3RyZWFtJiBfX29zdHJlYW1f
aW5zZXJ0KHdvc3RyZWFtJiwgY29uc3Qgd2NoYXJfdCosCiAgICAgICAgICBzdHJlYW1zaXplKTsK
CgoKCn0KIyA0NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OC4xL3N0cmluZyIgMiAzCgoKCgoKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvcmFuZ2VfYWNjZXNzLmgiIDEgMwojIDMzICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9yYW5nZV9hY2Nl
c3MuaCIgMwogICAgICAgCiMgMzQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjguMS9iaXRzL3JhbmdlX2FjY2Vzcy5oIiAzCgoKCm5hbWVzcGFjZSBzdGQgX19h
dHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCgoKCgoKICB0ZW1w
bGF0ZTxjbGFzcyBfQ29udGFpbmVyPgogICAgaW5saW5lIGF1dG8KICAgIGJlZ2luKF9Db250YWlu
ZXImIF9fY29udCkgLT4gZGVjbHR5cGUoX19jb250LmJlZ2luKCkpCiAgICB7IHJldHVybiBfX2Nv
bnQuYmVnaW4oKTsgfQoKCgoKCgogIHRlbXBsYXRlPGNsYXNzIF9Db250YWluZXI+CiAgICBpbmxp
bmUgYXV0bwogICAgYmVnaW4oY29uc3QgX0NvbnRhaW5lciYgX19jb250KSAtPiBkZWNsdHlwZShf
X2NvbnQuYmVnaW4oKSkKICAgIHsgcmV0dXJuIF9fY29udC5iZWdpbigpOyB9CgoKCgoKCiAgdGVt
cGxhdGU8Y2xhc3MgX0NvbnRhaW5lcj4KICAgIGlubGluZSBhdXRvCiAgICBlbmQoX0NvbnRhaW5l
ciYgX19jb250KSAtPiBkZWNsdHlwZShfX2NvbnQuZW5kKCkpCiAgICB7IHJldHVybiBfX2NvbnQu
ZW5kKCk7IH0KCgoKCgoKICB0ZW1wbGF0ZTxjbGFzcyBfQ29udGFpbmVyPgogICAgaW5saW5lIGF1
dG8KICAgIGVuZChjb25zdCBfQ29udGFpbmVyJiBfX2NvbnQpIC0+IGRlY2x0eXBlKF9fY29udC5l
bmQoKSkKICAgIHsgcmV0dXJuIF9fY29udC5lbmQoKTsgfQoKCgoKCiAgdGVtcGxhdGU8Y2xhc3Mg
X1RwLCBzaXplX3QgX05tPgogICAgaW5saW5lIF9UcCoKICAgIGJlZ2luKF9UcCAoJl9fYXJyKVtf
Tm1dKQogICAgeyByZXR1cm4gX19hcnI7IH0KCgoKCgoKICB0ZW1wbGF0ZTxjbGFzcyBfVHAsIHNp
emVfdCBfTm0+CiAgICBpbmxpbmUgX1RwKgogICAgZW5kKF9UcCAoJl9fYXJyKVtfTm1dKQogICAg
eyByZXR1cm4gX19hcnIgKyBfTm07IH0KCgp9CiMgNTIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9zdHJpbmciIDIgMwojIDEgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAx
IDMKIyAzNyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4x
L2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgIAojIDM4ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwoKCgoK
CgoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0
IikpKQp7CgojIDExMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs
IHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGNsYXNzIGJhc2ljX3N0cmlu
ZwogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9BbGxvYzo6dGVtcGxhdGUgcmViaW5kPF9D
aGFyVD46Om90aGVyIF9DaGFyVF9hbGxvY190eXBlOwoKCiAgICBwdWJsaWM6CiAgICAgIHR5cGVk
ZWYgX1RyYWl0cyB0cmFpdHNfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjpj
aGFyX3R5cGUgdmFsdWVfdHlwZTsKICAgICAgdHlwZWRlZiBfQWxsb2MgYWxsb2NhdG9yX3R5cGU7
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0NoYXJUX2FsbG9jX3R5cGU6OnNpemVfdHlwZSBzaXpl
X3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0NoYXJUX2FsbG9jX3R5cGU6OmRpZmZlcmVu
Y2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0NoYXJUX2Fs
bG9jX3R5cGU6OnJlZmVyZW5jZSByZWZlcmVuY2U7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0No
YXJUX2FsbG9jX3R5cGU6OmNvbnN0X3JlZmVyZW5jZSBjb25zdF9yZWZlcmVuY2U7CiAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgX0NoYXJUX2FsbG9jX3R5cGU6OnBvaW50ZXIgcG9pbnRlcjsKICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBfQ2hhclRfYWxsb2NfdHlwZTo6Y29uc3RfcG9pbnRlciBjb25zdF9w
b2ludGVyOwogICAgICB0eXBlZGVmIF9fZ251X2N4eDo6X19ub3JtYWxfaXRlcmF0b3I8cG9pbnRl
ciwgYmFzaWNfc3RyaW5nPiBpdGVyYXRvcjsKICAgICAgdHlwZWRlZiBfX2dudV9jeHg6Ol9fbm9y
bWFsX2l0ZXJhdG9yPGNvbnN0X3BvaW50ZXIsIGJhc2ljX3N0cmluZz4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfaXRlcmF0
b3I7CiAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGNvbnN0X2l0ZXJhdG9yPiBj
b25zdF9yZXZlcnNlX2l0ZXJhdG9yOwogICAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRv
cjxpdGVyYXRvcj4gcmV2ZXJzZV9pdGVyYXRvcjsKCiAgICBwcml2YXRlOgojIDE0OCAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNfc3Ry
aW5nLmgiIDMKICAgICAgc3RydWN0IF9SZXBfYmFzZQogICAgICB7CiBzaXplX3R5cGUgX01fbGVu
Z3RoOwogc2l6ZV90eXBlIF9NX2NhcGFjaXR5OwogX0F0b21pY193b3JkIF9NX3JlZmNvdW50Owog
ICAgICB9OwoKICAgICAgc3RydWN0IF9SZXAgOiBfUmVwX2Jhc2UKICAgICAgewoKIHR5cGVkZWYg
dHlwZW5hbWUgX0FsbG9jOjp0ZW1wbGF0ZSByZWJpbmQ8Y2hhcj46Om90aGVyIF9SYXdfYnl0ZXNf
YWxsb2M7CiMgMTczICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC44LjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogc3RhdGljIGNvbnN0IHNpemVfdHlwZSBfU19t
YXhfc2l6ZTsKIHN0YXRpYyBjb25zdCBfQ2hhclQgX1NfdGVybWluYWw7CgoKCiAgICAgICAgc3Rh
dGljIHNpemVfdHlwZSBfU19lbXB0eV9yZXBfc3RvcmFnZVtdOwoKICAgICAgICBzdGF0aWMgX1Jl
cCYKICAgICAgICBfU19lbXB0eV9yZXAoKQogICAgICAgIHsKCgoKICAgdm9pZCogX19wID0gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oJl9TX2VtcHR5X3JlcF9zdG9yYWdlKTsKICAgcmV0dXJuICpy
ZWludGVycHJldF9jYXN0PF9SZXAqPihfX3ApOwogfQoKICAgICAgICBib29sCiBfTV9pc19sZWFr
ZWQoKSBjb25zdAogICAgICAgIHsgcmV0dXJuIHRoaXMtPl9NX3JlZmNvdW50IDwgMDsgfQoKICAg
ICAgICBib29sCiBfTV9pc19zaGFyZWQoKSBjb25zdAogICAgICAgIHsgcmV0dXJuIHRoaXMtPl9N
X3JlZmNvdW50ID4gMDsgfQoKICAgICAgICB2b2lkCiBfTV9zZXRfbGVha2VkKCkKICAgICAgICB7
IHRoaXMtPl9NX3JlZmNvdW50ID0gLTE7IH0KCiAgICAgICAgdm9pZAogX01fc2V0X3NoYXJhYmxl
KCkKICAgICAgICB7IHRoaXMtPl9NX3JlZmNvdW50ID0gMDsgfQoKIHZvaWQKIF9NX3NldF9sZW5n
dGhfYW5kX3NoYXJhYmxlKHNpemVfdHlwZSBfX24pCiB7CgogICBpZiAoX19idWlsdGluX2V4cGVj
dCh0aGlzICE9ICZfU19lbXB0eV9yZXAoKSwgZmFsc2UpKQoKICAgICB7CiAgICAgICB0aGlzLT5f
TV9zZXRfc2hhcmFibGUoKTsKICAgICAgIHRoaXMtPl9NX2xlbmd0aCA9IF9fbjsKICAgICAgIHRy
YWl0c190eXBlOjphc3NpZ24odGhpcy0+X01fcmVmZGF0YSgpW19fbl0sIF9TX3Rlcm1pbmFsKTsK
CgogICAgIH0KIH0KCiBfQ2hhclQqCiBfTV9yZWZkYXRhKCkgdGhyb3coKQogeyByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxfQ2hhclQqPih0aGlzICsgMSk7IH0KCiBfQ2hhclQqCiBfTV9ncmFiKGNv
bnN0IF9BbGxvYyYgX19hbGxvYzEsIGNvbnN0IF9BbGxvYyYgX19hbGxvYzIpCiB7CiAgIHJldHVy
biAoIV9NX2lzX2xlYWtlZCgpICYmIF9fYWxsb2MxID09IF9fYWxsb2MyKQogICAgICAgICAgID8g
X01fcmVmY29weSgpIDogX01fY2xvbmUoX19hbGxvYzEpOwogfQoKCiBzdGF0aWMgX1JlcCoKIF9T
X2NyZWF0ZShzaXplX3R5cGUsIHNpemVfdHlwZSwgY29uc3QgX0FsbG9jJik7Cgogdm9pZAogX01f
ZGlzcG9zZShjb25zdCBfQWxsb2MmIF9fYSkKIHsKCiAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KHRo
aXMgIT0gJl9TX2VtcHR5X3JlcCgpLCBmYWxzZSkpCgogICAgIHsKCiAgICAgICA7CiAgICAgICBp
ZiAoX19nbnVfY3h4OjpfX2V4Y2hhbmdlX2FuZF9hZGRfZGlzcGF0Y2goJnRoaXMtPl9NX3JlZmNv
dW50LAogICAgICAgIC0xKSA8PSAwKQogIHsKICAgIDsKICAgIF9NX2Rlc3Ryb3koX19hKTsKICB9
CiAgICAgfQogfQoKIHZvaWQKIF9NX2Rlc3Ryb3koY29uc3QgX0FsbG9jJikgdGhyb3coKTsKCiBf
Q2hhclQqCiBfTV9yZWZjb3B5KCkgdGhyb3coKQogewoKICAgaWYgKF9fYnVpbHRpbl9leHBlY3Qo
dGhpcyAhPSAmX1NfZW1wdHlfcmVwKCksIGZhbHNlKSkKCiAgICAgICAgICAgIF9fZ251X2N4eDo6
X19hdG9taWNfYWRkX2Rpc3BhdGNoKCZ0aGlzLT5fTV9yZWZjb3VudCwgMSk7CiAgIHJldHVybiBf
TV9yZWZkYXRhKCk7CiB9CgogX0NoYXJUKgogX01fY2xvbmUoY29uc3QgX0FsbG9jJiwgc2l6ZV90
eXBlIF9fcmVzID0gMCk7CiAgICAgIH07CgoKICAgICAgc3RydWN0IF9BbGxvY19oaWRlciA6IF9B
bGxvYwogICAgICB7CiBfQWxsb2NfaGlkZXIoX0NoYXJUKiBfX2RhdCwgY29uc3QgX0FsbG9jJiBf
X2EpCiA6IF9BbGxvYyhfX2EpLCBfTV9wKF9fZGF0KSB7IH0KCiBfQ2hhclQqIF9NX3A7CiAgICAg
IH07CgogICAgcHVibGljOgoKCgoKICAgICAgc3RhdGljIGNvbnN0IHNpemVfdHlwZSBucG9zID0g
c3RhdGljX2Nhc3Q8c2l6ZV90eXBlPigtMSk7CgogICAgcHJpdmF0ZToKCiAgICAgIG11dGFibGUg
X0FsbG9jX2hpZGVyIF9NX2RhdGFwbHVzOwoKICAgICAgX0NoYXJUKgogICAgICBfTV9kYXRhKCkg
Y29uc3QKICAgICAgeyByZXR1cm4gX01fZGF0YXBsdXMuX01fcDsgfQoKICAgICAgX0NoYXJUKgog
ICAgICBfTV9kYXRhKF9DaGFyVCogX19wKQogICAgICB7IHJldHVybiAoX01fZGF0YXBsdXMuX01f
cCA9IF9fcCk7IH0KCiAgICAgIF9SZXAqCiAgICAgIF9NX3JlcCgpIGNvbnN0CiAgICAgIHsgcmV0
dXJuICYoKHJlaW50ZXJwcmV0X2Nhc3Q8X1JlcCo+IChfTV9kYXRhKCkpKVstMV0pOyB9CgoKCiAg
ICAgIGl0ZXJhdG9yCiAgICAgIF9NX2liZWdpbigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIGl0ZXJh
dG9yKF9NX2RhdGEoKSk7IH0KCiAgICAgIGl0ZXJhdG9yCiAgICAgIF9NX2llbmQoKSBjb25zdAog
ICAgICB7IHJldHVybiBpdGVyYXRvcihfTV9kYXRhKCkgKyB0aGlzLT5zaXplKCkpOyB9CgogICAg
ICB2b2lkCiAgICAgIF9NX2xlYWsoKQogICAgICB7CiBpZiAoIV9NX3JlcCgpLT5fTV9pc19sZWFr
ZWQoKSkKICAgX01fbGVha19oYXJkKCk7CiAgICAgIH0KCiAgICAgIHNpemVfdHlwZQogICAgICBf
TV9jaGVjayhzaXplX3R5cGUgX19wb3MsIGNvbnN0IGNoYXIqIF9fcykgY29uc3QKICAgICAgewog
aWYgKF9fcG9zID4gdGhpcy0+c2l6ZSgpKQogICBfX3Rocm93X291dF9vZl9yYW5nZSgoX19zKSk7
CiByZXR1cm4gX19wb3M7CiAgICAgIH0KCiAgICAgIHZvaWQKICAgICAgX01fY2hlY2tfbGVuZ3Ro
KHNpemVfdHlwZSBfX24xLCBzaXplX3R5cGUgX19uMiwgY29uc3QgY2hhciogX19zKSBjb25zdAog
ICAgICB7CiBpZiAodGhpcy0+bWF4X3NpemUoKSAtICh0aGlzLT5zaXplKCkgLSBfX24xKSA8IF9f
bjIpCiAgIF9fdGhyb3dfbGVuZ3RoX2Vycm9yKChfX3MpKTsKICAgICAgfQoKCiAgICAgIHNpemVf
dHlwZQogICAgICBfTV9saW1pdChzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX29mZikgY29u
c3QKICAgICAgewogY29uc3QgYm9vbCBfX3Rlc3RvZmYgPSBfX29mZiA8IHRoaXMtPnNpemUoKSAt
IF9fcG9zOwogcmV0dXJuIF9fdGVzdG9mZiA/IF9fb2ZmIDogdGhpcy0+c2l6ZSgpIC0gX19wb3M7
CiAgICAgIH0KCgogICAgICBib29sCiAgICAgIF9NX2Rpc2p1bmN0KGNvbnN0IF9DaGFyVCogX19z
KSBjb25zdAogICAgICB7CiByZXR1cm4gKGxlc3M8Y29uc3QgX0NoYXJUKj4oKShfX3MsIF9NX2Rh
dGEoKSkKICB8fCBsZXNzPGNvbnN0IF9DaGFyVCo+KCkoX01fZGF0YSgpICsgdGhpcy0+c2l6ZSgp
LCBfX3MpKTsKICAgICAgfQoKCgogICAgICBzdGF0aWMgdm9pZAogICAgICBfTV9jb3B5KF9DaGFy
VCogX19kLCBjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fbikKICAgICAgewogaWYgKF9f
biA9PSAxKQogICB0cmFpdHNfdHlwZTo6YXNzaWduKCpfX2QsICpfX3MpOwogZWxzZQogICB0cmFp
dHNfdHlwZTo6Y29weShfX2QsIF9fcywgX19uKTsKICAgICAgfQoKICAgICAgc3RhdGljIHZvaWQK
ICAgICAgX01fbW92ZShfQ2hhclQqIF9fZCwgY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBf
X24pCiAgICAgIHsKIGlmIChfX24gPT0gMSkKICAgdHJhaXRzX3R5cGU6OmFzc2lnbigqX19kLCAq
X19zKTsKIGVsc2UKICAgdHJhaXRzX3R5cGU6Om1vdmUoX19kLCBfX3MsIF9fbik7CiAgICAgIH0K
CiAgICAgIHN0YXRpYyB2b2lkCiAgICAgIF9NX2Fzc2lnbihfQ2hhclQqIF9fZCwgc2l6ZV90eXBl
IF9fbiwgX0NoYXJUIF9fYykKICAgICAgewogaWYgKF9fbiA9PSAxKQogICB0cmFpdHNfdHlwZTo6
YXNzaWduKCpfX2QsIF9fYyk7CiBlbHNlCiAgIHRyYWl0c190eXBlOjphc3NpZ24oX19kLCBfX24s
IF9fYyk7CiAgICAgIH0KCgoKICAgICAgdGVtcGxhdGU8Y2xhc3MgX0l0ZXJhdG9yPgogICAgICAg
IHN0YXRpYyB2b2lkCiAgICAgICAgX1NfY29weV9jaGFycyhfQ2hhclQqIF9fcCwgX0l0ZXJhdG9y
IF9fazEsIF9JdGVyYXRvciBfX2syKQogICAgICAgIHsKICAgZm9yICg7IF9fazEgIT0gX19rMjsg
KytfX2sxLCArK19fcCkKICAgICB0cmFpdHNfdHlwZTo6YXNzaWduKCpfX3AsICpfX2sxKTsKIH0K
CiAgICAgIHN0YXRpYyB2b2lkCiAgICAgIF9TX2NvcHlfY2hhcnMoX0NoYXJUKiBfX3AsIGl0ZXJh
dG9yIF9fazEsIGl0ZXJhdG9yIF9fazIpCiAgICAgIHsgX1NfY29weV9jaGFycyhfX3AsIF9fazEu
YmFzZSgpLCBfX2syLmJhc2UoKSk7IH0KCiAgICAgIHN0YXRpYyB2b2lkCiAgICAgIF9TX2NvcHlf
Y2hhcnMoX0NoYXJUKiBfX3AsIGNvbnN0X2l0ZXJhdG9yIF9fazEsIGNvbnN0X2l0ZXJhdG9yIF9f
azIpCiAgICAgIHsgX1NfY29weV9jaGFycyhfX3AsIF9fazEuYmFzZSgpLCBfX2syLmJhc2UoKSk7
IH0KCiAgICAgIHN0YXRpYyB2b2lkCiAgICAgIF9TX2NvcHlfY2hhcnMoX0NoYXJUKiBfX3AsIF9D
aGFyVCogX19rMSwgX0NoYXJUKiBfX2syKQogICAgICB7IF9NX2NvcHkoX19wLCBfX2sxLCBfX2sy
IC0gX19rMSk7IH0KCiAgICAgIHN0YXRpYyB2b2lkCiAgICAgIF9TX2NvcHlfY2hhcnMoX0NoYXJU
KiBfX3AsIGNvbnN0IF9DaGFyVCogX19rMSwgY29uc3QgX0NoYXJUKiBfX2syKQogICAgICB7IF9N
X2NvcHkoX19wLCBfX2sxLCBfX2syIC0gX19rMSk7IH0KCiAgICAgIHN0YXRpYyBpbnQKICAgICAg
X1NfY29tcGFyZShzaXplX3R5cGUgX19uMSwgc2l6ZV90eXBlIF9fbjIpCiAgICAgIHsKIGNvbnN0
IGRpZmZlcmVuY2VfdHlwZSBfX2QgPSBkaWZmZXJlbmNlX3R5cGUoX19uMSAtIF9fbjIpOwoKIGlm
IChfX2QgPiBfX2dudV9jeHg6Ol9fbnVtZXJpY190cmFpdHM8aW50Pjo6X19tYXgpCiAgIHJldHVy
biBfX2dudV9jeHg6Ol9fbnVtZXJpY190cmFpdHM8aW50Pjo6X19tYXg7CiBlbHNlIGlmIChfX2Qg
PCBfX2dudV9jeHg6Ol9fbnVtZXJpY190cmFpdHM8aW50Pjo6X19taW4pCiAgIHJldHVybiBfX2du
dV9jeHg6Ol9fbnVtZXJpY190cmFpdHM8aW50Pjo6X19taW47CiBlbHNlCiAgIHJldHVybiBpbnQo
X19kKTsKICAgICAgfQoKICAgICAgdm9pZAogICAgICBfTV9tdXRhdGUoc2l6ZV90eXBlIF9fcG9z
LCBzaXplX3R5cGUgX19sZW4xLCBzaXplX3R5cGUgX19sZW4yKTsKCiAgICAgIHZvaWQKICAgICAg
X01fbGVha19oYXJkKCk7CgogICAgICBzdGF0aWMgX1JlcCYKICAgICAgX1NfZW1wdHlfcmVwKCkK
ICAgICAgeyByZXR1cm4gX1JlcDo6X1NfZW1wdHlfcmVwKCk7IH0KCiAgICBwdWJsaWM6CgoKCgoK
CgogICAgICBiYXNpY19zdHJpbmcoKQoKICAgICAgOiBfTV9kYXRhcGx1cyhfU19lbXB0eV9yZXAo
KS5fTV9yZWZkYXRhKCksIF9BbGxvYygpKSB7IH0KCgoKCgoKCiAgICAgIGV4cGxpY2l0CiAgICAg
IGJhc2ljX3N0cmluZyhjb25zdCBfQWxsb2MmIF9fYSk7CgoKCgoKCiAgICAgIGJhc2ljX3N0cmlu
Zyhjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyKTsKCgoKCgoKICAgICAgYmFzaWNfc3RyaW5nKGNv
bnN0IGJhc2ljX3N0cmluZyYgX19zdHIsIHNpemVfdHlwZSBfX3BvcywKICAgICBzaXplX3R5cGUg
X19uID0gbnBvcyk7CgoKCgoKCgogICAgICBiYXNpY19zdHJpbmcoY29uc3QgYmFzaWNfc3RyaW5n
JiBfX3N0ciwgc2l6ZV90eXBlIF9fcG9zLAogICAgIHNpemVfdHlwZSBfX24sIGNvbnN0IF9BbGxv
YyYgX19hKTsKIyA0ODMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjguMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGJhc2ljX3N0cmluZyhjb25zdCBf
Q2hhclQqIF9fcywgc2l6ZV90eXBlIF9fbiwKICAgICBjb25zdCBfQWxsb2MmIF9fYSA9IF9BbGxv
YygpKTsKCgoKCgogICAgICBiYXNpY19zdHJpbmcoY29uc3QgX0NoYXJUKiBfX3MsIGNvbnN0IF9B
bGxvYyYgX19hID0gX0FsbG9jKCkpOwoKCgoKCgogICAgICBiYXNpY19zdHJpbmcoc2l6ZV90eXBl
IF9fbiwgX0NoYXJUIF9fYywgY29uc3QgX0FsbG9jJiBfX2EgPSBfQWxsb2MoKSk7CiMgNTA3ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9iYXNp
Y19zdHJpbmcuaCIgMwogICAgICBiYXNpY19zdHJpbmcoYmFzaWNfc3RyaW5nJiYgX19zdHIpIG5v
ZXhjZXB0CiAgICAgIDogX01fZGF0YXBsdXMoX19zdHIuX01fZGF0YXBsdXMpCiAgICAgIHsKCiBf
X3N0ci5fTV9kYXRhKF9TX2VtcHR5X3JlcCgpLl9NX3JlZmRhdGEoKSk7CgoKCiAgICAgIH0KCgoK
CgoKICAgICAgYmFzaWNfc3RyaW5nKGluaXRpYWxpemVyX2xpc3Q8X0NoYXJUPiBfX2wsIGNvbnN0
IF9BbGxvYyYgX19hID0gX0FsbG9jKCkpOwojIDUzMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgdGVt
cGxhdGU8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiAgICAgICAgYmFzaWNfc3RyaW5nKF9JbnB1dEl0
ZXJhdG9yIF9fYmVnLCBfSW5wdXRJdGVyYXRvciBfX2VuZCwKICAgICAgIGNvbnN0IF9BbGxvYyYg
X19hID0gX0FsbG9jKCkpOwoKCgoKICAgICAgfmJhc2ljX3N0cmluZygpIG5vZXhjZXB0CiAgICAg
IHsgX01fcmVwKCktPl9NX2Rpc3Bvc2UodGhpcy0+Z2V0X2FsbG9jYXRvcigpKTsgfQoKCgoKCiAg
ICAgIGJhc2ljX3N0cmluZyYKICAgICAgb3BlcmF0b3I9KGNvbnN0IGJhc2ljX3N0cmluZyYgX19z
dHIpCiAgICAgIHsgcmV0dXJuIHRoaXMtPmFzc2lnbihfX3N0cik7IH0KCgoKCgogICAgICBiYXNp
Y19zdHJpbmcmCiAgICAgIG9wZXJhdG9yPShjb25zdCBfQ2hhclQqIF9fcykKICAgICAgeyByZXR1
cm4gdGhpcy0+YXNzaWduKF9fcyk7IH0KIyA1NjQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGJhc2lj
X3N0cmluZyYKICAgICAgb3BlcmF0b3I9KF9DaGFyVCBfX2MpCiAgICAgIHsKIHRoaXMtPmFzc2ln
bigxLCBfX2MpOwogcmV0dXJuICp0aGlzOwogICAgICB9CiMgNTc5ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwog
ICAgICBiYXNpY19zdHJpbmcmCiAgICAgIG9wZXJhdG9yPShiYXNpY19zdHJpbmcmJiBfX3N0cikK
ICAgICAgewoKIHRoaXMtPnN3YXAoX19zdHIpOwogcmV0dXJuICp0aGlzOwogICAgICB9CgoKCgoK
ICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBvcGVyYXRvcj0oaW5pdGlhbGl6ZXJfbGlzdDxfQ2hh
clQ+IF9fbCkKICAgICAgewogdGhpcy0+YXNzaWduKF9fbC5iZWdpbigpLCBfX2wuc2l6ZSgpKTsK
IHJldHVybiAqdGhpczsKICAgICAgfQoKCgoKCgoKICAgICAgaXRlcmF0b3IKICAgICAgYmVnaW4o
KSBub2V4Y2VwdAogICAgICB7CiBfTV9sZWFrKCk7CiByZXR1cm4gaXRlcmF0b3IoX01fZGF0YSgp
KTsKICAgICAgfQoKCgoKCiAgICAgIGNvbnN0X2l0ZXJhdG9yCiAgICAgIGJlZ2luKCkgY29uc3Qg
bm9leGNlcHQKICAgICAgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IoX01fZGF0YSgpKTsgfQoKCgoK
CiAgICAgIGl0ZXJhdG9yCiAgICAgIGVuZCgpIG5vZXhjZXB0CiAgICAgIHsKIF9NX2xlYWsoKTsK
IHJldHVybiBpdGVyYXRvcihfTV9kYXRhKCkgKyB0aGlzLT5zaXplKCkpOwogICAgICB9CgoKCgoK
ICAgICAgY29uc3RfaXRlcmF0b3IKICAgICAgZW5kKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyBy
ZXR1cm4gY29uc3RfaXRlcmF0b3IoX01fZGF0YSgpICsgdGhpcy0+c2l6ZSgpKTsgfQoKCgoKCgog
ICAgICByZXZlcnNlX2l0ZXJhdG9yCiAgICAgIHJiZWdpbigpIG5vZXhjZXB0CiAgICAgIHsgcmV0
dXJuIHJldmVyc2VfaXRlcmF0b3IodGhpcy0+ZW5kKCkpOyB9CgoKCgoKCiAgICAgIGNvbnN0X3Jl
dmVyc2VfaXRlcmF0b3IKICAgICAgcmJlZ2luKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1
cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcih0aGlzLT5lbmQoKSk7IH0KCgoKCgoKICAgICAgcmV2
ZXJzZV9pdGVyYXRvcgogICAgICByZW5kKCkgbm9leGNlcHQKICAgICAgeyByZXR1cm4gcmV2ZXJz
ZV9pdGVyYXRvcih0aGlzLT5iZWdpbigpKTsgfQoKCgoKCgogICAgICBjb25zdF9yZXZlcnNlX2l0
ZXJhdG9yCiAgICAgIHJlbmQoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBjb25zdF9y
ZXZlcnNlX2l0ZXJhdG9yKHRoaXMtPmJlZ2luKCkpOyB9CgoKCgoKCiAgICAgIGNvbnN0X2l0ZXJh
dG9yCiAgICAgIGNiZWdpbigpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIGNvbnN0X2l0
ZXJhdG9yKHRoaXMtPl9NX2RhdGEoKSk7IH0KCgoKCgogICAgICBjb25zdF9pdGVyYXRvcgogICAg
ICBjZW5kKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IodGhp
cy0+X01fZGF0YSgpICsgdGhpcy0+c2l6ZSgpKTsgfQoKCgoKCgogICAgICBjb25zdF9yZXZlcnNl
X2l0ZXJhdG9yCiAgICAgIGNyYmVnaW4oKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBj
b25zdF9yZXZlcnNlX2l0ZXJhdG9yKHRoaXMtPmVuZCgpKTsgfQoKCgoKCgogICAgICBjb25zdF9y
ZXZlcnNlX2l0ZXJhdG9yCiAgICAgIGNyZW5kKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1
cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcih0aGlzLT5iZWdpbigpKTsgfQoKCiAgICBwdWJsaWM6
CgoKCiAgICAgIHNpemVfdHlwZQogICAgICBzaXplKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyBy
ZXR1cm4gX01fcmVwKCktPl9NX2xlbmd0aDsgfQoKCgogICAgICBzaXplX3R5cGUKICAgICAgbGVu
Z3RoKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX01fcmVwKCktPl9NX2xlbmd0aDsg
fQoKCiAgICAgIHNpemVfdHlwZQogICAgICBtYXhfc2l6ZSgpIGNvbnN0IG5vZXhjZXB0CiAgICAg
IHsgcmV0dXJuIF9SZXA6Ol9TX21heF9zaXplOyB9CiMgNzM5ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAg
ICB2b2lkCiAgICAgIHJlc2l6ZShzaXplX3R5cGUgX19uLCBfQ2hhclQgX19jKTsKIyA3NTIgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2Jhc2lj
X3N0cmluZy5oIiAzCiAgICAgIHZvaWQKICAgICAgcmVzaXplKHNpemVfdHlwZSBfX24pCiAgICAg
IHsgdGhpcy0+cmVzaXplKF9fbiwgX0NoYXJUKCkpOyB9CgoKCiAgICAgIHZvaWQKICAgICAgc2hy
aW5rX3RvX2ZpdCgpCiAgICAgIHsKIGlmIChjYXBhY2l0eSgpID4gc2l6ZSgpKQogICB7CiAgICAg
aWYgKHRydWUpCiAgICAgICB7IHJlc2VydmUoMCk7IH0KICAgICBpZiAoZmFsc2UpCiAgICAgICB7
IH0KICAgfQogICAgICB9CgoKCgoKCiAgICAgIHNpemVfdHlwZQogICAgICBjYXBhY2l0eSgpIGNv
bnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9NX3JlcCgpLT5fTV9jYXBhY2l0eTsgfQojIDc5
NiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMv
YmFzaWNfc3RyaW5nLmgiIDMKICAgICAgdm9pZAogICAgICByZXNlcnZlKHNpemVfdHlwZSBfX3Jl
c19hcmcgPSAwKTsKCgoKCiAgICAgIHZvaWQKICAgICAgY2xlYXIoKSBub2V4Y2VwdAogICAgICB7
IF9NX211dGF0ZSgwLCB0aGlzLT5zaXplKCksIDApOyB9CgoKCgoKICAgICAgYm9vbAogICAgICBl
bXB0eSgpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHRoaXMtPnNpemUoKSA9PSAwOyB9
CiMgODI1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEv
Yml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBjb25zdF9yZWZlcmVuY2UKICAgICAgb3BlcmF0
b3JbXSAoc2l6ZV90eXBlIF9fcG9zKSBjb25zdAogICAgICB7CiA7CiByZXR1cm4gX01fZGF0YSgp
W19fcG9zXTsKICAgICAgfQojIDg0MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgcmVmZXJlbmNlCiAg
ICAgIG9wZXJhdG9yW10oc2l6ZV90eXBlIF9fcG9zKQogICAgICB7CgogOwoKIDsKIF9NX2xlYWso
KTsKIHJldHVybiBfTV9kYXRhKClbX19wb3NdOwogICAgICB9CiMgODYzICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9iYXNpY19zdHJpbmcuaCIg
MwogICAgICBjb25zdF9yZWZlcmVuY2UKICAgICAgYXQoc2l6ZV90eXBlIF9fbikgY29uc3QKICAg
ICAgewogaWYgKF9fbiA+PSB0aGlzLT5zaXplKCkpCiAgIF9fdGhyb3dfb3V0X29mX3JhbmdlKCgi
YmFzaWNfc3RyaW5nOjphdCIpKTsKIHJldHVybiBfTV9kYXRhKClbX19uXTsKICAgICAgfQojIDg4
MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMv
YmFzaWNfc3RyaW5nLmgiIDMKICAgICAgcmVmZXJlbmNlCiAgICAgIGF0KHNpemVfdHlwZSBfX24p
CiAgICAgIHsKIGlmIChfX24gPj0gc2l6ZSgpKQogICBfX3Rocm93X291dF9vZl9yYW5nZSgoImJh
c2ljX3N0cmluZzo6YXQiKSk7CiBfTV9sZWFrKCk7CiByZXR1cm4gX01fZGF0YSgpW19fbl07CiAg
ICAgIH0KCgoKCgoKICAgICAgcmVmZXJlbmNlCiAgICAgIGZyb250KCkKICAgICAgeyByZXR1cm4g
b3BlcmF0b3JbXSgwKTsgfQoKCgoKCiAgICAgIGNvbnN0X3JlZmVyZW5jZQogICAgICBmcm9udCgp
IGNvbnN0CiAgICAgIHsgcmV0dXJuIG9wZXJhdG9yW10oMCk7IH0KCgoKCgogICAgICByZWZlcmVu
Y2UKICAgICAgYmFjaygpCiAgICAgIHsgcmV0dXJuIG9wZXJhdG9yW10odGhpcy0+c2l6ZSgpIC0g
MSk7IH0KCgoKCgogICAgICBjb25zdF9yZWZlcmVuY2UKICAgICAgYmFjaygpIGNvbnN0CiAgICAg
IHsgcmV0dXJuIG9wZXJhdG9yW10odGhpcy0+c2l6ZSgpIC0gMSk7IH0KIyA5MzEgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2Jhc2ljX3N0cmlu
Zy5oIiAzCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgb3BlcmF0b3IrPShjb25zdCBiYXNpY19z
dHJpbmcmIF9fc3RyKQogICAgICB7IHJldHVybiB0aGlzLT5hcHBlbmQoX19zdHIpOyB9CgoKCgoK
CiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgb3BlcmF0b3IrPShjb25zdCBfQ2hhclQqIF9fcykK
ICAgICAgeyByZXR1cm4gdGhpcy0+YXBwZW5kKF9fcyk7IH0KCgoKCgoKICAgICAgYmFzaWNfc3Ry
aW5nJgogICAgICBvcGVyYXRvcis9KF9DaGFyVCBfX2MpCiAgICAgIHsKIHRoaXMtPnB1c2hfYmFj
ayhfX2MpOwogcmV0dXJuICp0aGlzOwogICAgICB9CgoKCgoKCgogICAgICBiYXNpY19zdHJpbmcm
CiAgICAgIG9wZXJhdG9yKz0oaW5pdGlhbGl6ZXJfbGlzdDxfQ2hhclQ+IF9fbCkKICAgICAgeyBy
ZXR1cm4gdGhpcy0+YXBwZW5kKF9fbC5iZWdpbigpLCBfX2wuc2l6ZSgpKTsgfQoKCgoKCgoKICAg
ICAgYmFzaWNfc3RyaW5nJgogICAgICBhcHBlbmQoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0cik7
CiMgOTg4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEv
Yml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGFwcGVuZChj
b25zdCBiYXNpY19zdHJpbmcmIF9fc3RyLCBzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24p
OwoKCgoKCgoKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBhcHBlbmQoY29uc3QgX0NoYXJUKiBf
X3MsIHNpemVfdHlwZSBfX24pOwoKCgoKCgogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGFwcGVu
ZChjb25zdCBfQ2hhclQqIF9fcykKICAgICAgewogOwogcmV0dXJuIHRoaXMtPmFwcGVuZChfX3Ms
IHRyYWl0c190eXBlOjpsZW5ndGgoX19zKSk7CiAgICAgIH0KIyAxMDIwICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9iYXNpY19zdHJpbmcuaCIg
MwogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGFwcGVuZChzaXplX3R5cGUgX19uLCBfQ2hhclQg
X19jKTsKCgoKCgoKCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgYXBwZW5kKGluaXRpYWxpemVy
X2xpc3Q8X0NoYXJUPiBfX2wpCiAgICAgIHsgcmV0dXJuIHRoaXMtPmFwcGVuZChfX2wuYmVnaW4o
KSwgX19sLnNpemUoKSk7IH0KIyAxMDQyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC44LjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICB0ZW1wbGF0ZTxj
bGFzcyBfSW5wdXRJdGVyYXRvcj4KICAgICAgICBiYXNpY19zdHJpbmcmCiAgICAgICAgYXBwZW5k
KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCkKICAgICAgICB7
IHJldHVybiB0aGlzLT5yZXBsYWNlKF9NX2llbmQoKSwgX01faWVuZCgpLCBfX2ZpcnN0LCBfX2xh
c3QpOyB9CgoKCgoKICAgICAgdm9pZAogICAgICBwdXNoX2JhY2soX0NoYXJUIF9fYykKICAgICAg
ewogY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0gMSArIHRoaXMtPnNpemUoKTsKIGlmIChfX2xlbiA+
IHRoaXMtPmNhcGFjaXR5KCkgfHwgX01fcmVwKCktPl9NX2lzX3NoYXJlZCgpKQogICB0aGlzLT5y
ZXNlcnZlKF9fbGVuKTsKIHRyYWl0c190eXBlOjphc3NpZ24oX01fZGF0YSgpW3RoaXMtPnNpemUo
KV0sIF9fYyk7CiBfTV9yZXAoKS0+X01fc2V0X2xlbmd0aF9hbmRfc2hhcmFibGUoX19sZW4pOwog
ICAgICB9CgoKCgoKCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgYXNzaWduKGNvbnN0IGJhc2lj
X3N0cmluZyYgX19zdHIpOwojIDEwNzggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGJhc2ljX3N0cmlu
ZyYKICAgICAgYXNzaWduKGJhc2ljX3N0cmluZyYmIF9fc3RyKQogICAgICB7CiB0aGlzLT5zd2Fw
KF9fc3RyKTsKIHJldHVybiAqdGhpczsKICAgICAgfQojIDEwOTkgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAg
ICAgIGJhc2ljX3N0cmluZyYKICAgICAgYXNzaWduKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIs
IHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbikKICAgICAgeyByZXR1cm4gdGhpcy0+YXNz
aWduKF9fc3RyLl9NX2RhdGEoKQogICAgICAgKyBfX3N0ci5fTV9jaGVjayhfX3BvcywgImJhc2lj
X3N0cmluZzo6YXNzaWduIiksCiAgICAgICBfX3N0ci5fTV9saW1pdChfX3BvcywgX19uKSk7IH0K
IyAxMTE1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEv
Yml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGFzc2lnbihj
b25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fbik7CiMgMTEyNyAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMK
ICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBhc3NpZ24oY29uc3QgX0NoYXJUKiBfX3MpCiAgICAg
IHsKIDsKIHJldHVybiB0aGlzLT5hc3NpZ24oX19zLCB0cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcykp
OwogICAgICB9CiMgMTE0MyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgYmFzaWNfc3RyaW5nJgogICAg
ICBhc3NpZ24oc2l6ZV90eXBlIF9fbiwgX0NoYXJUIF9fYykKICAgICAgeyByZXR1cm4gX01fcmVw
bGFjZV9hdXgoc2l6ZV90eXBlKDApLCB0aGlzLT5zaXplKCksIF9fbiwgX19jKTsgfQojIDExNTUg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2Jh
c2ljX3N0cmluZy5oIiAzCiAgICAgIHRlbXBsYXRlPGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgogICAg
ICAgIGJhc2ljX3N0cmluZyYKICAgICAgICBhc3NpZ24oX0lucHV0SXRlcmF0b3IgX19maXJzdCwg
X0lucHV0SXRlcmF0b3IgX19sYXN0KQogICAgICAgIHsgcmV0dXJuIHRoaXMtPnJlcGxhY2UoX01f
aWJlZ2luKCksIF9NX2llbmQoKSwgX19maXJzdCwgX19sYXN0KTsgfQoKCgoKCgoKICAgICAgYmFz
aWNfc3RyaW5nJgogICAgICBhc3NpZ24oaW5pdGlhbGl6ZXJfbGlzdDxfQ2hhclQ+IF9fbCkKICAg
ICAgeyByZXR1cm4gdGhpcy0+YXNzaWduKF9fbC5iZWdpbigpLCBfX2wuc2l6ZSgpKTsgfQojIDEx
ODQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRz
L2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHZvaWQKICAgICAgaW5zZXJ0KGl0ZXJhdG9yIF9fcCwg
c2l6ZV90eXBlIF9fbiwgX0NoYXJUIF9fYykKICAgICAgeyB0aGlzLT5yZXBsYWNlKF9fcCwgX19w
LCBfX24sIF9fYyk7IH0KIyAxMjAwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC44LjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICB0ZW1wbGF0ZTxjbGFz
cyBfSW5wdXRJdGVyYXRvcj4KICAgICAgICB2b2lkCiAgICAgICAgaW5zZXJ0KGl0ZXJhdG9yIF9f
cCwgX0lucHV0SXRlcmF0b3IgX19iZWcsIF9JbnB1dEl0ZXJhdG9yIF9fZW5kKQogICAgICAgIHsg
dGhpcy0+cmVwbGFjZShfX3AsIF9fcCwgX19iZWcsIF9fZW5kKTsgfQojIDEyMTIgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2Jhc2ljX3N0cmlu
Zy5oIiAzCiAgICAgIHZvaWQKICAgICAgaW5zZXJ0KGl0ZXJhdG9yIF9fcCwgaW5pdGlhbGl6ZXJf
bGlzdDxfQ2hhclQ+IF9fbCkKICAgICAgewogOwogdGhpcy0+aW5zZXJ0KF9fcCAtIF9NX2liZWdp
bigpLCBfX2wuYmVnaW4oKSwgX19sLnNpemUoKSk7CiAgICAgIH0KIyAxMjMyICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9iYXNpY19zdHJpbmcu
aCIgMwogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGluc2VydChzaXplX3R5cGUgX19wb3MxLCBj
b25zdCBiYXNpY19zdHJpbmcmIF9fc3RyKQogICAgICB7IHJldHVybiB0aGlzLT5pbnNlcnQoX19w
b3MxLCBfX3N0ciwgc2l6ZV90eXBlKDApLCBfX3N0ci5zaXplKCkpOyB9CiMgMTI1NCAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNfc3Ry
aW5nLmgiIDMKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBpbnNlcnQoc2l6ZV90eXBlIF9fcG9z
MSwgY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwKICAgICAgc2l6ZV90eXBlIF9fcG9zMiwgc2l6
ZV90eXBlIF9fbikKICAgICAgeyByZXR1cm4gdGhpcy0+aW5zZXJ0KF9fcG9zMSwgX19zdHIuX01f
ZGF0YSgpCiAgICAgICArIF9fc3RyLl9NX2NoZWNrKF9fcG9zMiwgImJhc2ljX3N0cmluZzo6aW5z
ZXJ0IiksCiAgICAgICBfX3N0ci5fTV9saW1pdChfX3BvczIsIF9fbikpOyB9CiMgMTI3NyAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44
LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNf
c3RyaW5nLmgiIDMKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBpbnNlcnQoc2l6ZV90eXBlIF9f
cG9zLCBjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fbik7CiMgMTI5NSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5n
LmgiIDMKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBpbnNlcnQoc2l6ZV90eXBlIF9fcG9zLCBj
b25zdCBfQ2hhclQqIF9fcykKICAgICAgewogOwogcmV0dXJuIHRoaXMtPmluc2VydChfX3Bvcywg
X19zLCB0cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcykpOwogICAgICB9CiMgMTMxOCAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5n
LmgiIDMKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBpbnNlcnQoc2l6ZV90eXBlIF9fcG9zLCBz
aXplX3R5cGUgX19uLCBfQ2hhclQgX19jKQogICAgICB7IHJldHVybiBfTV9yZXBsYWNlX2F1eChf
TV9jaGVjayhfX3BvcywgImJhc2ljX3N0cmluZzo6aW5zZXJ0IiksCiAgICAgICAgIHNpemVfdHlw
ZSgwKSwgX19uLCBfX2MpOyB9CiMgMTMzNiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgaXRlcmF0b3IK
ICAgICAgaW5zZXJ0KGl0ZXJhdG9yIF9fcCwgX0NoYXJUIF9fYykKICAgICAgewogOwogY29uc3Qg
c2l6ZV90eXBlIF9fcG9zID0gX19wIC0gX01faWJlZ2luKCk7CiBfTV9yZXBsYWNlX2F1eChfX3Bv
cywgc2l6ZV90eXBlKDApLCBzaXplX3R5cGUoMSksIF9fYyk7CiBfTV9yZXAoKS0+X01fc2V0X2xl
YWtlZCgpOwogcmV0dXJuIGl0ZXJhdG9yKF9NX2RhdGEoKSArIF9fcG9zKTsKICAgICAgfQojIDEz
NjEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRz
L2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgZXJhc2Uoc2l6ZV90
eXBlIF9fcG9zID0gMCwgc2l6ZV90eXBlIF9fbiA9IG5wb3MpCiAgICAgIHsKIF9NX211dGF0ZShf
TV9jaGVjayhfX3BvcywgImJhc2ljX3N0cmluZzo6ZXJhc2UiKSwKICAgIF9NX2xpbWl0KF9fcG9z
LCBfX24pLCBzaXplX3R5cGUoMCkpOwogcmV0dXJuICp0aGlzOwogICAgICB9CiMgMTM3NyAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44
LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNf
c3RyaW5nLmgiIDMKICAgICAgaXRlcmF0b3IKICAgICAgZXJhc2UoaXRlcmF0b3IgX19wb3NpdGlv
bikKICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKIGNvbnN0IHNpemVf
dHlwZSBfX3BvcyA9IF9fcG9zaXRpb24gLSBfTV9pYmVnaW4oKTsKIF9NX211dGF0ZShfX3Bvcywg
c2l6ZV90eXBlKDEpLCBzaXplX3R5cGUoMCkpOwogX01fcmVwKCktPl9NX3NldF9sZWFrZWQoKTsK
IHJldHVybiBpdGVyYXRvcihfTV9kYXRhKCkgKyBfX3Bvcyk7CiAgICAgIH0KIyAxMzk3ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljgu
MS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9iYXNpY19z
dHJpbmcuaCIgMwogICAgICBpdGVyYXRvcgogICAgICBlcmFzZShpdGVyYXRvciBfX2ZpcnN0LCBp
dGVyYXRvciBfX2xhc3QpOwoKCgoKCgoKICAgICAgdm9pZAogICAgICBwb3BfYmFjaygpCiAgICAg
IHsgZXJhc2Uoc2l6ZSgpLTEsIDEpOyB9CiMgMTQyOCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgYmFz
aWNfc3RyaW5nJgogICAgICByZXBsYWNlKHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbiwg
Y29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0cikKICAgICAgeyByZXR1cm4gdGhpcy0+cmVwbGFjZShf
X3BvcywgX19uLCBfX3N0ci5fTV9kYXRhKCksIF9fc3RyLnNpemUoKSk7IH0KIyAxNDUwICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljgu
MS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9iYXNpY19z
dHJpbmcuaCIgMwogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIHJlcGxhY2Uoc2l6ZV90eXBlIF9f
cG9zMSwgc2l6ZV90eXBlIF9fbjEsIGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIsCiAgICAgICBz
aXplX3R5cGUgX19wb3MyLCBzaXplX3R5cGUgX19uMikKICAgICAgeyByZXR1cm4gdGhpcy0+cmVw
bGFjZShfX3BvczEsIF9fbjEsIF9fc3RyLl9NX2RhdGEoKQogICAgICAgICsgX19zdHIuX01fY2hl
Y2soX19wb3MyLCAiYmFzaWNfc3RyaW5nOjpyZXBsYWNlIiksCiAgICAgICAgX19zdHIuX01fbGlt
aXQoX19wb3MyLCBfX24yKSk7IH0KIyAxNDc1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBiYXNpY19z
dHJpbmcmCiAgICAgIHJlcGxhY2Uoc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uMSwgY29u
c3QgX0NoYXJUKiBfX3MsCiAgICAgICBzaXplX3R5cGUgX19uMik7CiMgMTQ5NSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5n
LmgiIDMKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICByZXBsYWNlKHNpemVfdHlwZSBfX3Bvcywg
c2l6ZV90eXBlIF9fbjEsIGNvbnN0IF9DaGFyVCogX19zKQogICAgICB7CiA7CiByZXR1cm4gdGhp
cy0+cmVwbGFjZShfX3BvcywgX19uMSwgX19zLCB0cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcykpOwog
ICAgICB9CiMgMTUxOSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBy
ZXBsYWNlKHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbjEsIHNpemVfdHlwZSBfX24yLCBf
Q2hhclQgX19jKQogICAgICB7IHJldHVybiBfTV9yZXBsYWNlX2F1eChfTV9jaGVjayhfX3Bvcywg
ImJhc2ljX3N0cmluZzo6cmVwbGFjZSIpLAogICAgICAgICBfTV9saW1pdChfX3BvcywgX19uMSks
IF9fbjIsIF9fYyk7IH0KIyAxNTM3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC44LjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBiYXNpY19zdHJpbmcm
CiAgICAgIHJlcGxhY2UoaXRlcmF0b3IgX19pMSwgaXRlcmF0b3IgX19pMiwgY29uc3QgYmFzaWNf
c3RyaW5nJiBfX3N0cikKICAgICAgeyByZXR1cm4gdGhpcy0+cmVwbGFjZShfX2kxLCBfX2kyLCBf
X3N0ci5fTV9kYXRhKCksIF9fc3RyLnNpemUoKSk7IH0KIyAxNTU2ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwog
ICAgICBiYXNpY19zdHJpbmcmCiAgICAgIHJlcGxhY2UoaXRlcmF0b3IgX19pMSwgaXRlcmF0b3Ig
X19pMiwgY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX24pCiAgICAgIHsKCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgOwogcmV0dXJuIHRoaXMtPnJlcGxhY2UoX19pMSAtIF9NX2liZWdp
bigpLCBfX2kyIC0gX19pMSwgX19zLCBfX24pOwogICAgICB9CiMgMTU3NyAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5nLmgi
IDMKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICByZXBsYWNlKGl0ZXJhdG9yIF9faTEsIGl0ZXJh
dG9yIF9faTIsIGNvbnN0IF9DaGFyVCogX19zKQogICAgICB7CiA7CiByZXR1cm4gdGhpcy0+cmVw
bGFjZShfX2kxLCBfX2kyLCBfX3MsIHRyYWl0c190eXBlOjpsZW5ndGgoX19zKSk7CiAgICAgIH0K
IyAxNTk4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEv
Yml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIHJlcGxhY2Uo
aXRlcmF0b3IgX19pMSwgaXRlcmF0b3IgX19pMiwgc2l6ZV90eXBlIF9fbiwgX0NoYXJUIF9fYykK
ICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiByZXR1cm4gX01fcmVwbGFjZV9h
dXgoX19pMSAtIF9NX2liZWdpbigpLCBfX2kyIC0gX19pMSwgX19uLCBfX2MpOwogICAgICB9CiMg
MTYyMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2Jp
dHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgdGVtcGxhdGU8Y2xhc3MgX0lucHV0SXRlcmF0b3I+
CiAgICAgICAgYmFzaWNfc3RyaW5nJgogICAgICAgIHJlcGxhY2UoaXRlcmF0b3IgX19pMSwgaXRl
cmF0b3IgX19pMiwKICBfSW5wdXRJdGVyYXRvciBfX2sxLCBfSW5wdXRJdGVyYXRvciBfX2syKQog
ICAgICAgIHsKICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgOwogICB0eXBlZGVm
IHR5cGVuYW1lIHN0ZDo6X19pc19pbnRlZ2VyPF9JbnB1dEl0ZXJhdG9yPjo6X190eXBlIF9JbnRl
Z3JhbDsKICAgcmV0dXJuIF9NX3JlcGxhY2VfZGlzcGF0Y2goX19pMSwgX19pMiwgX19rMSwgX19r
MiwgX0ludGVncmFsKCkpOwogfQoKCgogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIHJlcGxhY2Uo
aXRlcmF0b3IgX19pMSwgaXRlcmF0b3IgX19pMiwgX0NoYXJUKiBfX2sxLCBfQ2hhclQqIF9fazIp
CiAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogOwogcmV0dXJuIHRoaXMtPnJl
cGxhY2UoX19pMSAtIF9NX2liZWdpbigpLCBfX2kyIC0gX19pMSwKICAgICAgICBfX2sxLCBfX2sy
IC0gX19rMSk7CiAgICAgIH0KCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgcmVwbGFjZShpdGVy
YXRvciBfX2kxLCBpdGVyYXRvciBfX2kyLAogICAgICAgY29uc3QgX0NoYXJUKiBfX2sxLCBjb25z
dCBfQ2hhclQqIF9fazIpCiAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogOwog
cmV0dXJuIHRoaXMtPnJlcGxhY2UoX19pMSAtIF9NX2liZWdpbigpLCBfX2kyIC0gX19pMSwKICAg
ICAgICBfX2sxLCBfX2syIC0gX19rMSk7CiAgICAgIH0KCiAgICAgIGJhc2ljX3N0cmluZyYKICAg
ICAgcmVwbGFjZShpdGVyYXRvciBfX2kxLCBpdGVyYXRvciBfX2kyLCBpdGVyYXRvciBfX2sxLCBp
dGVyYXRvciBfX2syKQogICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgICAgIDsKIDsKIHJl
dHVybiB0aGlzLT5yZXBsYWNlKF9faTEgLSBfTV9pYmVnaW4oKSwgX19pMiAtIF9faTEsCiAgICAg
ICAgX19rMS5iYXNlKCksIF9fazIgLSBfX2sxKTsKICAgICAgfQoKICAgICAgYmFzaWNfc3RyaW5n
JgogICAgICByZXBsYWNlKGl0ZXJhdG9yIF9faTEsIGl0ZXJhdG9yIF9faTIsCiAgICAgICBjb25z
dF9pdGVyYXRvciBfX2sxLCBjb25zdF9pdGVyYXRvciBfX2syKQogICAgICB7CgogICAgICAgICAg
ICAgICAgICAgICAgICAgIDsKIDsKIHJldHVybiB0aGlzLT5yZXBsYWNlKF9faTEgLSBfTV9pYmVn
aW4oKSwgX19pMiAtIF9faTEsCiAgICAgICAgX19rMS5iYXNlKCksIF9fazIgLSBfX2sxKTsKICAg
ICAgfQojIDE2OTIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjguMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGJhc2ljX3N0cmluZyYgcmVwbGFjZShp
dGVyYXRvciBfX2kxLCBpdGVyYXRvciBfX2kyLAogICAgICAgaW5pdGlhbGl6ZXJfbGlzdDxfQ2hh
clQ+IF9fbCkKICAgICAgeyByZXR1cm4gdGhpcy0+cmVwbGFjZShfX2kxLCBfX2kyLCBfX2wuYmVn
aW4oKSwgX19sLmVuZCgpKTsgfQoKCiAgICBwcml2YXRlOgogICAgICB0ZW1wbGF0ZTxjbGFzcyBf
SW50ZWdlcj4KIGJhc2ljX3N0cmluZyYKIF9NX3JlcGxhY2VfZGlzcGF0Y2goaXRlcmF0b3IgX19p
MSwgaXRlcmF0b3IgX19pMiwgX0ludGVnZXIgX19uLAogICAgICAgX0ludGVnZXIgX192YWwsIF9f
dHJ1ZV90eXBlKQogICAgICAgIHsgcmV0dXJuIF9NX3JlcGxhY2VfYXV4KF9faTEgLSBfTV9pYmVn
aW4oKSwgX19pMiAtIF9faTEsIF9fbiwgX192YWwpOyB9CgogICAgICB0ZW1wbGF0ZTxjbGFzcyBf
SW5wdXRJdGVyYXRvcj4KIGJhc2ljX3N0cmluZyYKIF9NX3JlcGxhY2VfZGlzcGF0Y2goaXRlcmF0
b3IgX19pMSwgaXRlcmF0b3IgX19pMiwgX0lucHV0SXRlcmF0b3IgX19rMSwKICAgICAgIF9JbnB1
dEl0ZXJhdG9yIF9fazIsIF9fZmFsc2VfdHlwZSk7CgogICAgICBiYXNpY19zdHJpbmcmCiAgICAg
IF9NX3JlcGxhY2VfYXV4KHNpemVfdHlwZSBfX3BvczEsIHNpemVfdHlwZSBfX24xLCBzaXplX3R5
cGUgX19uMiwKICAgICAgIF9DaGFyVCBfX2MpOwoKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBf
TV9yZXBsYWNlX3NhZmUoc2l6ZV90eXBlIF9fcG9zMSwgc2l6ZV90eXBlIF9fbjEsIGNvbnN0IF9D
aGFyVCogX19zLAogICAgICAgIHNpemVfdHlwZSBfX24yKTsKCgoKICAgICAgdGVtcGxhdGU8Y2xh
c3MgX0luSXRlcmF0b3I+CiAgICAgICAgc3RhdGljIF9DaGFyVCoKICAgICAgICBfU19jb25zdHJ1
Y3RfYXV4KF9Jbkl0ZXJhdG9yIF9fYmVnLCBfSW5JdGVyYXRvciBfX2VuZCwKICAgIGNvbnN0IF9B
bGxvYyYgX19hLCBfX2ZhbHNlX3R5cGUpCiB7CiAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfSW5JdGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5IF9UYWc7CiAgICAg
ICAgICByZXR1cm4gX1NfY29uc3RydWN0KF9fYmVnLCBfX2VuZCwgX19hLCBfVGFnKCkpOwogfQoK
CgogICAgICB0ZW1wbGF0ZTxjbGFzcyBfSW50ZWdlcj4KICAgICAgICBzdGF0aWMgX0NoYXJUKgog
ICAgICAgIF9TX2NvbnN0cnVjdF9hdXgoX0ludGVnZXIgX19iZWcsIF9JbnRlZ2VyIF9fZW5kLAog
ICAgY29uc3QgX0FsbG9jJiBfX2EsIF9fdHJ1ZV90eXBlKQogICAgICAgIHsgcmV0dXJuIF9TX2Nv
bnN0cnVjdF9hdXhfMihzdGF0aWNfY2FzdDxzaXplX3R5cGU+KF9fYmVnKSwKICAgICAgICBfX2Vu
ZCwgX19hKTsgfQoKICAgICAgc3RhdGljIF9DaGFyVCoKICAgICAgX1NfY29uc3RydWN0X2F1eF8y
KHNpemVfdHlwZSBfX3JlcSwgX0NoYXJUIF9fYywgY29uc3QgX0FsbG9jJiBfX2EpCiAgICAgIHsg
cmV0dXJuIF9TX2NvbnN0cnVjdChfX3JlcSwgX19jLCBfX2EpOyB9CgogICAgICB0ZW1wbGF0ZTxj
bGFzcyBfSW5JdGVyYXRvcj4KICAgICAgICBzdGF0aWMgX0NoYXJUKgogICAgICAgIF9TX2NvbnN0
cnVjdChfSW5JdGVyYXRvciBfX2JlZywgX0luSXRlcmF0b3IgX19lbmQsIGNvbnN0IF9BbGxvYyYg
X19hKQogewogICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6X19pc19pbnRlZ2VyPF9Jbkl0ZXJhdG9y
Pjo6X190eXBlIF9JbnRlZ3JhbDsKICAgcmV0dXJuIF9TX2NvbnN0cnVjdF9hdXgoX19iZWcsIF9f
ZW5kLCBfX2EsIF9JbnRlZ3JhbCgpKTsKICAgICAgICB9CgoKICAgICAgdGVtcGxhdGU8Y2xhc3Mg
X0luSXRlcmF0b3I+CiAgICAgICAgc3RhdGljIF9DaGFyVCoKICAgICAgICAgX1NfY29uc3RydWN0
KF9Jbkl0ZXJhdG9yIF9fYmVnLCBfSW5JdGVyYXRvciBfX2VuZCwgY29uc3QgX0FsbG9jJiBfX2Es
CiAgICAgICAgaW5wdXRfaXRlcmF0b3JfdGFnKTsKCgoKICAgICAgdGVtcGxhdGU8Y2xhc3MgX0Z3
ZEl0ZXJhdG9yPgogICAgICAgIHN0YXRpYyBfQ2hhclQqCiAgICAgICAgX1NfY29uc3RydWN0KF9G
d2RJdGVyYXRvciBfX2JlZywgX0Z3ZEl0ZXJhdG9yIF9fZW5kLCBjb25zdCBfQWxsb2MmIF9fYSwK
ICAgICAgIGZvcndhcmRfaXRlcmF0b3JfdGFnKTsKCiAgICAgIHN0YXRpYyBfQ2hhclQqCiAgICAg
IF9TX2NvbnN0cnVjdChzaXplX3R5cGUgX19yZXEsIF9DaGFyVCBfX2MsIGNvbnN0IF9BbGxvYyYg
X19hKTsKCiAgICBwdWJsaWM6CiMgMTc3OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgc2l6ZV90eXBl
CiAgICAgIGNvcHkoX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX24sIHNpemVfdHlwZSBfX3BvcyA9
IDApIGNvbnN0OwojIDE3ODkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjguMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHZvaWQKICAgICAgc3dhcChi
YXNpY19zdHJpbmcmIF9fcyk7CiMgMTc5OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgY29uc3QgX0No
YXJUKgogICAgICBjX3N0cigpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9NX2RhdGEo
KTsgfQoKCgoKCgoKICAgICAgY29uc3QgX0NoYXJUKgogICAgICBkYXRhKCkgY29uc3Qgbm9leGNl
cHQKICAgICAgeyByZXR1cm4gX01fZGF0YSgpOyB9CgoKCgogICAgICBhbGxvY2F0b3JfdHlwZQog
ICAgICBnZXRfYWxsb2NhdG9yKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX01fZGF0
YXBsdXM7IH0KIyAxODMyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC44LjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5cGUKICAgICAgZmlu
ZChjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uKSBjb25z
dDsKIyAxODQ1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44
LjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5cGUKICAgICAgZmluZChjb25z
dCBiYXNpY19zdHJpbmcmIF9fc3RyLCBzaXplX3R5cGUgX19wb3MgPSAwKSBjb25zdAogbm9leGNl
cHQKICAgICAgeyByZXR1cm4gdGhpcy0+ZmluZChfX3N0ci5kYXRhKCksIF9fcG9zLCBfX3N0ci5z
aXplKCkpOyB9CiMgMTg2MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgc2l6ZV90eXBlCiAgICAgIGZp
bmQoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX3BvcyA9IDApIGNvbnN0CiAgICAgIHsK
IDsKIHJldHVybiB0aGlzLT5maW5kKF9fcywgX19wb3MsIHRyYWl0c190eXBlOjpsZW5ndGgoX19z
KSk7CiAgICAgIH0KIyAxODc3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC44LjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5cGUKICAgICAg
ZmluZChfQ2hhclQgX19jLCBzaXplX3R5cGUgX19wb3MgPSAwKSBjb25zdCBub2V4Y2VwdDsKIyAx
ODkwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0
cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5cGUKICAgICAgcmZpbmQoY29uc3QgYmFz
aWNfc3RyaW5nJiBfX3N0ciwgc2l6ZV90eXBlIF9fcG9zID0gbnBvcykgY29uc3QKIG5vZXhjZXB0
CiAgICAgIHsgcmV0dXJuIHRoaXMtPnJmaW5kKF9fc3RyLmRhdGEoKSwgX19wb3MsIF9fc3RyLnNp
emUoKSk7IH0KIyAxOTA3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC44LjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5cGUKICAgICAgcmZp
bmQoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbikgY29u
c3Q7CiMgMTkyMCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OC4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgc2l6ZV90eXBlCiAgICAgIHJmaW5kKGNv
bnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19wb3MgPSBucG9zKSBjb25zdAogICAgICB7CiA7
CiByZXR1cm4gdGhpcy0+cmZpbmQoX19zLCBfX3BvcywgdHJhaXRzX3R5cGU6Omxlbmd0aChfX3Mp
KTsKICAgICAgfQojIDE5MzcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjguMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHNpemVfdHlwZQogICAgICBy
ZmluZChfQ2hhclQgX19jLCBzaXplX3R5cGUgX19wb3MgPSBucG9zKSBjb25zdCBub2V4Y2VwdDsK
IyAxOTUxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEv
Yml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5cGUKICAgICAgZmluZF9maXJzdF9v
Zihjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyLCBzaXplX3R5cGUgX19wb3MgPSAwKSBjb25zdAog
bm9leGNlcHQKICAgICAgeyByZXR1cm4gdGhpcy0+ZmluZF9maXJzdF9vZihfX3N0ci5kYXRhKCks
IF9fcG9zLCBfX3N0ci5zaXplKCkpOyB9CiMgMTk2OCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgc2l6
ZV90eXBlCiAgICAgIGZpbmRfZmlyc3Rfb2YoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBf
X3Bvcywgc2l6ZV90eXBlIF9fbikgY29uc3Q7CiMgMTk4MSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAg
c2l6ZV90eXBlCiAgICAgIGZpbmRfZmlyc3Rfb2YoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlw
ZSBfX3BvcyA9IDApIGNvbnN0CiAgICAgIHsKIDsKIHJldHVybiB0aGlzLT5maW5kX2ZpcnN0X29m
KF9fcywgX19wb3MsIHRyYWl0c190eXBlOjpsZW5ndGgoX19zKSk7CiAgICAgIH0KIyAyMDAwICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9iYXNp
Y19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5cGUKICAgICAgZmluZF9maXJzdF9vZihfQ2hhclQg
X19jLCBzaXplX3R5cGUgX19wb3MgPSAwKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiB0
aGlzLT5maW5kKF9fYywgX19wb3MpOyB9CiMgMjAxNSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgc2l6
ZV90eXBlCiAgICAgIGZpbmRfbGFzdF9vZihjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyLCBzaXpl
X3R5cGUgX19wb3MgPSBucG9zKSBjb25zdAogbm9leGNlcHQKICAgICAgeyByZXR1cm4gdGhpcy0+
ZmluZF9sYXN0X29mKF9fc3RyLmRhdGEoKSwgX19wb3MsIF9fc3RyLnNpemUoKSk7IH0KIyAyMDMy
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9i
YXNpY19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5cGUKICAgICAgZmluZF9sYXN0X29mKGNvbnN0
IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24pIGNvbnN0OwojIDIw
NDUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRz
L2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHNpemVfdHlwZQogICAgICBmaW5kX2xhc3Rfb2YoY29u
c3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX3BvcyA9IG5wb3MpIGNvbnN0CiAgICAgIHsKIDsK
IHJldHVybiB0aGlzLT5maW5kX2xhc3Rfb2YoX19zLCBfX3BvcywgdHJhaXRzX3R5cGU6Omxlbmd0
aChfX3MpKTsKICAgICAgfQojIDIwNjQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHNpemVfdHlwZQog
ICAgICBmaW5kX2xhc3Rfb2YoX0NoYXJUIF9fYywgc2l6ZV90eXBlIF9fcG9zID0gbnBvcykgY29u
c3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gdGhpcy0+cmZpbmQoX19jLCBfX3Bvcyk7IH0KIyAy
MDc4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0
cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBzaXplX3R5cGUKICAgICAgZmluZF9maXJzdF9ub3Rf
b2YoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwgc2l6ZV90eXBlIF9fcG9zID0gMCkgY29uc3QK
IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmZpbmRfZmlyc3Rfbm90X29mKF9fc3RyLmRh
dGEoKSwgX19wb3MsIF9fc3RyLnNpemUoKSk7IH0KIyAyMDk1ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAg
ICBzaXplX3R5cGUKICAgICAgZmluZF9maXJzdF9ub3Rfb2YoY29uc3QgX0NoYXJUKiBfX3MsIHNp
emVfdHlwZSBfX3BvcywKICAgc2l6ZV90eXBlIF9fbikgY29uc3Q7CiMgMjEwOSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5n
LmgiIDMKICAgICAgc2l6ZV90eXBlCiAgICAgIGZpbmRfZmlyc3Rfbm90X29mKGNvbnN0IF9DaGFy
VCogX19zLCBzaXplX3R5cGUgX19wb3MgPSAwKSBjb25zdAogICAgICB7CiA7CiByZXR1cm4gdGhp
cy0+ZmluZF9maXJzdF9ub3Rfb2YoX19zLCBfX3BvcywgdHJhaXRzX3R5cGU6Omxlbmd0aChfX3Mp
KTsKICAgICAgfQojIDIxMjYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjguMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHNpemVfdHlwZQogICAgICBm
aW5kX2ZpcnN0X25vdF9vZihfQ2hhclQgX19jLCBzaXplX3R5cGUgX19wb3MgPSAwKSBjb25zdAog
bm9leGNlcHQ7CiMgMjE0MSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgc2l6ZV90eXBlCiAgICAgIGZp
bmRfbGFzdF9ub3Rfb2YoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwgc2l6ZV90eXBlIF9fcG9z
ID0gbnBvcykgY29uc3QKIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmZpbmRfbGFzdF9u
b3Rfb2YoX19zdHIuZGF0YSgpLCBfX3BvcywgX19zdHIuc2l6ZSgpKTsgfQojIDIxNTggIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4x
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2Jhc2ljX3N0
cmluZy5oIiAzCiAgICAgIHNpemVfdHlwZQogICAgICBmaW5kX2xhc3Rfbm90X29mKGNvbnN0IF9D
aGFyVCogX19zLCBzaXplX3R5cGUgX19wb3MsCiAgICAgICAgIHNpemVfdHlwZSBfX24pIGNvbnN0
OwojIDIxNzIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljgu
MS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHNpemVfdHlwZQogICAgICBmaW5kX2xhc3Rf
bm90X29mKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19wb3MgPSBucG9zKSBjb25zdAog
ICAgICB7CiA7CiByZXR1cm4gdGhpcy0+ZmluZF9sYXN0X25vdF9vZihfX3MsIF9fcG9zLCB0cmFp
dHNfdHlwZTo6bGVuZ3RoKF9fcykpOwogICAgICB9CiMgMjE4OSAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAg
ICAgc2l6ZV90eXBlCiAgICAgIGZpbmRfbGFzdF9ub3Rfb2YoX0NoYXJUIF9fYywgc2l6ZV90eXBl
IF9fcG9zID0gbnBvcykgY29uc3QKIG5vZXhjZXB0OwojIDIyMDUgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAg
ICAgIGJhc2ljX3N0cmluZwogICAgICBzdWJzdHIoc2l6ZV90eXBlIF9fcG9zID0gMCwgc2l6ZV90
eXBlIF9fbiA9IG5wb3MpIGNvbnN0CiAgICAgIHsgcmV0dXJuIGJhc2ljX3N0cmluZygqdGhpcywK
ICAgICAgIF9NX2NoZWNrKF9fcG9zLCAiYmFzaWNfc3RyaW5nOjpzdWJzdHIiKSwgX19uKTsgfQoj
IDIyMjQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9i
aXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGludAogICAgICBjb21wYXJlKGNvbnN0IGJhc2lj
X3N0cmluZyYgX19zdHIpIGNvbnN0CiAgICAgIHsKIGNvbnN0IHNpemVfdHlwZSBfX3NpemUgPSB0
aGlzLT5zaXplKCk7CiBjb25zdCBzaXplX3R5cGUgX19vc2l6ZSA9IF9fc3RyLnNpemUoKTsKIGNv
bnN0IHNpemVfdHlwZSBfX2xlbiA9IHN0ZDo6bWluKF9fc2l6ZSwgX19vc2l6ZSk7CgogaW50IF9f
ciA9IHRyYWl0c190eXBlOjpjb21wYXJlKF9NX2RhdGEoKSwgX19zdHIuZGF0YSgpLCBfX2xlbik7
CiBpZiAoIV9fcikKICAgX19yID0gX1NfY29tcGFyZShfX3NpemUsIF9fb3NpemUpOwogcmV0dXJu
IF9fcjsKICAgICAgfQojIDIyNTYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjguMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGludAogICAgICBjb21w
YXJlKHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbiwgY29uc3QgYmFzaWNfc3RyaW5nJiBf
X3N0cikgY29uc3Q7CiMgMjI4MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgaW50CiAgICAgIGNvbXBh
cmUoc2l6ZV90eXBlIF9fcG9zMSwgc2l6ZV90eXBlIF9fbjEsIGNvbnN0IGJhc2ljX3N0cmluZyYg
X19zdHIsCiAgICAgICBzaXplX3R5cGUgX19wb3MyLCBzaXplX3R5cGUgX19uMikgY29uc3Q7CiMg
MjMwMCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2Jp
dHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAgaW50CiAgICAgIGNvbXBhcmUoY29uc3QgX0NoYXJU
KiBfX3MpIGNvbnN0OwojIDIzMjQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjguMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIGludAogICAgICBjb21w
YXJlKHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbjEsIGNvbnN0IF9DaGFyVCogX19zKSBj
b25zdDsKIyAyMzUxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC44LjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgICBpbnQKICAgICAgY29tcGFyZShzaXpl
X3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24xLCBjb25zdCBfQ2hhclQqIF9fcywKICAgICAgIHNp
emVfdHlwZSBfX24yKSBjb25zdDsKICB9OwojIDIzNjMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAg
ICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+CiAgICBvcGVyYXRvcisoY29u
c3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMsCiAgICAgICBj
b25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3JocykKICAgIHsK
ICAgICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiBfX3N0cihfX2xocyk7
CiAgICAgIF9fc3RyLmFwcGVuZChfX3Jocyk7CiAgICAgIHJldHVybiBfX3N0cjsKICAgIH0KCgoK
CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFt
ZSBfQWxsb2M+CiAgICBiYXNpY19zdHJpbmc8X0NoYXJULF9UcmFpdHMsX0FsbG9jPgogICAgb3Bl
cmF0b3IrKGNvbnN0IF9DaGFyVCogX19saHMsCiAgICAgICBjb25zdCBiYXNpY19zdHJpbmc8X0No
YXJULF9UcmFpdHMsX0FsbG9jPiYgX19yaHMpOwoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGJhc2ljX3N0cmlu
ZzxfQ2hhclQsX1RyYWl0cyxfQWxsb2M+CiAgICBvcGVyYXRvcisoX0NoYXJUIF9fbGhzLCBjb25z
dCBiYXNpY19zdHJpbmc8X0NoYXJULF9UcmFpdHMsX0FsbG9jPiYgX19yaHMpOwoKCgoKCgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxv
Yz4KICAgIGlubGluZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+CiAgICBv
cGVyYXRvcisoY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19s
aHMsCiAgICAgIGNvbnN0IF9DaGFyVCogX19yaHMpCiAgICB7CiAgICAgIGJhc2ljX3N0cmluZzxf
Q2hhclQsIF9UcmFpdHMsIF9BbGxvYz4gX19zdHIoX19saHMpOwogICAgICBfX3N0ci5hcHBlbmQo
X19yaHMpOwogICAgICByZXR1cm4gX19zdHI7CiAgICB9CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5l
IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4KICAgIG9wZXJhdG9yKyhjb25z
dCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX2xocywgX0NoYXJUIF9f
cmhzKQogICAgewogICAgICB0eXBlZGVmIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9B
bGxvYz4gX19zdHJpbmdfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX3N0cmluZ190eXBl
OjpzaXplX3R5cGUgX19zaXplX3R5cGU7CiAgICAgIF9fc3RyaW5nX3R5cGUgX19zdHIoX19saHMp
OwogICAgICBfX3N0ci5hcHBlbmQoX19zaXplX3R5cGUoMSksIF9fcmhzKTsKICAgICAgcmV0dXJu
IF9fc3RyOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJh
aXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1Ry
YWl0cywgX0FsbG9jPgogICAgb3BlcmF0b3IrKGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMs
IF9BbGxvYz4mJiBfX2xocywKICAgICAgIGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFp
dHMsIF9BbGxvYz4mIF9fcmhzKQogICAgeyByZXR1cm4gc3RkOjptb3ZlKF9fbGhzLmFwcGVuZChf
X3JocykpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywg
dHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMs
IF9BbGxvYz4KICAgIG9wZXJhdG9yKyhjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRz
LCBfQWxsb2M+JiBfX2xocywKICAgICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9B
bGxvYz4mJiBfX3JocykKICAgIHsgcmV0dXJuIHN0ZDo6bW92ZShfX3Jocy5pbnNlcnQoMCwgX19s
aHMpKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5
cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBf
QWxsb2M+CiAgICBvcGVyYXRvcisoYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9j
PiYmIF9fbGhzLAogICAgICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYm
IF9fcmhzKQogICAgewogICAgICBjb25zdCBhdXRvIF9fc2l6ZSA9IF9fbGhzLnNpemUoKSArIF9f
cmhzLnNpemUoKTsKICAgICAgY29uc3QgYm9vbCBfX2NvbmQgPSAoX19zaXplID4gX19saHMuY2Fw
YWNpdHkoKQogICAgICAmJiBfX3NpemUgPD0gX19yaHMuY2FwYWNpdHkoKSk7CiAgICAgIHJldHVy
biBfX2NvbmQgPyBzdGQ6Om1vdmUoX19yaHMuaW5zZXJ0KDAsIF9fbGhzKSkKICAgICAgICAgICAg
IDogc3RkOjptb3ZlKF9fbGhzLmFwcGVuZChfX3JocykpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGlu
ZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+CiAgICBvcGVyYXRvcisoY29u
c3QgX0NoYXJUKiBfX2xocywKICAgICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9B
bGxvYz4mJiBfX3JocykKICAgIHsgcmV0dXJuIHN0ZDo6bW92ZShfX3Jocy5pbnNlcnQoMCwgX19s
aHMpKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5
cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBf
QWxsb2M+CiAgICBvcGVyYXRvcisoX0NoYXJUIF9fbGhzLAogICAgICAgYmFzaWNfc3RyaW5nPF9D
aGFyVCwgX1RyYWl0cywgX0FsbG9jPiYmIF9fcmhzKQogICAgeyByZXR1cm4gc3RkOjptb3ZlKF9f
cmhzLmluc2VydCgwLCAxLCBfX2xocykpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJhc2ljX3N0cmlu
ZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4KICAgIG9wZXJhdG9yKyhiYXNpY19zdHJpbmc8X0No
YXJULCBfVHJhaXRzLCBfQWxsb2M+JiYgX19saHMsCiAgICAgICBjb25zdCBfQ2hhclQqIF9fcmhz
KQogICAgeyByZXR1cm4gc3RkOjptb3ZlKF9fbGhzLmFwcGVuZChfX3JocykpOyB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgog
ICAgaW5saW5lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4KICAgIG9wZXJh
dG9yKyhiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiYgX19saHMsCiAgICAg
ICBfQ2hhclQgX19yaHMpCiAgICB7IHJldHVybiBzdGQ6Om1vdmUoX19saHMuYXBwZW5kKDEsIF9f
cmhzKSk7IH0KIyAyNDg0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC44LjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJvb2wKICAg
IG9wZXJhdG9yPT0oY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYg
X19saHMsCiAgICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9j
PiYgX19yaHMpCiAgICB7IHJldHVybiBfX2xocy5jb21wYXJlKF9fcmhzKSA9PSAwOyB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZQogICAgdHlwZW5hbWUgX19nbnVfY3h4
OjpfX2VuYWJsZV9pZjxfX2lzX2NoYXI8X0NoYXJUPjo6X192YWx1ZSwgYm9vbD46Ol9fdHlwZQog
ICAgb3BlcmF0b3I9PShjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJUPiYgX19saHMsCiAgICAgICAg
Y29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVD4mIF9fcmhzKQogICAgeyByZXR1cm4gKF9fbGhzLnNp
emUoKSA9PSBfX3Jocy5zaXplKCkKICAgICAgICYmICFzdGQ6OmNoYXJfdHJhaXRzPF9DaGFyVD46
OmNvbXBhcmUoX19saHMuZGF0YSgpLCBfX3Jocy5kYXRhKCksCiAgICAgICAgICBfX2xocy5zaXpl
KCkpKTsgfQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp
dHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj09KGNvbnN0
IF9DaGFyVCogX19saHMsCiAgICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0
cywgX0FsbG9jPiYgX19yaHMpCiAgICB7IHJldHVybiBfX3Jocy5jb21wYXJlKF9fbGhzKSA9PSAw
OyB9CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywg
dHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3QgYmFz
aWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMsCiAgICAgICAgY29uc3Qg
X0NoYXJUKiBfX3JocykKICAgIHsgcmV0dXJuIF9fbGhzLmNvbXBhcmUoX19yaHMpID09IDA7IH0K
IyAyNTMwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEv
Yml0cy9iYXNpY19zdHJpbmcuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h
bWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9y
IT0oY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMsCiAg
ICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19yaHMp
CiAgICB7IHJldHVybiAhKF9fbGhzID09IF9fcmhzKTsgfQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGlu
ZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IF9DaGFyVCogX19saHMsCiAgICAgICAgY29uc3Qg
YmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19yaHMpCiAgICB7IHJldHVy
biAhKF9fbGhzID09IF9fcmhzKTsgfQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs
IHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBv
cGVyYXRvciE9KGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9f
bGhzLAogICAgICAgIGNvbnN0IF9DaGFyVCogX19yaHMpCiAgICB7IHJldHVybiAhKF9fbGhzID09
IF9fcmhzKTsgfQojIDI1NjcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjguMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgYm9vbAog
ICAgb3BlcmF0b3I8KGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4m
IF9fbGhzLAogICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9j
PiYgX19yaHMpCiAgICB7IHJldHVybiBfX2xocy5jb21wYXJlKF9fcmhzKSA8IDA7IH0KCgoKCgoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBf
QWxsb2M+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IGJhc2ljX3N0cmluZzxf
Q2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fbGhzLAogICAgICAgY29uc3QgX0NoYXJUKiBfX3Jo
cykKICAgIHsgcmV0dXJuIF9fbGhzLmNvbXBhcmUoX19yaHMpIDwgMDsgfQoKCgoKCgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4K
ICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcjwoY29uc3QgX0NoYXJUKiBfX2xocywKICAgICAg
IGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fcmhzKQogICAg
eyByZXR1cm4gX19yaHMuY29tcGFyZShfX2xocykgPiAwOyB9CiMgMjYwNCAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5nLmgi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1l
IF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj4oY29uc3QgYmFzaWNfc3RyaW5n
PF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMsCiAgICAgICBjb25zdCBiYXNpY19zdHJp
bmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3JocykKICAgIHsgcmV0dXJuIF9fbGhzLmNv
bXBhcmUoX19yaHMpID4gMDsgfQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5
cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVy
YXRvcj4oY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMs
CiAgICAgICBjb25zdCBfQ2hhclQqIF9fcmhzKQogICAgeyByZXR1cm4gX19saHMuY29tcGFyZShf
X3JocykgPiAwOyB9CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg
X1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPihj
b25zdCBfQ2hhclQqIF9fbGhzLAogICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1Ry
YWl0cywgX0FsbG9jPiYgX19yaHMpCiAgICB7IHJldHVybiBfX3Jocy5jb21wYXJlKF9fbGhzKSA8
IDA7IH0KIyAyNjQxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC44LjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9w
ZXJhdG9yPD0oY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19s
aHMsCiAgICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYg
X19yaHMpCiAgICB7IHJldHVybiBfX2xocy5jb21wYXJlKF9fcmhzKSA8PSAwOyB9CgoKCgoKCgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0Fs
bG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPD0oY29uc3QgYmFzaWNfc3RyaW5nPF9D
aGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMsCiAgICAgICAgY29uc3QgX0NoYXJUKiBfX3Jo
cykKICAgIHsgcmV0dXJuIF9fbGhzLmNvbXBhcmUoX19yaHMpIDw9IDA7IH0KCgoKCgoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+
CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8PShjb25zdCBfQ2hhclQqIF9fbGhzLAogICAg
ICAgIGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fcmhzKQog
ICAgeyByZXR1cm4gX19yaHMuY29tcGFyZShfX2xocykgPj0gMDsgfQojIDI2NzggIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2Jhc2ljX3N0cmlu
Zy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBl
bmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I+PShjb25zdCBiYXNpY19z
dHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX2xocywKICAgICAgICBjb25zdCBiYXNp
Y19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3JocykKICAgIHsgcmV0dXJuIF9f
bGhzLmNvbXBhcmUoX19yaHMpID49IDA7IH0KCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUgYm9vbAog
ICAgb3BlcmF0b3I+PShjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+
JiBfX2xocywKICAgICAgICBjb25zdCBfQ2hhclQqIF9fcmhzKQogICAgeyByZXR1cm4gX19saHMu
Y29tcGFyZShfX3JocykgPj0gMDsgfQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs
IHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBv
cGVyYXRvcj49KGNvbnN0IF9DaGFyVCogX19saHMsCiAgICAgIGNvbnN0IGJhc2ljX3N0cmluZzxf
Q2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fcmhzKQogICAgeyByZXR1cm4gX19yaHMuY29tcGFy
ZShfX2xocykgPD0gMDsgfQojIDI3MTUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbmxpbmUg
dm9pZAogICAgc3dhcChiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX2xo
cywKICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3JocykKICAgIHsg
X19saHMuc3dhcChfX3Jocyk7IH0KIyAyNzMzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgYmFz
aWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+PihiYXNpY19pc3RyZWFt
PF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAgICAgICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1Ry
YWl0cywgX0FsbG9jPiYgX19zdHIpOwoKICB0ZW1wbGF0ZTw+CiAgICBiYXNpY19pc3RyZWFtPGNo
YXI+JgogICAgb3BlcmF0b3I+PihiYXNpY19pc3RyZWFtPGNoYXI+JiBfX2lzLCBiYXNpY19zdHJp
bmc8Y2hhcj4mIF9fc3RyKTsKIyAyNzUxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC44LjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5l
IGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPDwoYmFzaWNfb3N0
cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAgICAgIGNvbnN0IGJhc2ljX3N0cmluZzxf
Q2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fc3RyKQogICAgewoKCiAgICAgIHJldHVybiBfX29z
dHJlYW1faW5zZXJ0KF9fb3MsIF9fc3RyLmRhdGEoKSwgX19zdHIuc2l6ZSgpKTsKICAgIH0KIyAy
Nzc0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0
cy9iYXNpY19zdHJpbmcuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg
X1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFp
dHM+JgogICAgZ2V0bGluZShiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAg
ICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19zdHIsIF9DaGFyVCBf
X2RlbGltKTsKIyAyNzkxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC44LjEvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJhc2ljX2lz
dHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIGdldGxpbmUoYmFzaWNfaXN0cmVhbTxfQ2hhclQs
IF9UcmFpdHM+JiBfX2lzLAogICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxv
Yz4mIF9fc3RyKQogICAgeyByZXR1cm4gZ2V0bGluZShfX2lzLCBfX3N0ciwgX19pcy53aWRlbign
XG4nKSk7IH0KCiAgdGVtcGxhdGU8PgogICAgYmFzaWNfaXN0cmVhbTxjaGFyPiYKICAgIGdldGxp
bmUoYmFzaWNfaXN0cmVhbTxjaGFyPiYgX19pbiwgYmFzaWNfc3RyaW5nPGNoYXI+JiBfX3N0ciwK
ICAgICBjaGFyIF9fZGVsaW0pOwoKCiAgdGVtcGxhdGU8PgogICAgYmFzaWNfaXN0cmVhbTx3Y2hh
cl90PiYKICAgIGdldGxpbmUoYmFzaWNfaXN0cmVhbTx3Y2hhcl90PiYgX19pbiwgYmFzaWNfc3Ry
aW5nPHdjaGFyX3Q+JiBfX3N0ciwKICAgICB3Y2hhcl90IF9fZGVsaW0pOwoKCgp9CgoKCgojIDEg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9leHQvc3Ry
aW5nX2NvbnZlcnNpb25zLmgiIDEgMwojIDMyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC44LjEvZXh0L3N0cmluZ19jb252ZXJzaW9ucy5oIiAzCiAgICAgICAK
IyAzMyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2V4
dC9zdHJpbmdfY29udmVyc2lvbnMuaCIgMwojIDQxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC44LjEvZXh0L3N0cmluZ19jb252ZXJzaW9ucy5oIiAzCiMgMSAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2NzdGRsaWIi
IDEgMwojIDM5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44
LjEvY3N0ZGxpYiIgMwogICAgICAgCiMgNDAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9jc3RkbGliIiAzCiMgMTE0ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvY3N0ZGxpYiIgMwpuYW1lc3BhY2Ugc3RkIF9f
YXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgogIHVzaW5nIDo6
ZGl2X3Q7CiAgdXNpbmcgOjpsZGl2X3Q7CgogIHVzaW5nIDo6YWJvcnQ7CiAgdXNpbmcgOjphYnM7
CiAgdXNpbmcgOjphdGV4aXQ7CgoKICB1c2luZyA6OmF0X3F1aWNrX2V4aXQ7CgoKICB1c2luZyA6
OmF0b2Y7CiAgdXNpbmcgOjphdG9pOwogIHVzaW5nIDo6YXRvbDsKICB1c2luZyA6OmJzZWFyY2g7
CiAgdXNpbmcgOjpjYWxsb2M7CiAgdXNpbmcgOjpkaXY7CiAgdXNpbmcgOjpleGl0OwogIHVzaW5n
IDo6ZnJlZTsKICB1c2luZyA6OmdldGVudjsKICB1c2luZyA6OmxhYnM7CiAgdXNpbmcgOjpsZGl2
OwogIHVzaW5nIDo6bWFsbG9jOwoKICB1c2luZyA6Om1ibGVuOwogIHVzaW5nIDo6bWJzdG93Y3M7
CiAgdXNpbmcgOjptYnRvd2M7CgogIHVzaW5nIDo6cXNvcnQ7CgoKICB1c2luZyA6OnF1aWNrX2V4
aXQ7CgoKICB1c2luZyA6OnJhbmQ7CiAgdXNpbmcgOjpyZWFsbG9jOwogIHVzaW5nIDo6c3JhbmQ7
CiAgdXNpbmcgOjpzdHJ0b2Q7CiAgdXNpbmcgOjpzdHJ0b2w7CiAgdXNpbmcgOjpzdHJ0b3VsOwog
IHVzaW5nIDo6c3lzdGVtOwoKICB1c2luZyA6Ondjc3RvbWJzOwogIHVzaW5nIDo6d2N0b21iOwoK
CgogIGlubGluZSBsb25nCiAgYWJzKGxvbmcgX19pKSB7IHJldHVybiBfX2J1aWx0aW5fbGFicyhf
X2kpOyB9CgogIGlubGluZSBsZGl2X3QKICBkaXYobG9uZyBfX2ksIGxvbmcgX19qKSB7IHJldHVy
biBsZGl2KF9faSwgX19qKTsgfQoKCgogIGlubGluZSBsb25nIGxvbmcKICBhYnMobG9uZyBsb25n
IF9feCkgeyByZXR1cm4gX19idWlsdGluX2xsYWJzIChfX3gpOyB9CgoKCgoKCgoKfQojIDE5NiAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2NzdGRsaWIi
IDMKbmFtZXNwYWNlIF9fZ251X2N4eCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJk
ZWZhdWx0IikpKQp7CgoKCiAgdXNpbmcgOjpsbGRpdl90OwoKCgoKCiAgdXNpbmcgOjpfRXhpdDsK
CgoKICB1c2luZyA6OmxsYWJzOwoKICBpbmxpbmUgbGxkaXZfdAogIGRpdihsb25nIGxvbmcgX19u
LCBsb25nIGxvbmcgX19kKQogIHsgbGxkaXZfdCBfX3E7IF9fcS5xdW90ID0gX19uIC8gX19kOyBf
X3EucmVtID0gX19uICUgX19kOyByZXR1cm4gX19xOyB9CgogIHVzaW5nIDo6bGxkaXY7CiMgMjI4
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvY3N0ZGxp
YiIgMwogIHVzaW5nIDo6YXRvbGw7CiAgdXNpbmcgOjpzdHJ0b2xsOwogIHVzaW5nIDo6c3RydG91
bGw7CgogIHVzaW5nIDo6c3RydG9mOwogIHVzaW5nIDo6c3RydG9sZDsKCgp9CgpuYW1lc3BhY2Ug
c3RkCnsKCiAgdXNpbmcgOjpfX2dudV9jeHg6OmxsZGl2X3Q7CgogIHVzaW5nIDo6X19nbnVfY3h4
OjpfRXhpdDsKCiAgdXNpbmcgOjpfX2dudV9jeHg6OmxsYWJzOwogIHVzaW5nIDo6X19nbnVfY3h4
OjpkaXY7CiAgdXNpbmcgOjpfX2dudV9jeHg6OmxsZGl2OwoKICB1c2luZyA6Ol9fZ251X2N4eDo6
YXRvbGw7CiAgdXNpbmcgOjpfX2dudV9jeHg6OnN0cnRvZjsKICB1c2luZyA6Ol9fZ251X2N4eDo6
c3RydG9sbDsKICB1c2luZyA6Ol9fZ251X2N4eDo6c3RydG91bGw7CiAgdXNpbmcgOjpfX2dudV9j
eHg6OnN0cnRvbGQ7Cn0KIyA0MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOC4xL2V4dC9zdHJpbmdfY29udmVyc2lvbnMuaCIgMiAzCiMgMSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2N3Y2hhciIgMSAzCiMgMzkg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9jd2NoYXIi
IDMKICAgICAgIAojIDQwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC44LjEvY3djaGFyIiAzCgoKCgojIDEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFu
Z29saW4tQVJNSEYvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzIDQKIyA0NSAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2N3Y2hhciIgMiAzCiMgNDMgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9leHQvc3RyaW5n
X2NvbnZlcnNpb25zLmgiIDIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9jc3RkaW8iIDEgMwojIDM5ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvY3N0ZGlvIiAzCiAgICAgICAKIyA0MCAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2NzdGRpbyIgMwoKCiMg
MSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9z
dGRpby5oIiAxIDMgNAojIDMwICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFS
TUhGL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gIkMiIHsKCgoKIyAxICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9s
aWIvZ2NjL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS80LjguMS9pbmNsdWRlL3N0ZGRlZi5oIiAx
IDMgNAojIDM1ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9p
bmNsdWRlL3N0ZGlvLmgiIDIgMyA0CiMgNzUgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFu
Z29saW4tQVJNSEYvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CiMgMSAiL21udC9zdG9yZS9jaHJv
b3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9saWJpby5oIiAxIDMgNAojIDMy
ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL2xp
YmlvLmgiIDMgNAojIDEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYv
dXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDEgMyA0CiMgMTUgIi9tbnQvc3RvcmUvY2hyb290cy91
YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMgNAojIDEgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OC4xL2xpYi9nY2MvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLzQuOC4xL2luY2x1ZGUvc3RkZGVm
LmgiIDEgMyA0CiMgMTYgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYv
dXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMyA0CgoKCgojIDEgIi9tbnQvc3RvcmUvY2hyb290
cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzIDQKIyAyMSAi
L21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9fR19j
b25maWcuaCIgMiAzIDQKCnR5cGVkZWYgc3RydWN0CnsKICBfX29mZl90IF9fcG9zOwogIF9fbWJz
dGF0ZV90IF9fc3RhdGU7Cn0gX0dfZnBvc190Owp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmY2NF90
IF9fcG9zOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7Cn0gX0dfZnBvczY0X3Q7CiMgNTMgIi9tbnQv
c3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvX0dfY29uZmln
LmgiIDMgNAp0eXBlZGVmIGludCBfR19pbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAo
X19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19pbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVf
XyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MTZfdCBfX2F0dHJpYnV0
ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX0dfdWludDMy
X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CiMgMzMgIi9tbnQvc3RvcmUv
Y2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzIDQK
IyAxNzIgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1
ZGUvbGliaW8uaCIgMyA0CnN0cnVjdCBfSU9fanVtcF90OyBzdHJ1Y3QgX0lPX0ZJTEU7CiMgMTgy
ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL2xp
YmlvLmgiIDMgNAp0eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsKCgoKCgpzdHJ1Y3QgX0lPX21hcmtl
ciB7CiAgc3RydWN0IF9JT19tYXJrZXIgKl9uZXh0OwogIHN0cnVjdCBfSU9fRklMRSAqX3NidWY7
CgoKCiAgaW50IF9wb3M7CiMgMjA1ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGlu
LUFSTUhGL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNAp9OwoKCmVudW0gX19jb2RlY3Z0X3Jlc3Vs
dAp7CiAgX19jb2RlY3Z0X29rLAogIF9fY29kZWN2dF9wYXJ0aWFsLAogIF9fY29kZWN2dF9lcnJv
ciwKICBfX2NvZGVjdnRfbm9jb252Cn07CiMgMjczICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1
LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNApzdHJ1Y3QgX0lPX0ZJTEUg
ewogIGludCBfZmxhZ3M7CgoKCgogIGNoYXIqIF9JT19yZWFkX3B0cjsKICBjaGFyKiBfSU9fcmVh
ZF9lbmQ7CiAgY2hhciogX0lPX3JlYWRfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsKICBj
aGFyKiBfSU9fd3JpdGVfcHRyOwogIGNoYXIqIF9JT193cml0ZV9lbmQ7CiAgY2hhciogX0lPX2J1
Zl9iYXNlOwogIGNoYXIqIF9JT19idWZfZW5kOwoKICBjaGFyICpfSU9fc2F2ZV9iYXNlOwogIGNo
YXIgKl9JT19iYWNrdXBfYmFzZTsKICBjaGFyICpfSU9fc2F2ZV9lbmQ7CgogIHN0cnVjdCBfSU9f
bWFya2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47CgogIGludCBfZmls
ZW5vOwoKCgogIGludCBfZmxhZ3MyOwoKICBfX29mZl90IF9vbGRfb2Zmc2V0OwoKCgogIHVuc2ln
bmVkIHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0OwogIGNo
YXIgX3Nob3J0YnVmWzFdOwoKCgogIF9JT19sb2NrX3QgKl9sb2NrOwojIDMyMSAiL21udC9zdG9y
ZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQK
ICBfX29mZjY0X3QgX29mZnNldDsKIyAzMzAgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFu
Z29saW4tQVJNSEYvdXNyL2luY2x1ZGUvbGliaW8uaCIgMyA0CiAgdm9pZCAqX19wYWQxOwogIHZv
aWQgKl9fcGFkMjsKICB2b2lkICpfX3BhZDM7CiAgdm9pZCAqX19wYWQ0OwogIHNpemVfdCBfX3Bh
ZDU7CgogIGludCBfbW9kZTsKCiAgY2hhciBfdW51c2VkMlsxNSAqIHNpemVvZiAoaW50KSAtIDQg
KiBzaXplb2YgKHZvaWQgKikgLSBzaXplb2YgKHNpemVfdCldOwoKfTsKCgoKCgpzdHJ1Y3QgX0lP
X0ZJTEVfcGx1czsKCmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsK
ZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVj
dCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkZXJyXzsKIyAzNjYgIi9tbnQvc3RvcmUvY2hyb290
cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvbGliaW8uaCIgMyA0CnR5cGVkZWYg
X19zc2l6ZV90IF9faW9fcmVhZF9mbiAodm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLCBzaXpl
X3QgX19uYnl0ZXMpOwoKCgoKCgoKdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAodm9p
ZCAqX19jb29raWUsIF9fY29uc3QgY2hhciAqX19idWYsCiAgICAgc2l6ZV90IF9fbik7CgoKCgoK
Cgp0eXBlZGVmIGludCBfX2lvX3NlZWtfZm4gKHZvaWQgKl9fY29va2llLCBfX29mZjY0X3QgKl9f
cG9zLCBpbnQgX193KTsKCgp0eXBlZGVmIGludCBfX2lvX2Nsb3NlX2ZuICh2b2lkICpfX2Nvb2tp
ZSk7CgoKCgp0eXBlZGVmIF9faW9fcmVhZF9mbiBjb29raWVfcmVhZF9mdW5jdGlvbl90Owp0eXBl
ZGVmIF9faW9fd3JpdGVfZm4gY29va2llX3dyaXRlX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb19z
ZWVrX2ZuIGNvb2tpZV9zZWVrX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb19jbG9zZV9mbiBjb29r
aWVfY2xvc2VfZnVuY3Rpb25fdDsKCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19pb19yZWFkX2ZuICpy
ZWFkOwogIF9faW9fd3JpdGVfZm4gKndyaXRlOwogIF9faW9fc2Vla19mbiAqc2VlazsKICBfX2lv
X2Nsb3NlX2ZuICpjbG9zZTsKfSBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190Owp0eXBlZGVmIF9J
T19jb29raWVfaW9fZnVuY3Rpb25zX3QgY29va2llX2lvX2Z1bmN0aW9uc190OwoKc3RydWN0IF9J
T19jb29raWVfZmlsZTsKCgpleHRlcm4gdm9pZCBfSU9fY29va2llX2luaXQgKHN0cnVjdCBfSU9f
Y29va2llX2ZpbGUgKl9fY2ZpbGUsIGludCBfX3JlYWRfd3JpdGUsCiAgICAgICAgdm9pZCAqX19j
b29raWUsIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19mbnMpOwoKCgoKZXh0ZXJuICJDIiB7
CgoKZXh0ZXJuIGludCBfX3VuZGVyZmxvdyAoX0lPX0ZJTEUgKik7CmV4dGVybiBpbnQgX191Zmxv
dyAoX0lPX0ZJTEUgKik7CmV4dGVybiBpbnQgX19vdmVyZmxvdyAoX0lPX0ZJTEUgKiwgaW50KTsK
IyA0NjIgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1
ZGUvbGliaW8uaCIgMyA0CmV4dGVybiBpbnQgX0lPX2dldGMgKF9JT19GSUxFICpfX2ZwKTsKZXh0
ZXJuIGludCBfSU9fcHV0YyAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnApOwpleHRlcm4gaW50IF9J
T19mZW9mIChfSU9fRklMRSAqX19mcCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2ZlcnJvciAo
X0lPX0ZJTEUgKl9fZnApIHRocm93ICgpOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChf
SU9fRklMRSAqX19mcCk7CgoKCgoKZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAoX0lPX0ZJTEUg
KikgdGhyb3cgKCk7CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAoX0lPX0ZJTEUgKikgdGhy
b3cgKCk7CmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7
CiMgNDkyICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNs
dWRlL2xpYmlvLmgiIDMgNApleHRlcm4gaW50IF9JT192ZnNjYW5mIChfSU9fRklMRSAqIF9fcmVz
dHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LAogICBfX2dudWNfdmFfbGlzdCwgaW50ICpf
X3Jlc3RyaWN0KTsKZXh0ZXJuIGludCBfSU9fdmZwcmludGYgKF9JT19GSUxFICpfX3Jlc3RyaWN0
LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0LAogICAgX19nbnVjX3ZhX2xpc3QpOwpleHRlcm4gX19z
c2l6ZV90IF9JT19wYWRuIChfSU9fRklMRSAqLCBpbnQsIF9fc3NpemVfdCk7CmV4dGVybiBzaXpl
X3QgX0lPX3NnZXRuIChfSU9fRklMRSAqLCB2b2lkICosIHNpemVfdCk7CgpleHRlcm4gX19vZmY2
NF90IF9JT19zZWVrb2ZmIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCwgaW50KTsKZXh0ZXJu
IF9fb2ZmNjRfdCBfSU9fc2Vla3BvcyAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQpOwoKZXh0
ZXJuIHZvaWQgX0lPX2ZyZWVfYmFja3VwX2FyZWEgKF9JT19GSUxFICopIHRocm93ICgpOwojIDU1
NCAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9s
aWJpby5oIiAzIDQKfQojIDc2ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFS
TUhGL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CiMgMTA5ICIvbW50L3N0b3JlL2Nocm9vdHMv
dWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAoKCnR5cGVkZWYg
X0dfZnBvc190IGZwb3NfdDsKCgoKCgp0eXBlZGVmIF9HX2Zwb3M2NF90IGZwb3M2NF90OwojIDE2
NSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzIDQKIyAxICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhG
L3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy9zdGRpb19saW0uaCIgMSAzIDQK
IyAxNjYgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1
ZGUvc3RkaW8uaCIgMiAzIDQKCgoKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRSAqc3RkaW47CmV4dGVy
biBzdHJ1Y3QgX0lPX0ZJTEUgKnN0ZG91dDsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRSAqc3RkZXJy
OwoKCgoKCgoKZXh0ZXJuIGludCByZW1vdmUgKF9fY29uc3QgY2hhciAqX19maWxlbmFtZSkgdGhy
b3cgKCk7CgpleHRlcm4gaW50IHJlbmFtZSAoX19jb25zdCBjaGFyICpfX29sZCwgX19jb25zdCBj
aGFyICpfX25ldykgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHJlbmFtZWF0IChpbnQgX19vbGRm
ZCwgX19jb25zdCBjaGFyICpfX29sZCwgaW50IF9fbmV3ZmQsCiAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fbmV3KSB0aHJvdyAoKTsKCgoKCgoKCgpleHRlcm4gRklMRSAqdG1wZmlsZSAodm9pZCkgOwoj
IDIwNiAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVk
ZS9zdGRpby5oIiAzIDQKZXh0ZXJuIEZJTEUgKnRtcGZpbGU2NCAodm9pZCkgOwoKCgpleHRlcm4g
Y2hhciAqdG1wbmFtIChjaGFyICpfX3MpIHRocm93ICgpIDsKCgoKCgpleHRlcm4gY2hhciAqdG1w
bmFtX3IgKGNoYXIgKl9fcykgdGhyb3cgKCkgOwojIDIyOCAiL21udC9zdG9yZS9jaHJvb3RzL3Vi
dW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIGNoYXIg
KnRlbXBuYW0gKF9fY29uc3QgY2hhciAqX19kaXIsIF9fY29uc3QgY2hhciAqX19wZngpCiAgICAg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSA7CgoKCgoKCgoKZXh0ZXJuIGlu
dCBmY2xvc2UgKEZJTEUgKl9fc3RyZWFtKTsKCgoKCmV4dGVybiBpbnQgZmZsdXNoIChGSUxFICpf
X3N0cmVhbSk7CgojIDI1MyAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1I
Ri91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIGludCBmZmx1c2hfdW5sb2NrZWQgKEZJ
TEUgKl9fc3RyZWFtKTsKIyAyNjMgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4t
QVJNSEYvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBpbnQgZmNsb3NlYWxsICh2b2lk
KTsKCgoKCgoKCgoKZXh0ZXJuIEZJTEUgKmZvcGVuIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19maWxlbmFtZSwKICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpIDsKCgoK
CmV4dGVybiBGSUxFICpmcmVvcGVuIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFt
ZSwKICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKICAgICAgICBGSUxF
ICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CiMgMjk2ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1
LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAoKCmV4dGVybiBGSUxFICpm
b3BlbjY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcykgOwpleHRlcm4gRklMRSAqZnJlb3BlbjY0IChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbW9kZXMsCiAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVy
biBGSUxFICpmZG9wZW4gKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIHRocm93ICgp
IDsKCgoKCgpleHRlcm4gRklMRSAqZm9wZW5jb29raWUgKHZvaWQgKl9fcmVzdHJpY3QgX19tYWdp
Y19jb29raWUsCiAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgX0lP
X2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBfX2lvX2Z1bmNzKSB0aHJvdyAoKSA7CgoKCgpleHRlcm4g
RklMRSAqZm1lbW9wZW4gKHZvaWQgKl9fcywgc2l6ZV90IF9fbGVuLCBfX2NvbnN0IGNoYXIgKl9f
bW9kZXMpCiAgdGhyb3cgKCkgOwoKCgoKZXh0ZXJuIEZJTEUgKm9wZW5fbWVtc3RyZWFtIChjaGFy
ICoqX19idWZsb2MsIHNpemVfdCAqX19zaXplbG9jKSB0aHJvdyAoKSA7CgoKCgoKCmV4dGVybiB2
b2lkIHNldGJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBf
X2J1ZikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAoRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgaW50IF9fbW9kZXMsIHNpemVf
dCBfX24pIHRocm93ICgpOwoKCgoKCmV4dGVybiB2b2lkIHNldGJ1ZmZlciAoRklMRSAqX19yZXN0
cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgc2l6ZV90IF9f
c2l6ZSkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgc2V0bGluZWJ1ZiAoRklMRSAqX19zdHJlYW0p
IHRocm93ICgpOwoKCgoKCgoKCmV4dGVybiBpbnQgZnByaW50ZiAoRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSwKICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pOwoK
CgoKZXh0ZXJuIGludCBwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwg
Li4uKTsKCmV4dGVybiBpbnQgc3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCgoKCgpleHRl
cm4gaW50IHZmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LAogICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpOwoKCgoKZXh0ZXJu
IGludCB2cHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192
YV9saXN0IF9fYXJnKTsKCmV4dGVybiBpbnQgdnNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19z
LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICBfX2dudWNfdmFfbGlz
dCBfX2FyZykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBzbnByaW50ZiAoY2hhciAqX19yZXN0
cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2Zvcm1hdCwgLi4uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9f
IChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKZXh0ZXJuIGludCB2c25wcmludGYgKGNoYXIgKl9fcmVz
dHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKCgoKCgoKZXh0ZXJuIGlu
dCB2YXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLCBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mLAogICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAwKSkpIDsKZXh0ZXJuIGlu
dCBfX2FzcHJpbnRmIChjaGFyICoqX19yZXN0cmljdCBfX3B0ciwKICAgICAgICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSkgOwpleHRlcm4gaW50IGFzcHJpbnRmIChj
aGFyICoqX19yZXN0cmljdCBfX3B0ciwKICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2ZtdCwgLi4uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3By
aW50Zl9fLCAyLCAzKSkpIDsKIyA0MTggIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29s
aW4tQVJNSEYvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBpbnQgdmRwcmludGYgKGlu
dCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsCiAgICAgICBfX2dudWNfdmFf
bGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywg
MiwgMCkpKTsKZXh0ZXJuIGludCBkcHJpbnRmIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm10LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJp
bnRmX18sIDIsIDMpKSk7CgoKCgoKCgoKZXh0ZXJuIGludCBmc2NhbmYgKEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0sCiAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4p
IDsKCgoKCmV4dGVybiBpbnQgc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1h
dCwgLi4uKSA7CgpleHRlcm4gaW50IHNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
cywKICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7
CiMgNDY5ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDMgNAoKCgoKCgoKCmV4dGVybiBpbnQgdmZzY2FuZiAoRklMRSAqX19yZXN0
cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgX19nbnVj
X3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZf
XywgMiwgMCkpKSA7CgoKCgoKZXh0ZXJuIGludCB2c2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMSwgMCkpKSA7CgoKZXh0ZXJuIGludCB2c3NjYW5mIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSk7CiMgNTI4ICIvbW50L3N0b3Jl
L2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAoK
CgoKCgoKCgpleHRlcm4gaW50IGZnZXRjIChGSUxFICpfX3N0cmVhbSk7CmV4dGVybiBpbnQgZ2V0
YyAoRklMRSAqX19zdHJlYW0pOwoKCgoKCmV4dGVybiBpbnQgZ2V0Y2hhciAodm9pZCk7CgojIDU1
NiAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzIDQKZXh0ZXJuIGludCBnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSk7CmV4
dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCk7CiMgNTY3ICIvbW50L3N0b3JlL2Nocm9v
dHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4g
aW50IGZnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSk7CgoKCgoKCgoKCgoKZXh0ZXJuIGlu
dCBmcHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pOwpleHRlcm4gaW50IHB1dGMgKGludCBf
X2MsIEZJTEUgKl9fc3RyZWFtKTsKCgoKCgpleHRlcm4gaW50IHB1dGNoYXIgKGludCBfX2MpOwoK
IyA2MDAgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1
ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBpbnQgZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUg
Kl9fc3RyZWFtKTsKCgoKCgoKCmV4dGVybiBpbnQgcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklM
RSAqX19zdHJlYW0pOwpleHRlcm4gaW50IHB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpOwoKCgoK
CgpleHRlcm4gaW50IGdldHcgKEZJTEUgKl9fc3RyZWFtKTsKCgpleHRlcm4gaW50IHB1dHcgKGlu
dCBfX3csIEZJTEUgKl9fc3RyZWFtKTsKCgoKCgoKCgpleHRlcm4gY2hhciAqZmdldHMgKGNoYXIg
Kl9fcmVzdHJpY3QgX19zLCBpbnQgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQogICAg
IDsKCgoKCgoKZXh0ZXJuIGNoYXIgKmdldHMgKGNoYXIgKl9fcykgOwoKIyA2NDYgIi9tbnQvc3Rv
cmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0
CmV4dGVybiBjaGFyICpmZ2V0c191bmxvY2tlZCAoY2hhciAqX19yZXN0cmljdCBfX3MsIGludCBf
X24sCiAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwojIDY2MiAiL21udC9zdG9y
ZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQK
ZXh0ZXJuIF9fc3NpemVfdCBfX2dldGRlbGltIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIs
CiAgICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19uLCBpbnQgX19kZWxpbWl0ZXIsCiAgICAg
ICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CmV4dGVybiBfX3NzaXplX3QgZ2V0ZGVs
aW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGluZXB0ciwKICAgICAgICBzaXplX3QgKl9fcmVzdHJp
Y3QgX19uLCBpbnQgX19kZWxpbWl0ZXIsCiAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVh
bSkgOwoKCgoKCgoKZXh0ZXJuIF9fc3NpemVfdCBnZXRsaW5lIChjaGFyICoqX19yZXN0cmljdCBf
X2xpbmVwdHIsCiAgICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19uLAogICAgICAgRklMRSAqX19y
ZXN0cmljdCBfX3N0cmVhbSkgOwoKCgoKCgoKCmV4dGVybiBpbnQgZnB1dHMgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX3MsIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pOwoKCgoKCmV4dGVy
biBpbnQgcHV0cyAoX19jb25zdCBjaGFyICpfX3MpOwoKCgoKCgpleHRlcm4gaW50IHVuZ2V0YyAo
aW50IF9fYywgRklMRSAqX19zdHJlYW0pOwoKCgoKCgpleHRlcm4gc2l6ZV90IGZyZWFkICh2b2lk
ICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgc2l6ZV90IF9fbiwgRklM
RSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIHNpemVfdCBmd3JpdGUgKF9fY29u
c3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICBzaXplX3Qg
X19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fcyk7CgojIDcyMyAiL21udC9zdG9yZS9jaHJvb3RzL3Vi
dW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIGludCBm
cHV0c191bmxvY2tlZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgRklMRSAq
X19yZXN0cmljdCBfX3N0cmVhbSk7CiMgNzM0ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBh
bmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gc2l6ZV90IGZyZWFk
X3VubG9ja2VkICh2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAg
ICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CmV4dGVybiBzaXplX3Qg
ZndyaXRlX3VubG9ja2VkIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBf
X3NpemUsCiAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKTsK
CgoKCgoKCgpleHRlcm4gaW50IGZzZWVrIChGSUxFICpfX3N0cmVhbSwgbG9uZyBpbnQgX19vZmYs
IGludCBfX3doZW5jZSk7CgoKCgpleHRlcm4gbG9uZyBpbnQgZnRlbGwgKEZJTEUgKl9fc3RyZWFt
KSA7CgoKCgpleHRlcm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKTsKCiMgNzcwICIvbW50
L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3N0ZGlvLmgi
IDMgNApleHRlcm4gaW50IGZzZWVrbyAoRklMRSAqX19zdHJlYW0sIF9fb2ZmX3QgX19vZmYsIGlu
dCBfX3doZW5jZSk7CgoKCgpleHRlcm4gX19vZmZfdCBmdGVsbG8gKEZJTEUgKl9fc3RyZWFtKSA7
CiMgNzg5ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDMgNAoKCgoKCgpleHRlcm4gaW50IGZnZXRwb3MgKEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0sIGZwb3NfdCAqX19yZXN0cmljdCBfX3Bvcyk7CgoKCgpleHRlcm4gaW50IGZz
ZXRwb3MgKEZJTEUgKl9fc3RyZWFtLCBfX2NvbnN0IGZwb3NfdCAqX19wb3MpOwojIDgxMiAiL21u
dC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9zdGRpby5o
IiAzIDQKCgoKZXh0ZXJuIGludCBmc2Vla282NCAoRklMRSAqX19zdHJlYW0sIF9fb2ZmNjRfdCBf
X29mZiwgaW50IF9fd2hlbmNlKTsKZXh0ZXJuIF9fb2ZmNjRfdCBmdGVsbG82NCAoRklMRSAqX19z
dHJlYW0pIDsKZXh0ZXJuIGludCBmZ2V0cG9zNjQgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0s
IGZwb3M2NF90ICpfX3Jlc3RyaWN0IF9fcG9zKTsKZXh0ZXJuIGludCBmc2V0cG9zNjQgKEZJTEUg
Kl9fc3RyZWFtLCBfX2NvbnN0IGZwb3M2NF90ICpfX3Bvcyk7CgoKCgpleHRlcm4gdm9pZCBjbGVh
cmVyciAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKZXh0ZXJuIGludCBmZW9mIChGSUxFICpf
X3N0cmVhbSkgdGhyb3cgKCkgOwoKZXh0ZXJuIGludCBmZXJyb3IgKEZJTEUgKl9fc3RyZWFtKSB0
aHJvdyAoKSA7CgoKCgpleHRlcm4gdm9pZCBjbGVhcmVycl91bmxvY2tlZCAoRklMRSAqX19zdHJl
YW0pIHRocm93ICgpOwpleHRlcm4gaW50IGZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0
aHJvdyAoKSA7CmV4dGVybiBpbnQgZmVycm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhy
b3cgKCkgOwoKCgoKCgoKCmV4dGVybiB2b2lkIHBlcnJvciAoX19jb25zdCBjaGFyICpfX3MpOwoK
CgoKCgojIDEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2lu
Y2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL3N5c19lcnJsaXN0LmgiIDEgMyA0CiMgMjcg
Ii9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvYXJt
LWxpbnV4LWdudWVhYmloZi9iaXRzL3N5c19lcnJsaXN0LmgiIDMgNApleHRlcm4gaW50IHN5c19u
ZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0W107CgoKZXh0ZXJu
IGludCBfc3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3QgX3N5c19lcnJsaXN0
W107CiMgODUxICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9p
bmNsdWRlL3N0ZGlvLmgiIDIgMyA0CgoKCgpleHRlcm4gaW50IGZpbGVubyAoRklMRSAqX19zdHJl
YW0pIHRocm93ICgpIDsKCgoKCmV4dGVybiBpbnQgZmlsZW5vX3VubG9ja2VkIChGSUxFICpfX3N0
cmVhbSkgdGhyb3cgKCkgOwojIDg3MCAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xp
bi1BUk1IRi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIEZJTEUgKnBvcGVuIChfX2Nv
bnN0IGNoYXIgKl9fY29tbWFuZCwgX19jb25zdCBjaGFyICpfX21vZGVzKSA7CgoKCgoKZXh0ZXJu
IGludCBwY2xvc2UgKEZJTEUgKl9fc3RyZWFtKTsKCgoKCgpleHRlcm4gY2hhciAqY3Rlcm1pZCAo
Y2hhciAqX19zKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gY2hhciAqY3VzZXJpZCAoY2hhciAqX19z
KTsKCgoKCnN0cnVjdCBvYnN0YWNrOwoKCmV4dGVybiBpbnQgb2JzdGFja19wcmludGYgKHN0cnVj
dCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCAuLi4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9y
bWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CmV4dGVybiBpbnQgb2JzdGFja192cHJpbnRmIChz
dHJ1Y3Qgb2JzdGFjayAqX19yZXN0cmljdCBfX29ic3RhY2ssCiAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZ3MpCiAgICAg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7
CgoKCgoKCgpleHRlcm4gdm9pZCBmbG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsK
CgoKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKSA7CgoK
ZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKIyA5MzEg
Ii9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvc3Rk
aW8uaCIgMyA0CiMgMSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91
c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvc3RkaW8uaCIgMSAzIDQKIyAzNiAi
L21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0t
bGludXgtZ251ZWFiaWhmL2JpdHMvc3RkaW8uaCIgMyA0CmV4dGVybiBfX2lubGluZSBfX2F0dHJp
YnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBpbnQKdnByaW50ZiAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm10LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKewogIHJldHVybiB2ZnByaW50ZiAo
c3Rkb3V0LCBfX2ZtdCwgX19hcmcpOwp9CgoKCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9f
ICgoX19nbnVfaW5saW5lX18pKSBpbnQKZ2V0Y2hhciAodm9pZCkKewogIHJldHVybiBfSU9fZ2V0
YyAoc3RkaW4pOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lu
bGluZV9fKSkgaW50CmZnZXRjX3VubG9ja2VkIChGSUxFICpfX2ZwKQp7CiAgcmV0dXJuIChfX2J1
aWx0aW5fZXhwZWN0ICgoKF9fZnApLT5fSU9fcmVhZF9wdHIgPj0gKF9fZnApLT5fSU9fcmVhZF9l
bmQpLCAwKSA/IF9fdWZsb3cgKF9fZnApIDogKih1bnNpZ25lZCBjaGFyICopIChfX2ZwKS0+X0lP
X3JlYWRfcHRyKyspOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2du
dV9pbmxpbmVfXykpIGludApnZXRjX3VubG9ja2VkIChGSUxFICpfX2ZwKQp7CiAgcmV0dXJuIChf
X2J1aWx0aW5fZXhwZWN0ICgoKF9fZnApLT5fSU9fcmVhZF9wdHIgPj0gKF9fZnApLT5fSU9fcmVh
ZF9lbmQpLCAwKSA/IF9fdWZsb3cgKF9fZnApIDogKih1bnNpZ25lZCBjaGFyICopIChfX2ZwKS0+
X0lPX3JlYWRfcHRyKyspOwp9CgoKZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2du
dV9pbmxpbmVfXykpIGludApnZXRjaGFyX3VubG9ja2VkICh2b2lkKQp7CiAgcmV0dXJuIChfX2J1
aWx0aW5fZXhwZWN0ICgoKHN0ZGluKS0+X0lPX3JlYWRfcHRyID49IChzdGRpbiktPl9JT19yZWFk
X2VuZCksIDApID8gX191ZmxvdyAoc3RkaW4pIDogKih1bnNpZ25lZCBjaGFyICopIChzdGRpbikt
Pl9JT19yZWFkX3B0cisrKTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChf
X2dudV9pbmxpbmVfXykpIGludApwdXRjaGFyIChpbnQgX19jKQp7CiAgcmV0dXJuIF9JT19wdXRj
IChfX2MsIHN0ZG91dCk7Cn0KCgoKCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19n
bnVfaW5saW5lX18pKSBpbnQKZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFt
KQp7CiAgcmV0dXJuIChfX2J1aWx0aW5fZXhwZWN0ICgoKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0
ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5kKSwgMCkgPyBfX292ZXJmbG93IChfX3N0cmVh
bSwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVhbSkt
Pl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgX19hdHRy
aWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgaW50CnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJ
TEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuIChfX2J1aWx0aW5fZXhwZWN0ICgoKF9fc3RyZWFtKS0+
X0lPX3dyaXRlX3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5kKSwgMCkgPyBfX292ZXJm
bG93IChfX3N0cmVhbSwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAo
KihfX3N0cmVhbSktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgpleHRlcm4gX19pbmxp
bmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgaW50CnB1dGNoYXJfdW5sb2NrZWQg
KGludCBfX2MpCnsKICByZXR1cm4gKF9fYnVpbHRpbl9leHBlY3QgKCgoc3Rkb3V0KS0+X0lPX3dy
aXRlX3B0ciA+PSAoc3Rkb3V0KS0+X0lPX3dyaXRlX2VuZCksIDApID8gX19vdmVyZmxvdyAoc3Rk
b3V0LCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKHN0ZG91dCkt
Pl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgX19hdHRy
aWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgX19zc2l6ZV90CmdldGxpbmUgKGNoYXIgKipfX2xp
bmVwdHIsIHNpemVfdCAqX19uLCBGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiBfX2dldGRlbGlt
IChfX2xpbmVwdHIsIF9fbiwgJ1xuJywgX19zdHJlYW0pOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5l
IF9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykpIGludApfX2F0dHJpYnV0ZV9fICgoX19s
ZWFmX18pKSBmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkKewogIHJldHVy
biAoKChfX3N0cmVhbSktPl9mbGFncyAmIDB4MTApICE9IDApOwp9CgoKZXh0ZXJuIF9faW5saW5l
IF9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykpIGludApfX2F0dHJpYnV0ZV9fICgoX19s
ZWFmX18pKSBmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKQp7CiAgcmV0
dXJuICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgyMCkgIT0gMCk7Cn0KIyA5MzIgIi9tbnQvc3Rv
cmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAz
IDQKIyA5NDAgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMyA0Cn0KIyA0MyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOC4xL2NzdGRpbyIgMiAzCiMgOTMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9jc3RkaW8iIDMKbmFtZXNwYWNlIHN0ZAp7CiAg
dXNpbmcgOjpGSUxFOwogIHVzaW5nIDo6ZnBvc190OwoKICB1c2luZyA6OmNsZWFyZXJyOwogIHVz
aW5nIDo6ZmNsb3NlOwogIHVzaW5nIDo6ZmVvZjsKICB1c2luZyA6OmZlcnJvcjsKICB1c2luZyA6
OmZmbHVzaDsKICB1c2luZyA6OmZnZXRjOwogIHVzaW5nIDo6ZmdldHBvczsKICB1c2luZyA6OmZn
ZXRzOwogIHVzaW5nIDo6Zm9wZW47CiAgdXNpbmcgOjpmcHJpbnRmOwogIHVzaW5nIDo6ZnB1dGM7
CiAgdXNpbmcgOjpmcHV0czsKICB1c2luZyA6OmZyZWFkOwogIHVzaW5nIDo6ZnJlb3BlbjsKICB1
c2luZyA6OmZzY2FuZjsKICB1c2luZyA6OmZzZWVrOwogIHVzaW5nIDo6ZnNldHBvczsKICB1c2lu
ZyA6OmZ0ZWxsOwogIHVzaW5nIDo6ZndyaXRlOwogIHVzaW5nIDo6Z2V0YzsKICB1c2luZyA6Omdl
dGNoYXI7CiAgdXNpbmcgOjpnZXRzOwogIHVzaW5nIDo6cGVycm9yOwogIHVzaW5nIDo6cHJpbnRm
OwogIHVzaW5nIDo6cHV0YzsKICB1c2luZyA6OnB1dGNoYXI7CiAgdXNpbmcgOjpwdXRzOwogIHVz
aW5nIDo6cmVtb3ZlOwogIHVzaW5nIDo6cmVuYW1lOwogIHVzaW5nIDo6cmV3aW5kOwogIHVzaW5n
IDo6c2NhbmY7CiAgdXNpbmcgOjpzZXRidWY7CiAgdXNpbmcgOjpzZXR2YnVmOwogIHVzaW5nIDo6
c3ByaW50ZjsKICB1c2luZyA6OnNzY2FuZjsKICB1c2luZyA6OnRtcGZpbGU7CiAgdXNpbmcgOjp0
bXBuYW07CiAgdXNpbmcgOjp1bmdldGM7CiAgdXNpbmcgOjp2ZnByaW50ZjsKICB1c2luZyA6OnZw
cmludGY7CiAgdXNpbmcgOjp2c3ByaW50ZjsKfQojIDE0OSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2NzdGRpbyIgMwpuYW1lc3BhY2UgX19nbnVfY3h4
CnsKIyAxNjcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljgu
MS9jc3RkaW8iIDMKICB1c2luZyA6OnNucHJpbnRmOwogIHVzaW5nIDo6dmZzY2FuZjsKICB1c2lu
ZyA6OnZzY2FuZjsKICB1c2luZyA6OnZzbnByaW50ZjsKICB1c2luZyA6OnZzc2NhbmY7Cgp9Cgpu
YW1lc3BhY2Ugc3RkCnsKICB1c2luZyA6Ol9fZ251X2N4eDo6c25wcmludGY7CiAgdXNpbmcgOjpf
X2dudV9jeHg6OnZmc2NhbmY7CiAgdXNpbmcgOjpfX2dudV9jeHg6OnZzY2FuZjsKICB1c2luZyA6
Ol9fZ251X2N4eDo6dnNucHJpbnRmOwogIHVzaW5nIDo6X19nbnVfY3h4Ojp2c3NjYW5mOwp9CiMg
NDQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9leHQv
c3RyaW5nX2NvbnZlcnNpb25zLmgiIDIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9jZXJybm8iIDEgMwojIDM5ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvY2Vycm5vIiAzCiAgICAgICAKIyA0MCAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2NlcnJubyIg
MwoKIyAxICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNs
dWRlL2Vycm5vLmgiIDEgMyA0CiMgMzIgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29s
aW4tQVJNSEYvdXNyL2luY2x1ZGUvZXJybm8uaCIgMyA0CmV4dGVybiAiQyIgewoKCgojIDEgIi9t
bnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvYXJtLWxp
bnV4LWdudWVhYmloZi9iaXRzL2Vycm5vLmgiIDEgMyA0CiMgMjUgIi9tbnQvc3RvcmUvY2hyb290
cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9i
aXRzL2Vycm5vLmgiIDMgNAojIDEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4t
QVJNSEYvdXNyL2luY2x1ZGUvbGludXgvZXJybm8uaCIgMSAzIDQKCgoKIyAxICIvbW50L3N0b3Jl
L2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVl
YWJpaGYvYXNtL2Vycm5vLmgiIDEgMyA0CiMgMSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1w
YW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby5oIiAxIDMgNAoKCgoj
IDEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUv
YXNtLWdlbmVyaWMvZXJybm8tYmFzZS5oIiAxIDMgNAojIDUgIi9tbnQvc3RvcmUvY2hyb290cy91
YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvZXJybm8uaCIgMiAz
IDQKIyAxICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNs
dWRlL2FybS1saW51eC1nbnVlYWJpaGYvYXNtL2Vycm5vLmgiIDIgMyA0CiMgNSAiL21udC9zdG9y
ZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9saW51eC9lcnJuby5o
IiAyIDMgNAojIDI2ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vz
ci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy9lcnJuby5oIiAyIDMgNAojIDQ3ICIv
bW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL2FybS1s
aW51eC1nbnVlYWJpaGYvYml0cy9lcnJuby5oIiAzIDQKZXh0ZXJuIGludCAqX19lcnJub19sb2Nh
dGlvbiAodm9pZCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDM3ICIv
bW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL2Vycm5v
LmgiIDIgMyA0CiMgNTUgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYv
dXNyL2luY2x1ZGUvZXJybm8uaCIgMyA0CmV4dGVybiBjaGFyICpwcm9ncmFtX2ludm9jYXRpb25f
bmFtZSwgKnByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lOwoKCgp9CiMgNjkgIi9tbnQvc3Rv
cmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvZXJybm8uaCIgMyA0
CnR5cGVkZWYgaW50IGVycm9yX3Q7CiMgNDIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9jZXJybm8iIDIgMwojIDQ1ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvZXh0L3N0cmluZ19jb252ZXJzaW9ucy5oIiAy
IDMKCm5hbWVzcGFjZSBfX2dudV9jeHggX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgi
ZGVmYXVsdCIpKSkKewoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UUmV0LCB0eXBlbmFtZSBfUmV0
ID0gX1RSZXQsIHR5cGVuYW1lIF9DaGFyVCwKICAgIHR5cGVuYW1lLi4uIF9CYXNlPgogICAgX1Jl
dAogICAgX19zdG9hKF9UUmV0ICgqX19jb252ZikgKGNvbnN0IF9DaGFyVCosIF9DaGFyVCoqLCBf
QmFzZS4uLiksCiAgICBjb25zdCBjaGFyKiBfX25hbWUsIGNvbnN0IF9DaGFyVCogX19zdHIsIHN0
ZDo6c2l6ZV90KiBfX2lkeCwKICAgIF9CYXNlLi4uIF9fYmFzZSkKICAgIHsKICAgICAgX1JldCBf
X3JldDsKCiAgICAgIF9DaGFyVCogX19lbmRwdHI7CiAgICAgICgqX19lcnJub19sb2NhdGlvbiAo
KSkgPSAwOwogICAgICBjb25zdCBfVFJldCBfX3RtcCA9IF9fY29udmYoX19zdHIsICZfX2VuZHB0
ciwgX19iYXNlLi4uKTsKCiAgICAgIGlmIChfX2VuZHB0ciA9PSBfX3N0cikKIHN0ZDo6X190aHJv
d19pbnZhbGlkX2FyZ3VtZW50KF9fbmFtZSk7CiAgICAgIGVsc2UgaWYgKCgqX19lcnJub19sb2Nh
dGlvbiAoKSkgPT0gMzQKICAgICAgICB8fCAoc3RkOjpfX2FyZV9zYW1lPF9SZXQsIGludD46Ol9f
dmFsdWUKICAgICAmJiAoX190bXAgPCBfX251bWVyaWNfdHJhaXRzPGludD46Ol9fbWluCiAgICAg
ICAgIHx8IF9fdG1wID4gX19udW1lcmljX3RyYWl0czxpbnQ+OjpfX21heCkpKQogc3RkOjpfX3Ro
cm93X291dF9vZl9yYW5nZShfX25hbWUpOwogICAgICBlbHNlCiBfX3JldCA9IF9fdG1wOwoKICAg
ICAgaWYgKF9faWR4KQogKl9faWR4ID0gX19lbmRwdHIgLSBfX3N0cjsKCiAgICAgIHJldHVybiBf
X3JldDsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9TdHJpbmcsIHR5cGVuYW1lIF9DaGFy
VCA9IHR5cGVuYW1lIF9TdHJpbmc6OnZhbHVlX3R5cGU+CiAgICBfU3RyaW5nCiAgICBfX3RvX3hz
dHJpbmcoaW50ICgqX19jb252ZikgKF9DaGFyVCosIHN0ZDo6c2l6ZV90LCBjb25zdCBfQ2hhclQq
LAogICAgIF9fYnVpbHRpbl92YV9saXN0KSwgc3RkOjpzaXplX3QgX19uLAogICBjb25zdCBfQ2hh
clQqIF9fZm10LCAuLi4pCiAgICB7CgoKICAgICAgX0NoYXJUKiBfX3MgPSBzdGF0aWNfY2FzdDxf
Q2hhclQqPihfX2J1aWx0aW5fYWxsb2NhKHNpemVvZihfQ2hhclQpCiAgICAgICAgICogX19uKSk7
CgogICAgICBfX2J1aWx0aW5fdmFfbGlzdCBfX2FyZ3M7CiAgICAgIF9fYnVpbHRpbl92YV9zdGFy
dChfX2FyZ3MsIF9fZm10KTsKCiAgICAgIGNvbnN0IGludCBfX2xlbiA9IF9fY29udmYoX19zLCBf
X24sIF9fZm10LCBfX2FyZ3MpOwoKICAgICAgX19idWlsdGluX3ZhX2VuZChfX2FyZ3MpOwoKICAg
ICAgcmV0dXJuIF9TdHJpbmcoX19zLCBfX3MgKyBfX2xlbik7CiAgICB9CgoKfQojIDI4MTYgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2Jhc2lj
X3N0cmluZy5oIiAyIDMKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0
eV9fICgiZGVmYXVsdCIpKSkKewoKCgogIGlubGluZSBpbnQKICBzdG9pKGNvbnN0IHN0cmluZyYg
X19zdHIsIHNpemVfdCogX19pZHggPSAwLCBpbnQgX19iYXNlID0gMTApCiAgeyByZXR1cm4gX19n
bnVfY3h4OjpfX3N0b2E8bG9uZywgaW50Pigmc3RkOjpzdHJ0b2wsICJzdG9pIiwgX19zdHIuY19z
dHIoKSwKICAgICBfX2lkeCwgX19iYXNlKTsgfQoKICBpbmxpbmUgbG9uZwogIHN0b2woY29uc3Qg
c3RyaW5nJiBfX3N0ciwgc2l6ZV90KiBfX2lkeCA9IDAsIGludCBfX2Jhc2UgPSAxMCkKICB7IHJl
dHVybiBfX2dudV9jeHg6Ol9fc3RvYSgmc3RkOjpzdHJ0b2wsICJzdG9sIiwgX19zdHIuY19zdHIo
KSwKICAgICAgICBfX2lkeCwgX19iYXNlKTsgfQoKICBpbmxpbmUgdW5zaWduZWQgbG9uZwogIHN0
b3VsKGNvbnN0IHN0cmluZyYgX19zdHIsIHNpemVfdCogX19pZHggPSAwLCBpbnQgX19iYXNlID0g
MTApCiAgeyByZXR1cm4gX19nbnVfY3h4OjpfX3N0b2EoJnN0ZDo6c3RydG91bCwgInN0b3VsIiwg
X19zdHIuY19zdHIoKSwKICAgICAgICBfX2lkeCwgX19iYXNlKTsgfQoKICBpbmxpbmUgbG9uZyBs
b25nCiAgc3RvbGwoY29uc3Qgc3RyaW5nJiBfX3N0ciwgc2l6ZV90KiBfX2lkeCA9IDAsIGludCBf
X2Jhc2UgPSAxMCkKICB7IHJldHVybiBfX2dudV9jeHg6Ol9fc3RvYSgmc3RkOjpzdHJ0b2xsLCAi
c3RvbGwiLCBfX3N0ci5jX3N0cigpLAogICAgICAgIF9faWR4LCBfX2Jhc2UpOyB9CgogIGlubGlu
ZSB1bnNpZ25lZCBsb25nIGxvbmcKICBzdG91bGwoY29uc3Qgc3RyaW5nJiBfX3N0ciwgc2l6ZV90
KiBfX2lkeCA9IDAsIGludCBfX2Jhc2UgPSAxMCkKICB7IHJldHVybiBfX2dudV9jeHg6Ol9fc3Rv
YSgmc3RkOjpzdHJ0b3VsbCwgInN0b3VsbCIsIF9fc3RyLmNfc3RyKCksCiAgICAgICAgX19pZHgs
IF9fYmFzZSk7IH0KCgogIGlubGluZSBmbG9hdAogIHN0b2YoY29uc3Qgc3RyaW5nJiBfX3N0ciwg
c2l6ZV90KiBfX2lkeCA9IDApCiAgeyByZXR1cm4gX19nbnVfY3h4OjpfX3N0b2EoJnN0ZDo6c3Ry
dG9mLCAic3RvZiIsIF9fc3RyLmNfc3RyKCksIF9faWR4KTsgfQoKICBpbmxpbmUgZG91YmxlCiAg
c3RvZChjb25zdCBzdHJpbmcmIF9fc3RyLCBzaXplX3QqIF9faWR4ID0gMCkKICB7IHJldHVybiBf
X2dudV9jeHg6Ol9fc3RvYSgmc3RkOjpzdHJ0b2QsICJzdG9kIiwgX19zdHIuY19zdHIoKSwgX19p
ZHgpOyB9CgogIGlubGluZSBsb25nIGRvdWJsZQogIHN0b2xkKGNvbnN0IHN0cmluZyYgX19zdHIs
IHNpemVfdCogX19pZHggPSAwKQogIHsgcmV0dXJuIF9fZ251X2N4eDo6X19zdG9hKCZzdGQ6OnN0
cnRvbGQsICJzdG9sZCIsIF9fc3RyLmNfc3RyKCksIF9faWR4KTsgfQoKCgoKICBpbmxpbmUgc3Ry
aW5nCiAgdG9fc3RyaW5nKGludCBfX3ZhbCkKICB7IHJldHVybiBfX2dudV9jeHg6Ol9fdG9feHN0
cmluZzxzdHJpbmc+KCZzdGQ6OnZzbnByaW50ZiwgNCAqIHNpemVvZihpbnQpLAogICAgICAgICIl
ZCIsIF9fdmFsKTsgfQoKICBpbmxpbmUgc3RyaW5nCiAgdG9fc3RyaW5nKHVuc2lnbmVkIF9fdmFs
KQogIHsgcmV0dXJuIF9fZ251X2N4eDo6X190b194c3RyaW5nPHN0cmluZz4oJnN0ZDo6dnNucHJp
bnRmLAogICAgICAgIDQgKiBzaXplb2YodW5zaWduZWQpLAogICAgICAgICIldSIsIF9fdmFsKTsg
fQoKICBpbmxpbmUgc3RyaW5nCiAgdG9fc3RyaW5nKGxvbmcgX192YWwpCiAgeyByZXR1cm4gX19n
bnVfY3h4OjpfX3RvX3hzdHJpbmc8c3RyaW5nPigmc3RkOjp2c25wcmludGYsIDQgKiBzaXplb2Yo
bG9uZyksCiAgICAgICAgIiVsZCIsIF9fdmFsKTsgfQoKICBpbmxpbmUgc3RyaW5nCiAgdG9fc3Ry
aW5nKHVuc2lnbmVkIGxvbmcgX192YWwpCiAgeyByZXR1cm4gX19nbnVfY3h4OjpfX3RvX3hzdHJp
bmc8c3RyaW5nPigmc3RkOjp2c25wcmludGYsCiAgICAgICAgNCAqIHNpemVvZih1bnNpZ25lZCBs
b25nKSwKICAgICAgICAiJWx1IiwgX192YWwpOyB9CgogIGlubGluZSBzdHJpbmcKICB0b19zdHJp
bmcobG9uZyBsb25nIF9fdmFsKQogIHsgcmV0dXJuIF9fZ251X2N4eDo6X190b194c3RyaW5nPHN0
cmluZz4oJnN0ZDo6dnNucHJpbnRmLAogICAgICAgIDQgKiBzaXplb2YobG9uZyBsb25nKSwKICAg
ICAgICAiJWxsZCIsIF9fdmFsKTsgfQoKICBpbmxpbmUgc3RyaW5nCiAgdG9fc3RyaW5nKHVuc2ln
bmVkIGxvbmcgbG9uZyBfX3ZhbCkKICB7IHJldHVybiBfX2dudV9jeHg6Ol9fdG9feHN0cmluZzxz
dHJpbmc+KCZzdGQ6OnZzbnByaW50ZiwKICAgICAgICA0ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcg
bG9uZyksCiAgICAgICAgIiVsbHUiLCBfX3ZhbCk7IH0KCiAgaW5saW5lIHN0cmluZwogIHRvX3N0
cmluZyhmbG9hdCBfX3ZhbCkKICB7CiAgICBjb25zdCBpbnQgX19uID0KICAgICAgX19nbnVfY3h4
OjpfX251bWVyaWNfdHJhaXRzPGZsb2F0Pjo6X19tYXhfZXhwb25lbnQxMCArIDIwOwogICAgcmV0
dXJuIF9fZ251X2N4eDo6X190b194c3RyaW5nPHN0cmluZz4oJnN0ZDo6dnNucHJpbnRmLCBfX24s
CiAgICAgICAgIiVmIiwgX192YWwpOwogIH0KCiAgaW5saW5lIHN0cmluZwogIHRvX3N0cmluZyhk
b3VibGUgX192YWwpCiAgewogICAgY29uc3QgaW50IF9fbiA9CiAgICAgIF9fZ251X2N4eDo6X19u
dW1lcmljX3RyYWl0czxkb3VibGU+OjpfX21heF9leHBvbmVudDEwICsgMjA7CiAgICByZXR1cm4g
X19nbnVfY3h4OjpfX3RvX3hzdHJpbmc8c3RyaW5nPigmc3RkOjp2c25wcmludGYsIF9fbiwKICAg
ICAgICAiJWYiLCBfX3ZhbCk7CiAgfQoKICBpbmxpbmUgc3RyaW5nCiAgdG9fc3RyaW5nKGxvbmcg
ZG91YmxlIF9fdmFsKQogIHsKICAgIGNvbnN0IGludCBfX24gPQogICAgICBfX2dudV9jeHg6Ol9f
bnVtZXJpY190cmFpdHM8bG9uZyBkb3VibGU+OjpfX21heF9leHBvbmVudDEwICsgMjA7CiAgICBy
ZXR1cm4gX19nbnVfY3h4OjpfX3RvX3hzdHJpbmc8c3RyaW5nPigmc3RkOjp2c25wcmludGYsIF9f
biwKICAgICAgICAiJUxmIiwgX192YWwpOwogIH0KCgogIGlubGluZSBpbnQKICBzdG9pKGNvbnN0
IHdzdHJpbmcmIF9fc3RyLCBzaXplX3QqIF9faWR4ID0gMCwgaW50IF9fYmFzZSA9IDEwKQogIHsg
cmV0dXJuIF9fZ251X2N4eDo6X19zdG9hPGxvbmcsIGludD4oJnN0ZDo6d2NzdG9sLCAic3RvaSIs
IF9fc3RyLmNfc3RyKCksCiAgICAgX19pZHgsIF9fYmFzZSk7IH0KCiAgaW5saW5lIGxvbmcKICBz
dG9sKGNvbnN0IHdzdHJpbmcmIF9fc3RyLCBzaXplX3QqIF9faWR4ID0gMCwgaW50IF9fYmFzZSA9
IDEwKQogIHsgcmV0dXJuIF9fZ251X2N4eDo6X19zdG9hKCZzdGQ6Ondjc3RvbCwgInN0b2wiLCBf
X3N0ci5jX3N0cigpLAogICAgICAgIF9faWR4LCBfX2Jhc2UpOyB9CgogIGlubGluZSB1bnNpZ25l
ZCBsb25nCiAgc3RvdWwoY29uc3Qgd3N0cmluZyYgX19zdHIsIHNpemVfdCogX19pZHggPSAwLCBp
bnQgX19iYXNlID0gMTApCiAgeyByZXR1cm4gX19nbnVfY3h4OjpfX3N0b2EoJnN0ZDo6d2NzdG91
bCwgInN0b3VsIiwgX19zdHIuY19zdHIoKSwKICAgICAgICBfX2lkeCwgX19iYXNlKTsgfQoKICBp
bmxpbmUgbG9uZyBsb25nCiAgc3RvbGwoY29uc3Qgd3N0cmluZyYgX19zdHIsIHNpemVfdCogX19p
ZHggPSAwLCBpbnQgX19iYXNlID0gMTApCiAgeyByZXR1cm4gX19nbnVfY3h4OjpfX3N0b2EoJnN0
ZDo6d2NzdG9sbCwgInN0b2xsIiwgX19zdHIuY19zdHIoKSwKICAgICAgICBfX2lkeCwgX19iYXNl
KTsgfQoKICBpbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nCiAgc3RvdWxsKGNvbnN0IHdzdHJpbmcm
IF9fc3RyLCBzaXplX3QqIF9faWR4ID0gMCwgaW50IF9fYmFzZSA9IDEwKQogIHsgcmV0dXJuIF9f
Z251X2N4eDo6X19zdG9hKCZzdGQ6Ondjc3RvdWxsLCAic3RvdWxsIiwgX19zdHIuY19zdHIoKSwK
ICAgICAgICBfX2lkeCwgX19iYXNlKTsgfQoKCiAgaW5saW5lIGZsb2F0CiAgc3RvZihjb25zdCB3
c3RyaW5nJiBfX3N0ciwgc2l6ZV90KiBfX2lkeCA9IDApCiAgeyByZXR1cm4gX19nbnVfY3h4Ojpf
X3N0b2EoJnN0ZDo6d2NzdG9mLCAic3RvZiIsIF9fc3RyLmNfc3RyKCksIF9faWR4KTsgfQoKICBp
bmxpbmUgZG91YmxlCiAgc3RvZChjb25zdCB3c3RyaW5nJiBfX3N0ciwgc2l6ZV90KiBfX2lkeCA9
IDApCiAgeyByZXR1cm4gX19nbnVfY3h4OjpfX3N0b2EoJnN0ZDo6d2NzdG9kLCAic3RvZCIsIF9f
c3RyLmNfc3RyKCksIF9faWR4KTsgfQoKICBpbmxpbmUgbG9uZyBkb3VibGUKICBzdG9sZChjb25z
dCB3c3RyaW5nJiBfX3N0ciwgc2l6ZV90KiBfX2lkeCA9IDApCiAgeyByZXR1cm4gX19nbnVfY3h4
OjpfX3N0b2EoJnN0ZDo6d2NzdG9sZCwgInN0b2xkIiwgX19zdHIuY19zdHIoKSwgX19pZHgpOyB9
CgoKICBpbmxpbmUgd3N0cmluZwogIHRvX3dzdHJpbmcoaW50IF9fdmFsKQogIHsgcmV0dXJuIF9f
Z251X2N4eDo6X190b194c3RyaW5nPHdzdHJpbmc+KCZzdGQ6OnZzd3ByaW50ZiwgNCAqIHNpemVv
ZihpbnQpLAogICAgICAgICBMIiVkIiwgX192YWwpOyB9CgogIGlubGluZSB3c3RyaW5nCiAgdG9f
d3N0cmluZyh1bnNpZ25lZCBfX3ZhbCkKICB7IHJldHVybiBfX2dudV9jeHg6Ol9fdG9feHN0cmlu
Zzx3c3RyaW5nPigmc3RkOjp2c3dwcmludGYsCiAgICAgICAgIDQgKiBzaXplb2YodW5zaWduZWQp
LAogICAgICAgICBMIiV1IiwgX192YWwpOyB9CgogIGlubGluZSB3c3RyaW5nCiAgdG9fd3N0cmlu
Zyhsb25nIF9fdmFsKQogIHsgcmV0dXJuIF9fZ251X2N4eDo6X190b194c3RyaW5nPHdzdHJpbmc+
KCZzdGQ6OnZzd3ByaW50ZiwgNCAqIHNpemVvZihsb25nKSwKICAgICAgICAgTCIlbGQiLCBfX3Zh
bCk7IH0KCiAgaW5saW5lIHdzdHJpbmcKICB0b193c3RyaW5nKHVuc2lnbmVkIGxvbmcgX192YWwp
CiAgeyByZXR1cm4gX19nbnVfY3h4OjpfX3RvX3hzdHJpbmc8d3N0cmluZz4oJnN0ZDo6dnN3cHJp
bnRmLAogICAgICAgICA0ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpLAogICAgICAgICBMIiVsdSIs
IF9fdmFsKTsgfQoKICBpbmxpbmUgd3N0cmluZwogIHRvX3dzdHJpbmcobG9uZyBsb25nIF9fdmFs
KQogIHsgcmV0dXJuIF9fZ251X2N4eDo6X190b194c3RyaW5nPHdzdHJpbmc+KCZzdGQ6OnZzd3By
aW50ZiwKICAgICAgICAgNCAqIHNpemVvZihsb25nIGxvbmcpLAogICAgICAgICBMIiVsbGQiLCBf
X3ZhbCk7IH0KCiAgaW5saW5lIHdzdHJpbmcKICB0b193c3RyaW5nKHVuc2lnbmVkIGxvbmcgbG9u
ZyBfX3ZhbCkKICB7IHJldHVybiBfX2dudV9jeHg6Ol9fdG9feHN0cmluZzx3c3RyaW5nPigmc3Rk
Ojp2c3dwcmludGYsCiAgICAgICAgIDQgKiBzaXplb2YodW5zaWduZWQgbG9uZyBsb25nKSwKICAg
ICAgICAgTCIlbGx1IiwgX192YWwpOyB9CgogIGlubGluZSB3c3RyaW5nCiAgdG9fd3N0cmluZyhm
bG9hdCBfX3ZhbCkKICB7CiAgICBjb25zdCBpbnQgX19uID0KICAgICAgX19nbnVfY3h4OjpfX251
bWVyaWNfdHJhaXRzPGZsb2F0Pjo6X19tYXhfZXhwb25lbnQxMCArIDIwOwogICAgcmV0dXJuIF9f
Z251X2N4eDo6X190b194c3RyaW5nPHdzdHJpbmc+KCZzdGQ6OnZzd3ByaW50ZiwgX19uLAogICAg
ICAgICBMIiVmIiwgX192YWwpOwogIH0KCiAgaW5saW5lIHdzdHJpbmcKICB0b193c3RyaW5nKGRv
dWJsZSBfX3ZhbCkKICB7CiAgICBjb25zdCBpbnQgX19uID0KICAgICAgX19nbnVfY3h4OjpfX251
bWVyaWNfdHJhaXRzPGRvdWJsZT46Ol9fbWF4X2V4cG9uZW50MTAgKyAyMDsKICAgIHJldHVybiBf
X2dudV9jeHg6Ol9fdG9feHN0cmluZzx3c3RyaW5nPigmc3RkOjp2c3dwcmludGYsIF9fbiwKICAg
ICAgICAgTCIlZiIsIF9fdmFsKTsKICB9CgogIGlubGluZSB3c3RyaW5nCiAgdG9fd3N0cmluZyhs
b25nIGRvdWJsZSBfX3ZhbCkKICB7CiAgICBjb25zdCBpbnQgX19uID0KICAgICAgX19nbnVfY3h4
OjpfX251bWVyaWNfdHJhaXRzPGxvbmcgZG91YmxlPjo6X19tYXhfZXhwb25lbnQxMCArIDIwOwog
ICAgcmV0dXJuIF9fZ251X2N4eDo6X190b194c3RyaW5nPHdzdHJpbmc+KCZzdGQ6OnZzd3ByaW50
ZiwgX19uLAogICAgICAgICBMIiVMZiIsIF9fdmFsKTsKICB9CgoKCn0KCgoKCgojIDEgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4x
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2Z1bmN0aW9u
YWxfaGFzaC5oIiAxIDMKIyAzMyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOC4xL2JpdHMvZnVuY3Rpb25hbF9oYXNoLmgiIDMKICAgICAgIAojIDM0ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljgu
MS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9mdW5jdGlv
bmFsX2hhc2guaCIgMwoKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxp
dHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgNDkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2Z1bmN0aW9uYWxfaGFzaC5oIiAzCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1Jlc3VsdCwgdHlwZW5hbWUgX0FyZz4KICAgIHN0cnVjdCBfX2hhc2hfYmFzZQog
ICAgewogICAgICB0eXBlZGVmIF9SZXN1bHQgcmVzdWx0X3R5cGU7CiAgICAgIHR5cGVkZWYgX0Fy
ZyBhcmd1bWVudF90eXBlOwogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0
cnVjdCBoYXNoOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGhhc2g8X1Rw
Kj4gOiBwdWJsaWMgX19oYXNoX2Jhc2U8c2l6ZV90LCBfVHAqPgogICAgewogICAgICBzaXplX3QK
ICAgICAgb3BlcmF0b3IoKShfVHAqIF9fcCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KF9fcCk7IH0KICAgIH07CiMgODAgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2Z1bmN0aW9uYWxfaGFz
aC5oIiAzCiAgdGVtcGxhdGU8PiBzdHJ1Y3QgaGFzaDxib29sPiA6IHB1YmxpYyBfX2hhc2hfYmFz
ZTxzaXplX3QsIGJvb2w+IHsgc2l6ZV90IG9wZXJhdG9yKCkoYm9vbCBfX3ZhbCkgY29uc3Qgbm9l
eGNlcHQgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihfX3ZhbCk7IH0gfTsKCgogIHRlbXBs
YXRlPD4gc3RydWN0IGhhc2g8Y2hhcj4gOiBwdWJsaWMgX19oYXNoX2Jhc2U8c2l6ZV90LCBjaGFy
PiB7IHNpemVfdCBvcGVyYXRvcigpKGNoYXIgX192YWwpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PHNpemVfdD4oX192YWwpOyB9IH07CgoKICB0ZW1wbGF0ZTw+IHN0cnVjdCBo
YXNoPHNpZ25lZCBjaGFyPiA6IHB1YmxpYyBfX2hhc2hfYmFzZTxzaXplX3QsIHNpZ25lZCBjaGFy
PiB7IHNpemVfdCBvcGVyYXRvcigpKHNpZ25lZCBjaGFyIF9fdmFsKSBjb25zdCBub2V4Y2VwdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KF9fdmFsKTsgfSB9OwoKCiAgdGVtcGxhdGU8PiBz
dHJ1Y3QgaGFzaDx1bnNpZ25lZCBjaGFyPiA6IHB1YmxpYyBfX2hhc2hfYmFzZTxzaXplX3QsIHVu
c2lnbmVkIGNoYXI+IHsgc2l6ZV90IG9wZXJhdG9yKCkodW5zaWduZWQgY2hhciBfX3ZhbCkgY29u
c3Qgbm9leGNlcHQgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihfX3ZhbCk7IH0gfTsKCgog
IHRlbXBsYXRlPD4gc3RydWN0IGhhc2g8d2NoYXJfdD4gOiBwdWJsaWMgX19oYXNoX2Jhc2U8c2l6
ZV90LCB3Y2hhcl90PiB7IHNpemVfdCBvcGVyYXRvcigpKHdjaGFyX3QgX192YWwpIGNvbnN0IG5v
ZXhjZXB0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oX192YWwpOyB9IH07CgoKICB0ZW1w
bGF0ZTw+IHN0cnVjdCBoYXNoPGNoYXIxNl90PiA6IHB1YmxpYyBfX2hhc2hfYmFzZTxzaXplX3Qs
IGNoYXIxNl90PiB7IHNpemVfdCBvcGVyYXRvcigpKGNoYXIxNl90IF9fdmFsKSBjb25zdCBub2V4
Y2VwdCB7IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KF9fdmFsKTsgfSB9OwoKCiAgdGVtcGxh
dGU8PiBzdHJ1Y3QgaGFzaDxjaGFyMzJfdD4gOiBwdWJsaWMgX19oYXNoX2Jhc2U8c2l6ZV90LCBj
aGFyMzJfdD4geyBzaXplX3Qgb3BlcmF0b3IoKShjaGFyMzJfdCBfX3ZhbCkgY29uc3Qgbm9leGNl
cHQgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihfX3ZhbCk7IH0gfTsKCgogIHRlbXBsYXRl
PD4gc3RydWN0IGhhc2g8c2hvcnQ+IDogcHVibGljIF9faGFzaF9iYXNlPHNpemVfdCwgc2hvcnQ+
IHsgc2l6ZV90IG9wZXJhdG9yKCkoc2hvcnQgX192YWwpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PHNpemVfdD4oX192YWwpOyB9IH07CgoKICB0ZW1wbGF0ZTw+IHN0cnVjdCBo
YXNoPGludD4gOiBwdWJsaWMgX19oYXNoX2Jhc2U8c2l6ZV90LCBpbnQ+IHsgc2l6ZV90IG9wZXJh
dG9yKCkoaW50IF9fdmFsKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBzdGF0aWNfY2FzdDxzaXpl
X3Q+KF9fdmFsKTsgfSB9OwoKCiAgdGVtcGxhdGU8PiBzdHJ1Y3QgaGFzaDxsb25nPiA6IHB1Ymxp
YyBfX2hhc2hfYmFzZTxzaXplX3QsIGxvbmc+IHsgc2l6ZV90IG9wZXJhdG9yKCkobG9uZyBfX3Zh
bCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihfX3ZhbCk7IH0g
fTsKCgogIHRlbXBsYXRlPD4gc3RydWN0IGhhc2g8bG9uZyBsb25nPiA6IHB1YmxpYyBfX2hhc2hf
YmFzZTxzaXplX3QsIGxvbmcgbG9uZz4geyBzaXplX3Qgb3BlcmF0b3IoKShsb25nIGxvbmcgX192
YWwpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oX192YWwpOyB9
IH07CgoKICB0ZW1wbGF0ZTw+IHN0cnVjdCBoYXNoPHVuc2lnbmVkIHNob3J0PiA6IHB1YmxpYyBf
X2hhc2hfYmFzZTxzaXplX3QsIHVuc2lnbmVkIHNob3J0PiB7IHNpemVfdCBvcGVyYXRvcigpKHVu
c2lnbmVkIHNob3J0IF9fdmFsKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBzdGF0aWNfY2FzdDxz
aXplX3Q+KF9fdmFsKTsgfSB9OwoKCiAgdGVtcGxhdGU8PiBzdHJ1Y3QgaGFzaDx1bnNpZ25lZCBp
bnQ+IDogcHVibGljIF9faGFzaF9iYXNlPHNpemVfdCwgdW5zaWduZWQgaW50PiB7IHNpemVfdCBv
cGVyYXRvcigpKHVuc2lnbmVkIGludCBfX3ZhbCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihfX3ZhbCk7IH0gfTsKCgogIHRlbXBsYXRlPD4gc3RydWN0IGhhc2g8
dW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgX19oYXNoX2Jhc2U8c2l6ZV90LCB1bnNpZ25lZCBsb25n
PiB7IHNpemVfdCBvcGVyYXRvcigpKHVuc2lnbmVkIGxvbmcgX192YWwpIGNvbnN0IG5vZXhjZXB0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oX192YWwpOyB9IH07CgoKICB0ZW1wbGF0ZTw+
IHN0cnVjdCBoYXNoPHVuc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgX19oYXNoX2Jhc2U8c2l6
ZV90LCB1bnNpZ25lZCBsb25nIGxvbmc+IHsgc2l6ZV90IG9wZXJhdG9yKCkodW5zaWduZWQgbG9u
ZyBsb25nIF9fdmFsKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+
KF9fdmFsKTsgfSB9OwoKCgogIHN0cnVjdCBfSGFzaF9pbXBsCiAgewogICAgc3RhdGljIHNpemVf
dAogICAgaGFzaChjb25zdCB2b2lkKiBfX3B0ciwgc2l6ZV90IF9fY2xlbmd0aCwKICBzaXplX3Qg
X19zZWVkID0gc3RhdGljX2Nhc3Q8c2l6ZV90PigweGM3MGY2OTA3VUwpKQogICAgeyByZXR1cm4g
X0hhc2hfYnl0ZXMoX19wdHIsIF9fY2xlbmd0aCwgX19zZWVkKTsgfQoKICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICAgICAgc3RhdGljIHNpemVfdAogICAgICBoYXNoKGNvbnN0IF9UcCYgX192
YWwpCiAgICAgIHsgcmV0dXJuIGhhc2goJl9fdmFsLCBzaXplb2YoX192YWwpKTsgfQoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgICAgc3RhdGljIHNpemVfdAogICAgICBfX2hhc2hfY29t
YmluZShjb25zdCBfVHAmIF9fdmFsLCBzaXplX3QgX19oYXNoKQogICAgICB7IHJldHVybiBoYXNo
KCZfX3ZhbCwgc2l6ZW9mKF9fdmFsKSwgX19oYXNoKTsgfQogIH07CgogIHN0cnVjdCBfRm52X2hh
c2hfaW1wbAogIHsKICAgIHN0YXRpYyBzaXplX3QKICAgIGhhc2goY29uc3Qgdm9pZCogX19wdHIs
IHNpemVfdCBfX2NsZW5ndGgsCiAgc2l6ZV90IF9fc2VlZCA9IHN0YXRpY19jYXN0PHNpemVfdD4o
MjE2NjEzNjI2MVVMKSkKICAgIHsgcmV0dXJuIF9GbnZfaGFzaF9ieXRlcyhfX3B0ciwgX19jbGVu
Z3RoLCBfX3NlZWQpOyB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgICBzdGF0aWMg
c2l6ZV90CiAgICAgIGhhc2goY29uc3QgX1RwJiBfX3ZhbCkKICAgICAgeyByZXR1cm4gaGFzaCgm
X192YWwsIHNpemVvZihfX3ZhbCkpOyB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAg
ICBzdGF0aWMgc2l6ZV90CiAgICAgIF9faGFzaF9jb21iaW5lKGNvbnN0IF9UcCYgX192YWwsIHNp
emVfdCBfX2hhc2gpCiAgICAgIHsgcmV0dXJuIGhhc2goJl9fdmFsLCBzaXplb2YoX192YWwpLCBf
X2hhc2gpOyB9CiAgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBoYXNoPGZsb2F0PiA6IHB1
YmxpYyBfX2hhc2hfYmFzZTxzaXplX3QsIGZsb2F0PgogICAgewogICAgICBzaXplX3QKICAgICAg
b3BlcmF0b3IoKShmbG9hdCBfX3ZhbCkgY29uc3Qgbm9leGNlcHQKICAgICAgewoKIHJldHVybiBf
X3ZhbCAhPSAwLjBmID8gc3RkOjpfSGFzaF9pbXBsOjpoYXNoKF9fdmFsKSA6IDA7CiAgICAgIH0K
ICAgIH07CgoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgaGFzaDxkb3VibGU+IDogcHVibGljIF9f
aGFzaF9iYXNlPHNpemVfdCwgZG91YmxlPgogICAgewogICAgICBzaXplX3QKICAgICAgb3BlcmF0
b3IoKShkb3VibGUgX192YWwpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsKCiByZXR1cm4gX192YWwg
IT0gMC4wID8gc3RkOjpfSGFzaF9pbXBsOjpoYXNoKF9fdmFsKSA6IDA7CiAgICAgIH0KICAgIH07
CgoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgaGFzaDxsb25nIGRvdWJsZT4KICAgIDogcHVibGlj
IF9faGFzaF9iYXNlPHNpemVfdCwgbG9uZyBkb3VibGU+CiAgICB7CiAgICAgIF9fYXR0cmlidXRl
X18gKChfX3B1cmVfXykpIHNpemVfdAogICAgICBvcGVyYXRvcigpKGxvbmcgZG91YmxlIF9fdmFs
KSBjb25zdCBub2V4Y2VwdDsKICAgIH07CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9IYXNo
PgogICAgc3RydWN0IF9faXNfZmFzdF9oYXNoIDogcHVibGljIHN0ZDo6dHJ1ZV90eXBlCiAgICB7
IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2Zhc3RfaGFzaDxoYXNoPGxvbmcgZG91
YmxlPj4gOiBwdWJsaWMgc3RkOjpmYWxzZV90eXBlCiAgICB7IH07CgoKfQojIDMwMzQgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4x
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2Jhc2ljX3N0
cmluZy5oIiAyIDMKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9f
ICgiZGVmYXVsdCIpKSkKewoKCgoKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBoYXNoPHN0cmlu
Zz4KICAgIDogcHVibGljIF9faGFzaF9iYXNlPHNpemVfdCwgc3RyaW5nPgogICAgewogICAgICBz
aXplX3QKICAgICAgb3BlcmF0b3IoKShjb25zdCBzdHJpbmcmIF9fcykgY29uc3Qgbm9leGNlcHQK
ICAgICAgeyByZXR1cm4gc3RkOjpfSGFzaF9pbXBsOjpoYXNoKF9fcy5kYXRhKCksIF9fcy5sZW5n
dGgoKSk7IH0KICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2Zhc3RfaGFzaDxo
YXNoPHN0cmluZz4+IDogc3RkOjpmYWxzZV90eXBlCiAgICB7IH07CgoKCiAgdGVtcGxhdGU8Pgog
ICAgc3RydWN0IGhhc2g8d3N0cmluZz4KICAgIDogcHVibGljIF9faGFzaF9iYXNlPHNpemVfdCwg
d3N0cmluZz4KICAgIHsKICAgICAgc2l6ZV90CiAgICAgIG9wZXJhdG9yKCkoY29uc3Qgd3N0cmlu
ZyYgX19zKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGQ6Ol9IYXNoX2ltcGw6Omhh
c2goX19zLmRhdGEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcy5s
ZW5ndGgoKSAqIHNpemVvZih3Y2hhcl90KSk7IH0KICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0
cnVjdCBfX2lzX2Zhc3RfaGFzaDxoYXNoPHdzdHJpbmc+PiA6IHN0ZDo6ZmFsc2VfdHlwZQogICAg
eyB9OwoKCgoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IGhhc2g8dTE2c3RyaW5nPgogICAgOiBw
dWJsaWMgX19oYXNoX2Jhc2U8c2l6ZV90LCB1MTZzdHJpbmc+CiAgICB7CiAgICAgIHNpemVfdAog
ICAgICBvcGVyYXRvcigpKGNvbnN0IHUxNnN0cmluZyYgX19zKSBjb25zdCBub2V4Y2VwdAogICAg
ICB7IHJldHVybiBzdGQ6Ol9IYXNoX2ltcGw6Omhhc2goX19zLmRhdGEoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fcy5sZW5ndGgoKSAqIHNpemVvZihjaGFyMTZfdCkp
OyB9CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19mYXN0X2hhc2g8aGFzaDx1
MTZzdHJpbmc+PiA6IHN0ZDo6ZmFsc2VfdHlwZQogICAgeyB9OwoKCiAgdGVtcGxhdGU8PgogICAg
c3RydWN0IGhhc2g8dTMyc3RyaW5nPgogICAgOiBwdWJsaWMgX19oYXNoX2Jhc2U8c2l6ZV90LCB1
MzJzdHJpbmc+CiAgICB7CiAgICAgIHNpemVfdAogICAgICBvcGVyYXRvcigpKGNvbnN0IHUzMnN0
cmluZyYgX19zKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGQ6Ol9IYXNoX2ltcGw6
Omhhc2goX19zLmRhdGEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
cy5sZW5ndGgoKSAqIHNpemVvZihjaGFyMzJfdCkpOyB9CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAg
ICBzdHJ1Y3QgX19pc19mYXN0X2hhc2g8aGFzaDx1MzJzdHJpbmc+PiA6IHN0ZDo6ZmFsc2VfdHlw
ZQogICAgeyB9OwoKCgp9CiMgNTMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjguMS9zdHJpbmciIDIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2Jhc2ljX3N0cmluZy50Y2MiIDEgMwojIDQwICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9iYXNp
Y19zdHJpbmcudGNjIiAzCiAgICAgICAKIyA0MSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYmFzaWNfc3RyaW5nLnRjYyIgMwoKCgpuYW1lc3Bh
Y2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0Fs
bG9jPgogICAgY29uc3QgdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0Fs
bG9jPjo6c2l6ZV90eXBlCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+
OjoKICAgIF9SZXA6Ol9TX21heF9zaXplID0gKCgobnBvcyAtIHNpemVvZihfUmVwX2Jhc2UpKS9z
aXplb2YoX0NoYXJUKSkgLSAxKSAvIDQ7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlw
ZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgY29uc3QgX0NoYXJUCiAgICBiYXNp
Y19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIF9SZXA6Ol9TX3Rlcm1pbmFs
ID0gX0NoYXJUKCk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cywgdHlwZW5hbWUgX0FsbG9jPgogICAgY29uc3QgdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFy
VCwgX1RyYWl0cywgX0FsbG9jPjo6c2l6ZV90eXBlCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBf
VHJhaXRzLCBfQWxsb2M+OjpucG9zOwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlw
ZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgdHlwZW5hbWUgYmFzaWNfc3RyaW5n
PF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6c2l6ZV90eXBlCiAgICBiYXNpY19zdHJpbmc8X0No
YXJULCBfVHJhaXRzLCBfQWxsb2M+OjpfUmVwOjpfU19lbXB0eV9yZXBfc3RvcmFnZVsKICAgIChz
aXplb2YoX1JlcF9iYXNlKSArIHNpemVvZihfQ2hhclQpICsgc2l6ZW9mKHNpemVfdHlwZSkgLSAx
KSAvCiAgICAgIHNpemVvZihzaXplX3R5cGUpXTsKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0luSXRlcmF0b3I+CiAgICAgIF9DaGFyVCoKICAgICAgYmFzaWNfc3RyaW5nPF9DaGFy
VCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICAgIF9TX2NvbnN0cnVjdChfSW5JdGVyYXRvciBfX2Jl
ZywgX0luSXRlcmF0b3IgX19lbmQsIGNvbnN0IF9BbGxvYyYgX19hLAogICAgIGlucHV0X2l0ZXJh
dG9yX3RhZykKICAgICAgewoKIGlmIChfX2JlZyA9PSBfX2VuZCAmJiBfX2EgPT0gX0FsbG9jKCkp
CiAgIHJldHVybiBfU19lbXB0eV9yZXAoKS5fTV9yZWZkYXRhKCk7CgoKIF9DaGFyVCBfX2J1Zlsx
MjhdOwogc2l6ZV90eXBlIF9fbGVuID0gMDsKIHdoaWxlIChfX2JlZyAhPSBfX2VuZCAmJiBfX2xl
biA8IHNpemVvZihfX2J1ZikgLyBzaXplb2YoX0NoYXJUKSkKICAgewogICAgIF9fYnVmW19fbGVu
KytdID0gKl9fYmVnOwogICAgICsrX19iZWc7CiAgIH0KIF9SZXAqIF9fciA9IF9SZXA6Ol9TX2Ny
ZWF0ZShfX2xlbiwgc2l6ZV90eXBlKDApLCBfX2EpOwogX01fY29weShfX3ItPl9NX3JlZmRhdGEo
KSwgX19idWYsIF9fbGVuKTsKIGlmICh0cnVlKQogICB7CiAgICAgd2hpbGUgKF9fYmVnICE9IF9f
ZW5kKQogICAgICAgewogIGlmIChfX2xlbiA9PSBfX3ItPl9NX2NhcGFjaXR5KQogICAgewoKICAg
ICAgX1JlcCogX19hbm90aGVyID0gX1JlcDo6X1NfY3JlYXRlKF9fbGVuICsgMSwgX19sZW4sIF9f
YSk7CiAgICAgIF9NX2NvcHkoX19hbm90aGVyLT5fTV9yZWZkYXRhKCksIF9fci0+X01fcmVmZGF0
YSgpLCBfX2xlbik7CiAgICAgIF9fci0+X01fZGVzdHJveShfX2EpOwogICAgICBfX3IgPSBfX2Fu
b3RoZXI7CiAgICB9CiAgX19yLT5fTV9yZWZkYXRhKClbX19sZW4rK10gPSAqX19iZWc7CiAgKytf
X2JlZzsKICAgICAgIH0KICAgfQogaWYgKGZhbHNlKQogICB7CiAgICAgX19yLT5fTV9kZXN0cm95
KF9fYSk7CiAgICAgOwogICB9CiBfX3ItPl9NX3NldF9sZW5ndGhfYW5kX3NoYXJhYmxlKF9fbGVu
KTsKIHJldHVybiBfX3ItPl9NX3JlZmRhdGEoKTsKICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBfSW5JdGVyYXRvcj4KICAgICAgX0NoYXJUKgogICAgICBiYXNpY19zdHJpbmc8
X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgICAgX1NfY29uc3RydWN0KF9Jbkl0ZXJhdG9y
IF9fYmVnLCBfSW5JdGVyYXRvciBfX2VuZCwgY29uc3QgX0FsbG9jJiBfX2EsCiAgICAgZm9yd2Fy
ZF9pdGVyYXRvcl90YWcpCiAgICAgIHsKCiBpZiAoX19iZWcgPT0gX19lbmQgJiYgX19hID09IF9B
bGxvYygpKQogICByZXR1cm4gX1NfZW1wdHlfcmVwKCkuX01fcmVmZGF0YSgpOwoKCiBpZiAoX19n
bnVfY3h4OjpfX2lzX251bGxfcG9pbnRlcihfX2JlZykgJiYgX19iZWcgIT0gX19lbmQpCiAgIF9f
dGhyb3dfbG9naWNfZXJyb3IoKCJiYXNpY19zdHJpbmc6Ol9TX2NvbnN0cnVjdCBudWxsIG5vdCB2
YWxpZCIpKTsKCiBjb25zdCBzaXplX3R5cGUgX19kbmV3ID0gc3RhdGljX2Nhc3Q8c2l6ZV90eXBl
PihzdGQ6OmRpc3RhbmNlKF9fYmVnLAogICAgICAgICAgICAgIF9fZW5kKSk7CgogX1JlcCogX19y
ID0gX1JlcDo6X1NfY3JlYXRlKF9fZG5ldywgc2l6ZV90eXBlKDApLCBfX2EpOwogaWYgKHRydWUp
CiAgIHsgX1NfY29weV9jaGFycyhfX3ItPl9NX3JlZmRhdGEoKSwgX19iZWcsIF9fZW5kKTsgfQog
aWYgKGZhbHNlKQogICB7CiAgICAgX19yLT5fTV9kZXN0cm95KF9fYSk7CiAgICAgOwogICB9CiBf
X3ItPl9NX3NldF9sZW5ndGhfYW5kX3NoYXJhYmxlKF9fZG5ldyk7CiByZXR1cm4gX19yLT5fTV9y
ZWZkYXRhKCk7CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBfQ2hhclQqCiAgICBiYXNpY19zdHJpbmc8X0No
YXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIF9TX2NvbnN0cnVjdChzaXplX3R5cGUgX19uLCBf
Q2hhclQgX19jLCBjb25zdCBfQWxsb2MmIF9fYSkKICAgIHsKCiAgICAgIGlmIChfX24gPT0gMCAm
JiBfX2EgPT0gX0FsbG9jKCkpCiByZXR1cm4gX1NfZW1wdHlfcmVwKCkuX01fcmVmZGF0YSgpOwoK
CiAgICAgIF9SZXAqIF9fciA9IF9SZXA6Ol9TX2NyZWF0ZShfX24sIHNpemVfdHlwZSgwKSwgX19h
KTsKICAgICAgaWYgKF9fbikKIF9NX2Fzc2lnbihfX3ItPl9NX3JlZmRhdGEoKSwgX19uLCBfX2Mp
OwoKICAgICAgX19yLT5fTV9zZXRfbGVuZ3RoX2FuZF9zaGFyYWJsZShfX24pOwogICAgICByZXR1
cm4gX19yLT5fTV9yZWZkYXRhKCk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgYmFzaWNfc3RyaW5nPF9DaGFy
VCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBiYXNpY19zdHJpbmcoY29uc3QgYmFzaWNfc3RyaW5n
JiBfX3N0cikKICAgIDogX01fZGF0YXBsdXMoX19zdHIuX01fcmVwKCktPl9NX2dyYWIoX0FsbG9j
KF9fc3RyLmdldF9hbGxvY2F0b3IoKSksCiAgICAgICBfX3N0ci5nZXRfYWxsb2NhdG9yKCkpLAog
ICAgX19zdHIuZ2V0X2FsbG9jYXRvcigpKQogICAgeyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgYmFzaWNfc3RyaW5n
PF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBiYXNpY19zdHJpbmcoY29uc3QgX0FsbG9j
JiBfX2EpCiAgICA6IF9NX2RhdGFwbHVzKF9TX2NvbnN0cnVjdChzaXplX3R5cGUoKSwgX0NoYXJU
KCksIF9fYSksIF9fYSkKICAgIHsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVu
YW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9U
cmFpdHMsIF9BbGxvYz46OgogICAgYmFzaWNfc3RyaW5nKGNvbnN0IGJhc2ljX3N0cmluZyYgX19z
dHIsIHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbikKICAgIDogX01fZGF0YXBsdXMoX1Nf
Y29uc3RydWN0KF9fc3RyLl9NX2RhdGEoKQogICAgICAgICAgKyBfX3N0ci5fTV9jaGVjayhfX3Bv
cywKICAgICAgImJhc2ljX3N0cmluZzo6YmFzaWNfc3RyaW5nIiksCiAgICAgICAgICBfX3N0ci5f
TV9kYXRhKCkgKyBfX3N0ci5fTV9saW1pdChfX3BvcywgX19uKQogICAgICAgICAgKyBfX3Bvcywg
X0FsbG9jKCkpLCBfQWxsb2MoKSkKICAgIHsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs
IHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGJhc2ljX3N0cmluZzxfQ2hh
clQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgYmFzaWNfc3RyaW5nKGNvbnN0IGJhc2ljX3N0cmlu
ZyYgX19zdHIsIHNpemVfdHlwZSBfX3BvcywKICAgc2l6ZV90eXBlIF9fbiwgY29uc3QgX0FsbG9j
JiBfX2EpCiAgICA6IF9NX2RhdGFwbHVzKF9TX2NvbnN0cnVjdChfX3N0ci5fTV9kYXRhKCkKICAg
ICAgICAgICsgX19zdHIuX01fY2hlY2soX19wb3MsCiAgICAgICJiYXNpY19zdHJpbmc6OmJhc2lj
X3N0cmluZyIpLAogICAgICAgICAgX19zdHIuX01fZGF0YSgpICsgX19zdHIuX01fbGltaXQoX19w
b3MsIF9fbikKICAgICAgICAgICsgX19wb3MsIF9fYSksIF9fYSkKICAgIHsgfQoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAg
ICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIGJhc2ljX3N0cmlu
Zyhjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fbiwgY29uc3QgX0FsbG9jJiBfX2EpCiAg
ICA6IF9NX2RhdGFwbHVzKF9TX2NvbnN0cnVjdChfX3MsIF9fcyArIF9fbiwgX19hKSwgX19hKQog
ICAgeyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5
cGVuYW1lIF9BbGxvYz4KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46
OgogICAgYmFzaWNfc3RyaW5nKGNvbnN0IF9DaGFyVCogX19zLCBjb25zdCBfQWxsb2MmIF9fYSkK
ICAgIDogX01fZGF0YXBsdXMoX1NfY29uc3RydWN0KF9fcywgX19zID8gX19zICsgdHJhaXRzX3R5
cGU6Omxlbmd0aChfX3MpIDoKICAgICAgICAgIF9fcyArIG5wb3MsIF9fYSksIF9fYSkKICAgIHsg
fQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1l
IF9BbGxvYz4KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAg
YmFzaWNfc3RyaW5nKHNpemVfdHlwZSBfX24sIF9DaGFyVCBfX2MsIGNvbnN0IF9BbGxvYyYgX19h
KQogICAgOiBfTV9kYXRhcGx1cyhfU19jb25zdHJ1Y3QoX19uLCBfX2MsIF9fYSksIF9fYSkKICAg
IHsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBl
bmFtZSBfQWxsb2M+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcj4KICAgIGJh
c2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgYmFzaWNfc3RyaW5nKF9J
bnB1dEl0ZXJhdG9yIF9fYmVnLCBfSW5wdXRJdGVyYXRvciBfX2VuZCwgY29uc3QgX0FsbG9jJiBf
X2EpCiAgICA6IF9NX2RhdGFwbHVzKF9TX2NvbnN0cnVjdChfX2JlZywgX19lbmQsIF9fYSksIF9f
YSkKICAgIHsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz
LCB0eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxs
b2M+OjoKICAgIGJhc2ljX3N0cmluZyhpbml0aWFsaXplcl9saXN0PF9DaGFyVD4gX19sLCBjb25z
dCBfQWxsb2MmIF9fYSkKICAgIDogX01fZGF0YXBsdXMoX1NfY29uc3RydWN0KF9fbC5iZWdpbigp
LCBfX2wuZW5kKCksIF9fYSksIF9fYSkKICAgIHsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19zdHJpbmc8
X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0
cywgX0FsbG9jPjo6CiAgICBhc3NpZ24oY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0cikKICAgIHsK
ICAgICAgaWYgKF9NX3JlcCgpICE9IF9fc3RyLl9NX3JlcCgpKQogewoKICAgY29uc3QgYWxsb2Nh
dG9yX3R5cGUgX19hID0gdGhpcy0+Z2V0X2FsbG9jYXRvcigpOwogICBfQ2hhclQqIF9fdG1wID0g
X19zdHIuX01fcmVwKCktPl9NX2dyYWIoX19hLCBfX3N0ci5nZXRfYWxsb2NhdG9yKCkpOwogICBf
TV9yZXAoKS0+X01fZGlzcG9zZShfX2EpOwogICBfTV9kYXRhKF9fdG1wKTsKIH0KICAgICAgcmV0
dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U
cmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMs
IF9BbGxvYz4mCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAg
IGFzc2lnbihjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fbikKICAgIHsKICAgICAgOwog
ICAgICBfTV9jaGVja19sZW5ndGgodGhpcy0+c2l6ZSgpLCBfX24sICJiYXNpY19zdHJpbmc6OmFz
c2lnbiIpOwogICAgICBpZiAoX01fZGlzanVuY3QoX19zKSB8fCBfTV9yZXAoKS0+X01faXNfc2hh
cmVkKCkpCiByZXR1cm4gX01fcmVwbGFjZV9zYWZlKHNpemVfdHlwZSgwKSwgdGhpcy0+c2l6ZSgp
LCBfX3MsIF9fbik7CiAgICAgIGVsc2UKIHsKCiAgIGNvbnN0IHNpemVfdHlwZSBfX3BvcyA9IF9f
cyAtIF9NX2RhdGEoKTsKICAgaWYgKF9fcG9zID49IF9fbikKICAgICBfTV9jb3B5KF9NX2RhdGEo
KSwgX19zLCBfX24pOwogICBlbHNlIGlmIChfX3BvcykKICAgICBfTV9tb3ZlKF9NX2RhdGEoKSwg
X19zLCBfX24pOwogICBfTV9yZXAoKS0+X01fc2V0X2xlbmd0aF9hbmRfc2hhcmFibGUoX19uKTsK
ICAgcmV0dXJuICp0aGlzOwogfQogICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19zdHJpbmc8X0NoYXJU
LCBfVHJhaXRzLCBfQWxsb2M+JgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0Fs
bG9jPjo6CiAgICBhcHBlbmQoc2l6ZV90eXBlIF9fbiwgX0NoYXJUIF9fYykKICAgIHsKICAgICAg
aWYgKF9fbikKIHsKICAgX01fY2hlY2tfbGVuZ3RoKHNpemVfdHlwZSgwKSwgX19uLCAiYmFzaWNf
c3RyaW5nOjphcHBlbmQiKTsKICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0gX19uICsgdGhpcy0+
c2l6ZSgpOwogICBpZiAoX19sZW4gPiB0aGlzLT5jYXBhY2l0eSgpIHx8IF9NX3JlcCgpLT5fTV9p
c19zaGFyZWQoKSkKICAgICB0aGlzLT5yZXNlcnZlKF9fbGVuKTsKICAgX01fYXNzaWduKF9NX2Rh
dGEoKSArIHRoaXMtPnNpemUoKSwgX19uLCBfX2MpOwogICBfTV9yZXAoKS0+X01fc2V0X2xlbmd0
aF9hbmRfc2hhcmFibGUoX19sZW4pOwogfQogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9j
PgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYKICAgIGJhc2ljX3N0
cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgYXBwZW5kKGNvbnN0IF9DaGFyVCog
X19zLCBzaXplX3R5cGUgX19uKQogICAgewogICAgICA7CiAgICAgIGlmIChfX24pCiB7CiAgIF9N
X2NoZWNrX2xlbmd0aChzaXplX3R5cGUoMCksIF9fbiwgImJhc2ljX3N0cmluZzo6YXBwZW5kIik7
CiAgIGNvbnN0IHNpemVfdHlwZSBfX2xlbiA9IF9fbiArIHRoaXMtPnNpemUoKTsKICAgaWYgKF9f
bGVuID4gdGhpcy0+Y2FwYWNpdHkoKSB8fCBfTV9yZXAoKS0+X01faXNfc2hhcmVkKCkpCiAgICAg
ewogICAgICAgaWYgKF9NX2Rpc2p1bmN0KF9fcykpCiAgdGhpcy0+cmVzZXJ2ZShfX2xlbik7CiAg
ICAgICBlbHNlCiAgewogICAgY29uc3Qgc2l6ZV90eXBlIF9fb2ZmID0gX19zIC0gX01fZGF0YSgp
OwogICAgdGhpcy0+cmVzZXJ2ZShfX2xlbik7CiAgICBfX3MgPSBfTV9kYXRhKCkgKyBfX29mZjsK
ICB9CiAgICAgfQogICBfTV9jb3B5KF9NX2RhdGEoKSArIHRoaXMtPnNpemUoKSwgX19zLCBfX24p
OwogICBfTV9yZXAoKS0+X01fc2V0X2xlbmd0aF9hbmRfc2hhcmFibGUoX19sZW4pOwogfQogICAg
ICByZXR1cm4gKnRoaXM7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h
bWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1Ry
YWl0cywgX0FsbG9jPiYKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46
OgogICAgYXBwZW5kKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIpCiAgICB7CiAgICAgIGNvbnN0
IHNpemVfdHlwZSBfX3NpemUgPSBfX3N0ci5zaXplKCk7CiAgICAgIGlmIChfX3NpemUpCiB7CiAg
IGNvbnN0IHNpemVfdHlwZSBfX2xlbiA9IF9fc2l6ZSArIHRoaXMtPnNpemUoKTsKICAgaWYgKF9f
bGVuID4gdGhpcy0+Y2FwYWNpdHkoKSB8fCBfTV9yZXAoKS0+X01faXNfc2hhcmVkKCkpCiAgICAg
dGhpcy0+cmVzZXJ2ZShfX2xlbik7CiAgIF9NX2NvcHkoX01fZGF0YSgpICsgdGhpcy0+c2l6ZSgp
LCBfX3N0ci5fTV9kYXRhKCksIF9fc2l6ZSk7CiAgIF9NX3JlcCgpLT5fTV9zZXRfbGVuZ3RoX2Fu
ZF9zaGFyYWJsZShfX2xlbik7CiB9CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAg
ICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JgogICAgYmFzaWNfc3RyaW5n
PF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBhcHBlbmQoY29uc3QgYmFzaWNfc3RyaW5n
JiBfX3N0ciwgc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uKQogICAgewogICAgICBfX3N0
ci5fTV9jaGVjayhfX3BvcywgImJhc2ljX3N0cmluZzo6YXBwZW5kIik7CiAgICAgIF9fbiA9IF9f
c3RyLl9NX2xpbWl0KF9fcG9zLCBfX24pOwogICAgICBpZiAoX19uKQogewogICBjb25zdCBzaXpl
X3R5cGUgX19sZW4gPSBfX24gKyB0aGlzLT5zaXplKCk7CiAgIGlmIChfX2xlbiA+IHRoaXMtPmNh
cGFjaXR5KCkgfHwgX01fcmVwKCktPl9NX2lzX3NoYXJlZCgpKQogICAgIHRoaXMtPnJlc2VydmUo
X19sZW4pOwogICBfTV9jb3B5KF9NX2RhdGEoKSArIHRoaXMtPnNpemUoKSwgX19zdHIuX01fZGF0
YSgpICsgX19wb3MsIF9fbik7CiAgIF9NX3JlcCgpLT5fTV9zZXRfbGVuZ3RoX2FuZF9zaGFyYWJs
ZShfX2xlbik7CiB9CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgIGJhc2lj
X3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mCiAgICAgYmFzaWNfc3RyaW5nPF9DaGFy
VCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICAgaW5zZXJ0KHNpemVfdHlwZSBfX3BvcywgY29uc3Qg
X0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX24pCiAgICAgewogICAgICAgOwogICAgICAgX01fY2hl
Y2soX19wb3MsICJiYXNpY19zdHJpbmc6Omluc2VydCIpOwogICAgICAgX01fY2hlY2tfbGVuZ3Ro
KHNpemVfdHlwZSgwKSwgX19uLCAiYmFzaWNfc3RyaW5nOjppbnNlcnQiKTsKICAgICAgIGlmIChf
TV9kaXNqdW5jdChfX3MpIHx8IF9NX3JlcCgpLT5fTV9pc19zaGFyZWQoKSkKICAgICAgICAgcmV0
dXJuIF9NX3JlcGxhY2Vfc2FmZShfX3Bvcywgc2l6ZV90eXBlKDApLCBfX3MsIF9fbik7CiAgICAg
ICBlbHNlCiAgICAgICAgIHsKCiAgICAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fb2ZmID0gX19z
IC0gX01fZGF0YSgpOwogICAgICAgICAgIF9NX211dGF0ZShfX3BvcywgMCwgX19uKTsKICAgICAg
ICAgICBfX3MgPSBfTV9kYXRhKCkgKyBfX29mZjsKICAgICAgICAgICBfQ2hhclQqIF9fcCA9IF9N
X2RhdGEoKSArIF9fcG9zOwogICAgICAgICAgIGlmIChfX3MgKyBfX24gPD0gX19wKQogICAgICAg
ICAgICAgX01fY29weShfX3AsIF9fcywgX19uKTsKICAgICAgICAgICBlbHNlIGlmIChfX3MgPj0g
X19wKQogICAgICAgICAgICAgX01fY29weShfX3AsIF9fcyArIF9fbiwgX19uKTsKICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICB7CiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fbmxlZnQgPSBf
X3AgLSBfX3M7CiAgICAgICAgICAgICAgIF9NX2NvcHkoX19wLCBfX3MsIF9fbmxlZnQpOwogICAg
ICAgICAgICAgICBfTV9jb3B5KF9fcCArIF9fbmxlZnQsIF9fcCArIF9fbiwgX19uIC0gX19ubGVm
dCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICAgICB9CiAg
ICAgfQoKICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBl
bmFtZSBfQWxsb2M+CiAgICAgdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywg
X0FsbG9jPjo6aXRlcmF0b3IKICAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxs
b2M+OjoKICAgICBlcmFzZShpdGVyYXRvciBfX2ZpcnN0LCBpdGVyYXRvciBfX2xhc3QpCiAgICAg
ewogICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgoKICAgICAgIGNvbnN0IHNp
emVfdHlwZSBfX3NpemUgPSBfX2xhc3QgLSBfX2ZpcnN0OwogICAgICAgaWYgKF9fc2l6ZSkKICB7
CiAgICBjb25zdCBzaXplX3R5cGUgX19wb3MgPSBfX2ZpcnN0IC0gX01faWJlZ2luKCk7CiAgICBf
TV9tdXRhdGUoX19wb3MsIF9fc2l6ZSwgc2l6ZV90eXBlKDApKTsKICAgIF9NX3JlcCgpLT5fTV9z
ZXRfbGVha2VkKCk7CiAgICByZXR1cm4gaXRlcmF0b3IoX01fZGF0YSgpICsgX19wb3MpOwogIH0K
ICAgICAgIGVsc2UKICByZXR1cm4gX19maXJzdDsKICAgICB9CgogICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgICBiYXNpY19z
dHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JgogICAgIGJhc2ljX3N0cmluZzxfQ2hhclQs
IF9UcmFpdHMsIF9BbGxvYz46OgogICAgIHJlcGxhY2Uoc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5
cGUgX19uMSwgY29uc3QgX0NoYXJUKiBfX3MsCiAgICAgIHNpemVfdHlwZSBfX24yKQogICAgIHsK
ICAgICAgIDsKICAgICAgIF9NX2NoZWNrKF9fcG9zLCAiYmFzaWNfc3RyaW5nOjpyZXBsYWNlIik7
CiAgICAgICBfX24xID0gX01fbGltaXQoX19wb3MsIF9fbjEpOwogICAgICAgX01fY2hlY2tfbGVu
Z3RoKF9fbjEsIF9fbjIsICJiYXNpY19zdHJpbmc6OnJlcGxhY2UiKTsKICAgICAgIGJvb2wgX19s
ZWZ0OwogICAgICAgaWYgKF9NX2Rpc2p1bmN0KF9fcykgfHwgX01fcmVwKCktPl9NX2lzX3NoYXJl
ZCgpKQogICAgICAgICByZXR1cm4gX01fcmVwbGFjZV9zYWZlKF9fcG9zLCBfX24xLCBfX3MsIF9f
bjIpOwogICAgICAgZWxzZSBpZiAoKF9fbGVmdCA9IF9fcyArIF9fbjIgPD0gX01fZGF0YSgpICsg
X19wb3MpCiAgfHwgX01fZGF0YSgpICsgX19wb3MgKyBfX24xIDw9IF9fcykKICB7CgogICAgc2l6
ZV90eXBlIF9fb2ZmID0gX19zIC0gX01fZGF0YSgpOwogICAgX19sZWZ0ID8gX19vZmYgOiAoX19v
ZmYgKz0gX19uMiAtIF9fbjEpOwogICAgX01fbXV0YXRlKF9fcG9zLCBfX24xLCBfX24yKTsKICAg
IF9NX2NvcHkoX01fZGF0YSgpICsgX19wb3MsIF9NX2RhdGEoKSArIF9fb2ZmLCBfX24yKTsKICAg
IHJldHVybiAqdGhpczsKICB9CiAgICAgICBlbHNlCiAgewoKICAgIGNvbnN0IGJhc2ljX3N0cmlu
ZyBfX3RtcChfX3MsIF9fbjIpOwogICAgcmV0dXJuIF9NX3JlcGxhY2Vfc2FmZShfX3BvcywgX19u
MSwgX190bXAuX01fZGF0YSgpLCBfX24yKTsKICB9CiAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHZvaWQKICAg
IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46Ol9SZXA6OgogICAgX01fZGVz
dHJveShjb25zdCBfQWxsb2MmIF9fYSkgdGhyb3cgKCkKICAgIHsKICAgICAgY29uc3Qgc2l6ZV90
eXBlIF9fc2l6ZSA9IHNpemVvZihfUmVwX2Jhc2UpICsKICAgICAgICAgICAgICAgICAgICAgICAg
KHRoaXMtPl9NX2NhcGFjaXR5ICsgMSkgKiBzaXplb2YoX0NoYXJUKTsKICAgICAgX1Jhd19ieXRl
c19hbGxvYyhfX2EpLmRlYWxsb2NhdGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odGhpcyksIF9f
c2l6ZSk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cywgdHlwZW5hbWUgX0FsbG9jPgogICAgdm9pZAogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1Ry
YWl0cywgX0FsbG9jPjo6CiAgICBfTV9sZWFrX2hhcmQoKQogICAgewoKICAgICAgaWYgKF9NX3Jl
cCgpID09ICZfU19lbXB0eV9yZXAoKSkKIHJldHVybjsKCiAgICAgIGlmIChfTV9yZXAoKS0+X01f
aXNfc2hhcmVkKCkpCiBfTV9tdXRhdGUoMCwgMCwgMCk7CiAgICAgIF9NX3JlcCgpLT5fTV9zZXRf
bGVha2VkKCk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1Ry
YWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgdm9pZAogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwg
X1RyYWl0cywgX0FsbG9jPjo6CiAgICBfTV9tdXRhdGUoc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5
cGUgX19sZW4xLCBzaXplX3R5cGUgX19sZW4yKQogICAgewogICAgICBjb25zdCBzaXplX3R5cGUg
X19vbGRfc2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fbmV3X3Np
emUgPSBfX29sZF9zaXplICsgX19sZW4yIC0gX19sZW4xOwogICAgICBjb25zdCBzaXplX3R5cGUg
X19ob3dfbXVjaCA9IF9fb2xkX3NpemUgLSBfX3BvcyAtIF9fbGVuMTsKCiAgICAgIGlmIChfX25l
d19zaXplID4gdGhpcy0+Y2FwYWNpdHkoKSB8fCBfTV9yZXAoKS0+X01faXNfc2hhcmVkKCkpCiB7
CgogICBjb25zdCBhbGxvY2F0b3JfdHlwZSBfX2EgPSBnZXRfYWxsb2NhdG9yKCk7CiAgIF9SZXAq
IF9fciA9IF9SZXA6Ol9TX2NyZWF0ZShfX25ld19zaXplLCB0aGlzLT5jYXBhY2l0eSgpLCBfX2Ep
OwoKICAgaWYgKF9fcG9zKQogICAgIF9NX2NvcHkoX19yLT5fTV9yZWZkYXRhKCksIF9NX2RhdGEo
KSwgX19wb3MpOwogICBpZiAoX19ob3dfbXVjaCkKICAgICBfTV9jb3B5KF9fci0+X01fcmVmZGF0
YSgpICsgX19wb3MgKyBfX2xlbjIsCiAgICAgIF9NX2RhdGEoKSArIF9fcG9zICsgX19sZW4xLCBf
X2hvd19tdWNoKTsKCiAgIF9NX3JlcCgpLT5fTV9kaXNwb3NlKF9fYSk7CiAgIF9NX2RhdGEoX19y
LT5fTV9yZWZkYXRhKCkpOwogfQogICAgICBlbHNlIGlmIChfX2hvd19tdWNoICYmIF9fbGVuMSAh
PSBfX2xlbjIpCiB7CgogICBfTV9tb3ZlKF9NX2RhdGEoKSArIF9fcG9zICsgX19sZW4yLAogICAg
X01fZGF0YSgpICsgX19wb3MgKyBfX2xlbjEsIF9faG93X211Y2gpOwogfQogICAgICBfTV9yZXAo
KS0+X01fc2V0X2xlbmd0aF9hbmRfc2hhcmFibGUoX19uZXdfc2l6ZSk7CiAgICB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgog
ICAgdm9pZAogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBy
ZXNlcnZlKHNpemVfdHlwZSBfX3JlcykKICAgIHsKICAgICAgaWYgKF9fcmVzICE9IHRoaXMtPmNh
cGFjaXR5KCkgfHwgX01fcmVwKCktPl9NX2lzX3NoYXJlZCgpKQogICAgICAgIHsKCiAgIGlmIChf
X3JlcyA8IHRoaXMtPnNpemUoKSkKICAgICBfX3JlcyA9IHRoaXMtPnNpemUoKTsKICAgY29uc3Qg
YWxsb2NhdG9yX3R5cGUgX19hID0gZ2V0X2FsbG9jYXRvcigpOwogICBfQ2hhclQqIF9fdG1wID0g
X01fcmVwKCktPl9NX2Nsb25lKF9fYSwgX19yZXMgLSB0aGlzLT5zaXplKCkpOwogICBfTV9yZXAo
KS0+X01fZGlzcG9zZShfX2EpOwogICBfTV9kYXRhKF9fdG1wKTsKICAgICAgICB9CiAgICB9Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0Fs
bG9jPgogICAgdm9pZAogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6
CiAgICBzd2FwKGJhc2ljX3N0cmluZyYgX19zKQogICAgewogICAgICBpZiAoX01fcmVwKCktPl9N
X2lzX2xlYWtlZCgpKQogX01fcmVwKCktPl9NX3NldF9zaGFyYWJsZSgpOwogICAgICBpZiAoX19z
Ll9NX3JlcCgpLT5fTV9pc19sZWFrZWQoKSkKIF9fcy5fTV9yZXAoKS0+X01fc2V0X3NoYXJhYmxl
KCk7CiAgICAgIGlmICh0aGlzLT5nZXRfYWxsb2NhdG9yKCkgPT0gX19zLmdldF9hbGxvY2F0b3Io
KSkKIHsKICAgX0NoYXJUKiBfX3RtcCA9IF9NX2RhdGEoKTsKICAgX01fZGF0YShfX3MuX01fZGF0
YSgpKTsKICAgX19zLl9NX2RhdGEoX190bXApOwogfQoKICAgICAgZWxzZQogewogICBjb25zdCBi
YXNpY19zdHJpbmcgX190bXAxKF9NX2liZWdpbigpLCBfTV9pZW5kKCksCiAgICAgICAgX19zLmdl
dF9hbGxvY2F0b3IoKSk7CiAgIGNvbnN0IGJhc2ljX3N0cmluZyBfX3RtcDIoX19zLl9NX2liZWdp
bigpLCBfX3MuX01faWVuZCgpLAogICAgICAgIHRoaXMtPmdldF9hbGxvY2F0b3IoKSk7CiAgICp0
aGlzID0gX190bXAyOwogICBfX3MgPSBfX3RtcDE7CiB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgdHlwZW5h
bWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6X1JlcCoKICAgIGJhc2lj
X3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46Ol9SZXA6OgogICAgX1NfY3JlYXRlKHNp
emVfdHlwZSBfX2NhcGFjaXR5LCBzaXplX3R5cGUgX19vbGRfY2FwYWNpdHksCiAgICAgICBjb25z
dCBfQWxsb2MmIF9fYWxsb2MpCiAgICB7CgoKICAgICAgaWYgKF9fY2FwYWNpdHkgPiBfU19tYXhf
c2l6ZSkKIF9fdGhyb3dfbGVuZ3RoX2Vycm9yKCgiYmFzaWNfc3RyaW5nOjpfU19jcmVhdGUiKSk7
CiMgNTc3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEv
Yml0cy9iYXNpY19zdHJpbmcudGNjIiAzCiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX3BhZ2VzaXpl
ID0gNDA5NjsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fbWFsbG9jX2hlYWRlcl9zaXplID0gNCAq
IHNpemVvZih2b2lkKik7CgoKCgoKCgogICAgICBpZiAoX19jYXBhY2l0eSA+IF9fb2xkX2NhcGFj
aXR5ICYmIF9fY2FwYWNpdHkgPCAyICogX19vbGRfY2FwYWNpdHkpCiBfX2NhcGFjaXR5ID0gMiAq
IF9fb2xkX2NhcGFjaXR5OwoKCgoKICAgICAgc2l6ZV90eXBlIF9fc2l6ZSA9IChfX2NhcGFjaXR5
ICsgMSkgKiBzaXplb2YoX0NoYXJUKSArIHNpemVvZihfUmVwKTsKCiAgICAgIGNvbnN0IHNpemVf
dHlwZSBfX2Fkal9zaXplID0gX19zaXplICsgX19tYWxsb2NfaGVhZGVyX3NpemU7CiAgICAgIGlm
IChfX2Fkal9zaXplID4gX19wYWdlc2l6ZSAmJiBfX2NhcGFjaXR5ID4gX19vbGRfY2FwYWNpdHkp
CiB7CiAgIGNvbnN0IHNpemVfdHlwZSBfX2V4dHJhID0gX19wYWdlc2l6ZSAtIF9fYWRqX3NpemUg
JSBfX3BhZ2VzaXplOwogICBfX2NhcGFjaXR5ICs9IF9fZXh0cmEgLyBzaXplb2YoX0NoYXJUKTsK
CiAgIGlmIChfX2NhcGFjaXR5ID4gX1NfbWF4X3NpemUpCiAgICAgX19jYXBhY2l0eSA9IF9TX21h
eF9zaXplOwogICBfX3NpemUgPSAoX19jYXBhY2l0eSArIDEpICogc2l6ZW9mKF9DaGFyVCkgKyBz
aXplb2YoX1JlcCk7CiB9CgoKCiAgICAgIHZvaWQqIF9fcGxhY2UgPSBfUmF3X2J5dGVzX2FsbG9j
KF9fYWxsb2MpLmFsbG9jYXRlKF9fc2l6ZSk7CiAgICAgIF9SZXAgKl9fcCA9IG5ldyAoX19wbGFj
ZSkgX1JlcDsKICAgICAgX19wLT5fTV9jYXBhY2l0eSA9IF9fY2FwYWNpdHk7CgoKCgoKCgogICAg
ICBfX3AtPl9NX3NldF9zaGFyYWJsZSgpOwogICAgICByZXR1cm4gX19wOwogICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4K
ICAgIF9DaGFyVCoKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46Ol9S
ZXA6OgogICAgX01fY2xvbmUoY29uc3QgX0FsbG9jJiBfX2FsbG9jLCBzaXplX3R5cGUgX19yZXMp
CiAgICB7CgogICAgICBjb25zdCBzaXplX3R5cGUgX19yZXF1ZXN0ZWRfY2FwID0gdGhpcy0+X01f
bGVuZ3RoICsgX19yZXM7CiAgICAgIF9SZXAqIF9fciA9IF9SZXA6Ol9TX2NyZWF0ZShfX3JlcXVl
c3RlZF9jYXAsIHRoaXMtPl9NX2NhcGFjaXR5LAogICAgICBfX2FsbG9jKTsKICAgICAgaWYgKHRo
aXMtPl9NX2xlbmd0aCkKIF9NX2NvcHkoX19yLT5fTV9yZWZkYXRhKCksIF9NX3JlZmRhdGEoKSwg
dGhpcy0+X01fbGVuZ3RoKTsKCiAgICAgIF9fci0+X01fc2V0X2xlbmd0aF9hbmRfc2hhcmFibGUo
dGhpcy0+X01fbGVuZ3RoKTsKICAgICAgcmV0dXJuIF9fci0+X01fcmVmZGF0YSgpOwogICAgfQoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9B
bGxvYz4KICAgIHZvaWQKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46
OgogICAgcmVzaXplKHNpemVfdHlwZSBfX24sIF9DaGFyVCBfX2MpCiAgICB7CiAgICAgIGNvbnN0
IHNpemVfdHlwZSBfX3NpemUgPSB0aGlzLT5zaXplKCk7CiAgICAgIF9NX2NoZWNrX2xlbmd0aChf
X3NpemUsIF9fbiwgImJhc2ljX3N0cmluZzo6cmVzaXplIik7CiAgICAgIGlmIChfX3NpemUgPCBf
X24pCiB0aGlzLT5hcHBlbmQoX19uIC0gX19zaXplLCBfX2MpOwogICAgICBlbHNlIGlmIChfX24g
PCBfX3NpemUpCiB0aGlzLT5lcmFzZShfX24pOwoKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSW5wdXRJdGVyYXRvcj4KICAgICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0
cywgX0FsbG9jPiYKICAgICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6
CiAgICAgIF9NX3JlcGxhY2VfZGlzcGF0Y2goaXRlcmF0b3IgX19pMSwgaXRlcmF0b3IgX19pMiwg
X0lucHV0SXRlcmF0b3IgX19rMSwKICAgICBfSW5wdXRJdGVyYXRvciBfX2syLCBfX2ZhbHNlX3R5
cGUpCiAgICAgIHsKIGNvbnN0IGJhc2ljX3N0cmluZyBfX3MoX19rMSwgX19rMik7CiBjb25zdCBz
aXplX3R5cGUgX19uMSA9IF9faTIgLSBfX2kxOwogX01fY2hlY2tfbGVuZ3RoKF9fbjEsIF9fcy5z
aXplKCksICJiYXNpY19zdHJpbmc6Ol9NX3JlcGxhY2VfZGlzcGF0Y2giKTsKIHJldHVybiBfTV9y
ZXBsYWNlX3NhZmUoX19pMSAtIF9NX2liZWdpbigpLCBfX24xLCBfX3MuX01fZGF0YSgpLAogICAg
ICAgICAgX19zLnNpemUoKSk7CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19zdHJpbmc8X0NoYXJU
LCBfVHJhaXRzLCBfQWxsb2M+JgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0Fs
bG9jPjo6CiAgICBfTV9yZXBsYWNlX2F1eChzaXplX3R5cGUgX19wb3MxLCBzaXplX3R5cGUgX19u
MSwgc2l6ZV90eXBlIF9fbjIsCiAgICAgX0NoYXJUIF9fYykKICAgIHsKICAgICAgX01fY2hlY2tf
bGVuZ3RoKF9fbjEsIF9fbjIsICJiYXNpY19zdHJpbmc6Ol9NX3JlcGxhY2VfYXV4Iik7CiAgICAg
IF9NX211dGF0ZShfX3BvczEsIF9fbjEsIF9fbjIpOwogICAgICBpZiAoX19uMikKIF9NX2Fzc2ln
bihfTV9kYXRhKCkgKyBfX3BvczEsIF9fbjIsIF9fYyk7CiAgICAgIHJldHVybiAqdGhpczsKICAg
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFt
ZSBfQWxsb2M+CiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JgogICAg
YmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBfTV9yZXBsYWNlX3Nh
ZmUoc2l6ZV90eXBlIF9fcG9zMSwgc2l6ZV90eXBlIF9fbjEsIGNvbnN0IF9DaGFyVCogX19zLAog
ICAgICBzaXplX3R5cGUgX19uMikKICAgIHsKICAgICAgX01fbXV0YXRlKF9fcG9zMSwgX19uMSwg
X19uMik7CiAgICAgIGlmIChfX24yKQogX01fY29weShfTV9kYXRhKCkgKyBfX3BvczEsIF9fcywg
X19uMik7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19zdHJpbmc8
X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+CiAgICBvcGVyYXRvcisoY29uc3QgX0NoYXJUKiBfX2xo
cywKICAgICAgIGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9f
cmhzKQogICAgewogICAgICA7CiAgICAgIHR5cGVkZWYgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1Ry
YWl0cywgX0FsbG9jPiBfX3N0cmluZ190eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fc3Ry
aW5nX3R5cGU6OnNpemVfdHlwZSBfX3NpemVfdHlwZTsKICAgICAgY29uc3QgX19zaXplX3R5cGUg
X19sZW4gPSBfVHJhaXRzOjpsZW5ndGgoX19saHMpOwogICAgICBfX3N0cmluZ190eXBlIF9fc3Ry
OwogICAgICBfX3N0ci5yZXNlcnZlKF9fbGVuICsgX19yaHMuc2l6ZSgpKTsKICAgICAgX19zdHIu
YXBwZW5kKF9fbGhzLCBfX2xlbik7CiAgICAgIF9fc3RyLmFwcGVuZChfX3Jocyk7CiAgICAgIHJl
dHVybiBfX3N0cjsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRz
LCBfQWxsb2M+CiAgICBvcGVyYXRvcisoX0NoYXJUIF9fbGhzLCBjb25zdCBiYXNpY19zdHJpbmc8
X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3JocykKICAgIHsKICAgICAgdHlwZWRlZiBiYXNp
Y19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+IF9fc3RyaW5nX3R5cGU7CiAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgX19zdHJpbmdfdHlwZTo6c2l6ZV90eXBlIF9fc2l6ZV90eXBlOwogICAg
ICBfX3N0cmluZ190eXBlIF9fc3RyOwogICAgICBjb25zdCBfX3NpemVfdHlwZSBfX2xlbiA9IF9f
cmhzLnNpemUoKTsKICAgICAgX19zdHIucmVzZXJ2ZShfX2xlbiArIDEpOwogICAgICBfX3N0ci5h
cHBlbmQoX19zaXplX3R5cGUoMSksIF9fbGhzKTsKICAgICAgX19zdHIuYXBwZW5kKF9fcmhzKTsK
ICAgICAgcmV0dXJuIF9fc3RyOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5
cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHR5cGVuYW1lIGJhc2ljX3N0cmlu
ZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAgYmFzaWNfc3RyaW5nPF9D
aGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBjb3B5KF9DaGFyVCogX19zLCBzaXplX3R5cGUg
X19uLCBzaXplX3R5cGUgX19wb3MpIGNvbnN0CiAgICB7CiAgICAgIF9NX2NoZWNrKF9fcG9zLCAi
YmFzaWNfc3RyaW5nOjpjb3B5Iik7CiAgICAgIF9fbiA9IF9NX2xpbWl0KF9fcG9zLCBfX24pOwog
ICAgICA7CiAgICAgIGlmIChfX24pCiBfTV9jb3B5KF9fcywgX01fZGF0YSgpICsgX19wb3MsIF9f
bik7CgogICAgICByZXR1cm4gX19uOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs
IHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHR5cGVuYW1lIGJhc2ljX3N0
cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAgYmFzaWNfc3RyaW5n
PF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBmaW5kKGNvbnN0IF9DaGFyVCogX19zLCBz
aXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24pIGNvbnN0CiAgICB7CiAgICAgIDsKICAgICAg
Y29uc3Qgc2l6ZV90eXBlIF9fc2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICAgY29uc3QgX0NoYXJU
KiBfX2RhdGEgPSBfTV9kYXRhKCk7CgogICAgICBpZiAoX19uID09IDApCiByZXR1cm4gX19wb3Mg
PD0gX19zaXplID8gX19wb3MgOiBucG9zOwoKICAgICAgaWYgKF9fbiA8PSBfX3NpemUpCiB7CiAg
IGZvciAoOyBfX3BvcyA8PSBfX3NpemUgLSBfX247ICsrX19wb3MpCiAgICAgaWYgKHRyYWl0c190
eXBlOjplcShfX2RhdGFbX19wb3NdLCBfX3NbMF0pCiAgJiYgdHJhaXRzX3R5cGU6OmNvbXBhcmUo
X19kYXRhICsgX19wb3MgKyAxLAogICAgIF9fcyArIDEsIF9fbiAtIDEpID09IDApCiAgICAgICBy
ZXR1cm4gX19wb3M7CiB9CiAgICAgIHJldHVybiBucG9zOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHR5cGVu
YW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAg
YmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBmaW5kKF9DaGFyVCBf
X2MsIHNpemVfdHlwZSBfX3BvcykgY29uc3Qgbm9leGNlcHQKICAgIHsKICAgICAgc2l6ZV90eXBl
IF9fcmV0ID0gbnBvczsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fc2l6ZSA9IHRoaXMtPnNpemUo
KTsKICAgICAgaWYgKF9fcG9zIDwgX19zaXplKQogewogICBjb25zdCBfQ2hhclQqIF9fZGF0YSA9
IF9NX2RhdGEoKTsKICAgY29uc3Qgc2l6ZV90eXBlIF9fbiA9IF9fc2l6ZSAtIF9fcG9zOwogICBj
b25zdCBfQ2hhclQqIF9fcCA9IHRyYWl0c190eXBlOjpmaW5kKF9fZGF0YSArIF9fcG9zLCBfX24s
IF9fYyk7CiAgIGlmIChfX3ApCiAgICAgX19yZXQgPSBfX3AgLSBfX2RhdGE7CiB9CiAgICAgIHJl
dHVybiBfX3JldDsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJU
LCBfVHJhaXRzLCBfQWxsb2M+OjpzaXplX3R5cGUKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9U
cmFpdHMsIF9BbGxvYz46OgogICAgcmZpbmQoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBf
X3Bvcywgc2l6ZV90eXBlIF9fbikgY29uc3QKICAgIHsKICAgICAgOwogICAgICBjb25zdCBzaXpl
X3R5cGUgX19zaXplID0gdGhpcy0+c2l6ZSgpOwogICAgICBpZiAoX19uIDw9IF9fc2l6ZSkKIHsK
ICAgX19wb3MgPSBzdGQ6Om1pbihzaXplX3R5cGUoX19zaXplIC0gX19uKSwgX19wb3MpOwogICBj
b25zdCBfQ2hhclQqIF9fZGF0YSA9IF9NX2RhdGEoKTsKICAgZG8KICAgICB7CiAgICAgICBpZiAo
dHJhaXRzX3R5cGU6OmNvbXBhcmUoX19kYXRhICsgX19wb3MsIF9fcywgX19uKSA9PSAwKQogIHJl
dHVybiBfX3BvczsKICAgICB9CiAgIHdoaWxlIChfX3Bvcy0tID4gMCk7CiB9CiAgICAgIHJldHVy
biBucG9zOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp
dHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9U
cmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0
cywgX0FsbG9jPjo6CiAgICByZmluZChfQ2hhclQgX19jLCBzaXplX3R5cGUgX19wb3MpIGNvbnN0
IG5vZXhjZXB0CiAgICB7CiAgICAgIHNpemVfdHlwZSBfX3NpemUgPSB0aGlzLT5zaXplKCk7CiAg
ICAgIGlmIChfX3NpemUpCiB7CiAgIGlmICgtLV9fc2l6ZSA+IF9fcG9zKQogICAgIF9fc2l6ZSA9
IF9fcG9zOwogICBmb3IgKCsrX19zaXplOyBfX3NpemUtLSA+IDA7ICkKICAgICBpZiAodHJhaXRz
X3R5cGU6OmVxKF9NX2RhdGEoKVtfX3NpemVdLCBfX2MpKQogICAgICAgcmV0dXJuIF9fc2l6ZTsK
IH0KICAgICAgcmV0dXJuIG5wb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgdHlwZW5hbWUgYmFzaWNfc3Ry
aW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6c2l6ZV90eXBlCiAgICBiYXNpY19zdHJpbmc8
X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIGZpbmRfZmlyc3Rfb2YoY29uc3QgX0NoYXJU
KiBfX3MsIHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbikgY29uc3QKICAgIHsKICAgICAg
OwogICAgICBmb3IgKDsgX19uICYmIF9fcG9zIDwgdGhpcy0+c2l6ZSgpOyArK19fcG9zKQogewog
ICBjb25zdCBfQ2hhclQqIF9fcCA9IHRyYWl0c190eXBlOjpmaW5kKF9fcywgX19uLCBfTV9kYXRh
KClbX19wb3NdKTsKICAgaWYgKF9fcCkKICAgICByZXR1cm4gX19wb3M7CiB9CiAgICAgIHJldHVy
biBucG9zOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp
dHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9U
cmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0
cywgX0FsbG9jPjo6CiAgICBmaW5kX2xhc3Rfb2YoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlw
ZSBfX3Bvcywgc2l6ZV90eXBlIF9fbikgY29uc3QKICAgIHsKICAgICAgOwogICAgICBzaXplX3R5
cGUgX19zaXplID0gdGhpcy0+c2l6ZSgpOwogICAgICBpZiAoX19zaXplICYmIF9fbikKIHsKICAg
aWYgKC0tX19zaXplID4gX19wb3MpCiAgICAgX19zaXplID0gX19wb3M7CiAgIGRvCiAgICAgewog
ICAgICAgaWYgKHRyYWl0c190eXBlOjpmaW5kKF9fcywgX19uLCBfTV9kYXRhKClbX19zaXplXSkp
CiAgcmV0dXJuIF9fc2l6ZTsKICAgICB9CiAgIHdoaWxlIChfX3NpemUtLSAhPSAwKTsKIH0KICAg
ICAgcmV0dXJuIG5wb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h
bWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9D
aGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6c2l6ZV90eXBlCiAgICBiYXNpY19zdHJpbmc8X0NoYXJU
LCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIGZpbmRfZmlyc3Rfbm90X29mKGNvbnN0IF9DaGFyVCog
X19zLCBzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24pIGNvbnN0CiAgICB7CiAgICAgIDsK
ICAgICAgZm9yICg7IF9fcG9zIDwgdGhpcy0+c2l6ZSgpOyArK19fcG9zKQogaWYgKCF0cmFpdHNf
dHlwZTo6ZmluZChfX3MsIF9fbiwgX01fZGF0YSgpW19fcG9zXSkpCiAgIHJldHVybiBfX3BvczsK
ICAgICAgcmV0dXJuIG5wb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlw
ZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgdHlwZW5hbWUgYmFzaWNfc3RyaW5n
PF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6c2l6ZV90eXBlCiAgICBiYXNpY19zdHJpbmc8X0No
YXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIGZpbmRfZmlyc3Rfbm90X29mKF9DaGFyVCBfX2Ms
IHNpemVfdHlwZSBfX3BvcykgY29uc3Qgbm9leGNlcHQKICAgIHsKICAgICAgZm9yICg7IF9fcG9z
IDwgdGhpcy0+c2l6ZSgpOyArK19fcG9zKQogaWYgKCF0cmFpdHNfdHlwZTo6ZXEoX01fZGF0YSgp
W19fcG9zXSwgX19jKSkKICAgcmV0dXJuIF9fcG9zOwogICAgICByZXR1cm4gbnBvczsKICAgIH0K
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBf
QWxsb2M+CiAgICB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+
OjpzaXplX3R5cGUKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46Ogog
ICAgZmluZF9sYXN0X25vdF9vZihjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fcG9zLCBz
aXplX3R5cGUgX19uKSBjb25zdAogICAgewogICAgICA7CiAgICAgIHNpemVfdHlwZSBfX3NpemUg
PSB0aGlzLT5zaXplKCk7CiAgICAgIGlmIChfX3NpemUpCiB7CiAgIGlmICgtLV9fc2l6ZSA+IF9f
cG9zKQogICAgIF9fc2l6ZSA9IF9fcG9zOwogICBkbwogICAgIHsKICAgICAgIGlmICghdHJhaXRz
X3R5cGU6OmZpbmQoX19zLCBfX24sIF9NX2RhdGEoKVtfX3NpemVdKSkKICByZXR1cm4gX19zaXpl
OwogICAgIH0KICAgd2hpbGUgKF9fc2l6ZS0tKTsKIH0KICAgICAgcmV0dXJuIG5wb3M7CiAgICB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUg
X0FsbG9jPgogICAgdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9j
Pjo6c2l6ZV90eXBlCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoK
ICAgIGZpbmRfbGFzdF9ub3Rfb2YoX0NoYXJUIF9fYywgc2l6ZV90eXBlIF9fcG9zKSBjb25zdCBu
b2V4Y2VwdAogICAgewogICAgICBzaXplX3R5cGUgX19zaXplID0gdGhpcy0+c2l6ZSgpOwogICAg
ICBpZiAoX19zaXplKQogewogICBpZiAoLS1fX3NpemUgPiBfX3BvcykKICAgICBfX3NpemUgPSBf
X3BvczsKICAgZG8KICAgICB7CiAgICAgICBpZiAoIXRyYWl0c190eXBlOjplcShfTV9kYXRhKClb
X19zaXplXSwgX19jKSkKICByZXR1cm4gX19zaXplOwogICAgIH0KICAgd2hpbGUgKF9fc2l6ZS0t
KTsKIH0KICAgICAgcmV0dXJuIG5wb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW50CiAgICBiYXNpY19z
dHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIGNvbXBhcmUoc2l6ZV90eXBlIF9f
cG9zLCBzaXplX3R5cGUgX19uLCBjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyKSBjb25zdAogICAg
ewogICAgICBfTV9jaGVjayhfX3BvcywgImJhc2ljX3N0cmluZzo6Y29tcGFyZSIpOwogICAgICBf
X24gPSBfTV9saW1pdChfX3BvcywgX19uKTsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fb3NpemUg
PSBfX3N0ci5zaXplKCk7CiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX2xlbiA9IHN0ZDo6bWluKF9f
biwgX19vc2l6ZSk7CiAgICAgIGludCBfX3IgPSB0cmFpdHNfdHlwZTo6Y29tcGFyZShfTV9kYXRh
KCkgKyBfX3BvcywgX19zdHIuZGF0YSgpLCBfX2xlbik7CiAgICAgIGlmICghX19yKQogX19yID0g
X1NfY29tcGFyZShfX24sIF9fb3NpemUpOwogICAgICByZXR1cm4gX19yOwogICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4K
ICAgIGludAogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBj
b21wYXJlKHNpemVfdHlwZSBfX3BvczEsIHNpemVfdHlwZSBfX24xLCBjb25zdCBiYXNpY19zdHJp
bmcmIF9fc3RyLAogICAgIHNpemVfdHlwZSBfX3BvczIsIHNpemVfdHlwZSBfX24yKSBjb25zdAog
ICAgewogICAgICBfTV9jaGVjayhfX3BvczEsICJiYXNpY19zdHJpbmc6OmNvbXBhcmUiKTsKICAg
ICAgX19zdHIuX01fY2hlY2soX19wb3MyLCAiYmFzaWNfc3RyaW5nOjpjb21wYXJlIik7CiAgICAg
IF9fbjEgPSBfTV9saW1pdChfX3BvczEsIF9fbjEpOwogICAgICBfX24yID0gX19zdHIuX01fbGlt
aXQoX19wb3MyLCBfX24yKTsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0gc3RkOjptaW4o
X19uMSwgX19uMik7CiAgICAgIGludCBfX3IgPSB0cmFpdHNfdHlwZTo6Y29tcGFyZShfTV9kYXRh
KCkgKyBfX3BvczEsCiAgICAgICAgIF9fc3RyLmRhdGEoKSArIF9fcG9zMiwgX19sZW4pOwogICAg
ICBpZiAoIV9fcikKIF9fciA9IF9TX2NvbXBhcmUoX19uMSwgX19uMik7CiAgICAgIHJldHVybiBf
X3I7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywg
dHlwZW5hbWUgX0FsbG9jPgogICAgaW50CiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRz
LCBfQWxsb2M+OjoKICAgIGNvbXBhcmUoY29uc3QgX0NoYXJUKiBfX3MpIGNvbnN0CiAgICB7CiAg
ICAgIDsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fc2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICAg
Y29uc3Qgc2l6ZV90eXBlIF9fb3NpemUgPSB0cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcyk7CiAgICAg
IGNvbnN0IHNpemVfdHlwZSBfX2xlbiA9IHN0ZDo6bWluKF9fc2l6ZSwgX19vc2l6ZSk7CiAgICAg
IGludCBfX3IgPSB0cmFpdHNfdHlwZTo6Y29tcGFyZShfTV9kYXRhKCksIF9fcywgX19sZW4pOwog
ICAgICBpZiAoIV9fcikKIF9fciA9IF9TX2NvbXBhcmUoX19zaXplLCBfX29zaXplKTsKICAgICAg
cmV0dXJuIF9fcjsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBpbnQKICAgIGJhc2ljX3N0cmluZyA8X0NoYXJU
LCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIGNvbXBhcmUoc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5
cGUgX19uMSwgY29uc3QgX0NoYXJUKiBfX3MpIGNvbnN0CiAgICB7CiAgICAgIDsKICAgICAgX01f
Y2hlY2soX19wb3MsICJiYXNpY19zdHJpbmc6OmNvbXBhcmUiKTsKICAgICAgX19uMSA9IF9NX2xp
bWl0KF9fcG9zLCBfX24xKTsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fb3NpemUgPSB0cmFpdHNf
dHlwZTo6bGVuZ3RoKF9fcyk7CiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX2xlbiA9IHN0ZDo6bWlu
KF9fbjEsIF9fb3NpemUpOwogICAgICBpbnQgX19yID0gdHJhaXRzX3R5cGU6OmNvbXBhcmUoX01f
ZGF0YSgpICsgX19wb3MsIF9fcywgX19sZW4pOwogICAgICBpZiAoIV9fcikKIF9fciA9IF9TX2Nv
bXBhcmUoX19uMSwgX19vc2l6ZSk7CiAgICAgIHJldHVybiBfX3I7CiAgICB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAg
aW50CiAgICBiYXNpY19zdHJpbmcgPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBjb21w
YXJlKHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbjEsIGNvbnN0IF9DaGFyVCogX19zLAog
ICAgIHNpemVfdHlwZSBfX24yKSBjb25zdAogICAgewogICAgICA7CiAgICAgIF9NX2NoZWNrKF9f
cG9zLCAiYmFzaWNfc3RyaW5nOjpjb21wYXJlIik7CiAgICAgIF9fbjEgPSBfTV9saW1pdChfX3Bv
cywgX19uMSk7CiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX2xlbiA9IHN0ZDo6bWluKF9fbjEsIF9f
bjIpOwogICAgICBpbnQgX19yID0gdHJhaXRzX3R5cGU6OmNvbXBhcmUoX01fZGF0YSgpICsgX19w
b3MsIF9fcywgX19sZW4pOwogICAgICBpZiAoIV9fcikKIF9fciA9IF9TX2NvbXBhcmUoX19uMSwg
X19uMik7CiAgICAgIHJldHVybiBfX3I7CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGJhc2ljX2lzdHJlYW08
X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPj4oYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9U
cmFpdHM+JiBfX2luLAogICAgICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxv
Yz4mIF9fc3RyKQogICAgewogICAgICB0eXBlZGVmIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJh
aXRzPiBfX2lzdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiBiYXNpY19zdHJpbmc8X0NoYXJULCBf
VHJhaXRzLCBfQWxsb2M+IF9fc3RyaW5nX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19p
c3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jhc2U7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
X19pc3RyZWFtX3R5cGU6OmludF90eXBlIF9faW50X3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgX19zdHJpbmdfdHlwZTo6c2l6ZV90eXBlIF9fc2l6ZV90eXBlOwogICAgICB0eXBlZGVmIGN0
eXBlPF9DaGFyVD4gX19jdHlwZV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fY3R5cGVf
dHlwZTo6Y3R5cGVfYmFzZSBfX2N0eXBlX2Jhc2U7CgogICAgICBfX3NpemVfdHlwZSBfX2V4dHJh
Y3RlZCA9IDA7CiAgICAgIHR5cGVuYW1lIF9faW9zX2Jhc2U6Omlvc3RhdGUgX19lcnIgPSBfX2lv
c19iYXNlOjpnb29kYml0OwogICAgICB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6c2VudHJ5IF9f
Y2VyYihfX2luLCBmYWxzZSk7CiAgICAgIGlmIChfX2NlcmIpCiB7CiAgIGlmICh0cnVlKQogICAg
IHsKCiAgICAgICBfX3N0ci5lcmFzZSgpOwogICAgICAgX0NoYXJUIF9fYnVmWzEyOF07CiAgICAg
ICBfX3NpemVfdHlwZSBfX2xlbiA9IDA7CiAgICAgICBjb25zdCBzdHJlYW1zaXplIF9fdyA9IF9f
aW4ud2lkdGgoKTsKICAgICAgIGNvbnN0IF9fc2l6ZV90eXBlIF9fbiA9IF9fdyA+IDAgPyBzdGF0
aWNfY2FzdDxfX3NpemVfdHlwZT4oX193KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogX19zdHIubWF4X3NpemUoKTsKICAgICAgIGNvbnN0IF9fY3R5cGVfdHlwZSYgX19jdCA9IHVz
ZV9mYWNldDxfX2N0eXBlX3R5cGU+KF9faW4uZ2V0bG9jKCkpOwogICAgICAgY29uc3QgX19pbnRf
dHlwZSBfX2VvZiA9IF9UcmFpdHM6OmVvZigpOwogICAgICAgX19pbnRfdHlwZSBfX2MgPSBfX2lu
LnJkYnVmKCktPnNnZXRjKCk7CgogICAgICAgd2hpbGUgKF9fZXh0cmFjdGVkIDwgX19uCiAgICAg
ICAmJiAhX1RyYWl0czo6ZXFfaW50X3R5cGUoX19jLCBfX2VvZikKICAgICAgICYmICFfX2N0Lmlz
KF9fY3R5cGVfYmFzZTo6c3BhY2UsCiAgICAgX1RyYWl0czo6dG9fY2hhcl90eXBlKF9fYykpKQog
IHsKICAgIGlmIChfX2xlbiA9PSBzaXplb2YoX19idWYpIC8gc2l6ZW9mKF9DaGFyVCkpCiAgICAg
IHsKICAgICAgICBfX3N0ci5hcHBlbmQoX19idWYsIHNpemVvZihfX2J1ZikgLyBzaXplb2YoX0No
YXJUKSk7CiAgICAgICAgX19sZW4gPSAwOwogICAgICB9CiAgICBfX2J1ZltfX2xlbisrXSA9IF9U
cmFpdHM6OnRvX2NoYXJfdHlwZShfX2MpOwogICAgKytfX2V4dHJhY3RlZDsKICAgIF9fYyA9IF9f
aW4ucmRidWYoKS0+c25leHRjKCk7CiAgfQogICAgICAgX19zdHIuYXBwZW5kKF9fYnVmLCBfX2xl
bik7CgogICAgICAgaWYgKF9UcmFpdHM6OmVxX2ludF90eXBlKF9fYywgX19lb2YpKQogIF9fZXJy
IHw9IF9faW9zX2Jhc2U6OmVvZmJpdDsKICAgICAgIF9faW4ud2lkdGgoMCk7CiAgICAgfQogICBp
ZiAoZmFsc2UpCiAgICAgewogICAgICAgX19pbi5fTV9zZXRzdGF0ZShfX2lvc19iYXNlOjpiYWRi
aXQpOwogICAgICAgOwogICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsKCgoKICAgICAgIF9faW4u
X01fc2V0c3RhdGUoX19pb3NfYmFzZTo6YmFkYml0KTsKICAgICB9CiB9CgogICAgICBpZiAoIV9f
ZXh0cmFjdGVkKQogX19lcnIgfD0gX19pb3NfYmFzZTo6ZmFpbGJpdDsKICAgICAgaWYgKF9fZXJy
KQogX19pbi5zZXRzdGF0ZShfX2Vycik7CiAgICAgIHJldHVybiBfX2luOwogICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4K
ICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIGdldGxpbmUoYmFzaWNfaXN0
cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2luLAogICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9U
cmFpdHMsIF9BbGxvYz4mIF9fc3RyLCBfQ2hhclQgX19kZWxpbSkKICAgIHsKICAgICAgdHlwZWRl
ZiBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5cGU7CiAgICAgIHR5
cGVkZWYgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiBfX3N0cmluZ190eXBl
OwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXN0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19i
YXNlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXN0cmVhbV90eXBlOjppbnRfdHlwZSBfX2lu
dF90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fc3RyaW5nX3R5cGU6OnNpemVfdHlwZSBf
X3NpemVfdHlwZTsKCiAgICAgIF9fc2l6ZV90eXBlIF9fZXh0cmFjdGVkID0gMDsKICAgICAgY29u
c3QgX19zaXplX3R5cGUgX19uID0gX19zdHIubWF4X3NpemUoKTsKICAgICAgdHlwZW5hbWUgX19p
b3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IF9faW9zX2Jhc2U6Omdvb2RiaXQ7CiAgICAgIHR5cGVu
YW1lIF9faXN0cmVhbV90eXBlOjpzZW50cnkgX19jZXJiKF9faW4sIHRydWUpOwogICAgICBpZiAo
X19jZXJiKQogewogICBpZiAodHJ1ZSkKICAgICB7CiAgICAgICBfX3N0ci5lcmFzZSgpOwogICAg
ICAgY29uc3QgX19pbnRfdHlwZSBfX2lkZWxpbSA9IF9UcmFpdHM6OnRvX2ludF90eXBlKF9fZGVs
aW0pOwogICAgICAgY29uc3QgX19pbnRfdHlwZSBfX2VvZiA9IF9UcmFpdHM6OmVvZigpOwogICAg
ICAgX19pbnRfdHlwZSBfX2MgPSBfX2luLnJkYnVmKCktPnNnZXRjKCk7CgogICAgICAgd2hpbGUg
KF9fZXh0cmFjdGVkIDwgX19uCiAgICAgICAmJiAhX1RyYWl0czo6ZXFfaW50X3R5cGUoX19jLCBf
X2VvZikKICAgICAgICYmICFfVHJhaXRzOjplcV9pbnRfdHlwZShfX2MsIF9faWRlbGltKSkKICB7
CiAgICBfX3N0ciArPSBfVHJhaXRzOjp0b19jaGFyX3R5cGUoX19jKTsKICAgICsrX19leHRyYWN0
ZWQ7CiAgICBfX2MgPSBfX2luLnJkYnVmKCktPnNuZXh0YygpOwogIH0KCiAgICAgICBpZiAoX1Ry
YWl0czo6ZXFfaW50X3R5cGUoX19jLCBfX2VvZikpCiAgX19lcnIgfD0gX19pb3NfYmFzZTo6ZW9m
Yml0OwogICAgICAgZWxzZSBpZiAoX1RyYWl0czo6ZXFfaW50X3R5cGUoX19jLCBfX2lkZWxpbSkp
CiAgewogICAgKytfX2V4dHJhY3RlZDsKICAgIF9faW4ucmRidWYoKS0+c2J1bXBjKCk7CiAgfQog
ICAgICAgZWxzZQogIF9fZXJyIHw9IF9faW9zX2Jhc2U6OmZhaWxiaXQ7CiAgICAgfQogICBpZiAo
ZmFsc2UpCiAgICAgewogICAgICAgX19pbi5fTV9zZXRzdGF0ZShfX2lvc19iYXNlOjpiYWRiaXQp
OwogICAgICAgOwogICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsKCgoKICAgICAgIF9faW4uX01f
c2V0c3RhdGUoX19pb3NfYmFzZTo6YmFkYml0KTsKICAgICB9CiB9CiAgICAgIGlmICghX19leHRy
YWN0ZWQpCiBfX2VyciB8PSBfX2lvc19iYXNlOjpmYWlsYml0OwogICAgICBpZiAoX19lcnIpCiBf
X2luLnNldHN0YXRlKF9fZXJyKTsKICAgICAgcmV0dXJuIF9faW47CiAgICB9CgoKCgogIGV4dGVy
biB0ZW1wbGF0ZSBjbGFzcyBiYXNpY19zdHJpbmc8Y2hhcj47CiAgZXh0ZXJuIHRlbXBsYXRlCiAg
ICBiYXNpY19pc3RyZWFtPGNoYXI+JgogICAgb3BlcmF0b3I+PihiYXNpY19pc3RyZWFtPGNoYXI+
Jiwgc3RyaW5nJik7CiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBiYXNpY19vc3RyZWFtPGNoYXI+Jgog
ICAgb3BlcmF0b3I8PChiYXNpY19vc3RyZWFtPGNoYXI+JiwgY29uc3Qgc3RyaW5nJik7CiAgZXh0
ZXJuIHRlbXBsYXRlCiAgICBiYXNpY19pc3RyZWFtPGNoYXI+JgogICAgZ2V0bGluZShiYXNpY19p
c3RyZWFtPGNoYXI+Jiwgc3RyaW5nJiwgY2hhcik7CiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBiYXNp
Y19pc3RyZWFtPGNoYXI+JgogICAgZ2V0bGluZShiYXNpY19pc3RyZWFtPGNoYXI+Jiwgc3RyaW5n
Jik7CgoKICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgYmFzaWNfc3RyaW5nPHdjaGFyX3Q+OwogIGV4
dGVybiB0ZW1wbGF0ZQogICAgYmFzaWNfaXN0cmVhbTx3Y2hhcl90PiYKICAgIG9wZXJhdG9yPj4o
YmFzaWNfaXN0cmVhbTx3Y2hhcl90PiYsIHdzdHJpbmcmKTsKICBleHRlcm4gdGVtcGxhdGUKICAg
IGJhc2ljX29zdHJlYW08d2NoYXJfdD4mCiAgICBvcGVyYXRvcjw8KGJhc2ljX29zdHJlYW08d2No
YXJfdD4mLCBjb25zdCB3c3RyaW5nJik7CiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBiYXNpY19pc3Ry
ZWFtPHdjaGFyX3Q+JgogICAgZ2V0bGluZShiYXNpY19pc3RyZWFtPHdjaGFyX3Q+Jiwgd3N0cmlu
ZyYsIHdjaGFyX3QpOwogIGV4dGVybiB0ZW1wbGF0ZQogICAgYmFzaWNfaXN0cmVhbTx3Y2hhcl90
PiYKICAgIGdldGxpbmUoYmFzaWNfaXN0cmVhbTx3Y2hhcl90PiYsIHdzdHJpbmcmKTsKCgoKCn0K
IyA1NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL3N0
cmluZyIgMiAzCiMgNDAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjguMS9zdGRleGNlcHQiIDIgMwoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192
aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgojIDU1ICIvbW50L3N0b3JlL0FSTS90b29sY2hh
aW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvc3RkZXhjZXB0IiAzCiAgY2xhc3MgbG9naWNfZXJy
b3IgOiBwdWJsaWMgZXhjZXB0aW9uCiAgewogICAgc3RyaW5nIF9NX21zZzsKCiAgcHVibGljOgoK
ICAgIGV4cGxpY2l0CiAgICBsb2dpY19lcnJvcihjb25zdCBzdHJpbmcmIF9fYXJnKTsKCiAgICB2
aXJ0dWFsIH5sb2dpY19lcnJvcigpIG5vZXhjZXB0OwoKCgogICAgdmlydHVhbCBjb25zdCBjaGFy
KgogICAgd2hhdCgpIGNvbnN0IG5vZXhjZXB0OwogIH07CgoKCiAgY2xhc3MgZG9tYWluX2Vycm9y
IDogcHVibGljIGxvZ2ljX2Vycm9yCiAgewogIHB1YmxpYzoKICAgIGV4cGxpY2l0IGRvbWFpbl9l
cnJvcihjb25zdCBzdHJpbmcmIF9fYXJnKTsKICAgIHZpcnR1YWwgfmRvbWFpbl9lcnJvcigpIG5v
ZXhjZXB0OwogIH07CgoKICBjbGFzcyBpbnZhbGlkX2FyZ3VtZW50IDogcHVibGljIGxvZ2ljX2Vy
cm9yCiAgewogIHB1YmxpYzoKICAgIGV4cGxpY2l0IGludmFsaWRfYXJndW1lbnQoY29uc3Qgc3Ry
aW5nJiBfX2FyZyk7CiAgICB2aXJ0dWFsIH5pbnZhbGlkX2FyZ3VtZW50KCkgbm9leGNlcHQ7CiAg
fTsKCgoKICBjbGFzcyBsZW5ndGhfZXJyb3IgOiBwdWJsaWMgbG9naWNfZXJyb3IKICB7CiAgcHVi
bGljOgogICAgZXhwbGljaXQgbGVuZ3RoX2Vycm9yKGNvbnN0IHN0cmluZyYgX19hcmcpOwogICAg
dmlydHVhbCB+bGVuZ3RoX2Vycm9yKCkgbm9leGNlcHQ7CiAgfTsKCgoKICBjbGFzcyBvdXRfb2Zf
cmFuZ2UgOiBwdWJsaWMgbG9naWNfZXJyb3IKICB7CiAgcHVibGljOgogICAgZXhwbGljaXQgb3V0
X29mX3JhbmdlKGNvbnN0IHN0cmluZyYgX19hcmcpOwogICAgdmlydHVhbCB+b3V0X29mX3Jhbmdl
KCkgbm9leGNlcHQ7CiAgfTsKCgoKCgoKICBjbGFzcyBydW50aW1lX2Vycm9yIDogcHVibGljIGV4
Y2VwdGlvbgogIHsKICAgIHN0cmluZyBfTV9tc2c7CgogIHB1YmxpYzoKCiAgICBleHBsaWNpdAog
ICAgcnVudGltZV9lcnJvcihjb25zdCBzdHJpbmcmIF9fYXJnKTsKCiAgICB2aXJ0dWFsIH5ydW50
aW1lX2Vycm9yKCkgbm9leGNlcHQ7CgoKCiAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqCiAgICB3aGF0
KCkgY29uc3Qgbm9leGNlcHQ7CiAgfTsKCgogIGNsYXNzIHJhbmdlX2Vycm9yIDogcHVibGljIHJ1
bnRpbWVfZXJyb3IKICB7CiAgcHVibGljOgogICAgZXhwbGljaXQgcmFuZ2VfZXJyb3IoY29uc3Qg
c3RyaW5nJiBfX2FyZyk7CiAgICB2aXJ0dWFsIH5yYW5nZV9lcnJvcigpIG5vZXhjZXB0OwogIH07
CgoKICBjbGFzcyBvdmVyZmxvd19lcnJvciA6IHB1YmxpYyBydW50aW1lX2Vycm9yCiAgewogIHB1
YmxpYzoKICAgIGV4cGxpY2l0IG92ZXJmbG93X2Vycm9yKGNvbnN0IHN0cmluZyYgX19hcmcpOwog
ICAgdmlydHVhbCB+b3ZlcmZsb3dfZXJyb3IoKSBub2V4Y2VwdDsKICB9OwoKCiAgY2xhc3MgdW5k
ZXJmbG93X2Vycm9yIDogcHVibGljIHJ1bnRpbWVfZXJyb3IKICB7CiAgcHVibGljOgogICAgZXhw
bGljaXQgdW5kZXJmbG93X2Vycm9yKGNvbnN0IHN0cmluZyYgX19hcmcpOwogICAgdmlydHVhbCB+
dW5kZXJmbG93X2Vycm9yKCkgbm9leGNlcHQ7CiAgfTsKCgoKCn0KIyAzOSAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2FycmF5IiAyIDMKCgoKbmFtZXNw
YWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHN0ZDo6c2l6ZV90IF9ObT4KICAgIHN0cnVjdCBfX2Fy
cmF5X3RyYWl0cwogICAgewogICAgICB0eXBlZGVmIF9UcCBfVHlwZVtfTm1dOwoKICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBfVHAmCiAgICAgIF9TX3JlZihjb25zdCBfVHlwZSYgX190LCBzdGQ6OnNp
emVfdCBfX24pIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8X1RwJj4oX190W19f
bl0pOyB9CiAgICB9OwoKIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgc3RydWN0IF9fYXJyYXlf
dHJhaXRzPF9UcCwgMD4KICAgewogICAgIHN0cnVjdCBfVHlwZSB7IH07CgogICAgIHN0YXRpYyBj
b25zdGV4cHIgX1RwJgogICAgIF9TX3JlZihjb25zdCBfVHlwZSYsIHN0ZDo6c2l6ZV90KSBub2V4
Y2VwdAogICAgIHsgcmV0dXJuICpzdGF0aWNfY2FzdDxfVHAqPihudWxscHRyKTsgfQogICB9Owoj
IDgwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYXJy
YXkiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHN0ZDo6c2l6ZV90IF9ObT4KICAgIHN0cnVj
dCBhcnJheQogICAgewogICAgICB0eXBlZGVmIF9UcCB2YWx1ZV90eXBlOwogICAgICB0eXBlZGVm
IHZhbHVlX3R5cGUqIHBvaW50ZXI7CiAgICAgIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSogY29u
c3RfcG9pbnRlcjsKICAgICAgdHlwZWRlZiB2YWx1ZV90eXBlJiByZWZlcmVuY2U7CiAgICAgIHR5
cGVkZWYgY29uc3QgdmFsdWVfdHlwZSYgY29uc3RfcmVmZXJlbmNlOwogICAgICB0eXBlZGVmIHZh
bHVlX3R5cGUqIGl0ZXJhdG9yOwogICAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUqIGNvbnN0
X2l0ZXJhdG9yOwogICAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90IHNpemVfdHlwZTsKICAgICAgdHlw
ZWRlZiBzdGQ6OnB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7CiAgICAgIHR5cGVkZWYgc3RkOjpy
ZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPiByZXZlcnNlX2l0ZXJhdG9yOwogICAgICB0eXBlZGVm
IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcj4gY29uc3RfcmV2ZXJzZV9pdGVy
YXRvcjsKCgogICAgICB0eXBlZGVmIHN0ZDo6X19hcnJheV90cmFpdHM8X1RwLCBfTm0+IF9BVF9U
eXBlOwogICAgICB0eXBlbmFtZSBfQVRfVHlwZTo6X1R5cGUgX01fZWxlbXM7CgoKCgogICAgICB2
b2lkCiAgICAgIGZpbGwoY29uc3QgdmFsdWVfdHlwZSYgX191KQogICAgICB7IHN0ZDo6ZmlsbF9u
KGJlZ2luKCksIHNpemUoKSwgX191KTsgfQoKICAgICAgdm9pZAogICAgICBzd2FwKGFycmF5JiBf
X290aGVyKQogICAgICBub2V4Y2VwdChub2V4Y2VwdChzd2FwKHN0ZDo6ZGVjbHZhbDxfVHAmPigp
LCBzdGQ6OmRlY2x2YWw8X1RwJj4oKSkpKQogICAgICB7IHN0ZDo6c3dhcF9yYW5nZXMoYmVnaW4o
KSwgZW5kKCksIF9fb3RoZXIuYmVnaW4oKSk7IH0KCgogICAgICBpdGVyYXRvcgogICAgICBiZWdp
bigpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIGl0ZXJhdG9yKGRhdGEoKSk7IH0KCiAgICAgIGNv
bnN0X2l0ZXJhdG9yCiAgICAgIGJlZ2luKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4g
Y29uc3RfaXRlcmF0b3IoZGF0YSgpKTsgfQoKICAgICAgaXRlcmF0b3IKICAgICAgZW5kKCkgbm9l
eGNlcHQKICAgICAgeyByZXR1cm4gaXRlcmF0b3IoZGF0YSgpICsgX05tKTsgfQoKICAgICAgY29u
c3RfaXRlcmF0b3IKICAgICAgZW5kKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gY29u
c3RfaXRlcmF0b3IoZGF0YSgpICsgX05tKTsgfQoKICAgICAgcmV2ZXJzZV9pdGVyYXRvcgogICAg
ICByYmVnaW4oKSBub2V4Y2VwdAogICAgICB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVuZCgp
KTsgfQoKICAgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvcgogICAgICByYmVnaW4oKSBjb25zdCBu
b2V4Y2VwdAogICAgICB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQoK
ICAgICAgcmV2ZXJzZV9pdGVyYXRvcgogICAgICByZW5kKCkgbm9leGNlcHQKICAgICAgeyByZXR1
cm4gcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsgfQoKICAgICAgY29uc3RfcmV2ZXJzZV9pdGVy
YXRvcgogICAgICByZW5kKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gY29uc3RfcmV2
ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsgfQoKICAgICAgY29uc3RfaXRlcmF0b3IKICAgICAgY2Jl
Z2luKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IoZGF0YSgp
KTsgfQoKICAgICAgY29uc3RfaXRlcmF0b3IKICAgICAgY2VuZCgpIGNvbnN0IG5vZXhjZXB0CiAg
ICAgIHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKGRhdGEoKSArIF9ObSk7IH0KCiAgICAgIGNvbnN0
X3JldmVyc2VfaXRlcmF0b3IKICAgICAgY3JiZWdpbigpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsg
cmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9CgogICAgICBjb25zdF9yZXZl
cnNlX2l0ZXJhdG9yCiAgICAgIGNyZW5kKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4g
Y29uc3RfcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsgfQoKCiAgICAgIGNvbnN0ZXhwciBzaXpl
X3R5cGUKICAgICAgc2l6ZSgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9ObTsgfQoKICAgICAg
Y29uc3RleHByIHNpemVfdHlwZQogICAgICBtYXhfc2l6ZSgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0
dXJuIF9ObTsgfQoKICAgICAgY29uc3RleHByIGJvb2wKICAgICAgZW1wdHkoKSBjb25zdCBub2V4
Y2VwdCB7IHJldHVybiBzaXplKCkgPT0gMDsgfQoKCiAgICAgIHJlZmVyZW5jZQogICAgICBvcGVy
YXRvcltdKHNpemVfdHlwZSBfX24pCiAgICAgIHsgcmV0dXJuIF9BVF9UeXBlOjpfU19yZWYoX01f
ZWxlbXMsIF9fbik7IH0KCiAgICAgIGNvbnN0ZXhwciBjb25zdF9yZWZlcmVuY2UKICAgICAgb3Bl
cmF0b3JbXShzaXplX3R5cGUgX19uKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBfQVRf
VHlwZTo6X1NfcmVmKF9NX2VsZW1zLCBfX24pOyB9CgogICAgICByZWZlcmVuY2UKICAgICAgYXQo
c2l6ZV90eXBlIF9fbikKICAgICAgewogaWYgKF9fbiA+PSBfTm0pCiAgIHN0ZDo6X190aHJvd19v
dXRfb2ZfcmFuZ2UoKCJhcnJheTo6YXQiKSk7CiByZXR1cm4gX0FUX1R5cGU6Ol9TX3JlZihfTV9l
bGVtcywgX19uKTsKICAgICAgfQoKICAgICAgY29uc3RleHByIGNvbnN0X3JlZmVyZW5jZQogICAg
ICBhdChzaXplX3R5cGUgX19uKSBjb25zdAogICAgICB7CgoKIHJldHVybiBfX24gPCBfTm0gPyBf
QVRfVHlwZTo6X1NfcmVmKF9NX2VsZW1zLCBfX24pCiAgIDogKHN0ZDo6X190aHJvd19vdXRfb2Zf
cmFuZ2UoKCJhcnJheTo6YXQiKSksCiAgICAgIF9BVF9UeXBlOjpfU19yZWYoX01fZWxlbXMsIDAp
KTsKICAgICAgfQoKICAgICAgcmVmZXJlbmNlCiAgICAgIGZyb250KCkKICAgICAgeyByZXR1cm4g
KmJlZ2luKCk7IH0KCiAgICAgIGNvbnN0ZXhwciBjb25zdF9yZWZlcmVuY2UKICAgICAgZnJvbnQo
KSBjb25zdAogICAgICB7IHJldHVybiBfQVRfVHlwZTo6X1NfcmVmKF9NX2VsZW1zLCAwKTsgfQoK
ICAgICAgcmVmZXJlbmNlCiAgICAgIGJhY2soKQogICAgICB7IHJldHVybiBfTm0gPyAqKGVuZCgp
IC0gMSkgOiAqZW5kKCk7IH0KCiAgICAgIGNvbnN0ZXhwciBjb25zdF9yZWZlcmVuY2UKICAgICAg
YmFjaygpIGNvbnN0CiAgICAgIHsKIHJldHVybiBfTm0gPyBfQVRfVHlwZTo6X1NfcmVmKF9NX2Vs
ZW1zLCBfTm0gLSAxKQogICAgICAgICAgICAgOiBfQVRfVHlwZTo6X1NfcmVmKF9NX2VsZW1zLCAw
KTsKICAgICAgfQoKICAgICAgcG9pbnRlcgogICAgICBkYXRhKCkgbm9leGNlcHQKICAgICAgeyBy
ZXR1cm4gc3RkOjpfX2FkZHJlc3NvZihfQVRfVHlwZTo6X1NfcmVmKF9NX2VsZW1zLCAwKSk7IH0K
CiAgICAgIGNvbnN0X3BvaW50ZXIKICAgICAgZGF0YSgpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsg
cmV0dXJuIHN0ZDo6X19hZGRyZXNzb2YoX0FUX1R5cGU6Ol9TX3JlZihfTV9lbGVtcywgMCkpOyB9
CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBzdGQ6OnNpemVfdCBfTm0+CiAgICBp
bmxpbmUgYm9vbAogICAgb3BlcmF0b3I9PShjb25zdCBhcnJheTxfVHAsIF9ObT4mIF9fb25lLCBj
b25zdCBhcnJheTxfVHAsIF9ObT4mIF9fdHdvKQogICAgeyByZXR1cm4gc3RkOjplcXVhbChfX29u
ZS5iZWdpbigpLCBfX29uZS5lbmQoKSwgX190d28uYmVnaW4oKSk7IH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwLCBzdGQ6OnNpemVfdCBfTm0+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3Ih
PShjb25zdCBhcnJheTxfVHAsIF9ObT4mIF9fb25lLCBjb25zdCBhcnJheTxfVHAsIF9ObT4mIF9f
dHdvKQogICAgeyByZXR1cm4gIShfX29uZSA9PSBfX3R3byk7IH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwLCBzdGQ6OnNpemVfdCBfTm0+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8KGNv
bnN0IGFycmF5PF9UcCwgX05tPiYgX19hLCBjb25zdCBhcnJheTxfVHAsIF9ObT4mIF9fYikKICAg
IHsKICAgICAgcmV0dXJuIHN0ZDo6bGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUoX19hLmJlZ2luKCks
IF9fYS5lbmQoKSwKICAgICAgIF9fYi5iZWdpbigpLCBfX2IuZW5kKCkpOwogICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHAsIHN0ZDo6c2l6ZV90IF9ObT4KICAgIGlubGluZSBib29sCiAgICBv
cGVyYXRvcj4oY29uc3QgYXJyYXk8X1RwLCBfTm0+JiBfX29uZSwgY29uc3QgYXJyYXk8X1RwLCBf
Tm0+JiBfX3R3bykKICAgIHsgcmV0dXJuIF9fdHdvIDwgX19vbmU7IH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwLCBzdGQ6OnNpemVfdCBfTm0+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8
PShjb25zdCBhcnJheTxfVHAsIF9ObT4mIF9fb25lLCBjb25zdCBhcnJheTxfVHAsIF9ObT4mIF9f
dHdvKQogICAgeyByZXR1cm4gIShfX29uZSA+IF9fdHdvKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHAsIHN0ZDo6c2l6ZV90IF9ObT4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj49KGNv
bnN0IGFycmF5PF9UcCwgX05tPiYgX19vbmUsIGNvbnN0IGFycmF5PF9UcCwgX05tPiYgX190d28p
CiAgICB7IHJldHVybiAhKF9fb25lIDwgX190d28pOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHAsIHN0ZDo6c2l6ZV90IF9ObT4KICAgIGlubGluZSB2b2lkCiAgICBzd2FwKGFycmF5PF9UcCwg
X05tPiYgX19vbmUsIGFycmF5PF9UcCwgX05tPiYgX190d28pCiAgICBub2V4Y2VwdChub2V4Y2Vw
dChfX29uZS5zd2FwKF9fdHdvKSkpCiAgICB7IF9fb25lLnN3YXAoX190d28pOyB9CgogIHRlbXBs
YXRlPHN0ZDo6c2l6ZV90IF9JbnQsIHR5cGVuYW1lIF9UcCwgc3RkOjpzaXplX3QgX05tPgogICAg
Y29uc3RleHByIF9UcCYKICAgIGdldChhcnJheTxfVHAsIF9ObT4mIF9fYXJyKSBub2V4Y2VwdAog
ICAgewogICAgICBzdGF0aWNfYXNzZXJ0KF9JbnQgPCBfTm0sICJpbmRleCBpcyBvdXQgb2YgYm91
bmRzIik7CiAgICAgIHJldHVybiBzdGQ6Ol9fYXJyYXlfdHJhaXRzPF9UcCwgX05tPjo6CiBfU19y
ZWYoX19hcnIuX01fZWxlbXMsIF9JbnQpOwogICAgfQoKICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBf
SW50LCB0eXBlbmFtZSBfVHAsIHN0ZDo6c2l6ZV90IF9ObT4KICAgIGNvbnN0ZXhwciBfVHAmJgog
ICAgZ2V0KGFycmF5PF9UcCwgX05tPiYmIF9fYXJyKSBub2V4Y2VwdAogICAgewogICAgICBzdGF0
aWNfYXNzZXJ0KF9JbnQgPCBfTm0sICJpbmRleCBpcyBvdXQgb2YgYm91bmRzIik7CiAgICAgIHJl
dHVybiBzdGQ6Om1vdmUoZ2V0PF9JbnQ+KF9fYXJyKSk7CiAgICB9CgogIHRlbXBsYXRlPHN0ZDo6
c2l6ZV90IF9JbnQsIHR5cGVuYW1lIF9UcCwgc3RkOjpzaXplX3QgX05tPgogICAgY29uc3RleHBy
IGNvbnN0IF9UcCYKICAgIGdldChjb25zdCBhcnJheTxfVHAsIF9ObT4mIF9fYXJyKSBub2V4Y2Vw
dAogICAgewogICAgICBzdGF0aWNfYXNzZXJ0KF9JbnQgPCBfTm0sICJpbmRleCBpcyBvdXQgb2Yg
Ym91bmRzIik7CiAgICAgIHJldHVybiBzdGQ6Ol9fYXJyYXlfdHJhaXRzPF9UcCwgX05tPjo6CiBf
U19yZWYoX19hcnIuX01fZWxlbXMsIF9JbnQpOwogICAgfQoKCn0KCm5hbWVzcGFjZSBzdGQgX19h
dHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCgoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgY2xhc3MgdHVwbGVfc2l6ZTsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwLCBzdGQ6OnNpemVfdCBfTm0+CiAgICBzdHJ1Y3QgdHVwbGVfc2l6ZTxzdGQ6OmFycmF5
PF9UcCwgX05tPj4KICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PHN0ZDo6c2l6ZV90LCBf
Tm0+IHsgfTsKCgogIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IF9JbnQsIHR5cGVuYW1lIF9UcD4KICAg
IGNsYXNzIHR1cGxlX2VsZW1lbnQ7CgogIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IF9JbnQsIHR5cGVu
YW1lIF9UcCwgc3RkOjpzaXplX3QgX05tPgogICAgc3RydWN0IHR1cGxlX2VsZW1lbnQ8X0ludCwg
c3RkOjphcnJheTxfVHAsIF9ObT4+CiAgICB7CiAgICAgIHN0YXRpY19hc3NlcnQoX0ludCA8IF9O
bSwgImluZGV4IGlzIG91dCBvZiBib3VuZHMiKTsKICAgICAgdHlwZWRlZiBfVHAgdHlwZTsKICAg
IH07CgoKfQojIDQwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC44LjEvdHVwbGUiIDIgMwoKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJp
bGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
ICAgc3RydWN0IF9fYWRkX2NfcmVmCiAgICB7IHR5cGVkZWYgY29uc3QgX1RwJiB0eXBlOyB9OwoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19hZGRfY19yZWY8X1RwJj4KICAg
IHsgdHlwZWRlZiBfVHAmIHR5cGU7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBz
dHJ1Y3QgX19hZGRfcmVmCiAgICB7IHR5cGVkZWYgX1RwJiB0eXBlOyB9OwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19hZGRfcmVmPF9UcCY+CiAgICB7IHR5cGVkZWYgX1Rw
JiB0eXBlOyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9fYWRkX3Jf
cmVmCiAgICB7IHR5cGVkZWYgX1RwJiYgdHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PgogICAgc3RydWN0IF9fYWRkX3JfcmVmPF9UcCY+CiAgICB7IHR5cGVkZWYgX1RwJiB0eXBlOyB9
OwoKICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBfSWR4LCB0eXBlbmFtZSBfSGVhZCwgYm9vbCBfSXNF
bXB0eU5vdEZpbmFsPgogICAgc3RydWN0IF9IZWFkX2Jhc2U7CgogIHRlbXBsYXRlPHN0ZDo6c2l6
ZV90IF9JZHgsIHR5cGVuYW1lIF9IZWFkPgogICAgc3RydWN0IF9IZWFkX2Jhc2U8X0lkeCwgX0hl
YWQsIHRydWU+CiAgICA6IHB1YmxpYyBfSGVhZAogICAgewogICAgICBjb25zdGV4cHIgX0hlYWRf
YmFzZSgpCiAgICAgIDogX0hlYWQoKSB7IH0KCiAgICAgIGNvbnN0ZXhwciBfSGVhZF9iYXNlKGNv
bnN0IF9IZWFkJiBfX2gpCiAgICAgIDogX0hlYWQoX19oKSB7IH0KCiAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9VSGVhZCwgdHlwZW5hbWUgPSB0eXBlbmFtZQogICAgICAgIGVuYWJsZV9pZjwhaXNf
Y29udmVydGlibGU8X1VIZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX191
c2VzX2FsbG9jX2Jhc2U+Ojp2YWx1ZT46OnR5cGU+CiAgICAgICAgY29uc3RleHByIF9IZWFkX2Jh
c2UoX1VIZWFkJiYgX19oKQogOiBfSGVhZChzdGQ6OmZvcndhcmQ8X1VIZWFkPihfX2gpKSB7IH0K
CiAgICAgIF9IZWFkX2Jhc2UoX191c2VzX2FsbG9jMCkKICAgICAgOiBfSGVhZCgpIHsgfQoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jPgogX0hlYWRfYmFzZShfX3VzZXNfYWxsb2MxPF9B
bGxvYz4gX19hKQogOiBfSGVhZChhbGxvY2F0b3JfYXJnLCAqX19hLl9NX2EpIHsgfQoKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jPgogX0hlYWRfYmFzZShfX3VzZXNfYWxsb2MyPF9BbGxv
Yz4gX19hKQogOiBfSGVhZCgqX19hLl9NX2EpIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
X1VIZWFkPgogX0hlYWRfYmFzZShfX3VzZXNfYWxsb2MwLCBfVUhlYWQmJiBfX3VoZWFkKQogOiBf
SGVhZChzdGQ6OmZvcndhcmQ8X1VIZWFkPihfX3VoZWFkKSkgeyB9CgogICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1lIF9VSGVhZD4KIF9IZWFkX2Jhc2UoX191c2VzX2FsbG9j
MTxfQWxsb2M+IF9fYSwgX1VIZWFkJiYgX191aGVhZCkKIDogX0hlYWQoYWxsb2NhdG9yX2FyZywg
Kl9fYS5fTV9hLCBzdGQ6OmZvcndhcmQ8X1VIZWFkPihfX3VoZWFkKSkgeyB9CgogICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1lIF9VSGVhZD4KIF9IZWFkX2Jhc2UoX191c2Vz
X2FsbG9jMjxfQWxsb2M+IF9fYSwgX1VIZWFkJiYgX191aGVhZCkKIDogX0hlYWQoc3RkOjpmb3J3
YXJkPF9VSGVhZD4oX191aGVhZCksICpfX2EuX01fYSkgeyB9CgogICAgICBzdGF0aWMgY29uc3Rl
eHByIF9IZWFkJgogICAgICBfTV9oZWFkKF9IZWFkX2Jhc2UmIF9fYikgbm9leGNlcHQgeyByZXR1
cm4gX19iOyB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IF9IZWFkJgogICAgICBfTV9o
ZWFkKGNvbnN0IF9IZWFkX2Jhc2UmIF9fYikgbm9leGNlcHQgeyByZXR1cm4gX19iOyB9CiAgICB9
OwoKICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBfSWR4LCB0eXBlbmFtZSBfSGVhZD4KICAgIHN0cnVj
dCBfSGVhZF9iYXNlPF9JZHgsIF9IZWFkLCBmYWxzZT4KICAgIHsKICAgICAgY29uc3RleHByIF9I
ZWFkX2Jhc2UoKQogICAgICA6IF9NX2hlYWRfaW1wbCgpIHsgfQoKICAgICAgY29uc3RleHByIF9I
ZWFkX2Jhc2UoY29uc3QgX0hlYWQmIF9faCkKICAgICAgOiBfTV9oZWFkX2ltcGwoX19oKSB7IH0K
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VSGVhZCwgdHlwZW5hbWUgPSB0eXBlbmFtZQogICAg
ICAgIGVuYWJsZV9pZjwhaXNfY29udmVydGlibGU8X1VIZWFkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX191c2VzX2FsbG9jX2Jhc2U+Ojp2YWx1ZT46OnR5cGU+CiAgICAgICAg
Y29uc3RleHByIF9IZWFkX2Jhc2UoX1VIZWFkJiYgX19oKQogOiBfTV9oZWFkX2ltcGwoc3RkOjpm
b3J3YXJkPF9VSGVhZD4oX19oKSkgeyB9CgogICAgICBfSGVhZF9iYXNlKF9fdXNlc19hbGxvYzAp
CiAgICAgIDogX01faGVhZF9pbXBsKCkgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxs
b2M+CiBfSGVhZF9iYXNlKF9fdXNlc19hbGxvYzE8X0FsbG9jPiBfX2EpCiA6IF9NX2hlYWRfaW1w
bChhbGxvY2F0b3JfYXJnLCAqX19hLl9NX2EpIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
X0FsbG9jPgogX0hlYWRfYmFzZShfX3VzZXNfYWxsb2MyPF9BbGxvYz4gX19hKQogOiBfTV9oZWFk
X2ltcGwoKl9fYS5fTV9hKSB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VSGVhZD4KIF9I
ZWFkX2Jhc2UoX191c2VzX2FsbG9jMCwgX1VIZWFkJiYgX191aGVhZCkKIDogX01faGVhZF9pbXBs
KHN0ZDo6Zm9yd2FyZDxfVUhlYWQ+KF9fdWhlYWQpKSB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9BbGxvYywgdHlwZW5hbWUgX1VIZWFkPgogX0hlYWRfYmFzZShfX3VzZXNfYWxsb2MxPF9B
bGxvYz4gX19hLCBfVUhlYWQmJiBfX3VoZWFkKQogOiBfTV9oZWFkX2ltcGwoYWxsb2NhdG9yX2Fy
ZywgKl9fYS5fTV9hLCBzdGQ6OmZvcndhcmQ8X1VIZWFkPihfX3VoZWFkKSkKIHsgfQoKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZSBfVUhlYWQ+CiBfSGVhZF9iYXNlKF9f
dXNlc19hbGxvYzI8X0FsbG9jPiBfX2EsIF9VSGVhZCYmIF9fdWhlYWQpCiA6IF9NX2hlYWRfaW1w
bChzdGQ6OmZvcndhcmQ8X1VIZWFkPihfX3VoZWFkKSwgKl9fYS5fTV9hKSB7IH0KCiAgICAgIHN0
YXRpYyBjb25zdGV4cHIgX0hlYWQmCiAgICAgIF9NX2hlYWQoX0hlYWRfYmFzZSYgX19iKSBub2V4
Y2VwdCB7IHJldHVybiBfX2IuX01faGVhZF9pbXBsOyB9CgogICAgICBzdGF0aWMgY29uc3RleHBy
IGNvbnN0IF9IZWFkJgogICAgICBfTV9oZWFkKGNvbnN0IF9IZWFkX2Jhc2UmIF9fYikgbm9leGNl
cHQgeyByZXR1cm4gX19iLl9NX2hlYWRfaW1wbDsgfQoKICAgICAgX0hlYWQgX01faGVhZF9pbXBs
OwogICAgfTsKIyAxODMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjguMS90dXBsZSIgMwogIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IF9JZHgsIHR5cGVuYW1lLi4u
IF9FbGVtZW50cz4KICAgIHN0cnVjdCBfVHVwbGVfaW1wbDsKCgoKCgogIHRlbXBsYXRlPHN0ZDo6
c2l6ZV90IF9JZHg+CiAgICBzdHJ1Y3QgX1R1cGxlX2ltcGw8X0lkeD4KICAgIHsKICAgICAgdGVt
cGxhdGU8c3RkOjpzaXplX3QsIHR5cGVuYW1lLi4uPiBmcmllbmQgY2xhc3MgX1R1cGxlX2ltcGw7
CgogICAgICBfVHVwbGVfaW1wbCgpID0gZGVmYXVsdDsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IF9BbGxvYz4KICAgICAgICBfVHVwbGVfaW1wbChhbGxvY2F0b3JfYXJnX3QsIGNvbnN0IF9BbGxv
YyYpIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jPgogICAgICAgIF9UdXBsZV9p
bXBsKGFsbG9jYXRvcl9hcmdfdCwgY29uc3QgX0FsbG9jJiwgY29uc3QgX1R1cGxlX2ltcGwmKSB7
IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYz4KICAgICAgICBfVHVwbGVfaW1wbChh
bGxvY2F0b3JfYXJnX3QsIGNvbnN0IF9BbGxvYyYsIF9UdXBsZV9pbXBsJiYpIHsgfQoKICAgIHBy
b3RlY3RlZDoKICAgICAgdm9pZCBfTV9zd2FwKF9UdXBsZV9pbXBsJikgbm9leGNlcHQgeyB9CiAg
ICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19lbXB0eV9ub25f
dHVwbGUgOiBpc19lbXB0eTxfVHA+IHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9FbDAsIHR5
cGVuYW1lLi4uIF9FbD4KICAgIHN0cnVjdCBfX2lzX2VtcHR5X25vbl90dXBsZTx0dXBsZTxfRWww
LCBfRWwuLi4+PiA6IGZhbHNlX3R5cGUgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
ICAgdXNpbmcgX19lbXB0eV9ub3RfZmluYWwKICAgID0gdHlwZW5hbWUgY29uZGl0aW9uYWw8X19p
c19maW5hbChfVHApLCBmYWxzZV90eXBlLAogICAgICBfX2lzX2VtcHR5X25vbl90dXBsZTxfVHA+
Pjo6dHlwZTsKCgoKCgoKICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBfSWR4LCB0eXBlbmFtZSBfSGVh
ZCwgdHlwZW5hbWUuLi4gX1RhaWw+CiAgICBzdHJ1Y3QgX1R1cGxlX2ltcGw8X0lkeCwgX0hlYWQs
IF9UYWlsLi4uPgogICAgOiBwdWJsaWMgX1R1cGxlX2ltcGw8X0lkeCArIDEsIF9UYWlsLi4uPiwK
ICAgICAgcHJpdmF0ZSBfSGVhZF9iYXNlPF9JZHgsIF9IZWFkLCBfX2VtcHR5X25vdF9maW5hbDxf
SGVhZD46OnZhbHVlPgogICAgewogICAgICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCwgdHlwZW5hbWUu
Li4+IGZyaWVuZCBjbGFzcyBfVHVwbGVfaW1wbDsKCiAgICAgIHR5cGVkZWYgX1R1cGxlX2ltcGw8
X0lkeCArIDEsIF9UYWlsLi4uPiBfSW5oZXJpdGVkOwogICAgICB0eXBlZGVmIF9IZWFkX2Jhc2U8
X0lkeCwgX0hlYWQsIF9fZW1wdHlfbm90X2ZpbmFsPF9IZWFkPjo6dmFsdWU+IF9CYXNlOwoKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBfSGVhZCYKICAgICAgX01faGVhZChfVHVwbGVfaW1wbCYgX190
KSBub2V4Y2VwdCB7IHJldHVybiBfQmFzZTo6X01faGVhZChfX3QpOyB9CgogICAgICBzdGF0aWMg
Y29uc3RleHByIGNvbnN0IF9IZWFkJgogICAgICBfTV9oZWFkKGNvbnN0IF9UdXBsZV9pbXBsJiBf
X3QpIG5vZXhjZXB0IHsgcmV0dXJuIF9CYXNlOjpfTV9oZWFkKF9fdCk7IH0KCiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgX0luaGVyaXRlZCYKICAgICAgX01fdGFpbChfVHVwbGVfaW1wbCYgX190KSBu
b2V4Y2VwdCB7IHJldHVybiBfX3Q7IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgX0lu
aGVyaXRlZCYKICAgICAgX01fdGFpbChjb25zdCBfVHVwbGVfaW1wbCYgX190KSBub2V4Y2VwdCB7
IHJldHVybiBfX3Q7IH0KCiAgICAgIGNvbnN0ZXhwciBfVHVwbGVfaW1wbCgpCiAgICAgIDogX0lu
aGVyaXRlZCgpLCBfQmFzZSgpIHsgfQoKICAgICAgZXhwbGljaXQKICAgICAgY29uc3RleHByIF9U
dXBsZV9pbXBsKGNvbnN0IF9IZWFkJiBfX2hlYWQsIGNvbnN0IF9UYWlsJi4uLiBfX3RhaWwpCiAg
ICAgIDogX0luaGVyaXRlZChfX3RhaWwuLi4pLCBfQmFzZShfX2hlYWQpIHsgfQoKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX1VIZWFkLCB0eXBlbmFtZS4uLiBfVVRhaWwsIHR5cGVuYW1lID0gdHlw
ZW5hbWUKICAgICAgICAgICAgICAgZW5hYmxlX2lmPHNpemVvZi4uLihfVGFpbCkgPT0gc2l6ZW9m
Li4uKF9VVGFpbCk+Ojp0eXBlPgogICAgICAgIGV4cGxpY2l0CiAgICAgICAgY29uc3RleHByIF9U
dXBsZV9pbXBsKF9VSGVhZCYmIF9faGVhZCwgX1VUYWlsJiYuLi4gX190YWlsKQogOiBfSW5oZXJp
dGVkKHN0ZDo6Zm9yd2FyZDxfVVRhaWw+KF9fdGFpbCkuLi4pLAogICBfQmFzZShzdGQ6OmZvcndh
cmQ8X1VIZWFkPihfX2hlYWQpKSB7IH0KCiAgICAgIGNvbnN0ZXhwciBfVHVwbGVfaW1wbChjb25z
dCBfVHVwbGVfaW1wbCYpID0gZGVmYXVsdDsKCiAgICAgIGNvbnN0ZXhwcgogICAgICBfVHVwbGVf
aW1wbChfVHVwbGVfaW1wbCYmIF9faW4pCiAgICAgIG5vZXhjZXB0KF9fYW5kXzxpc19ub3Rocm93
X21vdmVfY29uc3RydWN0aWJsZTxfSGVhZD4sCiAgICAgICAgICAgICAgIGlzX25vdGhyb3dfbW92
ZV9jb25zdHJ1Y3RpYmxlPF9Jbmhlcml0ZWQ+Pjo6dmFsdWUpCiAgICAgIDogX0luaGVyaXRlZChz
dGQ6Om1vdmUoX01fdGFpbChfX2luKSkpLAogX0Jhc2Uoc3RkOjpmb3J3YXJkPF9IZWFkPihfTV9o
ZWFkKF9faW4pKSkgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfVUVsZW1lbnRzPgog
ICAgICAgIGNvbnN0ZXhwciBfVHVwbGVfaW1wbChjb25zdCBfVHVwbGVfaW1wbDxfSWR4LCBfVUVs
ZW1lbnRzLi4uPiYgX19pbikKIDogX0luaGVyaXRlZChfVHVwbGVfaW1wbDxfSWR4LCBfVUVsZW1l
bnRzLi4uPjo6X01fdGFpbChfX2luKSksCiAgIF9CYXNlKF9UdXBsZV9pbXBsPF9JZHgsIF9VRWxl
bWVudHMuLi4+OjpfTV9oZWFkKF9faW4pKSB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9V
SGVhZCwgdHlwZW5hbWUuLi4gX1VUYWlscz4KICAgICAgICBjb25zdGV4cHIgX1R1cGxlX2ltcGwo
X1R1cGxlX2ltcGw8X0lkeCwgX1VIZWFkLCBfVVRhaWxzLi4uPiYmIF9faW4pCiA6IF9Jbmhlcml0
ZWQoc3RkOjptb3ZlCiAgICAgICAoX1R1cGxlX2ltcGw8X0lkeCwgX1VIZWFkLCBfVVRhaWxzLi4u
Pjo6X01fdGFpbChfX2luKSkpLAogICBfQmFzZShzdGQ6OmZvcndhcmQ8X1VIZWFkPgogIChfVHVw
bGVfaW1wbDxfSWR4LCBfVUhlYWQsIF9VVGFpbHMuLi4+OjpfTV9oZWFkKF9faW4pKSkgeyB9Cgog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiBfVHVwbGVfaW1wbChhbGxvY2F0b3JfYXJn
X3QgX190YWcsIGNvbnN0IF9BbGxvYyYgX19hKQogOiBfSW5oZXJpdGVkKF9fdGFnLCBfX2EpLAog
ICAgICAgICAgX0Jhc2UoX191c2VfYWxsb2M8X0hlYWQ+KF9fYSkpIHsgfQoKICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgX0FsbG9jPgogX1R1cGxlX2ltcGwoYWxsb2NhdG9yX2FyZ190IF9fdGFnLCBj
b25zdCBfQWxsb2MmIF9fYSwKICAgICAgY29uc3QgX0hlYWQmIF9faGVhZCwgY29uc3QgX1RhaWwm
Li4uIF9fdGFpbCkKIDogX0luaGVyaXRlZChfX3RhZywgX19hLCBfX3RhaWwuLi4pLAogICAgICAg
ICAgX0Jhc2UoX191c2VfYWxsb2M8X0hlYWQsIF9BbGxvYywgX0hlYWQ+KF9fYSksIF9faGVhZCkg
eyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1lIF9VSGVhZCwgdHlw
ZW5hbWUuLi4gX1VUYWlsLAogICAgICAgICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIGVuYWJs
ZV9pZjxzaXplb2YuLi4oX1RhaWwpCiAgICAgICAgICA9PSBzaXplb2YuLi4oX1VUYWlsKT46OnR5
cGU+CiBfVHVwbGVfaW1wbChhbGxvY2F0b3JfYXJnX3QgX190YWcsIGNvbnN0IF9BbGxvYyYgX19h
LAogICAgICAgICAgICAgX1VIZWFkJiYgX19oZWFkLCBfVVRhaWwmJi4uLiBfX3RhaWwpCiA6IF9J
bmhlcml0ZWQoX190YWcsIF9fYSwgc3RkOjpmb3J3YXJkPF9VVGFpbD4oX190YWlsKS4uLiksCiAg
ICAgICAgICBfQmFzZShfX3VzZV9hbGxvYzxfSGVhZCwgX0FsbG9jLCBfVUhlYWQ+KF9fYSksCiAg
ICAgICAgIHN0ZDo6Zm9yd2FyZDxfVUhlYWQ+KF9faGVhZCkpIHsgfQoKICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgX0FsbG9jPgogICAgICAgIF9UdXBsZV9pbXBsKGFsbG9jYXRvcl9hcmdfdCBfX3Rh
ZywgY29uc3QgX0FsbG9jJiBfX2EsCiAgICAgICAgICAgICBjb25zdCBfVHVwbGVfaW1wbCYgX19p
bikKIDogX0luaGVyaXRlZChfX3RhZywgX19hLCBfTV90YWlsKF9faW4pKSwKICAgICAgICAgIF9C
YXNlKF9fdXNlX2FsbG9jPF9IZWFkLCBfQWxsb2MsIF9IZWFkPihfX2EpLCBfTV9oZWFkKF9faW4p
KSB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYz4KIF9UdXBsZV9pbXBsKGFsbG9j
YXRvcl9hcmdfdCBfX3RhZywgY29uc3QgX0FsbG9jJiBfX2EsCiAgICAgICAgICAgICBfVHVwbGVf
aW1wbCYmIF9faW4pCiA6IF9Jbmhlcml0ZWQoX190YWcsIF9fYSwgc3RkOjptb3ZlKF9NX3RhaWwo
X19pbikpKSwKICAgX0Jhc2UoX191c2VfYWxsb2M8X0hlYWQsIF9BbGxvYywgX0hlYWQ+KF9fYSks
CiAgICAgICAgIHN0ZDo6Zm9yd2FyZDxfSGVhZD4oX01faGVhZChfX2luKSkpIHsgfQoKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZS4uLiBfVUVsZW1lbnRzPgogX1R1cGxl
X2ltcGwoYWxsb2NhdG9yX2FyZ190IF9fdGFnLCBjb25zdCBfQWxsb2MmIF9fYSwKICAgICAgICAg
ICAgIGNvbnN0IF9UdXBsZV9pbXBsPF9JZHgsIF9VRWxlbWVudHMuLi4+JiBfX2luKQogOiBfSW5o
ZXJpdGVkKF9fdGFnLCBfX2EsCiAgICAgICBfVHVwbGVfaW1wbDxfSWR4LCBfVUVsZW1lbnRzLi4u
Pjo6X01fdGFpbChfX2luKSksCiAgIF9CYXNlKF9fdXNlX2FsbG9jPF9IZWFkLCBfQWxsb2MsIF9I
ZWFkPihfX2EpLAogIF9UdXBsZV9pbXBsPF9JZHgsIF9VRWxlbWVudHMuLi4+OjpfTV9oZWFkKF9f
aW4pKSB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYywgdHlwZW5hbWUgX1VIZWFk
LCB0eXBlbmFtZS4uLiBfVVRhaWxzPgogX1R1cGxlX2ltcGwoYWxsb2NhdG9yX2FyZ190IF9fdGFn
LCBjb25zdCBfQWxsb2MmIF9fYSwKICAgICAgICAgICAgIF9UdXBsZV9pbXBsPF9JZHgsIF9VSGVh
ZCwgX1VUYWlscy4uLj4mJiBfX2luKQogOiBfSW5oZXJpdGVkKF9fdGFnLCBfX2EsIHN0ZDo6bW92
ZQogICAgICAgKF9UdXBsZV9pbXBsPF9JZHgsIF9VSGVhZCwgX1VUYWlscy4uLj46Ol9NX3RhaWwo
X19pbikpKSwKICAgX0Jhc2UoX191c2VfYWxsb2M8X0hlYWQsIF9BbGxvYywgX1VIZWFkPihfX2Ep
LAogICAgICAgICAgICAgICAgc3RkOjpmb3J3YXJkPF9VSGVhZD4KICAoX1R1cGxlX2ltcGw8X0lk
eCwgX1VIZWFkLCBfVVRhaWxzLi4uPjo6X01faGVhZChfX2luKSkpIHsgfQoKICAgICAgX1R1cGxl
X2ltcGwmCiAgICAgIG9wZXJhdG9yPShjb25zdCBfVHVwbGVfaW1wbCYgX19pbikKICAgICAgewog
X01faGVhZCgqdGhpcykgPSBfTV9oZWFkKF9faW4pOwogX01fdGFpbCgqdGhpcykgPSBfTV90YWls
KF9faW4pOwogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICBfVHVwbGVfaW1wbCYKICAgICAg
b3BlcmF0b3I9KF9UdXBsZV9pbXBsJiYgX19pbikKICAgICAgbm9leGNlcHQoX19hbmRfPGlzX25v
dGhyb3dfbW92ZV9hc3NpZ25hYmxlPF9IZWFkPiwKICAgICAgICAgICAgICAgaXNfbm90aHJvd19t
b3ZlX2Fzc2lnbmFibGU8X0luaGVyaXRlZD4+Ojp2YWx1ZSkKICAgICAgewogX01faGVhZCgqdGhp
cykgPSBzdGQ6OmZvcndhcmQ8X0hlYWQ+KF9NX2hlYWQoX19pbikpOwogX01fdGFpbCgqdGhpcykg
PSBzdGQ6Om1vdmUoX01fdGFpbChfX2luKSk7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCiAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9VRWxlbWVudHM+CiAgICAgICAgX1R1cGxlX2ltcGwmCiAg
ICAgICAgb3BlcmF0b3I9KGNvbnN0IF9UdXBsZV9pbXBsPF9JZHgsIF9VRWxlbWVudHMuLi4+JiBf
X2luKQogICAgICAgIHsKICAgX01faGVhZCgqdGhpcykgPSBfVHVwbGVfaW1wbDxfSWR4LCBfVUVs
ZW1lbnRzLi4uPjo6X01faGVhZChfX2luKTsKICAgX01fdGFpbCgqdGhpcykgPSBfVHVwbGVfaW1w
bDxfSWR4LCBfVUVsZW1lbnRzLi4uPjo6X01fdGFpbChfX2luKTsKICAgcmV0dXJuICp0aGlzOwog
fQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VIZWFkLCB0eXBlbmFtZS4uLiBfVVRhaWxzPgog
ICAgICAgIF9UdXBsZV9pbXBsJgogICAgICAgIG9wZXJhdG9yPShfVHVwbGVfaW1wbDxfSWR4LCBf
VUhlYWQsIF9VVGFpbHMuLi4+JiYgX19pbikKICAgICAgICB7CiAgIF9NX2hlYWQoKnRoaXMpID0g
c3RkOjpmb3J3YXJkPF9VSGVhZD4KICAgICAoX1R1cGxlX2ltcGw8X0lkeCwgX1VIZWFkLCBfVVRh
aWxzLi4uPjo6X01faGVhZChfX2luKSk7CiAgIF9NX3RhaWwoKnRoaXMpID0gc3RkOjptb3ZlCiAg
ICAgKF9UdXBsZV9pbXBsPF9JZHgsIF9VSGVhZCwgX1VUYWlscy4uLj46Ol9NX3RhaWwoX19pbikp
OwogICByZXR1cm4gKnRoaXM7CiB9CgogICAgcHJvdGVjdGVkOgogICAgICB2b2lkCiAgICAgIF9N
X3N3YXAoX1R1cGxlX2ltcGwmIF9faW4pCiAgICAgIG5vZXhjZXB0KG5vZXhjZXB0KHN3YXAoc3Rk
OjpkZWNsdmFsPF9IZWFkJj4oKSwKICAgICAgICBzdGQ6OmRlY2x2YWw8X0hlYWQmPigpKSkKICAg
ICAgICAmJiBub2V4Y2VwdChfTV90YWlsKF9faW4pLl9NX3N3YXAoX01fdGFpbChfX2luKSkpKQog
ICAgICB7CiB1c2luZyBzdGQ6OnN3YXA7CiBzd2FwKF9NX2hlYWQoKnRoaXMpLCBfTV9oZWFkKF9f
aW4pKTsKIF9Jbmhlcml0ZWQ6Ol9NX3N3YXAoX01fdGFpbChfX2luKSk7CiAgICAgIH0KICAgIH07
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfRWxlbWVudHM+CiAgICBjbGFzcyB0dXBsZSA6IHB1
YmxpYyBfVHVwbGVfaW1wbDwwLCBfRWxlbWVudHMuLi4+CiAgICB7CiAgICAgIHR5cGVkZWYgX1R1
cGxlX2ltcGw8MCwgX0VsZW1lbnRzLi4uPiBfSW5oZXJpdGVkOwoKICAgIHB1YmxpYzoKICAgICAg
Y29uc3RleHByIHR1cGxlKCkKICAgICAgOiBfSW5oZXJpdGVkKCkgeyB9CgogICAgICBleHBsaWNp
dAogICAgICBjb25zdGV4cHIgdHVwbGUoY29uc3QgX0VsZW1lbnRzJi4uLiBfX2VsZW1lbnRzKQog
ICAgICA6IF9Jbmhlcml0ZWQoX19lbGVtZW50cy4uLikgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBfVUVsZW1lbnRzLCB0eXBlbmFtZSA9IHR5cGVuYW1lCiAgICAgICAgZW5hYmxlX2lm
PF9fYW5kXzxpc19jb252ZXJ0aWJsZTxfVUVsZW1lbnRzLAogICAgIF9FbGVtZW50cz4uLi4+Ojp2
YWx1ZT46OnR5cGU+CiBleHBsaWNpdAogICAgICAgIGNvbnN0ZXhwciB0dXBsZShfVUVsZW1lbnRz
JiYuLi4gX19lbGVtZW50cykKIDogX0luaGVyaXRlZChzdGQ6OmZvcndhcmQ8X1VFbGVtZW50cz4o
X19lbGVtZW50cykuLi4pIHsgfQoKICAgICAgY29uc3RleHByIHR1cGxlKGNvbnN0IHR1cGxlJikg
PSBkZWZhdWx0OwoKICAgICAgY29uc3RleHByIHR1cGxlKHR1cGxlJiYpID0gZGVmYXVsdDsKCiAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9VRWxlbWVudHMsIHR5cGVuYW1lID0gdHlwZW5hbWUK
ICAgICAgICBlbmFibGVfaWY8X19hbmRfPGlzX2NvbnZlcnRpYmxlPGNvbnN0IF9VRWxlbWVudHMm
LAogICAgIF9FbGVtZW50cz4uLi4+Ojp2YWx1ZT46OnR5cGU+CiAgICAgICAgY29uc3RleHByIHR1
cGxlKGNvbnN0IHR1cGxlPF9VRWxlbWVudHMuLi4+JiBfX2luKQogICAgICAgIDogX0luaGVyaXRl
ZChzdGF0aWNfY2FzdDxjb25zdCBfVHVwbGVfaW1wbDwwLCBfVUVsZW1lbnRzLi4uPiY+KF9faW4p
KQogICAgICAgIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX1VFbGVtZW50cywgdHlw
ZW5hbWUgPSB0eXBlbmFtZQogICAgICAgIGVuYWJsZV9pZjxfX2FuZF88aXNfY29udmVydGlibGU8
X1VFbGVtZW50cywKICAgICBfRWxlbWVudHM+Li4uPjo6dmFsdWU+Ojp0eXBlPgogICAgICAgIGNv
bnN0ZXhwciB0dXBsZSh0dXBsZTxfVUVsZW1lbnRzLi4uPiYmIF9faW4pCiAgICAgICAgOiBfSW5o
ZXJpdGVkKHN0YXRpY19jYXN0PF9UdXBsZV9pbXBsPDAsIF9VRWxlbWVudHMuLi4+JiY+KF9faW4p
KSB7IH0KCgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jPgogdHVwbGUoYWxsb2NhdG9y
X2FyZ190IF9fdGFnLCBjb25zdCBfQWxsb2MmIF9fYSkKIDogX0luaGVyaXRlZChfX3RhZywgX19h
KSB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYz4KIHR1cGxlKGFsbG9jYXRvcl9h
cmdfdCBfX3RhZywgY29uc3QgX0FsbG9jJiBfX2EsCiAgICAgICBjb25zdCBfRWxlbWVudHMmLi4u
IF9fZWxlbWVudHMpCiA6IF9Jbmhlcml0ZWQoX190YWcsIF9fYSwgX19lbGVtZW50cy4uLikgeyB9
CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1lLi4uIF9VRWxlbWVudHMs
IHR5cGVuYW1lID0gdHlwZW5hbWUKICAgICAgICBlbmFibGVfaWY8c2l6ZW9mLi4uKF9VRWxlbWVu
dHMpCiAgICA9PSBzaXplb2YuLi4oX0VsZW1lbnRzKT46OnR5cGU+CiB0dXBsZShhbGxvY2F0b3Jf
YXJnX3QgX190YWcsIGNvbnN0IF9BbGxvYyYgX19hLAogICAgICAgX1VFbGVtZW50cyYmLi4uIF9f
ZWxlbWVudHMpCiA6IF9Jbmhlcml0ZWQoX190YWcsIF9fYSwgc3RkOjpmb3J3YXJkPF9VRWxlbWVu
dHM+KF9fZWxlbWVudHMpLi4uKQogICAgICAgIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
X0FsbG9jPgogdHVwbGUoYWxsb2NhdG9yX2FyZ190IF9fdGFnLCBjb25zdCBfQWxsb2MmIF9fYSwg
Y29uc3QgdHVwbGUmIF9faW4pCiA6IF9Jbmhlcml0ZWQoX190YWcsIF9fYSwgc3RhdGljX2Nhc3Q8
Y29uc3QgX0luaGVyaXRlZCY+KF9faW4pKSB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9B
bGxvYz4KIHR1cGxlKGFsbG9jYXRvcl9hcmdfdCBfX3RhZywgY29uc3QgX0FsbG9jJiBfX2EsIHR1
cGxlJiYgX19pbikKIDogX0luaGVyaXRlZChfX3RhZywgX19hLCBzdGF0aWNfY2FzdDxfSW5oZXJp
dGVkJiY+KF9faW4pKSB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYywgdHlwZW5h
bWUuLi4gX1VFbGVtZW50cywgdHlwZW5hbWUgPSB0eXBlbmFtZQogICAgICAgIGVuYWJsZV9pZjxz
aXplb2YuLi4oX1VFbGVtZW50cykKICAgID09IHNpemVvZi4uLihfRWxlbWVudHMpPjo6dHlwZT4K
IHR1cGxlKGFsbG9jYXRvcl9hcmdfdCBfX3RhZywgY29uc3QgX0FsbG9jJiBfX2EsCiAgICAgICBj
b25zdCB0dXBsZTxfVUVsZW1lbnRzLi4uPiYgX19pbikKIDogX0luaGVyaXRlZChfX3RhZywgX19h
LAogICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IF9UdXBsZV9pbXBsPDAsIF9VRWxlbWVu
dHMuLi4+Jj4oX19pbikpCiB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYywgdHlw
ZW5hbWUuLi4gX1VFbGVtZW50cywgdHlwZW5hbWUgPSB0eXBlbmFtZQogICAgICAgIGVuYWJsZV9p
ZjxzaXplb2YuLi4oX1VFbGVtZW50cykKICAgID09IHNpemVvZi4uLihfRWxlbWVudHMpPjo6dHlw
ZT4KIHR1cGxlKGFsbG9jYXRvcl9hcmdfdCBfX3RhZywgY29uc3QgX0FsbG9jJiBfX2EsCiAgICAg
ICB0dXBsZTxfVUVsZW1lbnRzLi4uPiYmIF9faW4pCiA6IF9Jbmhlcml0ZWQoX190YWcsIF9fYSwK
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxfVHVwbGVfaW1wbDwwLCBfVUVsZW1lbnRzLi4uPiYm
PihfX2luKSkKIHsgfQoKICAgICAgdHVwbGUmCiAgICAgIG9wZXJhdG9yPShjb25zdCB0dXBsZSYg
X19pbikKICAgICAgewogc3RhdGljX2Nhc3Q8X0luaGVyaXRlZCY+KCp0aGlzKSA9IF9faW47CiBy
ZXR1cm4gKnRoaXM7CiAgICAgIH0KCiAgICAgIHR1cGxlJgogICAgICBvcGVyYXRvcj0odHVwbGUm
JiBfX2luKQogICAgICBub2V4Y2VwdChpc19ub3Rocm93X21vdmVfYXNzaWduYWJsZTxfSW5oZXJp
dGVkPjo6dmFsdWUpCiAgICAgIHsKIHN0YXRpY19jYXN0PF9Jbmhlcml0ZWQmPigqdGhpcykgPSBz
dGQ6Om1vdmUoX19pbik7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCiAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lLi4uIF9VRWxlbWVudHMsIHR5cGVuYW1lID0gdHlwZW5hbWUKICAgICAgICBlbmFibGVf
aWY8c2l6ZW9mLi4uKF9VRWxlbWVudHMpCiAgICA9PSBzaXplb2YuLi4oX0VsZW1lbnRzKT46OnR5
cGU+CiAgICAgICAgdHVwbGUmCiAgICAgICAgb3BlcmF0b3I9KGNvbnN0IHR1cGxlPF9VRWxlbWVu
dHMuLi4+JiBfX2luKQogICAgICAgIHsKICAgc3RhdGljX2Nhc3Q8X0luaGVyaXRlZCY+KCp0aGlz
KSA9IF9faW47CiAgIHJldHVybiAqdGhpczsKIH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IF9VRWxlbWVudHMsIHR5cGVuYW1lID0gdHlwZW5hbWUKICAgICAgICBlbmFibGVfaWY8c2l6ZW9m
Li4uKF9VRWxlbWVudHMpCiAgICA9PSBzaXplb2YuLi4oX0VsZW1lbnRzKT46OnR5cGU+CiAgICAg
ICAgdHVwbGUmCiAgICAgICAgb3BlcmF0b3I9KHR1cGxlPF9VRWxlbWVudHMuLi4+JiYgX19pbikK
ICAgICAgICB7CiAgIHN0YXRpY19jYXN0PF9Jbmhlcml0ZWQmPigqdGhpcykgPSBzdGQ6Om1vdmUo
X19pbik7CiAgIHJldHVybiAqdGhpczsKIH0KCiAgICAgIHZvaWQKICAgICAgc3dhcCh0dXBsZSYg
X19pbikKICAgICAgbm9leGNlcHQobm9leGNlcHQoX19pbi5fTV9zd2FwKF9faW4pKSkKICAgICAg
eyBfSW5oZXJpdGVkOjpfTV9zd2FwKF9faW4pOyB9CiAgICB9OwoKCiAgdGVtcGxhdGU8PgogICAg
Y2xhc3MgdHVwbGU8PgogICAgewogICAgcHVibGljOgogICAgICB2b2lkIHN3YXAodHVwbGUmKSBu
b2V4Y2VwdCB7IH0KICAgIH07CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1QxLCB0eXBlbmFtZSBf
VDI+CiAgICBjbGFzcyB0dXBsZTxfVDEsIF9UMj4gOiBwdWJsaWMgX1R1cGxlX2ltcGw8MCwgX1Qx
LCBfVDI+CiAgICB7CiAgICAgIHR5cGVkZWYgX1R1cGxlX2ltcGw8MCwgX1QxLCBfVDI+IF9Jbmhl
cml0ZWQ7CgogICAgcHVibGljOgogICAgICBjb25zdGV4cHIgdHVwbGUoKQogICAgICA6IF9Jbmhl
cml0ZWQoKSB7IH0KCiAgICAgIGV4cGxpY2l0CiAgICAgIGNvbnN0ZXhwciB0dXBsZShjb25zdCBf
VDEmIF9fYTEsIGNvbnN0IF9UMiYgX19hMikKICAgICAgOiBfSW5oZXJpdGVkKF9fYTEsIF9fYTIp
IHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1UxLCB0eXBlbmFtZSBfVTIsIHR5cGVuYW1l
ID0gdHlwZW5hbWUKICAgICAgICBlbmFibGVfaWY8X19hbmRfPGlzX2NvbnZlcnRpYmxlPF9VMSwg
X1QxPiwKICAgIGlzX2NvbnZlcnRpYmxlPF9VMiwgX1QyPj46OnZhbHVlPjo6dHlwZT4KICAgICAg
ICBleHBsaWNpdAogICAgICAgIGNvbnN0ZXhwciB0dXBsZShfVTEmJiBfX2ExLCBfVTImJiBfX2Ey
KQogOiBfSW5oZXJpdGVkKHN0ZDo6Zm9yd2FyZDxfVTE+KF9fYTEpLCBzdGQ6OmZvcndhcmQ8X1Uy
PihfX2EyKSkgeyB9CgogICAgICBjb25zdGV4cHIgdHVwbGUoY29uc3QgdHVwbGUmKSA9IGRlZmF1
bHQ7CgogICAgICBjb25zdGV4cHIgdHVwbGUodHVwbGUmJikgPSBkZWZhdWx0OwoKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX1UxLCB0eXBlbmFtZSBfVTIsIHR5cGVuYW1lID0gdHlwZW5hbWUKIGVu
YWJsZV9pZjxfX2FuZF88aXNfY29udmVydGlibGU8Y29uc3QgX1UxJiwgX1QxPiwKICAgIGlzX2Nv
bnZlcnRpYmxlPGNvbnN0IF9VMiYsIF9UMj4+Ojp2YWx1ZT46OnR5cGU+CiAgICAgICAgY29uc3Rl
eHByIHR1cGxlKGNvbnN0IHR1cGxlPF9VMSwgX1UyPiYgX19pbikKIDogX0luaGVyaXRlZChzdGF0
aWNfY2FzdDxjb25zdCBfVHVwbGVfaW1wbDwwLCBfVTEsIF9VMj4mPihfX2luKSkgeyB9CgogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVTEsIHR5cGVuYW1lIF9VMiwgdHlwZW5hbWUgPSB0eXBlbmFt
ZQogICAgICAgIGVuYWJsZV9pZjxfX2FuZF88aXNfY29udmVydGlibGU8X1UxLCBfVDE+LAogICAg
aXNfY29udmVydGlibGU8X1UyLCBfVDI+Pjo6dmFsdWU+Ojp0eXBlPgogICAgICAgIGNvbnN0ZXhw
ciB0dXBsZSh0dXBsZTxfVTEsIF9VMj4mJiBfX2luKQogOiBfSW5oZXJpdGVkKHN0YXRpY19jYXN0
PF9UdXBsZV9pbXBsPDAsIF9VMSwgX1UyPiYmPihfX2luKSkgeyB9CgogICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVTEsIHR5cGVuYW1lIF9VMiwgdHlwZW5hbWUgPSB0eXBlbmFtZQogZW5hYmxlX2lm
PF9fYW5kXzxpc19jb252ZXJ0aWJsZTxjb25zdCBfVTEmLCBfVDE+LAogICAgaXNfY29udmVydGli
bGU8Y29uc3QgX1UyJiwgX1QyPj46OnZhbHVlPjo6dHlwZT4KICAgICAgICBjb25zdGV4cHIgdHVw
bGUoY29uc3QgcGFpcjxfVTEsIF9VMj4mIF9faW4pCiA6IF9Jbmhlcml0ZWQoX19pbi5maXJzdCwg
X19pbi5zZWNvbmQpIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1UxLCB0eXBlbmFtZSBf
VTIsIHR5cGVuYW1lID0gdHlwZW5hbWUKICAgICAgICBlbmFibGVfaWY8X19hbmRfPGlzX2NvbnZl
cnRpYmxlPF9VMSwgX1QxPiwKICAgIGlzX2NvbnZlcnRpYmxlPF9VMiwgX1QyPj46OnZhbHVlPjo6
dHlwZT4KICAgICAgICBjb25zdGV4cHIgdHVwbGUocGFpcjxfVTEsIF9VMj4mJiBfX2luKQogOiBf
SW5oZXJpdGVkKHN0ZDo6Zm9yd2FyZDxfVTE+KF9faW4uZmlyc3QpLAogICAgICAgc3RkOjpmb3J3
YXJkPF9VMj4oX19pbi5zZWNvbmQpKSB7IH0KCgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Fs
bG9jPgogdHVwbGUoYWxsb2NhdG9yX2FyZ190IF9fdGFnLCBjb25zdCBfQWxsb2MmIF9fYSkKIDog
X0luaGVyaXRlZChfX3RhZywgX19hKSB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxv
Yz4KIHR1cGxlKGFsbG9jYXRvcl9hcmdfdCBfX3RhZywgY29uc3QgX0FsbG9jJiBfX2EsCiAgICAg
ICBjb25zdCBfVDEmIF9fYTEsIGNvbnN0IF9UMiYgX19hMikKIDogX0luaGVyaXRlZChfX3RhZywg
X19hLCBfX2ExLCBfX2EyKSB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYywgdHlw
ZW5hbWUgX1UxLCB0eXBlbmFtZSBfVTI+CiB0dXBsZShhbGxvY2F0b3JfYXJnX3QgX190YWcsIGNv
bnN0IF9BbGxvYyYgX19hLCBfVTEmJiBfX2ExLCBfVTImJiBfX2EyKQogOiBfSW5oZXJpdGVkKF9f
dGFnLCBfX2EsIHN0ZDo6Zm9yd2FyZDxfVTE+KF9fYTEpLAogICAgICAgICAgICAgIHN0ZDo6Zm9y
d2FyZDxfVTI+KF9fYTIpKSB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYz4KIHR1
cGxlKGFsbG9jYXRvcl9hcmdfdCBfX3RhZywgY29uc3QgX0FsbG9jJiBfX2EsIGNvbnN0IHR1cGxl
JiBfX2luKQogOiBfSW5oZXJpdGVkKF9fdGFnLCBfX2EsIHN0YXRpY19jYXN0PGNvbnN0IF9Jbmhl
cml0ZWQmPihfX2luKSkgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiB0dXBs
ZShhbGxvY2F0b3JfYXJnX3QgX190YWcsIGNvbnN0IF9BbGxvYyYgX19hLCB0dXBsZSYmIF9faW4p
CiA6IF9Jbmhlcml0ZWQoX190YWcsIF9fYSwgc3RhdGljX2Nhc3Q8X0luaGVyaXRlZCYmPihfX2lu
KSkgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2MsIHR5cGVuYW1lIF9VMSwgdHlw
ZW5hbWUgX1UyPgogdHVwbGUoYWxsb2NhdG9yX2FyZ190IF9fdGFnLCBjb25zdCBfQWxsb2MmIF9f
YSwKICAgICAgIGNvbnN0IHR1cGxlPF9VMSwgX1UyPiYgX19pbikKIDogX0luaGVyaXRlZChfX3Rh
ZywgX19hLAogICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IF9UdXBsZV9pbXBsPDAsIF9V
MSwgX1UyPiY+KF9faW4pKQogeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2MsIHR5
cGVuYW1lIF9VMSwgdHlwZW5hbWUgX1UyPgogdHVwbGUoYWxsb2NhdG9yX2FyZ190IF9fdGFnLCBj
b25zdCBfQWxsb2MmIF9fYSwgdHVwbGU8X1UxLCBfVTI+JiYgX19pbikKIDogX0luaGVyaXRlZChf
X3RhZywgX19hLCBzdGF0aWNfY2FzdDxfVHVwbGVfaW1wbDwwLCBfVTEsIF9VMj4mJj4oX19pbikp
CiB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYywgdHlwZW5hbWUgX1UxLCB0eXBl
bmFtZSBfVTI+CiAgICAgICAgdHVwbGUoYWxsb2NhdG9yX2FyZ190IF9fdGFnLCBjb25zdCBfQWxs
b2MmIF9fYSwKICAgICAgIGNvbnN0IHBhaXI8X1UxLCBfVTI+JiBfX2luKQogOiBfSW5oZXJpdGVk
KF9fdGFnLCBfX2EsIF9faW4uZmlyc3QsIF9faW4uc2Vjb25kKSB7IH0KCiAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIF9BbGxvYywgdHlwZW5hbWUgX1UxLCB0eXBlbmFtZSBfVTI+CiAgICAgICAgdHVw
bGUoYWxsb2NhdG9yX2FyZ190IF9fdGFnLCBjb25zdCBfQWxsb2MmIF9fYSwgcGFpcjxfVTEsIF9V
Mj4mJiBfX2luKQogOiBfSW5oZXJpdGVkKF9fdGFnLCBfX2EsIHN0ZDo6Zm9yd2FyZDxfVTE+KF9f
aW4uZmlyc3QpLAogICAgICAgc3RkOjpmb3J3YXJkPF9VMj4oX19pbi5zZWNvbmQpKSB7IH0KCiAg
ICAgIHR1cGxlJgogICAgICBvcGVyYXRvcj0oY29uc3QgdHVwbGUmIF9faW4pCiAgICAgIHsKIHN0
YXRpY19jYXN0PF9Jbmhlcml0ZWQmPigqdGhpcykgPSBfX2luOwogcmV0dXJuICp0aGlzOwogICAg
ICB9CgogICAgICB0dXBsZSYKICAgICAgb3BlcmF0b3I9KHR1cGxlJiYgX19pbikKICAgICAgbm9l
eGNlcHQoaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGU8X0luaGVyaXRlZD46OnZhbHVlKQogICAg
ICB7CiBzdGF0aWNfY2FzdDxfSW5oZXJpdGVkJj4oKnRoaXMpID0gc3RkOjptb3ZlKF9faW4pOwog
cmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVTEsIHR5cGVu
YW1lIF9VMj4KICAgICAgICB0dXBsZSYKICAgICAgICBvcGVyYXRvcj0oY29uc3QgdHVwbGU8X1Ux
LCBfVTI+JiBfX2luKQogICAgICAgIHsKICAgc3RhdGljX2Nhc3Q8X0luaGVyaXRlZCY+KCp0aGlz
KSA9IF9faW47CiAgIHJldHVybiAqdGhpczsKIH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9V
MSwgdHlwZW5hbWUgX1UyPgogICAgICAgIHR1cGxlJgogICAgICAgIG9wZXJhdG9yPSh0dXBsZTxf
VTEsIF9VMj4mJiBfX2luKQogICAgICAgIHsKICAgc3RhdGljX2Nhc3Q8X0luaGVyaXRlZCY+KCp0
aGlzKSA9IHN0ZDo6bW92ZShfX2luKTsKICAgcmV0dXJuICp0aGlzOwogfQoKICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgX1UxLCB0eXBlbmFtZSBfVTI+CiAgICAgICAgdHVwbGUmCiAgICAgICAgb3Bl
cmF0b3I9KGNvbnN0IHBhaXI8X1UxLCBfVTI+JiBfX2luKQogICAgICAgIHsKICAgdGhpcy0+X01f
aGVhZCgqdGhpcykgPSBfX2luLmZpcnN0OwogICB0aGlzLT5fTV90YWlsKCp0aGlzKS5fTV9oZWFk
KCp0aGlzKSA9IF9faW4uc2Vjb25kOwogICByZXR1cm4gKnRoaXM7CiB9CgogICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVTEsIHR5cGVuYW1lIF9VMj4KICAgICAgICB0dXBsZSYKICAgICAgICBvcGVy
YXRvcj0ocGFpcjxfVTEsIF9VMj4mJiBfX2luKQogICAgICAgIHsKICAgdGhpcy0+X01faGVhZCgq
dGhpcykgPSBzdGQ6OmZvcndhcmQ8X1UxPihfX2luLmZpcnN0KTsKICAgdGhpcy0+X01fdGFpbCgq
dGhpcykuX01faGVhZCgqdGhpcykgPSBzdGQ6OmZvcndhcmQ8X1UyPihfX2luLnNlY29uZCk7CiAg
IHJldHVybiAqdGhpczsKIH0KCiAgICAgIHZvaWQKICAgICAgc3dhcCh0dXBsZSYgX19pbikKICAg
ICAgbm9leGNlcHQobm9leGNlcHQoX19pbi5fTV9zd2FwKF9faW4pKSkKICAgICAgeyBfSW5oZXJp
dGVkOjpfTV9zd2FwKF9faW4pOyB9CiAgICB9OwoKCgogIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IF9f
aSwgdHlwZW5hbWUgX1RwPgogICAgc3RydWN0IHR1cGxlX2VsZW1lbnQ7CgoKCgoKICB0ZW1wbGF0
ZTxzdGQ6OnNpemVfdCBfX2ksIHR5cGVuYW1lIF9IZWFkLCB0eXBlbmFtZS4uLiBfVGFpbD4KICAg
IHN0cnVjdCB0dXBsZV9lbGVtZW50PF9faSwgdHVwbGU8X0hlYWQsIF9UYWlsLi4uPiA+CiAgICA6
IHR1cGxlX2VsZW1lbnQ8X19pIC0gMSwgdHVwbGU8X1RhaWwuLi4+ID4geyB9OwoKCgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSGVhZCwgdHlwZW5hbWUuLi4gX1RhaWw+CiAgICBzdHJ1Y3QgdHVwbGVf
ZWxlbWVudDwwLCB0dXBsZTxfSGVhZCwgX1RhaWwuLi4+ID4KICAgIHsKICAgICAgdHlwZWRlZiBf
SGVhZCB0eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8c3RkOjpzaXplX3QgX19pLCB0eXBlbmFtZSBf
VHA+CiAgICBzdHJ1Y3QgdHVwbGVfZWxlbWVudDxfX2ksIGNvbnN0IF9UcD4KICAgIHsKICAgICAg
dHlwZWRlZiB0eXBlbmFtZQogICAgICBhZGRfY29uc3Q8dHlwZW5hbWUgdHVwbGVfZWxlbWVudDxf
X2ksIF9UcD46OnR5cGU+Ojp0eXBlIHR5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTxzdGQ6OnNpemVf
dCBfX2ksIHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCB0dXBsZV9lbGVtZW50PF9faSwgdm9sYXRp
bGUgX1RwPgogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lCiAgICAgIGFkZF92b2xhdGlsZTx0
eXBlbmFtZSB0dXBsZV9lbGVtZW50PF9faSwgX1RwPjo6dHlwZT46OnR5cGUgdHlwZTsKICAgIH07
CgogIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IF9faSwgdHlwZW5hbWUgX1RwPgogICAgc3RydWN0IHR1
cGxlX2VsZW1lbnQ8X19pLCBjb25zdCB2b2xhdGlsZSBfVHA+CiAgICB7CiAgICAgIHR5cGVkZWYg
dHlwZW5hbWUKICAgICAgYWRkX2N2PHR5cGVuYW1lIHR1cGxlX2VsZW1lbnQ8X19pLCBfVHA+Ojp0
eXBlPjo6dHlwZSB0eXBlOwogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0
cnVjdCB0dXBsZV9zaXplOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgdHVw
bGVfc2l6ZTxjb25zdCBfVHA+CiAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDwKICAgICAg
ICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjxkZWNsdHlwZSh0dXBsZV9zaXplPF9UcD46OnZhbHVl
KT46OnR5cGUsCiAgICAgICAgICAgICB0dXBsZV9zaXplPF9UcD46OnZhbHVlPiB7IH07CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCB0dXBsZV9zaXplPHZvbGF0aWxlIF9UcD4K
ICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PAogICAgICAgICAgICAgdHlwZW5hbWUgcmVt
b3ZlX2N2PGRlY2x0eXBlKHR1cGxlX3NpemU8X1RwPjo6dmFsdWUpPjo6dHlwZSwKICAgICAgICAg
ICAgIHR1cGxlX3NpemU8X1RwPjo6dmFsdWU+IHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PgogICAgc3RydWN0IHR1cGxlX3NpemU8Y29uc3Qgdm9sYXRpbGUgX1RwPgogICAgOiBwdWJsaWMg
aW50ZWdyYWxfY29uc3RhbnQ8CiAgICAgICAgICAgICB0eXBlbmFtZSByZW1vdmVfY3Y8ZGVjbHR5
cGUodHVwbGVfc2l6ZTxfVHA+Ojp2YWx1ZSk+Ojp0eXBlLAogICAgICAgICAgICAgdHVwbGVfc2l6
ZTxfVHA+Ojp2YWx1ZT4geyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0VsZW1lbnRzPgog
ICAgc3RydWN0IHR1cGxlX3NpemU8dHVwbGU8X0VsZW1lbnRzLi4uPj4KICAgIDogcHVibGljIGlu
dGVncmFsX2NvbnN0YW50PHN0ZDo6c2l6ZV90LCBzaXplb2YuLi4oX0VsZW1lbnRzKT4geyB9OwoK
ICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBfX2ksIHR5cGVuYW1lIF9IZWFkLCB0eXBlbmFtZS4uLiBf
VGFpbD4KICAgIGNvbnN0ZXhwciB0eXBlbmFtZSBfX2FkZF9yZWY8X0hlYWQ+Ojp0eXBlCiAgICBf
X2dldF9oZWxwZXIoX1R1cGxlX2ltcGw8X19pLCBfSGVhZCwgX1RhaWwuLi4+JiBfX3QpIG5vZXhj
ZXB0CiAgICB7IHJldHVybiBfVHVwbGVfaW1wbDxfX2ksIF9IZWFkLCBfVGFpbC4uLj46Ol9NX2hl
YWQoX190KTsgfQoKICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBfX2ksIHR5cGVuYW1lIF9IZWFkLCB0
eXBlbmFtZS4uLiBfVGFpbD4KICAgIGNvbnN0ZXhwciB0eXBlbmFtZSBfX2FkZF9jX3JlZjxfSGVh
ZD46OnR5cGUKICAgIF9fZ2V0X2hlbHBlcihjb25zdCBfVHVwbGVfaW1wbDxfX2ksIF9IZWFkLCBf
VGFpbC4uLj4mIF9fdCkgbm9leGNlcHQKICAgIHsgcmV0dXJuIF9UdXBsZV9pbXBsPF9faSwgX0hl
YWQsIF9UYWlsLi4uPjo6X01faGVhZChfX3QpOyB9CgoKCgogIHRlbXBsYXRlPHN0ZDo6c2l6ZV90
IF9faSwgdHlwZW5hbWUuLi4gX0VsZW1lbnRzPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9fYWRk
X3JlZjwKICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHR1cGxlX2VsZW1lbnQ8X19pLCB0
dXBsZTxfRWxlbWVudHMuLi4+Pjo6dHlwZQogICAgICAgICAgICAgICAgICAgID46OnR5cGUKICAg
IGdldCh0dXBsZTxfRWxlbWVudHMuLi4+JiBfX3QpIG5vZXhjZXB0CiAgICB7IHJldHVybiBfX2dl
dF9oZWxwZXI8X19pPihfX3QpOyB9CgogIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IF9faSwgdHlwZW5h
bWUuLi4gX0VsZW1lbnRzPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9fYWRkX2NfcmVmPAogICAg
ICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgdHVwbGVfZWxlbWVudDxfX2ksIHR1cGxlPF9FbGVt
ZW50cy4uLj4+Ojp0eXBlCiAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQogICAgZ2V0KGNvbnN0
IHR1cGxlPF9FbGVtZW50cy4uLj4mIF9fdCkgbm9leGNlcHQKICAgIHsgcmV0dXJuIF9fZ2V0X2hl
bHBlcjxfX2k+KF9fdCk7IH0KCiAgdGVtcGxhdGU8c3RkOjpzaXplX3QgX19pLCB0eXBlbmFtZS4u
LiBfRWxlbWVudHM+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUgX19hZGRfcl9yZWY8CiAgICAgICAg
ICAgICAgICAgICAgICB0eXBlbmFtZSB0dXBsZV9lbGVtZW50PF9faSwgdHVwbGU8X0VsZW1lbnRz
Li4uPj46OnR5cGUKICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlCiAgICBnZXQodHVwbGU8X0Vs
ZW1lbnRzLi4uPiYmIF9fdCkgbm9leGNlcHQKICAgIHsgcmV0dXJuIHN0ZDo6Zm9yd2FyZDx0eXBl
bmFtZSB0dXBsZV9lbGVtZW50PF9faSwKIHR1cGxlPF9FbGVtZW50cy4uLj4+Ojp0eXBlJiY+KGdl
dDxfX2k+KF9fdCkpOyB9CgoKICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBfX2NoZWNrX2VxdWFsX3Np
emUsIHN0ZDo6c2l6ZV90IF9faSwgc3RkOjpzaXplX3QgX19qLAogICAgdHlwZW5hbWUgX1RwLCB0
eXBlbmFtZSBfVXA+CiAgICBzdHJ1Y3QgX190dXBsZV9jb21wYXJlOwoKICB0ZW1wbGF0ZTxzdGQ6
OnNpemVfdCBfX2ksIHN0ZDo6c2l6ZV90IF9faiwgdHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXA+
CiAgICBzdHJ1Y3QgX190dXBsZV9jb21wYXJlPDAsIF9faSwgX19qLCBfVHAsIF9VcD4KICAgIHsK
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sCiAgICAgIF9fZXEoY29uc3QgX1RwJiBfX3QsIGNv
bnN0IF9VcCYgX191KQogICAgICB7CiByZXR1cm4gKGdldDxfX2k+KF9fdCkgPT0gZ2V0PF9faT4o
X191KSAmJgogIF9fdHVwbGVfY29tcGFyZTwwLCBfX2kgKyAxLCBfX2osIF9UcCwgX1VwPjo6X19l
cShfX3QsIF9fdSkpOwogICAgICB9CgogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wKICAgICAg
X19sZXNzKGNvbnN0IF9UcCYgX190LCBjb25zdCBfVXAmIF9fdSkKICAgICAgewogcmV0dXJuICgo
Z2V0PF9faT4oX190KSA8IGdldDxfX2k+KF9fdSkpCiAgfHwgIShnZXQ8X19pPihfX3UpIDwgZ2V0
PF9faT4oX190KSkgJiYKICBfX3R1cGxlX2NvbXBhcmU8MCwgX19pICsgMSwgX19qLCBfVHAsIF9V
cD46Ol9fbGVzcyhfX3QsIF9fdSkpOwogICAgICB9CiAgICB9OwoKICB0ZW1wbGF0ZTxzdGQ6OnNp
emVfdCBfX2ksIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1VwPgogICAgc3RydWN0IF9fdHVwbGVf
Y29tcGFyZTwwLCBfX2ksIF9faSwgX1RwLCBfVXA+CiAgICB7CiAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbAogICAgICBfX2VxKGNvbnN0IF9UcCYsIGNvbnN0IF9VcCYpIHsgcmV0dXJuIHRydWU7
IH0KCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbAogICAgICBfX2xlc3MoY29uc3QgX1RwJiwg
Y29uc3QgX1VwJikgeyByZXR1cm4gZmFsc2U7IH0KICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIF9URWxlbWVudHMsIHR5cGVuYW1lLi4uIF9VRWxlbWVudHM+CiAgICBjb25zdGV4cHIgYm9v
bAogICAgb3BlcmF0b3I9PShjb25zdCB0dXBsZTxfVEVsZW1lbnRzLi4uPiYgX190LAogICAgICAg
IGNvbnN0IHR1cGxlPF9VRWxlbWVudHMuLi4+JiBfX3UpCiAgICB7CiAgICAgIHR5cGVkZWYgdHVw
bGU8X1RFbGVtZW50cy4uLj4gX1RwOwogICAgICB0eXBlZGVmIHR1cGxlPF9VRWxlbWVudHMuLi4+
IF9VcDsKICAgICAgcmV0dXJuIGJvb2woX190dXBsZV9jb21wYXJlPHR1cGxlX3NpemU8X1RwPjo6
dmFsdWUgLSB0dXBsZV9zaXplPF9VcD46OnZhbHVlLAogICAgICAgMCwgdHVwbGVfc2l6ZTxfVHA+
Ojp2YWx1ZSwgX1RwLCBfVXA+OjpfX2VxKF9fdCwgX191KSk7CiAgICB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lLi4uIF9URWxlbWVudHMsIHR5cGVuYW1lLi4uIF9VRWxlbWVudHM+CiAgICBjb25zdGV4
cHIgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IHR1cGxlPF9URWxlbWVudHMuLi4+JiBfX3QsCiAg
ICAgICBjb25zdCB0dXBsZTxfVUVsZW1lbnRzLi4uPiYgX191KQogICAgewogICAgICB0eXBlZGVm
IHR1cGxlPF9URWxlbWVudHMuLi4+IF9UcDsKICAgICAgdHlwZWRlZiB0dXBsZTxfVUVsZW1lbnRz
Li4uPiBfVXA7CiAgICAgIHJldHVybiBib29sKF9fdHVwbGVfY29tcGFyZTx0dXBsZV9zaXplPF9U
cD46OnZhbHVlIC0gdHVwbGVfc2l6ZTxfVXA+Ojp2YWx1ZSwKICAgICAgIDAsIHR1cGxlX3NpemU8
X1RwPjo6dmFsdWUsIF9UcCwgX1VwPjo6X19sZXNzKF9fdCwgX191KSk7CiAgICB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lLi4uIF9URWxlbWVudHMsIHR5cGVuYW1lLi4uIF9VRWxlbWVudHM+CiAgICBp
bmxpbmUgY29uc3RleHByIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3QgdHVwbGU8X1RFbGVtZW50
cy4uLj4mIF9fdCwKICAgICAgICBjb25zdCB0dXBsZTxfVUVsZW1lbnRzLi4uPiYgX191KQogICAg
eyByZXR1cm4gIShfX3QgPT0gX191KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfVEVsZW1l
bnRzLCB0eXBlbmFtZS4uLiBfVUVsZW1lbnRzPgogICAgaW5saW5lIGNvbnN0ZXhwciBib29sCiAg
ICBvcGVyYXRvcj4oY29uc3QgdHVwbGU8X1RFbGVtZW50cy4uLj4mIF9fdCwKICAgICAgIGNvbnN0
IHR1cGxlPF9VRWxlbWVudHMuLi4+JiBfX3UpCiAgICB7IHJldHVybiBfX3UgPCBfX3Q7IH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUuLi4gX1RFbGVtZW50cywgdHlwZW5hbWUuLi4gX1VFbGVtZW50cz4K
ICAgIGlubGluZSBjb25zdGV4cHIgYm9vbAogICAgb3BlcmF0b3I8PShjb25zdCB0dXBsZTxfVEVs
ZW1lbnRzLi4uPiYgX190LAogICAgICAgIGNvbnN0IHR1cGxlPF9VRWxlbWVudHMuLi4+JiBfX3Up
CiAgICB7IHJldHVybiAhKF9fdSA8IF9fdCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX1RF
bGVtZW50cywgdHlwZW5hbWUuLi4gX1VFbGVtZW50cz4KICAgIGlubGluZSBjb25zdGV4cHIgYm9v
bAogICAgb3BlcmF0b3I+PShjb25zdCB0dXBsZTxfVEVsZW1lbnRzLi4uPiYgX190LAogICAgICAg
IGNvbnN0IHR1cGxlPF9VRWxlbWVudHMuLi4+JiBfX3UpCiAgICB7IHJldHVybiAhKF9fdCA8IF9f
dSk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9FbGVtZW50cz4KICAgIGNvbnN0ZXhwciB0
dXBsZTx0eXBlbmFtZSBfX2RlY2F5X2FuZF9zdHJpcDxfRWxlbWVudHM+OjpfX3R5cGUuLi4+CiAg
ICBtYWtlX3R1cGxlKF9FbGVtZW50cyYmLi4uIF9fYXJncykKICAgIHsKICAgICAgdHlwZWRlZiB0
dXBsZTx0eXBlbmFtZSBfX2RlY2F5X2FuZF9zdHJpcDxfRWxlbWVudHM+OjpfX3R5cGUuLi4+CiBf
X3Jlc3VsdF90eXBlOwogICAgICByZXR1cm4gX19yZXN1bHRfdHlwZShzdGQ6OmZvcndhcmQ8X0Vs
ZW1lbnRzPihfX2FyZ3MpLi4uKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0VsZW1l
bnRzPgogICAgdHVwbGU8X0VsZW1lbnRzJiYuLi4+CiAgICBmb3J3YXJkX2FzX3R1cGxlKF9FbGVt
ZW50cyYmLi4uIF9fYXJncykgbm9leGNlcHQKICAgIHsgcmV0dXJuIHR1cGxlPF9FbGVtZW50cyYm
Li4uPihzdGQ6OmZvcndhcmQ8X0VsZW1lbnRzPihfX2FyZ3MpLi4uKTsgfQoKICB0ZW1wbGF0ZTx0
eXBlbmFtZT4KICAgIHN0cnVjdCBfX2lzX3R1cGxlX2xpa2VfaW1wbCA6IGZhbHNlX3R5cGUKICAg
IHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX1Rwcz4KICAgIHN0cnVjdCBfX2lzX3R1cGxl
X2xpa2VfaW1wbDx0dXBsZTxfVHBzLi4uPj4gOiB0cnVlX3R5cGUKICAgIHsgfTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1QxLCB0eXBlbmFtZSBfVDI+CiAgICBzdHJ1Y3QgX19pc190dXBsZV9saWtl
X2ltcGw8cGFpcjxfVDEsIF9UMj4+IDogdHJ1ZV90eXBlCiAgICB7IH07CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcCwgc3RkOjpzaXplX3QgX05tPgogICAgc3RydWN0IF9faXNfdHVwbGVfbGlrZV9p
bXBsPGFycmF5PF9UcCwgX05tPj4gOiB0cnVlX3R5cGUKICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lzX3R1cGxlX2xpa2UKICAgIDogcHVibGljIF9faXNf
dHVwbGVfbGlrZV9pbXBsPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2CiAgICAgICAgICAgIDx0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8X1RwPjo6dHlwZT46OnR5cGU+Ojp0eXBlCiAgICB7
IH07CgoKCiAgdGVtcGxhdGU8c3RkOjpzaXplX3QuLi4gX0luZGV4ZXM+CiAgICBzdHJ1Y3QgX0lu
ZGV4X3R1cGxlCiAgICB7CiAgICAgIHR5cGVkZWYgX0luZGV4X3R1cGxlPF9JbmRleGVzLi4uLCBz
aXplb2YuLi4oX0luZGV4ZXMpPiBfX25leHQ7CiAgICB9OwoKCiAgdGVtcGxhdGU8c3RkOjpzaXpl
X3QgX051bT4KICAgIHN0cnVjdCBfQnVpbGRfaW5kZXhfdHVwbGUKICAgIHsKICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBfQnVpbGRfaW5kZXhfdHVwbGU8X051bSAtIDE+OjpfX3R5cGU6Ol9fbmV4dCBf
X3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX0J1aWxkX2luZGV4X3R1cGxl
PDA+CiAgICB7CiAgICAgIHR5cGVkZWYgX0luZGV4X3R1cGxlPD4gX190eXBlOwogICAgfTsKCiAg
dGVtcGxhdGU8c3RkOjpzaXplX3QsIHR5cGVuYW1lLCB0eXBlbmFtZSwgc3RkOjpzaXplX3Q+CiAg
ICBzdHJ1Y3QgX19tYWtlX3R1cGxlX2ltcGw7CgogIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IF9JZHgs
IHR5cGVuYW1lIF9UdXBsZSwgdHlwZW5hbWUuLi4gX1RwLAogICAgICAgICAgIHN0ZDo6c2l6ZV90
IF9ObT4KICAgIHN0cnVjdCBfX21ha2VfdHVwbGVfaW1wbDxfSWR4LCB0dXBsZTxfVHAuLi4+LCBf
VHVwbGUsIF9ObT4KICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX21ha2VfdHVwbGVfaW1w
bDxfSWR4ICsgMSwgdHVwbGU8X1RwLi4uLAogdHlwZW5hbWUgc3RkOjp0dXBsZV9lbGVtZW50PF9J
ZHgsIF9UdXBsZT46OnR5cGU+LCBfVHVwbGUsIF9ObT46Ol9fdHlwZQogICAgICBfX3R5cGU7CiAg
ICB9OwoKICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBfTm0sIHR5cGVuYW1lIF9UdXBsZSwgdHlwZW5h
bWUuLi4gX1RwPgogICAgc3RydWN0IF9fbWFrZV90dXBsZV9pbXBsPF9ObSwgdHVwbGU8X1RwLi4u
PiwgX1R1cGxlLCBfTm0+CiAgICB7CiAgICAgIHR5cGVkZWYgdHVwbGU8X1RwLi4uPiBfX3R5cGU7
CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHVwbGU+CiAgICBzdHJ1Y3QgX19kb19tYWtl
X3R1cGxlCiAgICA6IHB1YmxpYyBfX21ha2VfdHVwbGVfaW1wbDwwLCB0dXBsZTw+LCBfVHVwbGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnR1cGxlX3NpemU8X1R1cGxlPjo6
dmFsdWU+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHVwbGU+CiAgICBzdHJ1Y3Qg
X19tYWtlX3R1cGxlCiAgICA6IHB1YmxpYyBfX2RvX21ha2VfdHVwbGU8dHlwZW5hbWUgc3RkOjpy
ZW1vdmVfY3YKICAgICAgICAgICAgPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxfVHVw
bGU+Ojp0eXBlPjo6dHlwZT4KICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lLi4uPgogICAg
c3RydWN0IF9fY29tYmluZV90dXBsZXM7CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2NvbWJp
bmVfdHVwbGVzPD4KICAgIHsKICAgICAgdHlwZWRlZiB0dXBsZTw+IF9fdHlwZTsKICAgIH07Cgog
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9Ucz4KICAgIHN0cnVjdCBfX2NvbWJpbmVfdHVwbGVzPHR1
cGxlPF9Ucy4uLj4+CiAgICB7CiAgICAgIHR5cGVkZWYgdHVwbGU8X1RzLi4uPiBfX3R5cGU7CiAg
ICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfVDFzLCB0eXBlbmFtZS4uLiBfVDJzLCB0eXBl
bmFtZS4uLiBfUmVtPgogICAgc3RydWN0IF9fY29tYmluZV90dXBsZXM8dHVwbGU8X1Qxcy4uLj4s
IHR1cGxlPF9UMnMuLi4+LCBfUmVtLi4uPgogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9f
Y29tYmluZV90dXBsZXM8dHVwbGU8X1Qxcy4uLiwgX1Qycy4uLj4sCiAgICAgX1JlbS4uLj46Ol9f
dHlwZSBfX3R5cGU7CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX1RwbHM+CiAgICBz
dHJ1Y3QgX190dXBsZV9jYXRfcmVzdWx0CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19j
b21iaW5lX3R1cGxlcwogICAgICAgIDx0eXBlbmFtZSBfX21ha2VfdHVwbGU8X1RwbHM+OjpfX3R5
cGUuLi4+OjpfX3R5cGUgX190eXBlOwogICAgfTsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLj4K
ICAgIHN0cnVjdCBfX21ha2VfMXN0X2luZGljZXM7CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBf
X21ha2VfMXN0X2luZGljZXM8PgogICAgewogICAgICB0eXBlZGVmIHN0ZDo6X0luZGV4X3R1cGxl
PD4gX190eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZS4uLiBf
VHBscz4KICAgIHN0cnVjdCBfX21ha2VfMXN0X2luZGljZXM8X1RwLCBfVHBscy4uLj4KICAgIHsK
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Ol9CdWlsZF9pbmRleF90dXBsZTxzdGQ6OnR1cGxl
X3NpemU8CiB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8X1RwPjo6dHlwZT46OnZhbHVl
Pjo6X190eXBlIF9fdHlwZTsKICAgIH07CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXQsIHR5
cGVuYW1lIF9JbmRpY2VzLCB0eXBlbmFtZS4uLiBfVHBscz4KICAgIHN0cnVjdCBfX3R1cGxlX2Nv
bmNhdGVyOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCBzdGQ6OnNpemVfdC4uLiBfSXMsIHR5
cGVuYW1lIF9UcCwgdHlwZW5hbWUuLi4gX1RwbHM+CiAgICBzdHJ1Y3QgX190dXBsZV9jb25jYXRl
cjxfUmV0LCBzdGQ6Ol9JbmRleF90dXBsZTxfSXMuLi4+LCBfVHAsIF9UcGxzLi4uPgogICAgewog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfVXM+CiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBf
UmV0CiAgICAgICAgX1NfZG8oX1RwJiYgX190cCwgX1RwbHMmJi4uLiBfX3RwcywgX1VzJiYuLi4g
X191cykKICAgICAgICB7CiAgIHR5cGVkZWYgdHlwZW5hbWUgX19tYWtlXzFzdF9pbmRpY2VzPF9U
cGxzLi4uPjo6X190eXBlIF9faWR4OwogICB0eXBlZGVmIF9fdHVwbGVfY29uY2F0ZXI8X1JldCwg
X19pZHgsIF9UcGxzLi4uPiBfX25leHQ7CiAgIHJldHVybiBfX25leHQ6Ol9TX2RvKHN0ZDo6Zm9y
d2FyZDxfVHBscz4oX190cHMpLi4uLAogICAgICAgICAgc3RkOjpmb3J3YXJkPF9Vcz4oX191cyku
Li4sCiAgICAgICAgICBzdGQ6OmdldDxfSXM+KHN0ZDo6Zm9yd2FyZDxfVHA+KF9fdHApKS4uLik7
CiB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0PgogICAgc3RydWN0IF9fdHVwbGVf
Y29uY2F0ZXI8X1JldCwgc3RkOjpfSW5kZXhfdHVwbGU8Pj4KICAgIHsKICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gX1VzPgogc3RhdGljIGNvbnN0ZXhwciBfUmV0CiBfU19kbyhfVXMmJi4uLiBf
X3VzKQogICAgICAgIHsKICAgcmV0dXJuIF9SZXQoc3RkOjpmb3J3YXJkPF9Vcz4oX191cykuLi4p
OwogfQogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9UcGxzLCB0eXBlbmFtZSA9IHR5
cGVuYW1lCiAgICAgICAgICAgZW5hYmxlX2lmPF9fYW5kXzxfX2lzX3R1cGxlX2xpa2U8X1RwbHM+
Li4uPjo6dmFsdWU+Ojp0eXBlPgogICAgY29uc3RleHByIGF1dG8KICAgIHR1cGxlX2NhdChfVHBs
cyYmLi4uIF9fdHBscykKICAgIC0+IHR5cGVuYW1lIF9fdHVwbGVfY2F0X3Jlc3VsdDxfVHBscy4u
Lj46Ol9fdHlwZQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fdHVwbGVfY2F0X3Jlc3Vs
dDxfVHBscy4uLj46Ol9fdHlwZSBfX3JldDsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX21ha2Vf
MXN0X2luZGljZXM8X1RwbHMuLi4+OjpfX3R5cGUgX19pZHg7CiAgICAgIHR5cGVkZWYgX190dXBs
ZV9jb25jYXRlcjxfX3JldCwgX19pZHgsIF9UcGxzLi4uPiBfX2NvbmNhdGVyOwogICAgICByZXR1
cm4gX19jb25jYXRlcjo6X1NfZG8oc3RkOjpmb3J3YXJkPF9UcGxzPihfX3RwbHMpLi4uKTsKICAg
IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9FbGVtZW50cz4KICAgIGlubGluZSB0dXBsZTxf
RWxlbWVudHMmLi4uPgogICAgdGllKF9FbGVtZW50cyYuLi4gX19hcmdzKSBub2V4Y2VwdAogICAg
eyByZXR1cm4gdHVwbGU8X0VsZW1lbnRzJi4uLj4oX19hcmdzLi4uKTsgfQoKCiAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gX0VsZW1lbnRzPgogICAgaW5saW5lIHZvaWQKICAgIHN3YXAodHVwbGU8X0Vs
ZW1lbnRzLi4uPiYgX194LCB0dXBsZTxfRWxlbWVudHMuLi4+JiBfX3kpCiAgICBub2V4Y2VwdChu
b2V4Y2VwdChfX3guc3dhcChfX3kpKSkKICAgIHsgX194LnN3YXAoX195KTsgfQoKCgogIHN0cnVj
dCBfU3dhbGxvd19hc3NpZ24KICB7CiAgICB0ZW1wbGF0ZTxjbGFzcyBfVHA+CiAgICAgIGNvbnN0
IF9Td2FsbG93X2Fzc2lnbiYKICAgICAgb3BlcmF0b3I9KGNvbnN0IF9UcCYpIGNvbnN0CiAgICAg
IHsgcmV0dXJuICp0aGlzOyB9CiAgfTsKCiAgY29uc3QgX1N3YWxsb3dfYXNzaWduIGlnbm9yZXt9
OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX1R5cGVzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBz
dHJ1Y3QgdXNlc19hbGxvY2F0b3I8dHVwbGU8X1R5cGVzLi4uPiwgX0FsbG9jPiA6IHRydWVfdHlw
ZSB7IH07CgoKICB0ZW1wbGF0ZTxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KICAgIHRlbXBsYXRlPHR5
cGVuYW1lLi4uIF9BcmdzMSwgdHlwZW5hbWUuLi4gX0FyZ3MyPgogICAgICBpbmxpbmUKICAgICAg
cGFpcjxfVDEsIF9UMj46OgogICAgICBwYWlyKHBpZWNld2lzZV9jb25zdHJ1Y3RfdCwKICAgIHR1
cGxlPF9BcmdzMS4uLj4gX19maXJzdCwgdHVwbGU8X0FyZ3MyLi4uPiBfX3NlY29uZCkKICAgICAg
OiBwYWlyKF9fZmlyc3QsIF9fc2Vjb25kLAogICAgICB0eXBlbmFtZSBfQnVpbGRfaW5kZXhfdHVw
bGU8c2l6ZW9mLi4uKF9BcmdzMSk+OjpfX3R5cGUoKSwKICAgICAgdHlwZW5hbWUgX0J1aWxkX2lu
ZGV4X3R1cGxlPHNpemVvZi4uLihfQXJnczIpPjo6X190eXBlKCkpCiAgICAgIHsgfQoKICB0ZW1w
bGF0ZTxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9Bcmdz
MSwgc3RkOjpzaXplX3QuLi4gX0luZGV4ZXMxLAogICAgICAgICAgICAgdHlwZW5hbWUuLi4gX0Fy
Z3MyLCBzdGQ6OnNpemVfdC4uLiBfSW5kZXhlczI+CiAgICAgIGlubGluZQogICAgICBwYWlyPF9U
MSwgX1QyPjo6CiAgICAgIHBhaXIodHVwbGU8X0FyZ3MxLi4uPiYgX190dXBsZTEsIHR1cGxlPF9B
cmdzMi4uLj4mIF9fdHVwbGUyLAogICAgX0luZGV4X3R1cGxlPF9JbmRleGVzMS4uLj4sIF9JbmRl
eF90dXBsZTxfSW5kZXhlczIuLi4+KQogICAgICA6IGZpcnN0KHN0ZDo6Zm9yd2FyZDxfQXJnczE+
KHN0ZDo6Z2V0PF9JbmRleGVzMT4oX190dXBsZTEpKS4uLiksCiAgICAgICAgc2Vjb25kKHN0ZDo6
Zm9yd2FyZDxfQXJnczI+KHN0ZDo6Z2V0PF9JbmRleGVzMj4oX190dXBsZTIpKS4uLikKICAgICAg
eyB9CgoKCgp9CiMgNTYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjguMS9mdW5jdGlvbmFsIiAyIDMKCgoKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAo
KF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX01l
bWJlclBvaW50ZXI+CiAgICBjbGFzcyBfTWVtX2ZuOwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwg
dHlwZW5hbWUgX0NsYXNzPgogICAgX01lbV9mbjxfVHAgX0NsYXNzOjoqPgogICAgbWVtX2ZuKF9U
cCBfQ2xhc3M6OiopIG5vZXhjZXB0OwoKdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBjbGFzcyBfX2hh
c19yZXN1bHRfdHlwZV9oZWxwZXIgOiBfX3NmaW5hZV90eXBlcyB7IHRlbXBsYXRlPHR5cGVuYW1l
IF9VcD4gc3RydWN0IF9XcmFwX3R5cGUgeyB9OyB0ZW1wbGF0ZTx0eXBlbmFtZSBfVXA+IHN0YXRp
YyBfX29uZSBfX3Rlc3QoX1dyYXBfdHlwZTx0eXBlbmFtZSBfVXA6OnJlc3VsdF90eXBlPiopOyB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVXA+IHN0YXRpYyBfX3R3byBfX3Rlc3QoLi4uKTsgcHVibGljOiBz
dGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSBzaXplb2YoX190ZXN0PF9UcD4oMCkpID09IDE7
IH07IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gc3RydWN0IF9faGFzX3Jlc3VsdF90eXBlIDogaW50
ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgX19oYXNfcmVzdWx0X3R5cGVfaGVscGVyIDx0eXBlbmFtZSBy
ZW1vdmVfY3Y8X1RwPjo6dHlwZT46OnZhbHVlPiB7IH07CgoKICB0ZW1wbGF0ZTxib29sIF9IYXNf
cmVzdWx0X3R5cGUsIHR5cGVuYW1lIF9GdW5jdG9yPgogICAgc3RydWN0IF9NYXliZV9nZXRfcmVz
dWx0X3R5cGUKICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Z1bmN0b3I+CiAgICBzdHJ1
Y3QgX01heWJlX2dldF9yZXN1bHRfdHlwZTx0cnVlLCBfRnVuY3Rvcj4KICAgIHsgdHlwZWRlZiB0
eXBlbmFtZSBfRnVuY3Rvcjo6cmVzdWx0X3R5cGUgcmVzdWx0X3R5cGU7IH07CgoKCgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfRnVuY3Rvcj4KICAgIHN0cnVjdCBfV2Vha19yZXN1bHRfdHlwZV9pbXBs
CiAgICA6IF9NYXliZV9nZXRfcmVzdWx0X3R5cGU8X19oYXNfcmVzdWx0X3R5cGU8X0Z1bmN0b3I+
Ojp2YWx1ZSwgX0Z1bmN0b3I+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0
eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBzdHJ1Y3QgX1dlYWtfcmVzdWx0X3R5cGVfaW1wbDxf
UmVzKF9BcmdUeXBlcy4uLik+CiAgICB7IHR5cGVkZWYgX1JlcyByZXN1bHRfdHlwZTsgfTsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgc3RydWN0
IF9XZWFrX3Jlc3VsdF90eXBlX2ltcGw8X1JlcyhfQXJnVHlwZXMuLi4uLi4pPgogICAgeyB0eXBl
ZGVmIF9SZXMgcmVzdWx0X3R5cGU7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVu
YW1lLi4uIF9BcmdUeXBlcz4KICAgIHN0cnVjdCBfV2Vha19yZXN1bHRfdHlwZV9pbXBsPF9SZXMo
X0FyZ1R5cGVzLi4uKSBjb25zdD4KICAgIHsgdHlwZWRlZiBfUmVzIHJlc3VsdF90eXBlOyB9OwoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBzdHJ1
Y3QgX1dlYWtfcmVzdWx0X3R5cGVfaW1wbDxfUmVzKF9BcmdUeXBlcy4uLi4uLikgY29uc3Q+CiAg
ICB7IHR5cGVkZWYgX1JlcyByZXN1bHRfdHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jl
cywgdHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgc3RydWN0IF9XZWFrX3Jlc3VsdF90eXBlX2lt
cGw8X1JlcyhfQXJnVHlwZXMuLi4pIHZvbGF0aWxlPgogICAgeyB0eXBlZGVmIF9SZXMgcmVzdWx0
X3R5cGU7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lLi4uIF9BcmdUeXBl
cz4KICAgIHN0cnVjdCBfV2Vha19yZXN1bHRfdHlwZV9pbXBsPF9SZXMoX0FyZ1R5cGVzLi4uLi4u
KSB2b2xhdGlsZT4KICAgIHsgdHlwZWRlZiBfUmVzIHJlc3VsdF90eXBlOyB9OwoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBzdHJ1Y3QgX1dlYWtf
cmVzdWx0X3R5cGVfaW1wbDxfUmVzKF9BcmdUeXBlcy4uLikgY29uc3Qgdm9sYXRpbGU+CiAgICB7
IHR5cGVkZWYgX1JlcyByZXN1bHRfdHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jlcywg
dHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgc3RydWN0IF9XZWFrX3Jlc3VsdF90eXBlX2ltcGw8
X1JlcyhfQXJnVHlwZXMuLi4uLi4pIGNvbnN0IHZvbGF0aWxlPgogICAgeyB0eXBlZGVmIF9SZXMg
cmVzdWx0X3R5cGU7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBf
QXJnVHlwZXM+CiAgICBzdHJ1Y3QgX1dlYWtfcmVzdWx0X3R5cGVfaW1wbDxfUmVzKCYpKF9BcmdU
eXBlcy4uLik+CiAgICB7IHR5cGVkZWYgX1JlcyByZXN1bHRfdHlwZTsgfTsKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgc3RydWN0IF9XZWFrX3Jl
c3VsdF90eXBlX2ltcGw8X1JlcygmKShfQXJnVHlwZXMuLi4uLi4pPgogICAgeyB0eXBlZGVmIF9S
ZXMgcmVzdWx0X3R5cGU7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4u
LiBfQXJnVHlwZXM+CiAgICBzdHJ1Y3QgX1dlYWtfcmVzdWx0X3R5cGVfaW1wbDxfUmVzKCopKF9B
cmdUeXBlcy4uLik+CiAgICB7IHR5cGVkZWYgX1JlcyByZXN1bHRfdHlwZTsgfTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgc3RydWN0IF9XZWFr
X3Jlc3VsdF90eXBlX2ltcGw8X1JlcygqKShfQXJnVHlwZXMuLi4uLi4pPgogICAgeyB0eXBlZGVm
IF9SZXMgcmVzdWx0X3R5cGU7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFt
ZSBfQ2xhc3MsIHR5cGVuYW1lLi4uIF9BcmdUeXBlcz4KICAgIHN0cnVjdCBfV2Vha19yZXN1bHRf
dHlwZV9pbXBsPF9SZXMgKF9DbGFzczo6KikoX0FyZ1R5cGVzLi4uKT4KICAgIHsgdHlwZWRlZiBf
UmVzIHJlc3VsdF90eXBlOyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZSBf
Q2xhc3MsIHR5cGVuYW1lLi4uIF9BcmdUeXBlcz4KICAgIHN0cnVjdCBfV2Vha19yZXN1bHRfdHlw
ZV9pbXBsPF9SZXMgKF9DbGFzczo6KikoX0FyZ1R5cGVzLi4uLi4uKT4KICAgIHsgdHlwZWRlZiBf
UmVzIHJlc3VsdF90eXBlOyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUg
X0NsYXNzLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBzdHJ1Y3QgX1dlYWtfcmVzdWx0X3R5
cGVfaW1wbDxfUmVzIChfQ2xhc3M6OiopKF9BcmdUeXBlcy4uLikgY29uc3Q+CiAgICB7IHR5cGVk
ZWYgX1JlcyByZXN1bHRfdHlwZTsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5h
bWUgX0NsYXNzLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBzdHJ1Y3QgX1dlYWtfcmVzdWx0
X3R5cGVfaW1wbDxfUmVzIChfQ2xhc3M6OiopKF9BcmdUeXBlcy4uLi4uLikgY29uc3Q+CiAgICB7
IHR5cGVkZWYgX1JlcyByZXN1bHRfdHlwZTsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMs
IHR5cGVuYW1lIF9DbGFzcywgdHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgc3RydWN0IF9XZWFr
X3Jlc3VsdF90eXBlX2ltcGw8X1JlcyAoX0NsYXNzOjoqKShfQXJnVHlwZXMuLi4pIHZvbGF0aWxl
PgogICAgeyB0eXBlZGVmIF9SZXMgcmVzdWx0X3R5cGU7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9SZXMsIHR5cGVuYW1lIF9DbGFzcywgdHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgc3RydWN0
IF9XZWFrX3Jlc3VsdF90eXBlX2ltcGw8X1JlcyAoX0NsYXNzOjoqKShfQXJnVHlwZXMuLi4uLi4p
IHZvbGF0aWxlPgogICAgeyB0eXBlZGVmIF9SZXMgcmVzdWx0X3R5cGU7IH07CgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZSBfQ2xhc3MsIHR5cGVuYW1lLi4uIF9BcmdUeXBlcz4K
ICAgIHN0cnVjdCBfV2Vha19yZXN1bHRfdHlwZV9pbXBsPF9SZXMgKF9DbGFzczo6KikoX0FyZ1R5
cGVzLi4uKQogICAgICBjb25zdCB2b2xhdGlsZT4KICAgIHsgdHlwZWRlZiBfUmVzIHJlc3VsdF90
eXBlOyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZSBfQ2xhc3MsIHR5cGVu
YW1lLi4uIF9BcmdUeXBlcz4KICAgIHN0cnVjdCBfV2Vha19yZXN1bHRfdHlwZV9pbXBsPF9SZXMg
KF9DbGFzczo6KikoX0FyZ1R5cGVzLi4uLi4uKQogICAgICBjb25zdCB2b2xhdGlsZT4KICAgIHsg
dHlwZWRlZiBfUmVzIHJlc3VsdF90eXBlOyB9OwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Z1
bmN0b3I+CiAgICBzdHJ1Y3QgX1dlYWtfcmVzdWx0X3R5cGUKICAgIDogX1dlYWtfcmVzdWx0X3R5
cGVfaW1wbDx0eXBlbmFtZSByZW1vdmVfY3Y8X0Z1bmN0b3I+Ojp0eXBlPgogICAgeyB9OwoKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9EZXJpdmVzX2Zyb21fdW5hcnlfZnVu
Y3Rpb24gOiBfX3NmaW5hZV90eXBlcwogICAgewogICAgcHJpdmF0ZToKICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgX1QxLCB0eXBlbmFtZSBfUmVzPgogc3RhdGljIF9fb25lIF9fdGVzdChjb25zdCB2
b2xhdGlsZSB1bmFyeV9mdW5jdGlvbjxfVDEsIF9SZXM+Kik7CgoKCiAgICAgIHN0YXRpYyBfX3R3
byBfX3Rlc3QoLi4uKTsKCiAgICBwdWJsaWM6CiAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVl
ID0gc2l6ZW9mKF9fdGVzdCgoX1RwKikwKSkgPT0gMTsKICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICBzdHJ1Y3QgX0Rlcml2ZXNfZnJvbV9iaW5hcnlfZnVuY3Rpb24gOiBfX3Nm
aW5hZV90eXBlcwogICAgewogICAgcHJpdmF0ZToKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Qx
LCB0eXBlbmFtZSBfVDIsIHR5cGVuYW1lIF9SZXM+CiBzdGF0aWMgX19vbmUgX190ZXN0KGNvbnN0
IHZvbGF0aWxlIGJpbmFyeV9mdW5jdGlvbjxfVDEsIF9UMiwgX1Jlcz4qKTsKCgoKICAgICAgc3Rh
dGljIF9fdHdvIF9fdGVzdCguLi4pOwoKICAgIHB1YmxpYzoKICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgdmFsdWUgPSBzaXplb2YoX190ZXN0KChfVHAqKTApKSA9PSAxOwogICAgfTsKCgoKCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9GdW5jdG9yLCB0eXBlbmFtZS4uLiBfQXJncz4KICAgIGlubGluZQog
ICAgdHlwZW5hbWUgZW5hYmxlX2lmPAogICAgICAoIWlzX21lbWJlcl9wb2ludGVyPF9GdW5jdG9y
Pjo6dmFsdWUKICAgICAgICYmICFpc19mdW5jdGlvbjxfRnVuY3Rvcj46OnZhbHVlCiAgICAgICAm
JiAhaXNfZnVuY3Rpb248dHlwZW5hbWUgcmVtb3ZlX3BvaW50ZXI8X0Z1bmN0b3I+Ojp0eXBlPjo6
dmFsdWUpLAogICAgICB0eXBlbmFtZSByZXN1bHRfb2Y8X0Z1bmN0b3ImKF9BcmdzJiYuLi4pPjo6
dHlwZQogICAgPjo6dHlwZQogICAgX19pbnZva2UoX0Z1bmN0b3ImIF9fZiwgX0FyZ3MmJi4uLiBf
X2FyZ3MpCiAgICB7CiAgICAgIHJldHVybiBfX2Yoc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3Mp
Li4uKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Z1bmN0b3IsIHR5cGVuYW1lLi4uIF9B
cmdzPgogICAgaW5saW5lCiAgICB0eXBlbmFtZSBlbmFibGVfaWY8CiAgICAgICAgICAgICAoaXNf
bWVtYmVyX3BvaW50ZXI8X0Z1bmN0b3I+Ojp2YWx1ZQogICAgICAgICAgICAgICYmICFpc19mdW5j
dGlvbjxfRnVuY3Rvcj46OnZhbHVlCiAgICAgICAgICAgICAgJiYgIWlzX2Z1bmN0aW9uPHR5cGVu
YW1lIHJlbW92ZV9wb2ludGVyPF9GdW5jdG9yPjo6dHlwZT46OnZhbHVlKSwKICAgICAgICAgICAg
IHR5cGVuYW1lIHJlc3VsdF9vZjxfRnVuY3RvcihfQXJncyYmLi4uKT46OnR5cGUKICAgICAgICAg
ICA+Ojp0eXBlCiAgICBfX2ludm9rZShfRnVuY3RvciYgX19mLCBfQXJncyYmLi4uIF9fYXJncykK
ICAgIHsKICAgICAgcmV0dXJuIHN0ZDo6bWVtX2ZuKF9fZikoc3RkOjpmb3J3YXJkPF9BcmdzPihf
X2FyZ3MpLi4uKTsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9GdW5jdG9yLCB0eXBlbmFt
ZS4uLiBfQXJncz4KICAgIGlubGluZQogICAgdHlwZW5hbWUgZW5hYmxlX2lmPAogICAgICAoaXNf
cG9pbnRlcjxfRnVuY3Rvcj46OnZhbHVlCiAgICAgICAmJiBpc19mdW5jdGlvbjx0eXBlbmFtZSBy
ZW1vdmVfcG9pbnRlcjxfRnVuY3Rvcj46OnR5cGU+Ojp2YWx1ZSksCiAgICAgIHR5cGVuYW1lIHJl
c3VsdF9vZjxfRnVuY3RvcihfQXJncyYmLi4uKT46OnR5cGUKICAgID46OnR5cGUKICAgIF9faW52
b2tlKF9GdW5jdG9yIF9fZiwgX0FyZ3MmJi4uLiBfX2FyZ3MpCiAgICB7CiAgICAgIHJldHVybiBf
X2Yoc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsKICAgIH0KCgoKCgoKICB0ZW1wbGF0
ZTxib29sIF9VbmFyeSwgYm9vbCBfQmluYXJ5LCB0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX1Jl
ZmVyZW5jZV93cmFwcGVyX2Jhc2VfaW1wbDsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAg
IHN0cnVjdCBfUmVmZXJlbmNlX3dyYXBwZXJfYmFzZV9pbXBsPGZhbHNlLCBmYWxzZSwgX1RwPgog
ICAgOiBfV2Vha19yZXN1bHRfdHlwZTxfVHA+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHA+CiAgICBzdHJ1Y3QgX1JlZmVyZW5jZV93cmFwcGVyX2Jhc2VfaW1wbDx0cnVlLCBmYWxz
ZSwgX1RwPgogICAgOiBfV2Vha19yZXN1bHRfdHlwZTxfVHA+CiAgICB7CiAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgX1RwOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGU7CiAgICB9OwoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9SZWZlcmVuY2Vfd3JhcHBlcl9iYXNlX2lt
cGw8ZmFsc2UsIHRydWUsIF9UcD4KICAgIDogX1dlYWtfcmVzdWx0X3R5cGU8X1RwPgogICAgewog
ICAgICB0eXBlZGVmIHR5cGVuYW1lIF9UcDo6Zmlyc3RfYXJndW1lbnRfdHlwZSBmaXJzdF9hcmd1
bWVudF90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9UcDo6c2Vjb25kX2FyZ3VtZW50X3R5
cGUgc2Vjb25kX2FyZ3VtZW50X3R5cGU7CiAgICB9OwoKCiAgIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4KICAgIHN0cnVjdCBfUmVmZXJlbmNlX3dyYXBwZXJfYmFzZV9pbXBsPHRydWUsIHRydWUsIF9U
cD4KICAgIDogX1dlYWtfcmVzdWx0X3R5cGU8X1RwPgogICAgewogICAgICB0eXBlZGVmIHR5cGVu
YW1lIF9UcDo6YXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBlOwogICAgICB0eXBlZGVmIHR5cGVu
YW1lIF9UcDo6Zmlyc3RfYXJndW1lbnRfdHlwZSBmaXJzdF9hcmd1bWVudF90eXBlOwogICAgICB0
eXBlZGVmIHR5cGVuYW1lIF9UcDo6c2Vjb25kX2FyZ3VtZW50X3R5cGUgc2Vjb25kX2FyZ3VtZW50
X3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGNsYXNzIF9faGFzX2FyZ3Vt
ZW50X3R5cGVfaGVscGVyIDogX19zZmluYWVfdHlwZXMgeyB0ZW1wbGF0ZTx0eXBlbmFtZSBfVXA+
IHN0cnVjdCBfV3JhcF90eXBlIHsgfTsgdGVtcGxhdGU8dHlwZW5hbWUgX1VwPiBzdGF0aWMgX19v
bmUgX190ZXN0KF9XcmFwX3R5cGU8dHlwZW5hbWUgX1VwOjphcmd1bWVudF90eXBlPiopOyB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVXA+IHN0YXRpYyBfX3R3byBfX3Rlc3QoLi4uKTsgcHVibGljOiBzdGF0
aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSBzaXplb2YoX190ZXN0PF9UcD4oMCkpID09IDE7IH07
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gc3RydWN0IF9faGFzX2FyZ3VtZW50X3R5cGUgOiBpbnRl
Z3JhbF9jb25zdGFudDxib29sLCBfX2hhc19hcmd1bWVudF90eXBlX2hlbHBlciA8dHlwZW5hbWUg
cmVtb3ZlX2N2PF9UcD46OnR5cGU+Ojp2YWx1ZT4geyB9OwogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4gY2xhc3MgX19oYXNfZmlyc3RfYXJndW1lbnRfdHlwZV9oZWxwZXIgOiBfX3NmaW5hZV90eXBl
cyB7IHRlbXBsYXRlPHR5cGVuYW1lIF9VcD4gc3RydWN0IF9XcmFwX3R5cGUgeyB9OyB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVXA+IHN0YXRpYyBfX29uZSBfX3Rlc3QoX1dyYXBfdHlwZTx0eXBlbmFtZSBf
VXA6OmZpcnN0X2FyZ3VtZW50X3R5cGU+Kik7IHRlbXBsYXRlPHR5cGVuYW1lIF9VcD4gc3RhdGlj
IF9fdHdvIF9fdGVzdCguLi4pOyBwdWJsaWM6IHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1ZSA9
IHNpemVvZihfX3Rlc3Q8X1RwPigwKSkgPT0gMTsgfTsgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBz
dHJ1Y3QgX19oYXNfZmlyc3RfYXJndW1lbnRfdHlwZSA6IGludGVncmFsX2NvbnN0YW50PGJvb2ws
IF9faGFzX2ZpcnN0X2FyZ3VtZW50X3R5cGVfaGVscGVyIDx0eXBlbmFtZSByZW1vdmVfY3Y8X1Rw
Pjo6dHlwZT46OnZhbHVlPiB7IH07CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBjbGFzcyBfX2hh
c19zZWNvbmRfYXJndW1lbnRfdHlwZV9oZWxwZXIgOiBfX3NmaW5hZV90eXBlcyB7IHRlbXBsYXRl
PHR5cGVuYW1lIF9VcD4gc3RydWN0IF9XcmFwX3R5cGUgeyB9OyB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VXA+IHN0YXRpYyBfX29uZSBfX3Rlc3QoX1dyYXBfdHlwZTx0eXBlbmFtZSBfVXA6OnNlY29uZF9h
cmd1bWVudF90eXBlPiopOyB0ZW1wbGF0ZTx0eXBlbmFtZSBfVXA+IHN0YXRpYyBfX3R3byBfX3Rl
c3QoLi4uKTsgcHVibGljOiBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSBzaXplb2YoX190
ZXN0PF9UcD4oMCkpID09IDE7IH07IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gc3RydWN0IF9faGFz
X3NlY29uZF9hcmd1bWVudF90eXBlIDogaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgX19oYXNfc2Vj
b25kX2FyZ3VtZW50X3R5cGVfaGVscGVyIDx0eXBlbmFtZSByZW1vdmVfY3Y8X1RwPjo6dHlwZT46
OnZhbHVlPiB7IH07CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBf
UmVmZXJlbmNlX3dyYXBwZXJfYmFzZQogICAgOiBfUmVmZXJlbmNlX3dyYXBwZXJfYmFzZV9pbXBs
PAogICAgICBfX2hhc19hcmd1bWVudF90eXBlPF9UcD46OnZhbHVlLAogICAgICBfX2hhc19maXJz
dF9hcmd1bWVudF90eXBlPF9UcD46OnZhbHVlCiAgICAgICYmIF9faGFzX3NlY29uZF9hcmd1bWVu
dF90eXBlPF9UcD46OnZhbHVlLAogICAgICBfVHA+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUmVzLCB0eXBlbmFtZSBfVDE+CiAgICBzdHJ1Y3QgX1JlZmVyZW5jZV93cmFwcGVyX2Jh
c2U8X1JlcyhfVDEpPgogICAgOiB1bmFyeV9mdW5jdGlvbjxfVDEsIF9SZXM+CiAgICB7IH07Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lIF9UMT4KICAgIHN0cnVjdCBfUmVmZXJl
bmNlX3dyYXBwZXJfYmFzZTxfUmVzKF9UMSkgY29uc3Q+CiAgICA6IHVuYXJ5X2Z1bmN0aW9uPF9U
MSwgX1Jlcz4KICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUgX1Qx
PgogICAgc3RydWN0IF9SZWZlcmVuY2Vfd3JhcHBlcl9iYXNlPF9SZXMoX1QxKSB2b2xhdGlsZT4K
ICAgIDogdW5hcnlfZnVuY3Rpb248X1QxLCBfUmVzPgogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUmVzLCB0eXBlbmFtZSBfVDE+CiAgICBzdHJ1Y3QgX1JlZmVyZW5jZV93cmFwcGVyX2Jh
c2U8X1JlcyhfVDEpIGNvbnN0IHZvbGF0aWxlPgogICAgOiB1bmFyeV9mdW5jdGlvbjxfVDEsIF9S
ZXM+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZSBfVDEsIHR5
cGVuYW1lIF9UMj4KICAgIHN0cnVjdCBfUmVmZXJlbmNlX3dyYXBwZXJfYmFzZTxfUmVzKF9UMSwg
X1QyKT4KICAgIDogYmluYXJ5X2Z1bmN0aW9uPF9UMSwgX1QyLCBfUmVzPgogICAgeyB9OwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZSBfVDEsIHR5cGVuYW1lIF9UMj4KICAgIHN0
cnVjdCBfUmVmZXJlbmNlX3dyYXBwZXJfYmFzZTxfUmVzKF9UMSwgX1QyKSBjb25zdD4KICAgIDog
YmluYXJ5X2Z1bmN0aW9uPF9UMSwgX1QyLCBfUmVzPgogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUmVzLCB0eXBlbmFtZSBfVDEsIHR5cGVuYW1lIF9UMj4KICAgIHN0cnVjdCBfUmVmZXJl
bmNlX3dyYXBwZXJfYmFzZTxfUmVzKF9UMSwgX1QyKSB2b2xhdGlsZT4KICAgIDogYmluYXJ5X2Z1
bmN0aW9uPF9UMSwgX1QyLCBfUmVzPgogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVz
LCB0eXBlbmFtZSBfVDEsIHR5cGVuYW1lIF9UMj4KICAgIHN0cnVjdCBfUmVmZXJlbmNlX3dyYXBw
ZXJfYmFzZTxfUmVzKF9UMSwgX1QyKSBjb25zdCB2b2xhdGlsZT4KICAgIDogYmluYXJ5X2Z1bmN0
aW9uPF9UMSwgX1QyLCBfUmVzPgogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jlcywg
dHlwZW5hbWUgX1QxPgogICAgc3RydWN0IF9SZWZlcmVuY2Vfd3JhcHBlcl9iYXNlPF9SZXMoKiko
X1QxKT4KICAgIDogdW5hcnlfZnVuY3Rpb248X1QxLCBfUmVzPgogICAgeyB9OwoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUgX1QxLCB0eXBlbmFtZSBfVDI+CiAgICBzdHJ1Y3Qg
X1JlZmVyZW5jZV93cmFwcGVyX2Jhc2U8X1JlcygqKShfVDEsIF9UMik+CiAgICA6IGJpbmFyeV9m
dW5jdGlvbjxfVDEsIF9UMiwgX1Jlcz4KICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9S
ZXMsIHR5cGVuYW1lIF9UMT4KICAgIHN0cnVjdCBfUmVmZXJlbmNlX3dyYXBwZXJfYmFzZTxfUmVz
IChfVDE6OiopKCk+CiAgICA6IHVuYXJ5X2Z1bmN0aW9uPF9UMSosIF9SZXM+CiAgICB7IH07CgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZSBfVDEsIHR5cGVuYW1lIF9UMj4KICAg
IHN0cnVjdCBfUmVmZXJlbmNlX3dyYXBwZXJfYmFzZTxfUmVzIChfVDE6OiopKF9UMik+CiAgICA6
IGJpbmFyeV9mdW5jdGlvbjxfVDEqLCBfVDIsIF9SZXM+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmVzLCB0eXBlbmFtZSBfVDE+CiAgICBzdHJ1Y3QgX1JlZmVyZW5jZV93cmFwcGVy
X2Jhc2U8X1JlcyAoX1QxOjoqKSgpIGNvbnN0PgogICAgOiB1bmFyeV9mdW5jdGlvbjxjb25zdCBf
VDEqLCBfUmVzPgogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUg
X1QxLCB0eXBlbmFtZSBfVDI+CiAgICBzdHJ1Y3QgX1JlZmVyZW5jZV93cmFwcGVyX2Jhc2U8X1Jl
cyAoX1QxOjoqKShfVDIpIGNvbnN0PgogICAgOiBiaW5hcnlfZnVuY3Rpb248Y29uc3QgX1QxKiwg
X1QyLCBfUmVzPgogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUg
X1QxPgogICAgc3RydWN0IF9SZWZlcmVuY2Vfd3JhcHBlcl9iYXNlPF9SZXMgKF9UMTo6KikoKSB2
b2xhdGlsZT4KICAgIDogdW5hcnlfZnVuY3Rpb248dm9sYXRpbGUgX1QxKiwgX1Jlcz4KICAgIHsg
fTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lIF9UMSwgdHlwZW5hbWUgX1Qy
PgogICAgc3RydWN0IF9SZWZlcmVuY2Vfd3JhcHBlcl9iYXNlPF9SZXMgKF9UMTo6KikoX1QyKSB2
b2xhdGlsZT4KICAgIDogYmluYXJ5X2Z1bmN0aW9uPHZvbGF0aWxlIF9UMSosIF9UMiwgX1Jlcz4K
ICAgIHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lIF9UMT4KICAgIHN0
cnVjdCBfUmVmZXJlbmNlX3dyYXBwZXJfYmFzZTxfUmVzIChfVDE6OiopKCkgY29uc3Qgdm9sYXRp
bGU+CiAgICA6IHVuYXJ5X2Z1bmN0aW9uPGNvbnN0IHZvbGF0aWxlIF9UMSosIF9SZXM+CiAgICB7
IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZSBfVDEsIHR5cGVuYW1lIF9U
Mj4KICAgIHN0cnVjdCBfUmVmZXJlbmNlX3dyYXBwZXJfYmFzZTxfUmVzIChfVDE6OiopKF9UMikg
Y29uc3Qgdm9sYXRpbGU+CiAgICA6IGJpbmFyeV9mdW5jdGlvbjxjb25zdCB2b2xhdGlsZSBfVDEq
LCBfVDIsIF9SZXM+CiAgICB7IH07CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAg
Y2xhc3MgcmVmZXJlbmNlX3dyYXBwZXIKICAgIDogcHVibGljIF9SZWZlcmVuY2Vfd3JhcHBlcl9i
YXNlPHR5cGVuYW1lIHJlbW92ZV9jdjxfVHA+Ojp0eXBlPgogICAgewogICAgICBfVHAqIF9NX2Rh
dGE7CgogICAgcHVibGljOgogICAgICB0eXBlZGVmIF9UcCB0eXBlOwoKICAgICAgcmVmZXJlbmNl
X3dyYXBwZXIoX1RwJiBfX2luZGF0YSkgbm9leGNlcHQKICAgICAgOiBfTV9kYXRhKHN0ZDo6X19h
ZGRyZXNzb2YoX19pbmRhdGEpKQogICAgICB7IH0KCiAgICAgIHJlZmVyZW5jZV93cmFwcGVyKF9U
cCYmKSA9IGRlbGV0ZTsKCiAgICAgIHJlZmVyZW5jZV93cmFwcGVyKGNvbnN0IHJlZmVyZW5jZV93
cmFwcGVyPF9UcD4mIF9faW5yZWYpIG5vZXhjZXB0CiAgICAgIDogX01fZGF0YShfX2lucmVmLl9N
X2RhdGEpCiAgICAgIHsgfQoKICAgICAgcmVmZXJlbmNlX3dyYXBwZXImCiAgICAgIG9wZXJhdG9y
PShjb25zdCByZWZlcmVuY2Vfd3JhcHBlcjxfVHA+JiBfX2lucmVmKSBub2V4Y2VwdAogICAgICB7
CiBfTV9kYXRhID0gX19pbnJlZi5fTV9kYXRhOwogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAg
ICBvcGVyYXRvciBfVHAmKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gdGhpcy0+Z2V0
KCk7IH0KCiAgICAgIF9UcCYKICAgICAgZ2V0KCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1
cm4gKl9NX2RhdGE7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9BcmdzPgogdHlwZW5h
bWUgcmVzdWx0X29mPF9UcCYoX0FyZ3MmJi4uLik+Ojp0eXBlCiBvcGVyYXRvcigpKF9BcmdzJiYu
Li4gX19hcmdzKSBjb25zdAogewogICByZXR1cm4gX19pbnZva2UoZ2V0KCksIHN0ZDo6Zm9yd2Fy
ZDxfQXJncz4oX19hcmdzKS4uLik7CiB9CiAgICB9OwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4KICAgIGlubGluZSByZWZlcmVuY2Vfd3JhcHBlcjxfVHA+CiAgICByZWYoX1RwJiBfX3QpIG5v
ZXhjZXB0CiAgICB7IHJldHVybiByZWZlcmVuY2Vfd3JhcHBlcjxfVHA+KF9fdCk7IH0KCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSByZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBf
VHA+CiAgICBjcmVmKGNvbnN0IF9UcCYgX190KSBub2V4Y2VwdAogICAgeyByZXR1cm4gcmVmZXJl
bmNlX3dyYXBwZXI8Y29uc3QgX1RwPihfX3QpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4K
ICAgIHZvaWQgcmVmKGNvbnN0IF9UcCYmKSA9IGRlbGV0ZTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgdm9pZCBjcmVmKGNvbnN0IF9UcCYmKSA9IGRlbGV0ZTsKCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICAgIGlubGluZSByZWZlcmVuY2Vfd3JhcHBlcjxfVHA+CiAgICByZWYocmVm
ZXJlbmNlX3dyYXBwZXI8X1RwPiBfX3QpIG5vZXhjZXB0CiAgICB7IHJldHVybiByZWYoX190Lmdl
dCgpKTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHJlZmVyZW5jZV93
cmFwcGVyPGNvbnN0IF9UcD4KICAgIGNyZWYocmVmZXJlbmNlX3dyYXBwZXI8X1RwPiBfX3QpIG5v
ZXhjZXB0CiAgICB7IHJldHVybiBjcmVmKF9fdC5nZXQoKSk7IH0KCgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBfVHlwZXM+CiAgICBzdHJ1Y3QgX1BhY2sgOiBpbnRlZ3JhbF9jb25zdGFudDxzaXpl
X3QsIHNpemVvZi4uLihfVHlwZXMpPgogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnJv
bSwgdHlwZW5hbWUgX1RvLCBib29sID0gX0Zyb206OnZhbHVlID09IF9Ubzo6dmFsdWU+CiAgICBz
dHJ1Y3QgX0FsbENvbnZlcnRpYmxlIDogZmFsc2VfdHlwZQogICAgeyB9OwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZS4uLiBfRnJvbSwgdHlwZW5hbWUuLi4gX1RvPgogICAgc3RydWN0IF9BbGxDb252ZXJ0
aWJsZTxfUGFjazxfRnJvbS4uLj4sIF9QYWNrPF9Uby4uLj4sIHRydWU+CiAgICA6IF9fYW5kXzxp
c19jb252ZXJ0aWJsZTxfRnJvbSwgX1RvPi4uLj4KICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwMSwgdHlwZW5hbWUgX1RwMj4KICAgIHVzaW5nIF9Ob3RTYW1lID0gX19ub3RfPGlzX3Nh
bWU8dHlwZW5hbWUgc3RkOjpkZWNheTxfVHAxPjo6dHlwZSwKICAgICAgICB0eXBlbmFtZSBzdGQ6
OmRlY2F5PF9UcDI+Ojp0eXBlPj47CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlw
ZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgc3RydWN0IF9NYXliZV91bmFyeV9vcl9iaW5hcnlfZnVu
Y3Rpb24geyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUgX1QxPgogICAg
c3RydWN0IF9NYXliZV91bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb248X1JlcywgX1QxPgogICAgOiBz
dGQ6OnVuYXJ5X2Z1bmN0aW9uPF9UMSwgX1Jlcz4geyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1JlcywgdHlwZW5hbWUgX1QxLCB0eXBlbmFtZSBfVDI+CiAgICBzdHJ1Y3QgX01heWJlX3VuYXJ5
X29yX2JpbmFyeV9mdW5jdGlvbjxfUmVzLCBfVDEsIF9UMj4KICAgIDogc3RkOjpiaW5hcnlfZnVu
Y3Rpb248X1QxLCBfVDIsIF9SZXM+IHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5
cGVuYW1lIF9DbGFzcywgdHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgY2xhc3MgX01lbV9mbjxf
UmVzIChfQ2xhc3M6OiopKF9BcmdUeXBlcy4uLik+CiAgICA6IHB1YmxpYyBfTWF5YmVfdW5hcnlf
b3JfYmluYXJ5X2Z1bmN0aW9uPF9SZXMsIF9DbGFzcyosIF9BcmdUeXBlcy4uLj4KICAgIHsKICAg
ICAgdHlwZWRlZiBfUmVzIChfQ2xhc3M6OipfRnVuY3RvcikoX0FyZ1R5cGVzLi4uKTsKCiAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUuLi4gX0FyZ3M+CiBfUmVzCiBfTV9jYWxs
KF9UcCYmIF9fb2JqZWN0LCBjb25zdCB2b2xhdGlsZSBfQ2xhc3MgKiwKICBfQXJncyYmLi4uIF9f
YXJncykgY29uc3QKIHsKICAgcmV0dXJuIChzdGQ6OmZvcndhcmQ8X1RwPihfX29iamVjdCkuKl9f
cG1mKQogICAgIChzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOwogfQoKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZS4uLiBfQXJncz4KIF9SZXMKIF9NX2NhbGwoX1Rw
JiYgX19wdHIsIGNvbnN0IHZvbGF0aWxlIHZvaWQgKiwgX0FyZ3MmJi4uLiBfX2FyZ3MpIGNvbnN0
CiB7IHJldHVybiAoKCpfX3B0cikuKl9fcG1mKShzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncyku
Li4pOyB9CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3M+CiB1c2luZyBfUmVxdWly
ZVZhbGlkQXJncwogICA9IF9SZXF1aXJlPF9BbGxDb252ZXJ0aWJsZTxfUGFjazxfQXJncy4uLj4s
IF9QYWNrPF9BcmdUeXBlcy4uLj4+PjsKCgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0
eXBlbmFtZS4uLiBfQXJncz4KIHVzaW5nIF9SZXF1aXJlVmFsaWRBcmdzMgogICA9IF9SZXF1aXJl
PF9Ob3RTYW1lPF9DbGFzcywgX1RwPiwgX05vdFNhbWU8X0NsYXNzKiwgX1RwPiwKICAgICAgIF9B
bGxDb252ZXJ0aWJsZTxfUGFjazxfQXJncy4uLj4sIF9QYWNrPF9BcmdUeXBlcy4uLj4+PjsKCgoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZS4uLiBfQXJncz4KIHVzaW5nIF9S
ZXF1aXJlVmFsaWRBcmdzMwogICA9IF9SZXF1aXJlPGlzX2Jhc2Vfb2Y8X0NsYXNzLCBfVHA+LAog
ICAgICAgX0FsbENvbnZlcnRpYmxlPF9QYWNrPF9BcmdzLi4uPiwgX1BhY2s8X0FyZ1R5cGVzLi4u
Pj4+OwoKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBfUmVzIHJlc3VsdF90eXBlOwoKICAgICAg
ZXhwbGljaXQgX01lbV9mbihfRnVuY3RvciBfX3BtZikgOiBfX3BtZihfX3BtZikgeyB9CgoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3MsIHR5cGVuYW1lIF9SZXEgPSBfUmVxdWlyZVZh
bGlkQXJnczxfQXJncy4uLj4+CiBfUmVzCiBvcGVyYXRvcigpKF9DbGFzcyYgX19vYmplY3QsIF9B
cmdzJiYuLi4gX19hcmdzKSBjb25zdAogeyByZXR1cm4gKF9fb2JqZWN0LipfX3BtZikoc3RkOjpm
b3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
X0FyZ3MsIHR5cGVuYW1lIF9SZXEgPSBfUmVxdWlyZVZhbGlkQXJnczxfQXJncy4uLj4+CiBfUmVz
CiBvcGVyYXRvcigpKF9DbGFzcyYmIF9fb2JqZWN0LCBfQXJncyYmLi4uIF9fYXJncykgY29uc3QK
IHsKICAgcmV0dXJuIChzdGQ6Om1vdmUoX19vYmplY3QpLipfX3BtZikoc3RkOjpmb3J3YXJkPF9B
cmdzPihfX2FyZ3MpLi4uKTsKIH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfQXJncywg
dHlwZW5hbWUgX1JlcSA9IF9SZXF1aXJlVmFsaWRBcmdzPF9BcmdzLi4uPj4KIF9SZXMKIG9wZXJh
dG9yKCkoX0NsYXNzKiBfX29iamVjdCwgX0FyZ3MmJi4uLiBfX2FyZ3MpIGNvbnN0CiB7IHJldHVy
biAoX19vYmplY3QtPipfX3BtZikoc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsgfQoK
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUuLi4gX0FyZ3MsCiAgICAgICAg
dHlwZW5hbWUgX1JlcSA9IF9SZXF1aXJlVmFsaWRBcmdzMjxfVHAsIF9BcmdzLi4uPj4KIF9SZXMK
IG9wZXJhdG9yKCkoX1RwJiYgX19vYmplY3QsIF9BcmdzJiYuLi4gX19hcmdzKSBjb25zdAogewog
ICByZXR1cm4gX01fY2FsbChzdGQ6OmZvcndhcmQ8X1RwPihfX29iamVjdCksICZfX29iamVjdCwK
ICAgICAgIHN0ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLik7CiB9CgogICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lLi4uIF9BcmdzLAogICAgICAgIHR5cGVuYW1lIF9SZXEg
PSBfUmVxdWlyZVZhbGlkQXJnczM8X1RwLCBfQXJncy4uLj4+CiBfUmVzCiBvcGVyYXRvcigpKHJl
ZmVyZW5jZV93cmFwcGVyPF9UcD4gX19yZWYsIF9BcmdzJiYuLi4gX19hcmdzKSBjb25zdAogeyBy
ZXR1cm4gb3BlcmF0b3IoKShfX3JlZi5nZXQoKSwgc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3Mp
Li4uKTsgfQoKICAgIHByaXZhdGU6CiAgICAgIF9GdW5jdG9yIF9fcG1mOwogICAgfTsKCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lIF9DbGFzcywgdHlwZW5hbWUuLi4gX0FyZ1R5
cGVzPgogICAgY2xhc3MgX01lbV9mbjxfUmVzIChfQ2xhc3M6OiopKF9BcmdUeXBlcy4uLikgY29u
c3Q+CiAgICA6IHB1YmxpYyBfTWF5YmVfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uPF9SZXMsIGNv
bnN0IF9DbGFzcyosCiAgICAgICAgICBfQXJnVHlwZXMuLi4+CiAgICB7CiAgICAgIHR5cGVkZWYg
X1JlcyAoX0NsYXNzOjoqX0Z1bmN0b3IpKF9BcmdUeXBlcy4uLikgY29uc3Q7CgogICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lLi4uIF9BcmdzPgogX1JlcwogX01fY2FsbChfVHAm
JiBfX29iamVjdCwgY29uc3Qgdm9sYXRpbGUgX0NsYXNzICosCiAgX0FyZ3MmJi4uLiBfX2FyZ3Mp
IGNvbnN0CiB7CiAgIHJldHVybiAoc3RkOjpmb3J3YXJkPF9UcD4oX19vYmplY3QpLipfX3BtZikK
ICAgICAoc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsKIH0KCiAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUuLi4gX0FyZ3M+CiBfUmVzCiBfTV9jYWxsKF9UcCYmIF9f
cHRyLCBjb25zdCB2b2xhdGlsZSB2b2lkICosIF9BcmdzJiYuLi4gX19hcmdzKSBjb25zdAogeyBy
ZXR1cm4gKCgqX19wdHIpLipfX3BtZikoc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsg
fQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3M+CiB1c2luZyBfUmVxdWlyZVZhbGlk
QXJncwogICA9IF9SZXF1aXJlPF9BbGxDb252ZXJ0aWJsZTxfUGFjazxfQXJncy4uLj4sIF9QYWNr
PF9BcmdUeXBlcy4uLj4+PjsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUu
Li4gX0FyZ3M+CiB1c2luZyBfUmVxdWlyZVZhbGlkQXJnczIKICAgPSBfUmVxdWlyZTxfTm90U2Ft
ZTxfQ2xhc3MsIF9UcD4sIF9Ob3RTYW1lPGNvbnN0IF9DbGFzcyosIF9UcD4sCiAgICAgICBfQWxs
Q29udmVydGlibGU8X1BhY2s8X0FyZ3MuLi4+LCBfUGFjazxfQXJnVHlwZXMuLi4+Pj47CgogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lLi4uIF9BcmdzPgogdXNpbmcgX1JlcXVp
cmVWYWxpZEFyZ3MzCiAgID0gX1JlcXVpcmU8aXNfYmFzZV9vZjxfQ2xhc3MsIF9UcD4sCiAgICAg
ICBfQWxsQ29udmVydGlibGU8X1BhY2s8X0FyZ3MuLi4+LCBfUGFjazxfQXJnVHlwZXMuLi4+Pj47
CgogICAgcHVibGljOgogICAgICB0eXBlZGVmIF9SZXMgcmVzdWx0X3R5cGU7CgogICAgICBleHBs
aWNpdCBfTWVtX2ZuKF9GdW5jdG9yIF9fcG1mKSA6IF9fcG1mKF9fcG1mKSB7IH0KCgogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfQXJncywgdHlwZW5hbWUgX1JlcSA9IF9SZXF1aXJlVmFsaWRB
cmdzPF9BcmdzLi4uPj4KIF9SZXMKIG9wZXJhdG9yKCkoY29uc3QgX0NsYXNzJiBfX29iamVjdCwg
X0FyZ3MmJi4uLiBfX2FyZ3MpIGNvbnN0CiB7IHJldHVybiAoX19vYmplY3QuKl9fcG1mKShzdGQ6
OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBfQXJncywgdHlwZW5hbWUgX1JlcSA9IF9SZXF1aXJlVmFsaWRBcmdzPF9BcmdzLi4uPj4KIF9S
ZXMKIG9wZXJhdG9yKCkoY29uc3QgX0NsYXNzJiYgX19vYmplY3QsIF9BcmdzJiYuLi4gX19hcmdz
KSBjb25zdAogewogICByZXR1cm4gKHN0ZDo6bW92ZShfX29iamVjdCkuKl9fcG1mKShzdGQ6OmZv
cndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOwogfQoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IF9BcmdzLCB0eXBlbmFtZSBfUmVxID0gX1JlcXVpcmVWYWxpZEFyZ3M8X0FyZ3MuLi4+PgogX1Jl
cwogb3BlcmF0b3IoKShjb25zdCBfQ2xhc3MqIF9fb2JqZWN0LCBfQXJncyYmLi4uIF9fYXJncykg
Y29uc3QKIHsgcmV0dXJuIChfX29iamVjdC0+Kl9fcG1mKShzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9f
YXJncykuLi4pOyB9CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZS4uLiBf
QXJncywKICAgICAgICB0eXBlbmFtZSBfUmVxID0gX1JlcXVpcmVWYWxpZEFyZ3MyPF9UcCwgX0Fy
Z3MuLi4+PgogX1JlcyBvcGVyYXRvcigpKF9UcCYmIF9fb2JqZWN0LCBfQXJncyYmLi4uIF9fYXJn
cykgY29uc3QKIHsKICAgcmV0dXJuIF9NX2NhbGwoc3RkOjpmb3J3YXJkPF9UcD4oX19vYmplY3Qp
LCAmX19vYmplY3QsCiAgICAgICBzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOwogfQoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZS4uLiBfQXJncywKICAgICAgICB0
eXBlbmFtZSBfUmVxID0gX1JlcXVpcmVWYWxpZEFyZ3MzPF9UcCwgX0FyZ3MuLi4+PgogX1Jlcwog
b3BlcmF0b3IoKShyZWZlcmVuY2Vfd3JhcHBlcjxfVHA+IF9fcmVmLCBfQXJncyYmLi4uIF9fYXJn
cykgY29uc3QKIHsgcmV0dXJuIG9wZXJhdG9yKCkoX19yZWYuZ2V0KCksIHN0ZDo6Zm9yd2FyZDxf
QXJncz4oX19hcmdzKS4uLik7IH0KCiAgICBwcml2YXRlOgogICAgICBfRnVuY3RvciBfX3BtZjsK
ICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZSBfQ2xhc3MsIHR5cGVu
YW1lLi4uIF9BcmdUeXBlcz4KICAgIGNsYXNzIF9NZW1fZm48X1JlcyAoX0NsYXNzOjoqKShfQXJn
VHlwZXMuLi4pIHZvbGF0aWxlPgogICAgOiBwdWJsaWMgX01heWJlX3VuYXJ5X29yX2JpbmFyeV9m
dW5jdGlvbjxfUmVzLCB2b2xhdGlsZSBfQ2xhc3MqLAogICAgICAgICAgX0FyZ1R5cGVzLi4uPgog
ICAgewogICAgICB0eXBlZGVmIF9SZXMgKF9DbGFzczo6Kl9GdW5jdG9yKShfQXJnVHlwZXMuLi4p
IHZvbGF0aWxlOwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZS4uLiBfQXJn
cz4KIF9SZXMKIF9NX2NhbGwoX1RwJiYgX19vYmplY3QsIGNvbnN0IHZvbGF0aWxlIF9DbGFzcyAq
LAogIF9BcmdzJiYuLi4gX19hcmdzKSBjb25zdAogewogICByZXR1cm4gKHN0ZDo6Zm9yd2FyZDxf
VHA+KF9fb2JqZWN0KS4qX19wbWYpCiAgICAgKHN0ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4u
Lik7CiB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lLi4uIF9BcmdzPgog
X1JlcwogX01fY2FsbChfVHAmJiBfX3B0ciwgY29uc3Qgdm9sYXRpbGUgdm9pZCAqLCBfQXJncyYm
Li4uIF9fYXJncykgY29uc3QKIHsgcmV0dXJuICgoKl9fcHRyKS4qX19wbWYpKHN0ZDo6Zm9yd2Fy
ZDxfQXJncz4oX19hcmdzKS4uLik7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9Bcmdz
PgogdXNpbmcgX1JlcXVpcmVWYWxpZEFyZ3MKICAgPSBfUmVxdWlyZTxfQWxsQ29udmVydGlibGU8
X1BhY2s8X0FyZ3MuLi4+LCBfUGFjazxfQXJnVHlwZXMuLi4+Pj47CgogICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHAsIHR5cGVuYW1lLi4uIF9BcmdzPgogdXNpbmcgX1JlcXVpcmVWYWxpZEFyZ3My
CiAgID0gX1JlcXVpcmU8X05vdFNhbWU8X0NsYXNzLCBfVHA+LCBfTm90U2FtZTx2b2xhdGlsZSBf
Q2xhc3MqLCBfVHA+LAogICAgICAgX0FsbENvbnZlcnRpYmxlPF9QYWNrPF9BcmdzLi4uPiwgX1Bh
Y2s8X0FyZ1R5cGVzLi4uPj4+OwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFt
ZS4uLiBfQXJncz4KIHVzaW5nIF9SZXF1aXJlVmFsaWRBcmdzMwogICA9IF9SZXF1aXJlPGlzX2Jh
c2Vfb2Y8X0NsYXNzLCBfVHA+LAogICAgICAgX0FsbENvbnZlcnRpYmxlPF9QYWNrPF9BcmdzLi4u
PiwgX1BhY2s8X0FyZ1R5cGVzLi4uPj4+OwoKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBfUmVz
IHJlc3VsdF90eXBlOwoKICAgICAgZXhwbGljaXQgX01lbV9mbihfRnVuY3RvciBfX3BtZikgOiBf
X3BtZihfX3BtZikgeyB9CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3MsIHR5cGVu
YW1lIF9SZXEgPSBfUmVxdWlyZVZhbGlkQXJnczxfQXJncy4uLj4+CiBfUmVzCiBvcGVyYXRvcigp
KHZvbGF0aWxlIF9DbGFzcyYgX19vYmplY3QsIF9BcmdzJiYuLi4gX19hcmdzKSBjb25zdAogeyBy
ZXR1cm4gKF9fb2JqZWN0LipfX3BtZikoc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsg
fQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3MsIHR5cGVuYW1lIF9SZXEgPSBfUmVx
dWlyZVZhbGlkQXJnczxfQXJncy4uLj4+CiBfUmVzCiBvcGVyYXRvcigpKHZvbGF0aWxlIF9DbGFz
cyYmIF9fb2JqZWN0LCBfQXJncyYmLi4uIF9fYXJncykgY29uc3QKIHsKICAgcmV0dXJuIChzdGQ6
Om1vdmUoX19vYmplY3QpLipfX3BtZikoc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsK
IH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfQXJncywgdHlwZW5hbWUgX1JlcSA9IF9S
ZXF1aXJlVmFsaWRBcmdzPF9BcmdzLi4uPj4KIF9SZXMKIG9wZXJhdG9yKCkodm9sYXRpbGUgX0Ns
YXNzKiBfX29iamVjdCwgX0FyZ3MmJi4uLiBfX2FyZ3MpIGNvbnN0CiB7IHJldHVybiAoX19vYmpl
Y3QtPipfX3BtZikoc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsgfQoKCiAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUuLi4gX0FyZ3MsCiAgICAgICAgdHlwZW5hbWUg
X1JlcSA9IF9SZXF1aXJlVmFsaWRBcmdzMjxfVHAsIF9BcmdzLi4uPj4KIF9SZXMKIG9wZXJhdG9y
KCkoX1RwJiYgX19vYmplY3QsIF9BcmdzJiYuLi4gX19hcmdzKSBjb25zdAogewogICByZXR1cm4g
X01fY2FsbChzdGQ6OmZvcndhcmQ8X1RwPihfX29iamVjdCksICZfX29iamVjdCwKICAgICAgIHN0
ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLik7CiB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHAsIHR5cGVuYW1lLi4uIF9BcmdzLAogICAgICAgIHR5cGVuYW1lIF9SZXEgPSBfUmVxdWly
ZVZhbGlkQXJnczM8X1RwLCBfQXJncy4uLj4+CiBfUmVzCiBvcGVyYXRvcigpKHJlZmVyZW5jZV93
cmFwcGVyPF9UcD4gX19yZWYsIF9BcmdzJiYuLi4gX19hcmdzKSBjb25zdAogeyByZXR1cm4gb3Bl
cmF0b3IoKShfX3JlZi5nZXQoKSwgc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsgfQoK
ICAgIHByaXZhdGU6CiAgICAgIF9GdW5jdG9yIF9fcG1mOwogICAgfTsKCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9SZXMsIHR5cGVuYW1lIF9DbGFzcywgdHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAg
Y2xhc3MgX01lbV9mbjxfUmVzIChfQ2xhc3M6OiopKF9BcmdUeXBlcy4uLikgY29uc3Qgdm9sYXRp
bGU+CiAgICA6IHB1YmxpYyBfTWF5YmVfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uPF9SZXMsIGNv
bnN0IHZvbGF0aWxlIF9DbGFzcyosCiAgICAgICAgICBfQXJnVHlwZXMuLi4+CiAgICB7CiAgICAg
IHR5cGVkZWYgX1JlcyAoX0NsYXNzOjoqX0Z1bmN0b3IpKF9BcmdUeXBlcy4uLikgY29uc3Qgdm9s
YXRpbGU7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lLi4uIF9BcmdzPgog
X1JlcwogX01fY2FsbChfVHAmJiBfX29iamVjdCwgY29uc3Qgdm9sYXRpbGUgX0NsYXNzICosCiAg
X0FyZ3MmJi4uLiBfX2FyZ3MpIGNvbnN0CiB7CiAgIHJldHVybiAoc3RkOjpmb3J3YXJkPF9UcD4o
X19vYmplY3QpLipfX3BtZikKICAgICAoc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsK
IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUuLi4gX0FyZ3M+CiBfUmVz
CiBfTV9jYWxsKF9UcCYmIF9fcHRyLCBjb25zdCB2b2xhdGlsZSB2b2lkICosIF9BcmdzJiYuLi4g
X19hcmdzKSBjb25zdAogeyByZXR1cm4gKCgqX19wdHIpLipfX3BtZikoc3RkOjpmb3J3YXJkPF9B
cmdzPihfX2FyZ3MpLi4uKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3M+CiB1
c2luZyBfUmVxdWlyZVZhbGlkQXJncwogICA9IF9SZXF1aXJlPF9BbGxDb252ZXJ0aWJsZTxfUGFj
azxfQXJncy4uLj4sIF9QYWNrPF9BcmdUeXBlcy4uLj4+PjsKCiAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcCwgdHlwZW5hbWUuLi4gX0FyZ3M+CiB1c2luZyBfUmVxdWlyZVZhbGlkQXJnczIKICAg
PSBfUmVxdWlyZTxfTm90U2FtZTxfQ2xhc3MsIF9UcD4sCiAgICAgICBfTm90U2FtZTxjb25zdCB2
b2xhdGlsZSBfQ2xhc3MqLCBfVHA+LAogICAgICAgX0FsbENvbnZlcnRpYmxlPF9QYWNrPF9Bcmdz
Li4uPiwgX1BhY2s8X0FyZ1R5cGVzLi4uPj4+OwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
LCB0eXBlbmFtZS4uLiBfQXJncz4KIHVzaW5nIF9SZXF1aXJlVmFsaWRBcmdzMwogICA9IF9SZXF1
aXJlPGlzX2Jhc2Vfb2Y8X0NsYXNzLCBfVHA+LAogICAgICAgX0FsbENvbnZlcnRpYmxlPF9QYWNr
PF9BcmdzLi4uPiwgX1BhY2s8X0FyZ1R5cGVzLi4uPj4+OwoKICAgIHB1YmxpYzoKICAgICAgdHlw
ZWRlZiBfUmVzIHJlc3VsdF90eXBlOwoKICAgICAgZXhwbGljaXQgX01lbV9mbihfRnVuY3RvciBf
X3BtZikgOiBfX3BtZihfX3BtZikgeyB9CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0Fy
Z3MsIHR5cGVuYW1lIF9SZXEgPSBfUmVxdWlyZVZhbGlkQXJnczxfQXJncy4uLj4+CiBfUmVzCiBv
cGVyYXRvcigpKGNvbnN0IHZvbGF0aWxlIF9DbGFzcyYgX19vYmplY3QsIF9BcmdzJiYuLi4gX19h
cmdzKSBjb25zdAogeyByZXR1cm4gKF9fb2JqZWN0LipfX3BtZikoc3RkOjpmb3J3YXJkPF9Bcmdz
PihfX2FyZ3MpLi4uKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3MsIHR5cGVu
YW1lIF9SZXEgPSBfUmVxdWlyZVZhbGlkQXJnczxfQXJncy4uLj4+CiBfUmVzCiBvcGVyYXRvcigp
KGNvbnN0IHZvbGF0aWxlIF9DbGFzcyYmIF9fb2JqZWN0LCBfQXJncyYmLi4uIF9fYXJncykgY29u
c3QKIHsKICAgcmV0dXJuIChzdGQ6Om1vdmUoX19vYmplY3QpLipfX3BtZikoc3RkOjpmb3J3YXJk
PF9BcmdzPihfX2FyZ3MpLi4uKTsKIH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfQXJn
cywgdHlwZW5hbWUgX1JlcSA9IF9SZXF1aXJlVmFsaWRBcmdzPF9BcmdzLi4uPj4KIF9SZXMKIG9w
ZXJhdG9yKCkoY29uc3Qgdm9sYXRpbGUgX0NsYXNzKiBfX29iamVjdCwgX0FyZ3MmJi4uLiBfX2Fy
Z3MpIGNvbnN0CiB7IHJldHVybiAoX19vYmplY3QtPipfX3BtZikoc3RkOjpmb3J3YXJkPF9Bcmdz
PihfX2FyZ3MpLi4uKTsgfQoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUu
Li4gX0FyZ3MsCiAgICAgICAgdHlwZW5hbWUgX1JlcSA9IF9SZXF1aXJlVmFsaWRBcmdzMjxfVHAs
IF9BcmdzLi4uPj4KIF9SZXMgb3BlcmF0b3IoKShfVHAmJiBfX29iamVjdCwgX0FyZ3MmJi4uLiBf
X2FyZ3MpIGNvbnN0CiB7CiAgIHJldHVybiBfTV9jYWxsKHN0ZDo6Zm9yd2FyZDxfVHA+KF9fb2Jq
ZWN0KSwgJl9fb2JqZWN0LAogICAgICAgc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsK
IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUuLi4gX0FyZ3MsCiAgICAg
ICAgdHlwZW5hbWUgX1JlcSA9IF9SZXF1aXJlVmFsaWRBcmdzMzxfVHAsIF9BcmdzLi4uPj4KIF9S
ZXMKIG9wZXJhdG9yKCkocmVmZXJlbmNlX3dyYXBwZXI8X1RwPiBfX3JlZiwgX0FyZ3MmJi4uLiBf
X2FyZ3MpIGNvbnN0CiB7IHJldHVybiBvcGVyYXRvcigpKF9fcmVmLmdldCgpLCBzdGQ6OmZvcndh
cmQ8X0FyZ3M+KF9fYXJncykuLi4pOyB9CgogICAgcHJpdmF0ZToKICAgICAgX0Z1bmN0b3IgX19w
bWY7CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBib29sPgogICAgc3RydWN0IF9N
ZW1fZm5fY29uc3Rfb3Jfbm9uCiAgICB7CiAgICAgIHR5cGVkZWYgY29uc3QgX1RwJiB0eXBlOwog
ICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9NZW1fZm5fY29uc3Rf
b3Jfbm9uPF9UcCwgZmFsc2U+CiAgICB7CiAgICAgIHR5cGVkZWYgX1RwJiB0eXBlOwogICAgfTsK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUgX0NsYXNzPgogICAgY2xhc3MgX01l
bV9mbjxfUmVzIF9DbGFzczo6Kj4KICAgIHsKICAgICAgdXNpbmcgX19wbV90eXBlID0gX1JlcyBf
Q2xhc3M6Oio7CgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiBhdXRvCiBfTV9jYWxs
KF9UcCYmIF9fb2JqZWN0LCBjb25zdCBfQ2xhc3MgKikgY29uc3Qgbm9leGNlcHQKIC0+IGRlY2x0
eXBlKHN0ZDo6Zm9yd2FyZDxfVHA+KF9fb2JqZWN0KS4qc3RkOjpkZWNsdmFsPF9fcG1fdHlwZSY+
KCkpCiB7IHJldHVybiBzdGQ6OmZvcndhcmQ8X1RwPihfX29iamVjdCkuKl9fcG07IH0KCiAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1VwPgogYXV0bwogX01fY2FsbChfVHAm
JiBfX29iamVjdCwgX1VwICogY29uc3QgKikgY29uc3Qgbm9leGNlcHQKIC0+IGRlY2x0eXBlKCgq
c3RkOjpmb3J3YXJkPF9UcD4oX19vYmplY3QpKS4qc3RkOjpkZWNsdmFsPF9fcG1fdHlwZSY+KCkp
CiB7IHJldHVybiAoKnN0ZDo6Zm9yd2FyZDxfVHA+KF9fb2JqZWN0KSkuKl9fcG07IH0KCiAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KIGF1dG8KIF9NX2NhbGwoX1RwJiYgX19wdHIsIGNvbnN0
IHZvbGF0aWxlIHZvaWQqKSBjb25zdAogbm9leGNlcHQobm9leGNlcHQoKCpfX3B0cikuKnN0ZDo6
ZGVjbHZhbDxfX3BtX3R5cGUmPigpKSkKIC0+IGRlY2x0eXBlKCgqX19wdHIpLipzdGQ6OmRlY2x2
YWw8X19wbV90eXBlJj4oKSkKIHsgcmV0dXJuICgqX19wdHIpLipfX3BtOyB9CgogICAgcHVibGlj
OgogICAgICBleHBsaWNpdAogICAgICBfTWVtX2ZuKF9SZXMgX0NsYXNzOjoqX19wbSkgbm9leGNl
cHQgOiBfX3BtKF9fcG0pIHsgfQoKCiAgICAgIF9SZXMmCiAgICAgIG9wZXJhdG9yKCkoX0NsYXNz
JiBfX29iamVjdCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX19vYmplY3QuKl9fcG07
IH0KCiAgICAgIGNvbnN0IF9SZXMmCiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX0NsYXNzJiBfX29i
amVjdCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gX19vYmplY3QuKl9fcG07IH0KCiAg
ICAgIF9SZXMmJgogICAgICBvcGVyYXRvcigpKF9DbGFzcyYmIF9fb2JqZWN0KSBjb25zdCBub2V4
Y2VwdAogICAgICB7IHJldHVybiBzdGQ6OmZvcndhcmQ8X0NsYXNzPihfX29iamVjdCkuKl9fcG07
IH0KCiAgICAgIGNvbnN0IF9SZXMmJgogICAgICBvcGVyYXRvcigpKGNvbnN0IF9DbGFzcyYmIF9f
b2JqZWN0KSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBzdGQ6OmZvcndhcmQ8Y29uc3Qg
X0NsYXNzPihfX29iamVjdCkuKl9fcG07IH0KCgogICAgICBfUmVzJgogICAgICBvcGVyYXRvcigp
KF9DbGFzcyogX19vYmplY3QpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9fb2JqZWN0
LT4qX19wbTsgfQoKICAgICAgY29uc3QgX1JlcyYKICAgICAgb3BlcmF0b3IoKShjb25zdCBfQ2xh
c3MqIF9fb2JqZWN0KSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBfX29iamVjdC0+Kl9f
cG07IH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9SZXEgPSBfUmVx
dWlyZTxfTm90U2FtZTxfQ2xhc3MqLCBfVHA+Pj4KIGF1dG8KIG9wZXJhdG9yKCkoX1RwJiYgX191
bmtub3duKSBjb25zdAogbm9leGNlcHQobm9leGNlcHQoc3RkOjpkZWNsdmFsPF9NZW1fZm4qPigp
LT5fTV9jYWxsCiAgICAgKHN0ZDo6Zm9yd2FyZDxfVHA+KF9fdW5rbm93biksICZfX3Vua25vd24p
KSkKIC0+IGRlY2x0eXBlKHRoaXMtPl9NX2NhbGwoc3RkOjpmb3J3YXJkPF9UcD4oX191bmtub3du
KSwgJl9fdW5rbm93bikpCiB7IHJldHVybiBfTV9jYWxsKHN0ZDo6Zm9yd2FyZDxfVHA+KF9fdW5r
bm93biksICZfX3Vua25vd24pOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVu
YW1lIF9SZXEgPSBfUmVxdWlyZTxpc19iYXNlX29mPF9DbGFzcywgX1RwPj4+CiBhdXRvCiBvcGVy
YXRvcigpKHJlZmVyZW5jZV93cmFwcGVyPF9UcD4gX19yZWYpIGNvbnN0CiBub2V4Y2VwdChub2V4
Y2VwdChzdGQ6OmRlY2x2YWw8X01lbV9mbiY+KCkoX19yZWYuZ2V0KCkpKSkKIC0+IGRlY2x0eXBl
KCgqdGhpcykoX19yZWYuZ2V0KCkpKQogeyByZXR1cm4gKCp0aGlzKShfX3JlZi5nZXQoKSk7IH0K
CiAgICBwcml2YXRlOgogICAgICBfUmVzIF9DbGFzczo6Kl9fcG07CiAgICB9OwojIDk1OSAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44
LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2Z1bmN0aW9uYWwi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9DbGFzcz4KICAgIGlubGluZSBf
TWVtX2ZuPF9UcCBfQ2xhc3M6Oio+CiAgICBtZW1fZm4oX1RwIF9DbGFzczo6KiBfX3BtKSBub2V4
Y2VwdAogICAgewogICAgICByZXR1cm4gX01lbV9mbjxfVHAgX0NsYXNzOjoqPihfX3BtKTsKICAg
IH0KCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGlzX2JpbmRfZXhw
cmVzc2lvbgogICAgOiBwdWJsaWMgZmFsc2VfdHlwZSB7IH07CgoKCgoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwPgogICAgc3RydWN0IGlzX3BsYWNlaG9sZGVyCiAgICA6IHB1YmxpYyBpbnRlZ3Jh
bF9jb25zdGFudDxpbnQsIDA+CiAgICB7IH07CgoKCgogIHRlbXBsYXRlPGludCBfTnVtPiBzdHJ1
Y3QgX1BsYWNlaG9sZGVyIHsgfTsKCiAKCgoKCgogIG5hbWVzcGFjZSBwbGFjZWhvbGRlcnMKICB7
CiAKCgoKCiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDE+IF8xOwogICAgZXh0ZXJuIGNv
bnN0IF9QbGFjZWhvbGRlcjwyPiBfMjsKICAgIGV4dGVybiBjb25zdCBfUGxhY2Vob2xkZXI8Mz4g
XzM7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDQ+IF80OwogICAgZXh0ZXJuIGNvbnN0
IF9QbGFjZWhvbGRlcjw1PiBfNTsKICAgIGV4dGVybiBjb25zdCBfUGxhY2Vob2xkZXI8Nj4gXzY7
CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDc+IF83OwogICAgZXh0ZXJuIGNvbnN0IF9Q
bGFjZWhvbGRlcjw4PiBfODsKICAgIGV4dGVybiBjb25zdCBfUGxhY2Vob2xkZXI8OT4gXzk7CiAg
ICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDEwPiBfMTA7CiAgICBleHRlcm4gY29uc3QgX1Bs
YWNlaG9sZGVyPDExPiBfMTE7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDEyPiBfMTI7
CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDEzPiBfMTM7CiAgICBleHRlcm4gY29uc3Qg
X1BsYWNlaG9sZGVyPDE0PiBfMTQ7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDE1PiBf
MTU7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDE2PiBfMTY7CiAgICBleHRlcm4gY29u
c3QgX1BsYWNlaG9sZGVyPDE3PiBfMTc7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDE4
PiBfMTg7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDE5PiBfMTk7CiAgICBleHRlcm4g
Y29uc3QgX1BsYWNlaG9sZGVyPDIwPiBfMjA7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVy
PDIxPiBfMjE7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDIyPiBfMjI7CiAgICBleHRl
cm4gY29uc3QgX1BsYWNlaG9sZGVyPDIzPiBfMjM7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9s
ZGVyPDI0PiBfMjQ7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDI1PiBfMjU7CiAgICBl
eHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDI2PiBfMjY7CiAgICBleHRlcm4gY29uc3QgX1BsYWNl
aG9sZGVyPDI3PiBfMjc7CiAgICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDI4PiBfMjg7CiAg
ICBleHRlcm4gY29uc3QgX1BsYWNlaG9sZGVyPDI5PiBfMjk7CiAKICB9CgogCgoKCgoKCiAgdGVt
cGxhdGU8aW50IF9OdW0+CiAgICBzdHJ1Y3QgaXNfcGxhY2Vob2xkZXI8X1BsYWNlaG9sZGVyPF9O
dW0+ID4KICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGludCwgX051bT4KICAgIHsgfTsK
CiAgdGVtcGxhdGU8aW50IF9OdW0+CiAgICBzdHJ1Y3QgaXNfcGxhY2Vob2xkZXI8Y29uc3QgX1Bs
YWNlaG9sZGVyPF9OdW0+ID4KICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGludCwgX051
bT4KICAgIHsgfTsKCgoKCgogIHN0cnVjdCBfTm9fdHVwbGVfZWxlbWVudDsKCgoKCgoKICB0ZW1w
bGF0ZTxzdGQ6OnNpemVfdCBfX2ksIHR5cGVuYW1lIF9UdXBsZSwgYm9vbCBfSXNTYWZlPgogICAg
c3RydWN0IF9TYWZlX3R1cGxlX2VsZW1lbnRfaW1wbAogICAgOiB0dXBsZV9lbGVtZW50PF9faSwg
X1R1cGxlPiB7IH07CgoKCgoKCiAgdGVtcGxhdGU8c3RkOjpzaXplX3QgX19pLCB0eXBlbmFtZSBf
VHVwbGU+CiAgICBzdHJ1Y3QgX1NhZmVfdHVwbGVfZWxlbWVudF9pbXBsPF9faSwgX1R1cGxlLCBm
YWxzZT4KICAgIHsKICAgICAgdHlwZWRlZiBfTm9fdHVwbGVfZWxlbWVudCB0eXBlOwogICAgfTsK
CgoKCgogdGVtcGxhdGU8c3RkOjpzaXplX3QgX19pLCB0eXBlbmFtZSBfVHVwbGU+CiAgIHN0cnVj
dCBfU2FmZV90dXBsZV9lbGVtZW50CiAgIDogX1NhZmVfdHVwbGVfZWxlbWVudF9pbXBsPF9faSwg
X1R1cGxlLAogICAgICAgICAoX19pIDwgdHVwbGVfc2l6ZTxfVHVwbGU+Ojp2YWx1ZSk+CiAgIHsg
fTsKIyAxMTAwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44
LjEvZnVuY3Rpb25hbCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9BcmcsCiAgICBib29sIF9Jc0Jp
bmRFeHAgPSBpc19iaW5kX2V4cHJlc3Npb248X0FyZz46OnZhbHVlLAogICAgYm9vbCBfSXNQbGFj
ZWhvbGRlciA9IChpc19wbGFjZWhvbGRlcjxfQXJnPjo6dmFsdWUgPiAwKT4KICAgIGNsYXNzIF9N
dTsKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGNsYXNzIF9NdTxyZWZlcmVuY2Vf
d3JhcHBlcjxfVHA+LCBmYWxzZSwgZmFsc2U+CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVk
ZWYgX1RwJiByZXN1bHRfdHlwZTsKCgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ1ZSZWYs
IHR5cGVuYW1lIF9UdXBsZT4KIHJlc3VsdF90eXBlCiBvcGVyYXRvcigpKF9DVlJlZiYgX19hcmcs
IF9UdXBsZSYpIGNvbnN0IHZvbGF0aWxlCiB7IHJldHVybiBfX2FyZy5nZXQoKTsgfQogICAgfTsK
CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQXJnPgogICAgY2xhc3MgX011PF9BcmcsIHRydWUs
IGZhbHNlPgogICAgewogICAgcHVibGljOgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ1ZBcmcs
IHR5cGVuYW1lLi4uIF9BcmdzPgogYXV0bwogb3BlcmF0b3IoKShfQ1ZBcmcmIF9fYXJnLAogICAg
IHR1cGxlPF9BcmdzLi4uPiYgX190dXBsZSkgY29uc3Qgdm9sYXRpbGUKIC0+IGRlY2x0eXBlKF9f
YXJnKGRlY2x2YWw8X0FyZ3M+KCkuLi4pKQogewoKICAgdHlwZWRlZiB0eXBlbmFtZSBfQnVpbGRf
aW5kZXhfdHVwbGU8c2l6ZW9mLi4uKF9BcmdzKT46Ol9fdHlwZQogICAgIF9JbmRleGVzOwogICBy
ZXR1cm4gdGhpcy0+X19jYWxsKF9fYXJnLCBfX3R1cGxlLCBfSW5kZXhlcygpKTsKIH0KCiAgICBw
cml2YXRlOgoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DVkFyZywgdHlwZW5hbWUuLi4gX0Fy
Z3MsIHN0ZDo6c2l6ZV90Li4uIF9JbmRleGVzPgogYXV0bwogX19jYWxsKF9DVkFyZyYgX19hcmcs
IHR1cGxlPF9BcmdzLi4uPiYgX190dXBsZSwKICAgICAgICBjb25zdCBfSW5kZXhfdHVwbGU8X0lu
ZGV4ZXMuLi4+JikgY29uc3Qgdm9sYXRpbGUKIC0+IGRlY2x0eXBlKF9fYXJnKGRlY2x2YWw8X0Fy
Z3M+KCkuLi4pKQogewogICByZXR1cm4gX19hcmcoc3RkOjpmb3J3YXJkPF9BcmdzPihnZXQ8X0lu
ZGV4ZXM+KF9fdHVwbGUpKS4uLik7CiB9CiAgICB9OwoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9Bcmc+CiAgICBjbGFzcyBfTXU8X0FyZywgZmFsc2UsIHRydWU+CiAgICB7CiAgICBwdWJsaWM6
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9TaWduYXR1cmU+IGNsYXNzIHJlc3VsdDsKCiAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIF9DVk11LCB0eXBlbmFtZSBfQ1ZBcmcsIHR5cGVuYW1lIF9UdXBs
ZT4KIGNsYXNzIHJlc3VsdDxfQ1ZNdShfQ1ZBcmcsIF9UdXBsZSk+CiB7CgoKCiAgIHR5cGVkZWYg
dHlwZW5hbWUgX1NhZmVfdHVwbGVfZWxlbWVudDwoaXNfcGxhY2Vob2xkZXI8X0FyZz46OnZhbHVl
CiAgICAgIC0gMSksIF9UdXBsZT46OnR5cGUKICAgICBfX2Jhc2VfdHlwZTsKCiBwdWJsaWM6CiAg
IHR5cGVkZWYgdHlwZW5hbWUgYWRkX3J2YWx1ZV9yZWZlcmVuY2U8X19iYXNlX3R5cGU+Ojp0eXBl
IHR5cGU7CiB9OwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1R1cGxlPgogdHlwZW5hbWUgcmVz
dWx0PF9NdShfQXJnLCBfVHVwbGUpPjo6dHlwZQogb3BlcmF0b3IoKShjb25zdCB2b2xhdGlsZSBf
QXJnJiwgX1R1cGxlJiBfX3R1cGxlKSBjb25zdCB2b2xhdGlsZQogewogICByZXR1cm4gc3RkOjpm
b3J3YXJkPHR5cGVuYW1lIHJlc3VsdDxfTXUoX0FyZywgX1R1cGxlKT46OnR5cGU+KAogICAgICAg
OjpzdGQ6OmdldDwoaXNfcGxhY2Vob2xkZXI8X0FyZz46OnZhbHVlIC0gMSk+KF9fdHVwbGUpKTsK
IH0KICAgIH07CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FyZz4KICAgIGNsYXNzIF9NdTxf
QXJnLCBmYWxzZSwgZmFsc2U+CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9TaWduYXR1cmU+IHN0cnVjdCByZXN1bHQ7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q1ZNdSwgdHlwZW5hbWUgX0NWQXJnLCB0eXBlbmFtZSBfVHVwbGU+CiBzdHJ1Y3QgcmVzdWx0PF9D
Vk11KF9DVkFyZywgX1R1cGxlKT4KIHsKICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfbHZhbHVlX3Jl
ZmVyZW5jZTxfQ1ZBcmc+Ojp0eXBlIHR5cGU7CiB9OwoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IF9DVkFyZywgdHlwZW5hbWUgX1R1cGxlPgogX0NWQXJnJiYKIG9wZXJhdG9yKCkoX0NWQXJnJiYg
X19hcmcsIF9UdXBsZSYpIGNvbnN0IHZvbGF0aWxlCiB7IHJldHVybiBzdGQ6OmZvcndhcmQ8X0NW
QXJnPihfX2FyZyk7IH0KICAgIH07CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAg
c3RydWN0IF9NYXliZV93cmFwX21lbWJlcl9wb2ludGVyCiAgICB7CiAgICAgIHR5cGVkZWYgX1Rw
IHR5cGU7CgogICAgICBzdGF0aWMgY29uc3QgX1RwJgogICAgICBfX2RvX3dyYXAoY29uc3QgX1Rw
JiBfX3gpCiAgICAgIHsgcmV0dXJuIF9feDsgfQoKICAgICAgc3RhdGljIF9UcCYmCiAgICAgIF9f
ZG9fd3JhcChfVHAmJiBfX3gpCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PF9UcCYmPihfX3gp
OyB9CiAgICB9OwoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NsYXNz
PgogICAgc3RydWN0IF9NYXliZV93cmFwX21lbWJlcl9wb2ludGVyPF9UcCBfQ2xhc3M6Oio+CiAg
ICB7CiAgICAgIHR5cGVkZWYgX01lbV9mbjxfVHAgX0NsYXNzOjoqPiB0eXBlOwoKICAgICAgc3Rh
dGljIHR5cGUKICAgICAgX19kb193cmFwKF9UcCBfQ2xhc3M6OiogX19wbSkKICAgICAgeyByZXR1
cm4gdHlwZShfX3BtKTsgfQogICAgfTsKCgoKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfTWF5
YmVfd3JhcF9tZW1iZXJfcG9pbnRlcjx2b2lkPgogICAgewogICAgICB0eXBlZGVmIHZvaWQgdHlw
ZTsKICAgIH07CgoKICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBfSW5kLCB0eXBlbmFtZS4uLiBfVHA+
CiAgICBpbmxpbmUgYXV0bwogICAgX192b2xnZXQodm9sYXRpbGUgdHVwbGU8X1RwLi4uPiYgX190
dXBsZSkKICAgIC0+IHR5cGVuYW1lIHR1cGxlX2VsZW1lbnQ8X0luZCwgdHVwbGU8X1RwLi4uPj46
OnR5cGUgdm9sYXRpbGUmCiAgICB7IHJldHVybiBzdGQ6OmdldDxfSW5kPihjb25zdF9jYXN0PHR1
cGxlPF9UcC4uLj4mPihfX3R1cGxlKSk7IH0KCgogIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IF9JbmQs
IHR5cGVuYW1lLi4uIF9UcD4KICAgIGlubGluZSBhdXRvCiAgICBfX3ZvbGdldChjb25zdCB2b2xh
dGlsZSB0dXBsZTxfVHAuLi4+JiBfX3R1cGxlKQogICAgLT4gdHlwZW5hbWUgdHVwbGVfZWxlbWVu
dDxfSW5kLCB0dXBsZTxfVHAuLi4+Pjo6dHlwZSBjb25zdCB2b2xhdGlsZSYKICAgIHsgcmV0dXJu
IHN0ZDo6Z2V0PF9JbmQ+KGNvbnN0X2Nhc3Q8Y29uc3QgdHVwbGU8X1RwLi4uPiY+KF9fdHVwbGUp
KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1NpZ25hdHVyZT4KICAgIHN0cnVjdCBfQmluZDsK
CiAgIHRlbXBsYXRlPHR5cGVuYW1lIF9GdW5jdG9yLCB0eXBlbmFtZS4uLiBfQm91bmRfYXJncz4K
ICAgIGNsYXNzIF9CaW5kPF9GdW5jdG9yKF9Cb3VuZF9hcmdzLi4uKT4KICAgIDogcHVibGljIF9X
ZWFrX3Jlc3VsdF90eXBlPF9GdW5jdG9yPgogICAgewogICAgICB0eXBlZGVmIF9CaW5kIF9fc2Vs
Zl90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9CdWlsZF9pbmRleF90dXBsZTxzaXplb2Yu
Li4oX0JvdW5kX2FyZ3MpPjo6X190eXBlCiBfQm91bmRfaW5kZXhlczsKCiAgICAgIF9GdW5jdG9y
IF9NX2Y7CiAgICAgIHR1cGxlPF9Cb3VuZF9hcmdzLi4uPiBfTV9ib3VuZF9hcmdzOwoKCiAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIF9SZXN1bHQsIHR5cGVuYW1lLi4uIF9BcmdzLCBzdGQ6OnNpemVf
dC4uLiBfSW5kZXhlcz4KIF9SZXN1bHQKIF9fY2FsbCh0dXBsZTxfQXJncy4uLj4mJiBfX2FyZ3Ms
IF9JbmRleF90dXBsZTxfSW5kZXhlcy4uLj4pCiB7CiAgIHJldHVybiBfTV9mKF9NdTxfQm91bmRf
YXJncz4oKQogICAgICAgIChnZXQ8X0luZGV4ZXM+KF9NX2JvdW5kX2FyZ3MpLCBfX2FyZ3MpLi4u
KTsKIH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzdWx0LCB0eXBlbmFtZS4uLiBfQXJn
cywgc3RkOjpzaXplX3QuLi4gX0luZGV4ZXM+CiBfUmVzdWx0CiBfX2NhbGxfYyh0dXBsZTxfQXJn
cy4uLj4mJiBfX2FyZ3MsIF9JbmRleF90dXBsZTxfSW5kZXhlcy4uLj4pIGNvbnN0CiB7CiAgIHJl
dHVybiBfTV9mKF9NdTxfQm91bmRfYXJncz4oKQogICAgICAgIChnZXQ8X0luZGV4ZXM+KF9NX2Jv
dW5kX2FyZ3MpLCBfX2FyZ3MpLi4uKTsKIH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVz
dWx0LCB0eXBlbmFtZS4uLiBfQXJncywgc3RkOjpzaXplX3QuLi4gX0luZGV4ZXM+CiBfUmVzdWx0
CiBfX2NhbGxfdih0dXBsZTxfQXJncy4uLj4mJiBfX2FyZ3MsCiAgIF9JbmRleF90dXBsZTxfSW5k
ZXhlcy4uLj4pIHZvbGF0aWxlCiB7CiAgIHJldHVybiBfTV9mKF9NdTxfQm91bmRfYXJncz4oKQog
ICAgICAgIChfX3ZvbGdldDxfSW5kZXhlcz4oX01fYm91bmRfYXJncyksIF9fYXJncykuLi4pOwog
fQoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXN1bHQsIHR5cGVuYW1lLi4uIF9BcmdzLCBz
dGQ6OnNpemVfdC4uLiBfSW5kZXhlcz4KIF9SZXN1bHQKIF9fY2FsbF9jX3YodHVwbGU8X0FyZ3Mu
Li4+JiYgX19hcmdzLAogICAgIF9JbmRleF90dXBsZTxfSW5kZXhlcy4uLj4pIGNvbnN0IHZvbGF0
aWxlCiB7CiAgIHJldHVybiBfTV9mKF9NdTxfQm91bmRfYXJncz4oKQogICAgICAgIChfX3ZvbGdl
dDxfSW5kZXhlcz4oX01fYm91bmRfYXJncyksIF9fYXJncykuLi4pOwogfQoKICAgICBwdWJsaWM6
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9BcmdzPgogZXhwbGljaXQgX0JpbmQoY29uc3Qg
X0Z1bmN0b3ImIF9fZiwgX0FyZ3MmJi4uLiBfX2FyZ3MpCiA6IF9NX2YoX19mKSwgX01fYm91bmRf
YXJncyhzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pCiB7IH0KCiAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIF9BcmdzPgogZXhwbGljaXQgX0JpbmQoX0Z1bmN0b3ImJiBfX2YsIF9Bcmdz
JiYuLi4gX19hcmdzKQogOiBfTV9mKHN0ZDo6bW92ZShfX2YpKSwgX01fYm91bmRfYXJncyhzdGQ6
OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pCiB7IH0KCiAgICAgIF9CaW5kKGNvbnN0IF9CaW5k
JikgPSBkZWZhdWx0OwoKICAgICAgX0JpbmQoX0JpbmQmJiBfX2IpCiAgICAgIDogX01fZihzdGQ6
Om1vdmUoX19iLl9NX2YpKSwgX01fYm91bmRfYXJncyhzdGQ6Om1vdmUoX19iLl9NX2JvdW5kX2Fy
Z3MpKQogICAgICB7IH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfQXJncywgdHlwZW5h
bWUgX1Jlc3VsdAogPSBkZWNsdHlwZSggc3RkOjpkZWNsdmFsPF9GdW5jdG9yPigpKAogICAgICAg
X011PF9Cb3VuZF9hcmdzPigpKCBzdGQ6OmRlY2x2YWw8X0JvdW5kX2FyZ3MmPigpLAogICAgICBz
dGQ6OmRlY2x2YWw8dHVwbGU8X0FyZ3MuLi4+Jj4oKSApLi4uICkgKT4KIF9SZXN1bHQKIG9wZXJh
dG9yKCkoX0FyZ3MmJi4uLiBfX2FyZ3MpCiB7CiAgIHJldHVybiB0aGlzLT5fX2NhbGw8X1Jlc3Vs
dD4oCiAgICAgICBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoc3RkOjpmb3J3YXJkPF9BcmdzPihfX2Fy
Z3MpLi4uKSwKICAgICAgIF9Cb3VuZF9pbmRleGVzKCkpOwogfQoKCiAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lLi4uIF9BcmdzLCB0eXBlbmFtZSBfUmVzdWx0CiA9IGRlY2x0eXBlKCBzdGQ6OmRlY2x2
YWw8dHlwZW5hbWUgZW5hYmxlX2lmPChzaXplb2YuLi4oX0FyZ3MpID49IDApLAogICAgICAgICB0
eXBlbmFtZSBhZGRfY29uc3Q8X0Z1bmN0b3I+Ojp0eXBlPjo6dHlwZT4oKSgKICAgICAgIF9NdTxf
Qm91bmRfYXJncz4oKSggc3RkOjpkZWNsdmFsPGNvbnN0IF9Cb3VuZF9hcmdzJj4oKSwKICAgICAg
c3RkOjpkZWNsdmFsPHR1cGxlPF9BcmdzLi4uPiY+KCkgKS4uLiApICk+CiBfUmVzdWx0CiBvcGVy
YXRvcigpKF9BcmdzJiYuLi4gX19hcmdzKSBjb25zdAogewogICByZXR1cm4gdGhpcy0+X19jYWxs
X2M8X1Jlc3VsdD4oCiAgICAgICBzdGQ6OmZvcndhcmRfYXNfdHVwbGUoc3RkOjpmb3J3YXJkPF9B
cmdzPihfX2FyZ3MpLi4uKSwKICAgICAgIF9Cb3VuZF9pbmRleGVzKCkpOwogfQoKCiAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIF9BcmdzLCB0eXBlbmFtZSBfUmVzdWx0CiA9IGRlY2x0eXBlKCBz
dGQ6OmRlY2x2YWw8dHlwZW5hbWUgZW5hYmxlX2lmPChzaXplb2YuLi4oX0FyZ3MpID49IDApLAog
ICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGFkZF92b2xhdGlsZTxfRnVuY3Rvcj46OnR5
cGU+Ojp0eXBlPigpKAogICAgICAgX011PF9Cb3VuZF9hcmdzPigpKCBzdGQ6OmRlY2x2YWw8dm9s
YXRpbGUgX0JvdW5kX2FyZ3MmPigpLAogICAgICBzdGQ6OmRlY2x2YWw8dHVwbGU8X0FyZ3MuLi4+
Jj4oKSApLi4uICkgKT4KIF9SZXN1bHQKIG9wZXJhdG9yKCkoX0FyZ3MmJi4uLiBfX2FyZ3MpIHZv
bGF0aWxlCiB7CiAgIHJldHVybiB0aGlzLT5fX2NhbGxfdjxfUmVzdWx0PigKICAgICAgIHN0ZDo6
Zm9yd2FyZF9hc190dXBsZShzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pLAogICAgICAg
X0JvdW5kX2luZGV4ZXMoKSk7CiB9CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3Ms
IHR5cGVuYW1lIF9SZXN1bHQKID0gZGVjbHR5cGUoIHN0ZDo6ZGVjbHZhbDx0eXBlbmFtZSBlbmFi
bGVfaWY8KHNpemVvZi4uLihfQXJncykgPj0gMCksCiAgICAgICAgICAgICAgICAgICAgICAgdHlw
ZW5hbWUgYWRkX2N2PF9GdW5jdG9yPjo6dHlwZT46OnR5cGU+KCkoCiAgICAgICBfTXU8X0JvdW5k
X2FyZ3M+KCkoIHN0ZDo6ZGVjbHZhbDxjb25zdCB2b2xhdGlsZSBfQm91bmRfYXJncyY+KCksCiAg
ICAgIHN0ZDo6ZGVjbHZhbDx0dXBsZTxfQXJncy4uLj4mPigpICkuLi4gKSApPgogX1Jlc3VsdAog
b3BlcmF0b3IoKShfQXJncyYmLi4uIF9fYXJncykgY29uc3Qgdm9sYXRpbGUKIHsKICAgcmV0dXJu
IHRoaXMtPl9fY2FsbF9jX3Y8X1Jlc3VsdD4oCiAgICAgICBzdGQ6OmZvcndhcmRfYXNfdHVwbGUo
c3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKSwKICAgICAgIF9Cb3VuZF9pbmRleGVzKCkp
OwogfQogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXN1bHQsIHR5cGVuYW1lIF9TaWdu
YXR1cmU+CiAgICBzdHJ1Y3QgX0JpbmRfcmVzdWx0OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVz
dWx0LCB0eXBlbmFtZSBfRnVuY3RvciwgdHlwZW5hbWUuLi4gX0JvdW5kX2FyZ3M+CiAgICBjbGFz
cyBfQmluZF9yZXN1bHQ8X1Jlc3VsdCwgX0Z1bmN0b3IoX0JvdW5kX2FyZ3MuLi4pPgogICAgewog
ICAgICB0eXBlZGVmIF9CaW5kX3Jlc3VsdCBfX3NlbGZfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBfQnVpbGRfaW5kZXhfdHVwbGU8c2l6ZW9mLi4uKF9Cb3VuZF9hcmdzKT46Ol9fdHlwZQog
X0JvdW5kX2luZGV4ZXM7CgogICAgICBfRnVuY3RvciBfTV9mOwogICAgICB0dXBsZTxfQm91bmRf
YXJncy4uLj4gX01fYm91bmRfYXJnczsKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzPgog
c3RydWN0IF9fZW5hYmxlX2lmX3ZvaWQgOiBlbmFibGVfaWY8aXNfdm9pZDxfUmVzPjo6dmFsdWUs
IGludD4geyB9OwogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzPgogc3RydWN0IF9fZGlzYWJs
ZV9pZl92b2lkIDogZW5hYmxlX2lmPCFpc192b2lkPF9SZXM+Ojp2YWx1ZSwgaW50PiB7IH07CgoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUuLi4gX0FyZ3MsIHN0ZDo6c2l6
ZV90Li4uIF9JbmRleGVzPgogX1Jlc3VsdAogX19jYWxsKHR1cGxlPF9BcmdzLi4uPiYmIF9fYXJn
cywgX0luZGV4X3R1cGxlPF9JbmRleGVzLi4uPiwKICAgICB0eXBlbmFtZSBfX2Rpc2FibGVfaWZf
dm9pZDxfUmVzPjo6dHlwZSA9IDApCiB7CiAgIHJldHVybiBfTV9mKF9NdTxfQm91bmRfYXJncz4o
KQogICAgICAgIChnZXQ8X0luZGV4ZXM+KF9NX2JvdW5kX2FyZ3MpLCBfX2FyZ3MpLi4uKTsKIH0K
CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJncywgc3RkOjpz
aXplX3QuLi4gX0luZGV4ZXM+CiB2b2lkCiBfX2NhbGwodHVwbGU8X0FyZ3MuLi4+JiYgX19hcmdz
LCBfSW5kZXhfdHVwbGU8X0luZGV4ZXMuLi4+LAogICAgIHR5cGVuYW1lIF9fZW5hYmxlX2lmX3Zv
aWQ8X1Jlcz46OnR5cGUgPSAwKQogewogICBfTV9mKF9NdTxfQm91bmRfYXJncz4oKQogICAgICAg
IChnZXQ8X0luZGV4ZXM+KF9NX2JvdW5kX2FyZ3MpLCBfX2FyZ3MpLi4uKTsKIH0KCgogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJncywgc3RkOjpzaXplX3QuLi4g
X0luZGV4ZXM+CiBfUmVzdWx0CiBfX2NhbGwodHVwbGU8X0FyZ3MuLi4+JiYgX19hcmdzLCBfSW5k
ZXhfdHVwbGU8X0luZGV4ZXMuLi4+LAogICAgIHR5cGVuYW1lIF9fZGlzYWJsZV9pZl92b2lkPF9S
ZXM+Ojp0eXBlID0gMCkgY29uc3QKIHsKICAgcmV0dXJuIF9NX2YoX011PF9Cb3VuZF9hcmdzPigp
CiAgICAgICAgKGdldDxfSW5kZXhlcz4oX01fYm91bmRfYXJncyksIF9fYXJncykuLi4pOwogfQoK
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lLi4uIF9BcmdzLCBzdGQ6OnNp
emVfdC4uLiBfSW5kZXhlcz4KIHZvaWQKIF9fY2FsbCh0dXBsZTxfQXJncy4uLj4mJiBfX2FyZ3Ms
IF9JbmRleF90dXBsZTxfSW5kZXhlcy4uLj4sCiAgICAgdHlwZW5hbWUgX19lbmFibGVfaWZfdm9p
ZDxfUmVzPjo6dHlwZSA9IDApIGNvbnN0CiB7CiAgIF9NX2YoX011PF9Cb3VuZF9hcmdzPigpCiAg
ICAgICAgKGdldDxfSW5kZXhlcz4oX01fYm91bmRfYXJncyksIF9fYXJncykuLi4pOwogfQoKCiAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lLi4uIF9BcmdzLCBzdGQ6OnNpemVf
dC4uLiBfSW5kZXhlcz4KIF9SZXN1bHQKIF9fY2FsbCh0dXBsZTxfQXJncy4uLj4mJiBfX2FyZ3Ms
IF9JbmRleF90dXBsZTxfSW5kZXhlcy4uLj4sCiAgICAgdHlwZW5hbWUgX19kaXNhYmxlX2lmX3Zv
aWQ8X1Jlcz46OnR5cGUgPSAwKSB2b2xhdGlsZQogewogICByZXR1cm4gX01fZihfTXU8X0JvdW5k
X2FyZ3M+KCkKICAgICAgICAoX192b2xnZXQ8X0luZGV4ZXM+KF9NX2JvdW5kX2FyZ3MpLCBfX2Fy
Z3MpLi4uKTsKIH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBf
QXJncywgc3RkOjpzaXplX3QuLi4gX0luZGV4ZXM+CiB2b2lkCiBfX2NhbGwodHVwbGU8X0FyZ3Mu
Li4+JiYgX19hcmdzLCBfSW5kZXhfdHVwbGU8X0luZGV4ZXMuLi4+LAogICAgIHR5cGVuYW1lIF9f
ZW5hYmxlX2lmX3ZvaWQ8X1Jlcz46OnR5cGUgPSAwKSB2b2xhdGlsZQogewogICBfTV9mKF9NdTxf
Qm91bmRfYXJncz4oKQogICAgICAgIChfX3ZvbGdldDxfSW5kZXhlcz4oX01fYm91bmRfYXJncyks
IF9fYXJncykuLi4pOwogfQoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1l
Li4uIF9BcmdzLCBzdGQ6OnNpemVfdC4uLiBfSW5kZXhlcz4KIF9SZXN1bHQKIF9fY2FsbCh0dXBs
ZTxfQXJncy4uLj4mJiBfX2FyZ3MsIF9JbmRleF90dXBsZTxfSW5kZXhlcy4uLj4sCiAgICAgdHlw
ZW5hbWUgX19kaXNhYmxlX2lmX3ZvaWQ8X1Jlcz46OnR5cGUgPSAwKSBjb25zdCB2b2xhdGlsZQog
ewogICByZXR1cm4gX01fZihfTXU8X0JvdW5kX2FyZ3M+KCkKICAgICAgICAoX192b2xnZXQ8X0lu
ZGV4ZXM+KF9NX2JvdW5kX2FyZ3MpLCBfX2FyZ3MpLi4uKTsKIH0KCgogICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJncywgc3RkOjpzaXplX3QuLi4gX0luZGV4ZXM+
CiB2b2lkCiBfX2NhbGwodHVwbGU8X0FyZ3MuLi4+JiYgX19hcmdzLAogICAgICAgIF9JbmRleF90
dXBsZTxfSW5kZXhlcy4uLj4sCiAgICAgdHlwZW5hbWUgX19lbmFibGVfaWZfdm9pZDxfUmVzPjo6
dHlwZSA9IDApIGNvbnN0IHZvbGF0aWxlCiB7CiAgIF9NX2YoX011PF9Cb3VuZF9hcmdzPigpCiAg
ICAgICAgKF9fdm9sZ2V0PF9JbmRleGVzPihfTV9ib3VuZF9hcmdzKSwgX19hcmdzKS4uLik7CiB9
CgogICAgcHVibGljOgogICAgICB0eXBlZGVmIF9SZXN1bHQgcmVzdWx0X3R5cGU7CgogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfQXJncz4KIGV4cGxpY2l0IF9CaW5kX3Jlc3VsdChjb25zdCBf
RnVuY3RvciYgX19mLCBfQXJncyYmLi4uIF9fYXJncykKIDogX01fZihfX2YpLCBfTV9ib3VuZF9h
cmdzKHN0ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLikKIHsgfQoKICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gX0FyZ3M+CiBleHBsaWNpdCBfQmluZF9yZXN1bHQoX0Z1bmN0b3ImJiBfX2Ys
IF9BcmdzJiYuLi4gX19hcmdzKQogOiBfTV9mKHN0ZDo6bW92ZShfX2YpKSwgX01fYm91bmRfYXJn
cyhzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pCiB7IH0KCiAgICAgIF9CaW5kX3Jlc3Vs
dChjb25zdCBfQmluZF9yZXN1bHQmKSA9IGRlZmF1bHQ7CgogICAgICBfQmluZF9yZXN1bHQoX0Jp
bmRfcmVzdWx0JiYgX19iKQogICAgICA6IF9NX2Yoc3RkOjptb3ZlKF9fYi5fTV9mKSksIF9NX2Jv
dW5kX2FyZ3Moc3RkOjptb3ZlKF9fYi5fTV9ib3VuZF9hcmdzKSkKICAgICAgeyB9CgoKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3M+CiByZXN1bHRfdHlwZQogb3BlcmF0b3IoKShfQXJn
cyYmLi4uIF9fYXJncykKIHsKICAgcmV0dXJuIHRoaXMtPl9fY2FsbDxfUmVzdWx0PigKICAgICAg
IHN0ZDo6Zm9yd2FyZF9hc190dXBsZShzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pLAog
ICAgICAgX0JvdW5kX2luZGV4ZXMoKSk7CiB9CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
X0FyZ3M+CiByZXN1bHRfdHlwZQogb3BlcmF0b3IoKShfQXJncyYmLi4uIF9fYXJncykgY29uc3QK
IHsKICAgcmV0dXJuIHRoaXMtPl9fY2FsbDxfUmVzdWx0PigKICAgICAgIHN0ZDo6Zm9yd2FyZF9h
c190dXBsZShzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pLAogICAgICAgX0JvdW5kX2lu
ZGV4ZXMoKSk7CiB9CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3M+CiByZXN1bHRf
dHlwZQogb3BlcmF0b3IoKShfQXJncyYmLi4uIF9fYXJncykgdm9sYXRpbGUKIHsKICAgcmV0dXJu
IHRoaXMtPl9fY2FsbDxfUmVzdWx0PigKICAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZShzdGQ6
OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pLAogICAgICAgX0JvdW5kX2luZGV4ZXMoKSk7CiB9
CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3M+CiByZXN1bHRfdHlwZQogb3BlcmF0
b3IoKShfQXJncyYmLi4uIF9fYXJncykgY29uc3Qgdm9sYXRpbGUKIHsKICAgcmV0dXJuIHRoaXMt
Pl9fY2FsbDxfUmVzdWx0PigKICAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZShzdGQ6OmZvcndh
cmQ8X0FyZ3M+KF9fYXJncykuLi4pLAogICAgICAgX0JvdW5kX2luZGV4ZXMoKSk7CiB9CiAgICB9
OwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1NpZ25hdHVyZT4KICAgIHN0cnVjdCBpc19iaW5k
X2V4cHJlc3Npb248X0JpbmQ8X1NpZ25hdHVyZT4gPgogICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHsg
fTsKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9TaWduYXR1cmU+CiAgICBzdHJ1Y3QgaXNfYmlu
ZF9leHByZXNzaW9uPGNvbnN0IF9CaW5kPF9TaWduYXR1cmU+ID4KICAgIDogcHVibGljIHRydWVf
dHlwZSB7IH07CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU2lnbmF0dXJlPgogICAgc3RydWN0
IGlzX2JpbmRfZXhwcmVzc2lvbjx2b2xhdGlsZSBfQmluZDxfU2lnbmF0dXJlPiA+CiAgICA6IHB1
YmxpYyB0cnVlX3R5cGUgeyB9OwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1NpZ25hdHVyZT4K
ICAgIHN0cnVjdCBpc19iaW5kX2V4cHJlc3Npb248Y29uc3Qgdm9sYXRpbGUgX0JpbmQ8X1NpZ25h
dHVyZT4+CiAgICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1Jlc3VsdCwgdHlwZW5hbWUgX1NpZ25hdHVyZT4KICAgIHN0cnVjdCBpc19iaW5kX2V4cHJl
c3Npb248X0JpbmRfcmVzdWx0PF9SZXN1bHQsIF9TaWduYXR1cmU+PgogICAgOiBwdWJsaWMgdHJ1
ZV90eXBlIHsgfTsKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXN1bHQsIHR5cGVuYW1lIF9T
aWduYXR1cmU+CiAgICBzdHJ1Y3QgaXNfYmluZF9leHByZXNzaW9uPGNvbnN0IF9CaW5kX3Jlc3Vs
dDxfUmVzdWx0LCBfU2lnbmF0dXJlPj4KICAgIDogcHVibGljIHRydWVfdHlwZSB7IH07CgoKCgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzdWx0LCB0eXBlbmFtZSBfU2lnbmF0dXJlPgogICAgc3Ry
dWN0IGlzX2JpbmRfZXhwcmVzc2lvbjx2b2xhdGlsZSBfQmluZF9yZXN1bHQ8X1Jlc3VsdCwgX1Np
Z25hdHVyZT4+CiAgICA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OwoKCgoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1Jlc3VsdCwgdHlwZW5hbWUgX1NpZ25hdHVyZT4KICAgIHN0cnVjdCBpc19iaW5kX2V4
cHJlc3Npb248Y29uc3Qgdm9sYXRpbGUgX0JpbmRfcmVzdWx0PF9SZXN1bHQsIF9TaWduYXR1cmU+
PgogICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
LCB0eXBlbmFtZSBfVHAyID0gdHlwZW5hbWUgZGVjYXk8X1RwPjo6dHlwZT4KICAgIHVzaW5nIF9f
aXNfc29ja2V0bGlrZSA9IF9fb3JfPGlzX2ludGVncmFsPF9UcDI+LCBpc19lbnVtPF9UcDI+PjsK
CiAgdGVtcGxhdGU8Ym9vbCBfU29ja2V0TGlrZSwgdHlwZW5hbWUgX0Z1bmMsIHR5cGVuYW1lLi4u
IF9Cb3VuZEFyZ3M+CiAgICBzdHJ1Y3QgX0JpbmRfaGVscGVyCiAgICB7CiAgICAgIHR5cGVkZWYg
X01heWJlX3dyYXBfbWVtYmVyX3BvaW50ZXI8dHlwZW5hbWUgZGVjYXk8X0Z1bmM+Ojp0eXBlPgog
X19tYXliZV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fbWF5YmVfdHlwZTo6dHlwZSBf
X2Z1bmNfdHlwZTsKICAgICAgdHlwZWRlZiBfQmluZDxfX2Z1bmNfdHlwZSh0eXBlbmFtZSBkZWNh
eTxfQm91bmRBcmdzPjo6dHlwZS4uLik+IHR5cGU7CiAgICB9OwoKCgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfRnVuYywgdHlwZW5hbWUuLi4gX0JvdW5kQXJncz4KICAgIHN0cnVjdCBfQmluZF9oZWxw
ZXI8dHJ1ZSwgX0Z1bmMsIF9Cb3VuZEFyZ3MuLi4+CiAgICB7IH07CgoKCgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfRnVuYywgdHlwZW5hbWUuLi4gX0JvdW5kQXJncz4KICAgIGlubGluZSB0eXBlbmFt
ZQogICAgX0JpbmRfaGVscGVyPF9faXNfc29ja2V0bGlrZTxfRnVuYz46OnZhbHVlLCBfRnVuYywg
X0JvdW5kQXJncy4uLj46OnR5cGUKICAgIGJpbmQoX0Z1bmMmJiBfX2YsIF9Cb3VuZEFyZ3MmJi4u
LiBfX2FyZ3MpCiAgICB7CiAgICAgIHR5cGVkZWYgX0JpbmRfaGVscGVyPGZhbHNlLCBfRnVuYywg
X0JvdW5kQXJncy4uLj4gX19oZWxwZXJfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2hl
bHBlcl90eXBlOjpfX21heWJlX3R5cGUgX19tYXliZV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVu
YW1lIF9faGVscGVyX3R5cGU6OnR5cGUgX19yZXN1bHRfdHlwZTsKICAgICAgcmV0dXJuIF9fcmVz
dWx0X3R5cGUoX19tYXliZV90eXBlOjpfX2RvX3dyYXAoc3RkOjpmb3J3YXJkPF9GdW5jPihfX2Yp
KSwKICAgICAgc3RkOjpmb3J3YXJkPF9Cb3VuZEFyZ3M+KF9fYXJncykuLi4pOwogICAgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzdWx0LCB0eXBlbmFtZSBfRnVuYywgdHlwZW5hbWUuLi4gX0Jv
dW5kQXJncz4KICAgIHN0cnVjdCBfQmluZHJlc19oZWxwZXIKICAgIHsKICAgICAgdHlwZWRlZiBf
TWF5YmVfd3JhcF9tZW1iZXJfcG9pbnRlcjx0eXBlbmFtZSBkZWNheTxfRnVuYz46OnR5cGU+CiBf
X21heWJlX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19tYXliZV90eXBlOjp0eXBlIF9f
ZnVuY3Rvcl90eXBlOwogICAgICB0eXBlZGVmIF9CaW5kX3Jlc3VsdDxfUmVzdWx0LAogICAgICBf
X2Z1bmN0b3JfdHlwZSh0eXBlbmFtZSBkZWNheTxfQm91bmRBcmdzPjo6dHlwZS4uLik+CiB0eXBl
OwogICAgfTsKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXN1bHQsIHR5cGVuYW1lIF9GdW5j
LCB0eXBlbmFtZS4uLiBfQm91bmRBcmdzPgogICAgaW5saW5lCiAgICB0eXBlbmFtZSBfQmluZHJl
c19oZWxwZXI8X1Jlc3VsdCwgX0Z1bmMsIF9Cb3VuZEFyZ3MuLi4+Ojp0eXBlCiAgICBiaW5kKF9G
dW5jJiYgX19mLCBfQm91bmRBcmdzJiYuLi4gX19hcmdzKQogICAgewogICAgICB0eXBlZGVmIF9C
aW5kcmVzX2hlbHBlcjxfUmVzdWx0LCBfRnVuYywgX0JvdW5kQXJncy4uLj4gX19oZWxwZXJfdHlw
ZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2hlbHBlcl90eXBlOjpfX21heWJlX3R5cGUgX19t
YXliZV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faGVscGVyX3R5cGU6OnR5cGUgX19y
ZXN1bHRfdHlwZTsKICAgICAgcmV0dXJuIF9fcmVzdWx0X3R5cGUoX19tYXliZV90eXBlOjpfX2Rv
X3dyYXAoc3RkOjpmb3J3YXJkPF9GdW5jPihfX2YpKSwKICAgICAgc3RkOjpmb3J3YXJkPF9Cb3Vu
ZEFyZ3M+KF9fYXJncykuLi4pOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU2lnbmF0dXJl
PgogICAgc3RydWN0IF9CaW5kX3NpbXBsZTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NhbGxhYmxl
LCB0eXBlbmFtZS4uLiBfQXJncz4KICAgIHN0cnVjdCBfQmluZF9zaW1wbGU8X0NhbGxhYmxlKF9B
cmdzLi4uKT4KICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXN1bHRfb2Y8X0NhbGxhYmxl
KF9BcmdzLi4uKT46OnR5cGUgcmVzdWx0X3R5cGU7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBfQXJnczIsIHR5cGVuYW1lID0gdHlwZW5hbWUKICAgICAgICAgICAgICAgZW5hYmxlX2lmPCBz
aXplb2YuLi4oX0FyZ3MpID09IHNpemVvZi4uLihfQXJnczIpPjo6dHlwZT4KICAgICAgICBleHBs
aWNpdAogICAgICAgIF9CaW5kX3NpbXBsZShjb25zdCBfQ2FsbGFibGUmIF9fY2FsbGFibGUsIF9B
cmdzMiYmLi4uIF9fYXJncykKICAgICAgICA6IF9NX2JvdW5kKF9fY2FsbGFibGUsIHN0ZDo6Zm9y
d2FyZDxfQXJnczI+KF9fYXJncykuLi4pCiAgICAgICAgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBfQXJnczIsIHR5cGVuYW1lID0gdHlwZW5hbWUKICAgICAgICAgICAgICAgZW5hYmxl
X2lmPCBzaXplb2YuLi4oX0FyZ3MpID09IHNpemVvZi4uLihfQXJnczIpPjo6dHlwZT4KICAgICAg
ICBleHBsaWNpdAogICAgICAgIF9CaW5kX3NpbXBsZShfQ2FsbGFibGUmJiBfX2NhbGxhYmxlLCBf
QXJnczImJi4uLiBfX2FyZ3MpCiAgICAgICAgOiBfTV9ib3VuZChzdGQ6Om1vdmUoX19jYWxsYWJs
ZSksIHN0ZDo6Zm9yd2FyZDxfQXJnczI+KF9fYXJncykuLi4pCiAgICAgICAgeyB9CgogICAgICBf
QmluZF9zaW1wbGUoY29uc3QgX0JpbmRfc2ltcGxlJikgPSBkZWZhdWx0OwogICAgICBfQmluZF9z
aW1wbGUoX0JpbmRfc2ltcGxlJiYpID0gZGVmYXVsdDsKCiAgICAgIHJlc3VsdF90eXBlCiAgICAg
IG9wZXJhdG9yKCkoKQogICAgICB7CiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQnVpbGRfaW5k
ZXhfdHVwbGU8c2l6ZW9mLi4uKF9BcmdzKT46Ol9fdHlwZSBfSW5kaWNlczsKICAgICAgICByZXR1
cm4gX01faW52b2tlKF9JbmRpY2VzKCkpOwogICAgICB9CgogICAgcHJpdmF0ZToKCiAgICAgIHRl
bXBsYXRlPHN0ZDo6c2l6ZV90Li4uIF9JbmRpY2VzPgogICAgICAgIHR5cGVuYW1lIHJlc3VsdF9v
ZjxfQ2FsbGFibGUoX0FyZ3MuLi4pPjo6dHlwZQogICAgICAgIF9NX2ludm9rZShfSW5kZXhfdHVw
bGU8X0luZGljZXMuLi4+KQogICAgICAgIHsKCgogICAgICAgICAgcmV0dXJuIHN0ZDo6Zm9yd2Fy
ZDxfQ2FsbGFibGU+KHN0ZDo6Z2V0PDA+KF9NX2JvdW5kKSkoCiAgICAgICAgICAgICAgc3RkOjpm
b3J3YXJkPF9BcmdzPihzdGQ6OmdldDxfSW5kaWNlcysxPihfTV9ib3VuZCkpLi4uKTsKICAgICAg
ICB9CgogICAgICBzdGQ6OnR1cGxlPF9DYWxsYWJsZSwgX0FyZ3MuLi4+IF9NX2JvdW5kOwogICAg
fTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Z1bmMsIHR5cGVuYW1lLi4uIF9Cb3VuZEFyZ3M+CiAg
ICBzdHJ1Y3QgX0JpbmRfc2ltcGxlX2hlbHBlcgogICAgewogICAgICB0eXBlZGVmIF9NYXliZV93
cmFwX21lbWJlcl9wb2ludGVyPHR5cGVuYW1lIGRlY2F5PF9GdW5jPjo6dHlwZT4KICAgICAgICBf
X21heWJlX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19tYXliZV90eXBlOjp0eXBlIF9f
ZnVuY190eXBlOwogICAgICB0eXBlZGVmIF9CaW5kX3NpbXBsZTxfX2Z1bmNfdHlwZSh0eXBlbmFt
ZSBkZWNheTxfQm91bmRBcmdzPjo6dHlwZS4uLik+CiAgICAgICAgX190eXBlOwogICAgfTsKCgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2FsbGFibGUsIHR5cGVuYW1lLi4uIF9BcmdzPgogICAgdHlw
ZW5hbWUgX0JpbmRfc2ltcGxlX2hlbHBlcjxfQ2FsbGFibGUsIF9BcmdzLi4uPjo6X190eXBlCiAg
ICBfX2JpbmRfc2ltcGxlKF9DYWxsYWJsZSYmIF9fY2FsbGFibGUsIF9BcmdzJiYuLi4gX19hcmdz
KQogICAgewogICAgICB0eXBlZGVmIF9CaW5kX3NpbXBsZV9oZWxwZXI8X0NhbGxhYmxlLCBfQXJn
cy4uLj4gX19oZWxwZXJfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2hlbHBlcl90eXBl
OjpfX21heWJlX3R5cGUgX19tYXliZV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faGVs
cGVyX3R5cGU6Ol9fdHlwZSBfX3Jlc3VsdF90eXBlOwogICAgICByZXR1cm4gX19yZXN1bHRfdHlw
ZSgKICAgICAgICAgIF9fbWF5YmVfdHlwZTo6X19kb193cmFwKCBzdGQ6OmZvcndhcmQ8X0NhbGxh
YmxlPihfX2NhbGxhYmxlKSksCiAgICAgICAgICBzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncyku
Li4pOwogICAgfQoKCgoKCgogIGNsYXNzIGJhZF9mdW5jdGlvbl9jYWxsIDogcHVibGljIHN0ZDo6
ZXhjZXB0aW9uCiAgewogIHB1YmxpYzoKICAgIHZpcnR1YWwgfmJhZF9mdW5jdGlvbl9jYWxsKCkg
bm9leGNlcHQ7CgogICAgY29uc3QgY2hhciogd2hhdCgpIGNvbnN0IG5vZXhjZXB0OwogIH07CgoK
CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfbG9jYXRpb25faW52
YXJpYW50CiAgICA6IGludGVncmFsX2NvbnN0YW50PGJvb2wsIChpc19wb2ludGVyPF9UcD46OnZh
bHVlCiAgICAgICAgICB8fCBpc19tZW1iZXJfcG9pbnRlcjxfVHA+Ojp2YWx1ZSk+CiAgICB7IH07
CgogIGNsYXNzIF9VbmRlZmluZWRfY2xhc3M7CgogIHVuaW9uIF9Ob2NvcHlfdHlwZXMKICB7CiAg
ICB2b2lkKiBfTV9vYmplY3Q7CiAgICBjb25zdCB2b2lkKiBfTV9jb25zdF9vYmplY3Q7CiAgICB2
b2lkICgqX01fZnVuY3Rpb25fcG9pbnRlcikoKTsKICAgIHZvaWQgKF9VbmRlZmluZWRfY2xhc3M6
OipfTV9tZW1iZXJfcG9pbnRlcikoKTsKICB9OwoKICB1bmlvbiBfQW55X2RhdGEKICB7CiAgICB2
b2lkKiBfTV9hY2Nlc3MoKSB7IHJldHVybiAmX01fcG9kX2RhdGFbMF07IH0KICAgIGNvbnN0IHZv
aWQqIF9NX2FjY2VzcygpIGNvbnN0IHsgcmV0dXJuICZfTV9wb2RfZGF0YVswXTsgfQoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgICAgX1RwJgogICAgICBfTV9hY2Nlc3MoKQogICAgICB7
IHJldHVybiAqc3RhdGljX2Nhc3Q8X1RwKj4oX01fYWNjZXNzKCkpOyB9CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwPgogICAgICBjb25zdCBfVHAmCiAgICAgIF9NX2FjY2VzcygpIGNvbnN0CiAg
ICAgIHsgcmV0dXJuICpzdGF0aWNfY2FzdDxjb25zdCBfVHAqPihfTV9hY2Nlc3MoKSk7IH0KCiAg
ICBfTm9jb3B5X3R5cGVzIF9NX3VudXNlZDsKICAgIGNoYXIgX01fcG9kX2RhdGFbc2l6ZW9mKF9O
b2NvcHlfdHlwZXMpXTsKICB9OwoKICBlbnVtIF9NYW5hZ2VyX29wZXJhdGlvbgogIHsKICAgIF9f
Z2V0X3R5cGVfaW5mbywKICAgIF9fZ2V0X2Z1bmN0b3JfcHRyLAogICAgX19jbG9uZV9mdW5jdG9y
LAogICAgX19kZXN0cm95X2Z1bmN0b3IKICB9OwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4K
ICAgIHN0cnVjdCBfU2ltcGxlX3R5cGVfd3JhcHBlcgogICAgewogICAgICBfU2ltcGxlX3R5cGVf
d3JhcHBlcihfVHAgX192YWx1ZSkgOiBfX3ZhbHVlKF9fdmFsdWUpIHsgfQoKICAgICAgX1RwIF9f
dmFsdWU7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19s
b2NhdGlvbl9pbnZhcmlhbnQ8X1NpbXBsZV90eXBlX3dyYXBwZXI8X1RwPiA+CiAgICA6IF9faXNf
bG9jYXRpb25faW52YXJpYW50PF9UcD4KICAgIHsgfTsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
RnVuY3Rvcj4KICAgIGlubGluZSBfRnVuY3RvciYKICAgIF9fY2FsbGFibGVfZnVuY3RvcihfRnVu
Y3RvciYgX19mKQogICAgeyByZXR1cm4gX19mOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9NZW1i
ZXIsIHR5cGVuYW1lIF9DbGFzcz4KICAgIGlubGluZSBfTWVtX2ZuPF9NZW1iZXIgX0NsYXNzOjoq
PgogICAgX19jYWxsYWJsZV9mdW5jdG9yKF9NZW1iZXIgX0NsYXNzOjoqICZfX3ApCiAgICB7IHJl
dHVybiBzdGQ6Om1lbV9mbihfX3ApOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9NZW1iZXIsIHR5
cGVuYW1lIF9DbGFzcz4KICAgIGlubGluZSBfTWVtX2ZuPF9NZW1iZXIgX0NsYXNzOjoqPgogICAg
X19jYWxsYWJsZV9mdW5jdG9yKF9NZW1iZXIgX0NsYXNzOjoqIGNvbnN0ICZfX3ApCiAgICB7IHJl
dHVybiBzdGQ6Om1lbV9mbihfX3ApOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9NZW1iZXIsIHR5
cGVuYW1lIF9DbGFzcz4KICAgIGlubGluZSBfTWVtX2ZuPF9NZW1iZXIgX0NsYXNzOjoqPgogICAg
X19jYWxsYWJsZV9mdW5jdG9yKF9NZW1iZXIgX0NsYXNzOjoqIHZvbGF0aWxlICZfX3ApCiAgICB7
IHJldHVybiBzdGQ6Om1lbV9mbihfX3ApOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9NZW1iZXIs
IHR5cGVuYW1lIF9DbGFzcz4KICAgIGlubGluZSBfTWVtX2ZuPF9NZW1iZXIgX0NsYXNzOjoqPgog
ICAgX19jYWxsYWJsZV9mdW5jdG9yKF9NZW1iZXIgX0NsYXNzOjoqIGNvbnN0IHZvbGF0aWxlICZf
X3ApCiAgICB7IHJldHVybiBzdGQ6Om1lbV9mbihfX3ApOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9TaWduYXR1cmU+CiAgICBjbGFzcyBmdW5jdGlvbjsKCgogIGNsYXNzIF9GdW5jdGlvbl9iYXNl
CiAgewogIHB1YmxpYzoKICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBfTV9tYXhfc2l6ZSA9
IHNpemVvZihfTm9jb3B5X3R5cGVzKTsKICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBfTV9t
YXhfYWxpZ24gPSBfX2FsaWdub2ZfXyhfTm9jb3B5X3R5cGVzKTsKCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfRnVuY3Rvcj4KICAgICAgY2xhc3MgX0Jhc2VfbWFuYWdlcgogICAgICB7CiAgICAgIHBy
b3RlY3RlZDoKIHN0YXRpYyBjb25zdCBib29sIF9fc3RvcmVkX2xvY2FsbHkgPQogKF9faXNfbG9j
YXRpb25faW52YXJpYW50PF9GdW5jdG9yPjo6dmFsdWUKICAmJiBzaXplb2YoX0Z1bmN0b3IpIDw9
IF9NX21heF9zaXplCiAgJiYgX19hbGlnbm9mX18oX0Z1bmN0b3IpIDw9IF9NX21heF9hbGlnbgog
ICYmIChfTV9tYXhfYWxpZ24gJSBfX2FsaWdub2ZfXyhfRnVuY3RvcikgPT0gMCkpOwoKIHR5cGVk
ZWYgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgX19zdG9yZWRfbG9jYWxseT4gX0xvY2FsX3N0b3Jh
Z2U7CgoKIHN0YXRpYyBfRnVuY3RvcioKIF9NX2dldF9wb2ludGVyKGNvbnN0IF9BbnlfZGF0YSYg
X19zb3VyY2UpCiB7CiAgIGNvbnN0IF9GdW5jdG9yKiBfX3B0ciA9CiAgICAgX19zdG9yZWRfbG9j
YWxseT8gc3RkOjpfX2FkZHJlc3NvZihfX3NvdXJjZS5fTV9hY2Nlc3M8X0Z1bmN0b3I+KCkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX19zb3VyY2UuX01fYWNjZXNzPF9GdW5j
dG9yKj4oKTsKICAgcmV0dXJuIGNvbnN0X2Nhc3Q8X0Z1bmN0b3IqPihfX3B0cik7CiB9CgoKCiBz
dGF0aWMgdm9pZAogX01fY2xvbmUoX0FueV9kYXRhJiBfX2Rlc3QsIGNvbnN0IF9BbnlfZGF0YSYg
X19zb3VyY2UsIHRydWVfdHlwZSkKIHsKICAgbmV3IChfX2Rlc3QuX01fYWNjZXNzKCkpIF9GdW5j
dG9yKF9fc291cmNlLl9NX2FjY2VzczxfRnVuY3Rvcj4oKSk7CiB9CgoKCiBzdGF0aWMgdm9pZAog
X01fY2xvbmUoX0FueV9kYXRhJiBfX2Rlc3QsIGNvbnN0IF9BbnlfZGF0YSYgX19zb3VyY2UsIGZh
bHNlX3R5cGUpCiB7CiAgIF9fZGVzdC5fTV9hY2Nlc3M8X0Z1bmN0b3IqPigpID0KICAgICBuZXcg
X0Z1bmN0b3IoKl9fc291cmNlLl9NX2FjY2VzczxfRnVuY3Rvcio+KCkpOwogfQoKCgogc3RhdGlj
IHZvaWQKIF9NX2Rlc3Ryb3koX0FueV9kYXRhJiBfX3ZpY3RpbSwgdHJ1ZV90eXBlKQogewogICBf
X3ZpY3RpbS5fTV9hY2Nlc3M8X0Z1bmN0b3I+KCkufl9GdW5jdG9yKCk7CiB9CgoKIHN0YXRpYyB2
b2lkCiBfTV9kZXN0cm95KF9BbnlfZGF0YSYgX192aWN0aW0sIGZhbHNlX3R5cGUpCiB7CiAgIGRl
bGV0ZSBfX3ZpY3RpbS5fTV9hY2Nlc3M8X0Z1bmN0b3IqPigpOwogfQoKICAgICAgcHVibGljOgog
c3RhdGljIGJvb2wKIF9NX21hbmFnZXIoX0FueV9kYXRhJiBfX2Rlc3QsIGNvbnN0IF9BbnlfZGF0
YSYgX19zb3VyY2UsCiAgICAgX01hbmFnZXJfb3BlcmF0aW9uIF9fb3ApCiB7CiAgIHN3aXRjaCAo
X19vcCkKICAgICB7CgoKCgoKICAgICBjYXNlIF9fZ2V0X2Z1bmN0b3JfcHRyOgogICAgICAgX19k
ZXN0Ll9NX2FjY2VzczxfRnVuY3Rvcio+KCkgPSBfTV9nZXRfcG9pbnRlcihfX3NvdXJjZSk7CiAg
ICAgICBicmVhazsKCiAgICAgY2FzZSBfX2Nsb25lX2Z1bmN0b3I6CiAgICAgICBfTV9jbG9uZShf
X2Rlc3QsIF9fc291cmNlLCBfTG9jYWxfc3RvcmFnZSgpKTsKICAgICAgIGJyZWFrOwoKICAgICBj
YXNlIF9fZGVzdHJveV9mdW5jdG9yOgogICAgICAgX01fZGVzdHJveShfX2Rlc3QsIF9Mb2NhbF9z
dG9yYWdlKCkpOwogICAgICAgYnJlYWs7CiAgICAgfQogICByZXR1cm4gZmFsc2U7CiB9Cgogc3Rh
dGljIHZvaWQKIF9NX2luaXRfZnVuY3RvcihfQW55X2RhdGEmIF9fZnVuY3RvciwgX0Z1bmN0b3Im
JiBfX2YpCiB7IF9NX2luaXRfZnVuY3RvcihfX2Z1bmN0b3IsIHN0ZDo6bW92ZShfX2YpLCBfTG9j
YWxfc3RvcmFnZSgpKTsgfQoKIHRlbXBsYXRlPHR5cGVuYW1lIF9TaWduYXR1cmU+CiAgIHN0YXRp
YyBib29sCiAgIF9NX25vdF9lbXB0eV9mdW5jdGlvbihjb25zdCBmdW5jdGlvbjxfU2lnbmF0dXJl
PiYgX19mKQogICB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPihfX2YpOyB9CgogdGVtcGxhdGU8
dHlwZW5hbWUgX1RwPgogICBzdGF0aWMgYm9vbAogICBfTV9ub3RfZW1wdHlfZnVuY3Rpb24oY29u
c3QgX1RwKiYgX19mcCkKICAgeyByZXR1cm4gX19mcDsgfQoKIHRlbXBsYXRlPHR5cGVuYW1lIF9D
bGFzcywgdHlwZW5hbWUgX1RwPgogICBzdGF0aWMgYm9vbAogICBfTV9ub3RfZW1wdHlfZnVuY3Rp
b24oX1RwIF9DbGFzczo6KiBjb25zdCYgX19tcCkKICAgeyByZXR1cm4gX19tcDsgfQoKIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4KICAgc3RhdGljIGJvb2wKICAgX01fbm90X2VtcHR5X2Z1bmN0aW9u
KGNvbnN0IF9UcCYpCiAgIHsgcmV0dXJuIHRydWU7IH0KCiAgICAgIHByaXZhdGU6CiBzdGF0aWMg
dm9pZAogX01faW5pdF9mdW5jdG9yKF9BbnlfZGF0YSYgX19mdW5jdG9yLCBfRnVuY3RvciYmIF9f
ZiwgdHJ1ZV90eXBlKQogeyBuZXcgKF9fZnVuY3Rvci5fTV9hY2Nlc3MoKSkgX0Z1bmN0b3Ioc3Rk
Ojptb3ZlKF9fZikpOyB9Cgogc3RhdGljIHZvaWQKIF9NX2luaXRfZnVuY3RvcihfQW55X2RhdGEm
IF9fZnVuY3RvciwgX0Z1bmN0b3ImJiBfX2YsIGZhbHNlX3R5cGUpCiB7IF9fZnVuY3Rvci5fTV9h
Y2Nlc3M8X0Z1bmN0b3IqPigpID0gbmV3IF9GdW5jdG9yKHN0ZDo6bW92ZShfX2YpKTsgfQogICAg
ICB9OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9GdW5jdG9yPgogICAgICBjbGFzcyBfUmVmX21h
bmFnZXIgOiBwdWJsaWMgX0Jhc2VfbWFuYWdlcjxfRnVuY3Rvcio+CiAgICAgIHsKIHR5cGVkZWYg
X0Z1bmN0aW9uX2Jhc2U6Ol9CYXNlX21hbmFnZXI8X0Z1bmN0b3IqPiBfQmFzZTsKCiAgICAgIHB1
YmxpYzoKIHN0YXRpYyBib29sCiBfTV9tYW5hZ2VyKF9BbnlfZGF0YSYgX19kZXN0LCBjb25zdCBf
QW55X2RhdGEmIF9fc291cmNlLAogICAgIF9NYW5hZ2VyX29wZXJhdGlvbiBfX29wKQogewogICBz
d2l0Y2ggKF9fb3ApCiAgICAgewoKCgoKCiAgICAgY2FzZSBfX2dldF9mdW5jdG9yX3B0cjoKICAg
ICAgIF9fZGVzdC5fTV9hY2Nlc3M8X0Z1bmN0b3IqPigpID0gKl9CYXNlOjpfTV9nZXRfcG9pbnRl
cihfX3NvdXJjZSk7CiAgICAgICByZXR1cm4gaXNfY29uc3Q8X0Z1bmN0b3I+Ojp2YWx1ZTsKICAg
ICAgIGJyZWFrOwoKICAgICBkZWZhdWx0OgogICAgICAgX0Jhc2U6Ol9NX21hbmFnZXIoX19kZXN0
LCBfX3NvdXJjZSwgX19vcCk7CiAgICAgfQogICByZXR1cm4gZmFsc2U7CiB9Cgogc3RhdGljIHZv
aWQKIF9NX2luaXRfZnVuY3RvcihfQW55X2RhdGEmIF9fZnVuY3RvciwgcmVmZXJlbmNlX3dyYXBw
ZXI8X0Z1bmN0b3I+IF9fZikKIHsKICAgX0Jhc2U6Ol9NX2luaXRfZnVuY3RvcihfX2Z1bmN0b3Is
IHN0ZDo6X19hZGRyZXNzb2YoX19mLmdldCgpKSk7CiB9CiAgICAgIH07CgogICAgX0Z1bmN0aW9u
X2Jhc2UoKSA6IF9NX21hbmFnZXIoMCkgeyB9CgogICAgfl9GdW5jdGlvbl9iYXNlKCkKICAgIHsK
ICAgICAgaWYgKF9NX21hbmFnZXIpCiBfTV9tYW5hZ2VyKF9NX2Z1bmN0b3IsIF9NX2Z1bmN0b3Is
IF9fZGVzdHJveV9mdW5jdG9yKTsKICAgIH0KCgogICAgYm9vbCBfTV9lbXB0eSgpIGNvbnN0IHsg
cmV0dXJuICFfTV9tYW5hZ2VyOyB9CgogICAgdHlwZWRlZiBib29sICgqX01hbmFnZXJfdHlwZSko
X0FueV9kYXRhJiwgY29uc3QgX0FueV9kYXRhJiwKICAgICAgX01hbmFnZXJfb3BlcmF0aW9uKTsK
CiAgICBfQW55X2RhdGEgX01fZnVuY3RvcjsKICAgIF9NYW5hZ2VyX3R5cGUgX01fbWFuYWdlcjsK
ICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU2lnbmF0dXJlLCB0eXBlbmFtZSBfRnVuY3Rvcj4K
ICAgIGNsYXNzIF9GdW5jdGlvbl9oYW5kbGVyOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0
eXBlbmFtZSBfRnVuY3RvciwgdHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgY2xhc3MgX0Z1bmN0
aW9uX2hhbmRsZXI8X1JlcyhfQXJnVHlwZXMuLi4pLCBfRnVuY3Rvcj4KICAgIDogcHVibGljIF9G
dW5jdGlvbl9iYXNlOjpfQmFzZV9tYW5hZ2VyPF9GdW5jdG9yPgogICAgewogICAgICB0eXBlZGVm
IF9GdW5jdGlvbl9iYXNlOjpfQmFzZV9tYW5hZ2VyPF9GdW5jdG9yPiBfQmFzZTsKCiAgICBwdWJs
aWM6CiAgICAgIHN0YXRpYyBfUmVzCiAgICAgIF9NX2ludm9rZShjb25zdCBfQW55X2RhdGEmIF9f
ZnVuY3RvciwgX0FyZ1R5cGVzLi4uIF9fYXJncykKICAgICAgewogcmV0dXJuICgqX0Jhc2U6Ol9N
X2dldF9wb2ludGVyKF9fZnVuY3RvcikpKAogICAgIHN0ZDo6Zm9yd2FyZDxfQXJnVHlwZXM+KF9f
YXJncykuLi4pOwogICAgICB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnVuY3Rvciwg
dHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgY2xhc3MgX0Z1bmN0aW9uX2hhbmRsZXI8dm9pZChf
QXJnVHlwZXMuLi4pLCBfRnVuY3Rvcj4KICAgIDogcHVibGljIF9GdW5jdGlvbl9iYXNlOjpfQmFz
ZV9tYW5hZ2VyPF9GdW5jdG9yPgogICAgewogICAgICB0eXBlZGVmIF9GdW5jdGlvbl9iYXNlOjpf
QmFzZV9tYW5hZ2VyPF9GdW5jdG9yPiBfQmFzZTsKCiAgICAgcHVibGljOgogICAgICBzdGF0aWMg
dm9pZAogICAgICBfTV9pbnZva2UoY29uc3QgX0FueV9kYXRhJiBfX2Z1bmN0b3IsIF9BcmdUeXBl
cy4uLiBfX2FyZ3MpCiAgICAgIHsKICgqX0Jhc2U6Ol9NX2dldF9wb2ludGVyKF9fZnVuY3Rvcikp
KAogICAgIHN0ZDo6Zm9yd2FyZDxfQXJnVHlwZXM+KF9fYXJncykuLi4pOwogICAgICB9CiAgICB9
OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZSBfRnVuY3RvciwgdHlwZW5hbWUu
Li4gX0FyZ1R5cGVzPgogICAgY2xhc3MgX0Z1bmN0aW9uX2hhbmRsZXI8X1JlcyhfQXJnVHlwZXMu
Li4pLCByZWZlcmVuY2Vfd3JhcHBlcjxfRnVuY3Rvcj4gPgogICAgOiBwdWJsaWMgX0Z1bmN0aW9u
X2Jhc2U6Ol9SZWZfbWFuYWdlcjxfRnVuY3Rvcj4KICAgIHsKICAgICAgdHlwZWRlZiBfRnVuY3Rp
b25fYmFzZTo6X1JlZl9tYW5hZ2VyPF9GdW5jdG9yPiBfQmFzZTsKCiAgICAgcHVibGljOgogICAg
ICBzdGF0aWMgX1JlcwogICAgICBfTV9pbnZva2UoY29uc3QgX0FueV9kYXRhJiBfX2Z1bmN0b3Is
IF9BcmdUeXBlcy4uLiBfX2FyZ3MpCiAgICAgIHsKIHJldHVybiBfX2NhbGxhYmxlX2Z1bmN0b3Io
KipfQmFzZTo6X01fZ2V0X3BvaW50ZXIoX19mdW5jdG9yKSkoCiAgICAgICBzdGQ6OmZvcndhcmQ8
X0FyZ1R5cGVzPihfX2FyZ3MpLi4uKTsKICAgICAgfQogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0Z1bmN0b3IsIHR5cGVuYW1lLi4uIF9BcmdUeXBlcz4KICAgIGNsYXNzIF9GdW5jdGlvbl9o
YW5kbGVyPHZvaWQoX0FyZ1R5cGVzLi4uKSwgcmVmZXJlbmNlX3dyYXBwZXI8X0Z1bmN0b3I+ID4K
ICAgIDogcHVibGljIF9GdW5jdGlvbl9iYXNlOjpfUmVmX21hbmFnZXI8X0Z1bmN0b3I+CiAgICB7
CiAgICAgIHR5cGVkZWYgX0Z1bmN0aW9uX2Jhc2U6Ol9SZWZfbWFuYWdlcjxfRnVuY3Rvcj4gX0Jh
c2U7CgogICAgIHB1YmxpYzoKICAgICAgc3RhdGljIHZvaWQKICAgICAgX01faW52b2tlKGNvbnN0
IF9BbnlfZGF0YSYgX19mdW5jdG9yLCBfQXJnVHlwZXMuLi4gX19hcmdzKQogICAgICB7CiBfX2Nh
bGxhYmxlX2Z1bmN0b3IoKipfQmFzZTo6X01fZ2V0X3BvaW50ZXIoX19mdW5jdG9yKSkoCiAgICAg
c3RkOjpmb3J3YXJkPF9BcmdUeXBlcz4oX19hcmdzKS4uLik7CiAgICAgIH0KICAgIH07CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9DbGFzcywgdHlwZW5hbWUgX01lbWJlciwgdHlwZW5hbWUgX1JlcywK
ICAgIHR5cGVuYW1lLi4uIF9BcmdUeXBlcz4KICAgIGNsYXNzIF9GdW5jdGlvbl9oYW5kbGVyPF9S
ZXMoX0FyZ1R5cGVzLi4uKSwgX01lbWJlciBfQ2xhc3M6Oio+CiAgICA6IHB1YmxpYyBfRnVuY3Rp
b25faGFuZGxlcjx2b2lkKF9BcmdUeXBlcy4uLiksIF9NZW1iZXIgX0NsYXNzOjoqPgogICAgewog
ICAgICB0eXBlZGVmIF9GdW5jdGlvbl9oYW5kbGVyPHZvaWQoX0FyZ1R5cGVzLi4uKSwgX01lbWJl
ciBfQ2xhc3M6Oio+CiBfQmFzZTsKCiAgICAgcHVibGljOgogICAgICBzdGF0aWMgX1JlcwogICAg
ICBfTV9pbnZva2UoY29uc3QgX0FueV9kYXRhJiBfX2Z1bmN0b3IsIF9BcmdUeXBlcy4uLiBfX2Fy
Z3MpCiAgICAgIHsKIHJldHVybiBzdGQ6Om1lbV9mbihfQmFzZTo6X01fZ2V0X3BvaW50ZXIoX19m
dW5jdG9yKS0+X192YWx1ZSkoCiAgICAgc3RkOjpmb3J3YXJkPF9BcmdUeXBlcz4oX19hcmdzKS4u
Lik7CiAgICAgIH0KICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DbGFzcywgdHlwZW5hbWUg
X01lbWJlciwgdHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgY2xhc3MgX0Z1bmN0aW9uX2hhbmRs
ZXI8dm9pZChfQXJnVHlwZXMuLi4pLCBfTWVtYmVyIF9DbGFzczo6Kj4KICAgIDogcHVibGljIF9G
dW5jdGlvbl9iYXNlOjpfQmFzZV9tYW5hZ2VyPAogICBfU2ltcGxlX3R5cGVfd3JhcHBlcjwgX01l
bWJlciBfQ2xhc3M6OiogPiA+CiAgICB7CiAgICAgIHR5cGVkZWYgX01lbWJlciBfQ2xhc3M6Oiog
X0Z1bmN0b3I7CiAgICAgIHR5cGVkZWYgX1NpbXBsZV90eXBlX3dyYXBwZXI8X0Z1bmN0b3I+IF9X
cmFwcGVyOwogICAgICB0eXBlZGVmIF9GdW5jdGlvbl9iYXNlOjpfQmFzZV9tYW5hZ2VyPF9XcmFw
cGVyPiBfQmFzZTsKCiAgICBwdWJsaWM6CiAgICAgIHN0YXRpYyBib29sCiAgICAgIF9NX21hbmFn
ZXIoX0FueV9kYXRhJiBfX2Rlc3QsIGNvbnN0IF9BbnlfZGF0YSYgX19zb3VyY2UsCiAgIF9NYW5h
Z2VyX29wZXJhdGlvbiBfX29wKQogICAgICB7CiBzd2l0Y2ggKF9fb3ApCiAgIHsKCgoKCgogICBj
YXNlIF9fZ2V0X2Z1bmN0b3JfcHRyOgogICAgIF9fZGVzdC5fTV9hY2Nlc3M8X0Z1bmN0b3IqPigp
ID0KICAgICAgICZfQmFzZTo6X01fZ2V0X3BvaW50ZXIoX19zb3VyY2UpLT5fX3ZhbHVlOwogICAg
IGJyZWFrOwoKICAgZGVmYXVsdDoKICAgICBfQmFzZTo6X01fbWFuYWdlcihfX2Rlc3QsIF9fc291
cmNlLCBfX29wKTsKICAgfQogcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgICBzdGF0aWMgdm9p
ZAogICAgICBfTV9pbnZva2UoY29uc3QgX0FueV9kYXRhJiBfX2Z1bmN0b3IsIF9BcmdUeXBlcy4u
LiBfX2FyZ3MpCiAgICAgIHsKIHN0ZDo6bWVtX2ZuKF9CYXNlOjpfTV9nZXRfcG9pbnRlcihfX2Z1
bmN0b3IpLT5fX3ZhbHVlKSgKICAgICBzdGQ6OmZvcndhcmQ8X0FyZ1R5cGVzPihfX2FyZ3MpLi4u
KTsKICAgICAgfQogICAgfTsKCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlcywgdHlwZW5h
bWUuLi4gX0FyZ1R5cGVzPgogICAgY2xhc3MgZnVuY3Rpb248X1JlcyhfQXJnVHlwZXMuLi4pPgog
ICAgOiBwdWJsaWMgX01heWJlX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbjxfUmVzLCBfQXJnVHlw
ZXMuLi4+LAogICAgICBwcml2YXRlIF9GdW5jdGlvbl9iYXNlCiAgICB7CiAgICAgIHR5cGVkZWYg
X1JlcyBfU2lnbmF0dXJlX3R5cGUoX0FyZ1R5cGVzLi4uKTsKCiAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9GdW5jdG9yPgogdXNpbmcgX0ludm9rZSA9IGRlY2x0eXBlKF9fY2FsbGFibGVfZnVuY3Rv
cihzdGQ6OmRlY2x2YWw8X0Z1bmN0b3ImPigpKQogICAgIChzdGQ6OmRlY2x2YWw8X0FyZ1R5cGVz
PigpLi4uKSApOwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NhbGxSZXMsIHR5cGVuYW1lIF9S
ZXMxPgogc3RydWN0IF9DaGVja1Jlc3VsdAogOiBpc19jb252ZXJ0aWJsZTxfQ2FsbFJlcywgX1Jl
czE+IHsgfTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DYWxsUmVzPgogc3RydWN0IF9DaGVj
a1Jlc3VsdDxfQ2FsbFJlcywgdm9pZD4KIDogdHJ1ZV90eXBlIHsgfTsKCiAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIF9GdW5jdG9yPgogdXNpbmcgX0NhbGxhYmxlID0gX0NoZWNrUmVzdWx0PF9JbnZv
a2U8X0Z1bmN0b3I+LCBfUmVzPjsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Db25kLCB0eXBl
bmFtZSBfVHA+CiB1c2luZyBfUmVxdWlyZXMgPSB0eXBlbmFtZSBlbmFibGVfaWY8X0NvbmQ6OnZh
bHVlLCBfVHA+Ojp0eXBlOwoKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBfUmVzIHJlc3VsdF90
eXBlOwoKCgoKCgoKICAgICAgZnVuY3Rpb24oKSBub2V4Y2VwdAogICAgICA6IF9GdW5jdGlvbl9i
YXNlKCkgeyB9CgoKCgoKICAgICAgZnVuY3Rpb24obnVsbHB0cl90KSBub2V4Y2VwdAogICAgICA6
IF9GdW5jdGlvbl9iYXNlKCkgeyB9CiMgMjIyMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOC4xL2Z1bmN0aW9uYWwiIDMKICAgICAgZnVuY3Rpb24oY29uc3Qg
ZnVuY3Rpb24mIF9feCk7CiMgMjIzMCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOC4xL2Z1bmN0aW9uYWwiIDMKICAgICAgZnVuY3Rpb24oZnVuY3Rpb24mJiBf
X3gpIDogX0Z1bmN0aW9uX2Jhc2UoKQogICAgICB7CiBfX3guc3dhcCgqdGhpcyk7CiAgICAgIH0K
IyAyMjUzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEv
ZnVuY3Rpb25hbCIgMwogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnVuY3RvciwKICAgICAgICB0
eXBlbmFtZSA9IF9SZXF1aXJlczxfQ2FsbGFibGU8X0Z1bmN0b3I+LCB2b2lkPj4KIGZ1bmN0aW9u
KF9GdW5jdG9yKTsKIyAyMjY5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC44LjEvZnVuY3Rpb25hbCIgMwogICAgICBmdW5jdGlvbiYKICAgICAgb3BlcmF0b3I9
KGNvbnN0IGZ1bmN0aW9uJiBfX3gpCiAgICAgIHsKIGZ1bmN0aW9uKF9feCkuc3dhcCgqdGhpcyk7
CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KIyAyMjg3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC44LjEvZnVuY3Rpb25hbCIgMwogICAgICBmdW5jdGlvbiYKICAg
ICAgb3BlcmF0b3I9KGZ1bmN0aW9uJiYgX194KQogICAgICB7CiBmdW5jdGlvbihzdGQ6Om1vdmUo
X194KSkuc3dhcCgqdGhpcyk7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KIyAyMzAxICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvZnVuY3Rpb25hbCIgMwog
ICAgICBmdW5jdGlvbiYKICAgICAgb3BlcmF0b3I9KG51bGxwdHJfdCkKICAgICAgewogaWYgKF9N
X21hbmFnZXIpCiAgIHsKICAgICBfTV9tYW5hZ2VyKF9NX2Z1bmN0b3IsIF9NX2Z1bmN0b3IsIF9f
ZGVzdHJveV9mdW5jdG9yKTsKICAgICBfTV9tYW5hZ2VyID0gMDsKICAgICBfTV9pbnZva2VyID0g
MDsKICAgfQogcmV0dXJuICp0aGlzOwogICAgICB9CiMgMjMyOSAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2Z1bmN0aW9uYWwiIDMKICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgX0Z1bmN0b3I+CiBfUmVxdWlyZXM8X0NhbGxhYmxlPF9GdW5jdG9yPiwgZnVu
Y3Rpb24mPgogb3BlcmF0b3I9KF9GdW5jdG9yJiYgX19mKQogewogICBmdW5jdGlvbihzdGQ6OmZv
cndhcmQ8X0Z1bmN0b3I+KF9fZikpLnN3YXAoKnRoaXMpOwogICByZXR1cm4gKnRoaXM7CiB9CgoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Z1bmN0b3I+CiBmdW5jdGlvbiYKIG9wZXJhdG9yPShy
ZWZlcmVuY2Vfd3JhcHBlcjxfRnVuY3Rvcj4gX19mKSBub2V4Y2VwdAogewogICBmdW5jdGlvbihf
X2YpLnN3YXAoKnRoaXMpOwogICByZXR1cm4gKnRoaXM7CiB9CiMgMjM1NSAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2Z1bmN0aW9uYWwiIDMKICAgICAg
dm9pZCBzd2FwKGZ1bmN0aW9uJiBfX3gpCiAgICAgIHsKIHN0ZDo6c3dhcChfTV9mdW5jdG9yLCBf
X3guX01fZnVuY3Rvcik7CiBzdGQ6OnN3YXAoX01fbWFuYWdlciwgX194Ll9NX21hbmFnZXIpOwog
c3RkOjpzd2FwKF9NX2ludm9rZXIsIF9feC5fTV9pbnZva2VyKTsKICAgICAgfQojIDIzODMgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9mdW5jdGlvbmFs
IiAzCiAgICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCBub2V4Y2VwdAogICAgICB7
IHJldHVybiAhX01fZW1wdHkoKTsgfQojIDIzOTYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9mdW5jdGlvbmFsIiAzCiAgICAgIF9SZXMgb3BlcmF0b3Io
KShfQXJnVHlwZXMuLi4gX19hcmdzKSBjb25zdDsKIyAyNDI2ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvZnVuY3Rpb25hbCIgMwogICAgcHJpdmF0ZToK
ICAgICAgdHlwZWRlZiBfUmVzICgqX0ludm9rZXJfdHlwZSkoY29uc3QgX0FueV9kYXRhJiwgX0Fy
Z1R5cGVzLi4uKTsKICAgICAgX0ludm9rZXJfdHlwZSBfTV9pbnZva2VyOwogIH07CgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBmdW5jdGlvbjxf
UmVzKF9BcmdUeXBlcy4uLik+OjoKICAgIGZ1bmN0aW9uKGNvbnN0IGZ1bmN0aW9uJiBfX3gpCiAg
ICA6IF9GdW5jdGlvbl9iYXNlKCkKICAgIHsKICAgICAgaWYgKHN0YXRpY19jYXN0PGJvb2w+KF9f
eCkpCiB7CiAgIF9NX2ludm9rZXIgPSBfX3guX01faW52b2tlcjsKICAgX01fbWFuYWdlciA9IF9f
eC5fTV9tYW5hZ2VyOwogICBfX3guX01fbWFuYWdlcihfTV9mdW5jdG9yLCBfX3guX01fZnVuY3Rv
ciwgX19jbG9uZV9mdW5jdG9yKTsKIH0KICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jlcywg
dHlwZW5hbWUuLi4gX0FyZ1R5cGVzPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Z1bmN0b3IsIHR5
cGVuYW1lPgogICAgICBmdW5jdGlvbjxfUmVzKF9BcmdUeXBlcy4uLik+OjoKICAgICAgZnVuY3Rp
b24oX0Z1bmN0b3IgX19mKQogICAgICA6IF9GdW5jdGlvbl9iYXNlKCkKICAgICAgewogdHlwZWRl
ZiBfRnVuY3Rpb25faGFuZGxlcjxfU2lnbmF0dXJlX3R5cGUsIF9GdW5jdG9yPiBfTXlfaGFuZGxl
cjsKCiBpZiAoX015X2hhbmRsZXI6Ol9NX25vdF9lbXB0eV9mdW5jdGlvbihfX2YpKQogICB7CiAg
ICAgX015X2hhbmRsZXI6Ol9NX2luaXRfZnVuY3RvcihfTV9mdW5jdG9yLCBzdGQ6Om1vdmUoX19m
KSk7CiAgICAgX01faW52b2tlciA9ICZfTXlfaGFuZGxlcjo6X01faW52b2tlOwogICAgIF9NX21h
bmFnZXIgPSAmX015X2hhbmRsZXI6Ol9NX21hbmFnZXI7CiAgIH0KICAgICAgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJnVHlwZXM+CiAgICBfUmVzCiAgICBmdW5j
dGlvbjxfUmVzKF9BcmdUeXBlcy4uLik+OjoKICAgIG9wZXJhdG9yKCkoX0FyZ1R5cGVzLi4uIF9f
YXJncykgY29uc3QKICAgIHsKICAgICAgaWYgKF9NX2VtcHR5KCkpCiBfX3Rocm93X2JhZF9mdW5j
dGlvbl9jYWxsKCk7CiAgICAgIHJldHVybiBfTV9pbnZva2VyKF9NX2Z1bmN0b3IsIHN0ZDo6Zm9y
d2FyZDxfQXJnVHlwZXM+KF9fYXJncykuLi4pOwogICAgfQojIDI1MzIgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9mdW5jdGlvbmFsIiAzCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1JlcywgdHlwZW5hbWUuLi4gX0FyZ3M+CiAgICBpbmxpbmUgYm9vbAogICAg
b3BlcmF0b3I9PShjb25zdCBmdW5jdGlvbjxfUmVzKF9BcmdzLi4uKT4mIF9fZiwgbnVsbHB0cl90
KSBub2V4Y2VwdAogICAgeyByZXR1cm4gIXN0YXRpY19jYXN0PGJvb2w+KF9fZik7IH0KCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9SZXMsIHR5cGVuYW1lLi4uIF9BcmdzPgogICAgaW5saW5lIGJvb2wK
ICAgIG9wZXJhdG9yPT0obnVsbHB0cl90LCBjb25zdCBmdW5jdGlvbjxfUmVzKF9BcmdzLi4uKT4m
IF9fZikgbm9leGNlcHQKICAgIHsgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPihfX2YpOyB9CiMg
MjU1MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2Z1
bmN0aW9uYWwiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJncz4K
ICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IGZ1bmN0aW9uPF9SZXMoX0FyZ3Mu
Li4pPiYgX19mLCBudWxscHRyX3QpIG5vZXhjZXB0CiAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxi
b29sPihfX2YpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0eXBlbmFtZS4uLiBfQXJn
cz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KG51bGxwdHJfdCwgY29uc3QgZnVuY3Rp
b248X1JlcyhfQXJncy4uLik+JiBfX2YpIG5vZXhjZXB0CiAgICB7IHJldHVybiBzdGF0aWNfY2Fz
dDxib29sPihfX2YpOyB9CiMgMjU2OCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOC4xL2Z1bmN0aW9uYWwiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVzLCB0
eXBlbmFtZS4uLiBfQXJncz4KICAgIGlubGluZSB2b2lkCiAgICBzd2FwKGZ1bmN0aW9uPF9SZXMo
X0FyZ3MuLi4pPiYgX194LCBmdW5jdGlvbjxfUmVzKF9BcmdzLi4uKT4mIF9feSkKICAgIHsgX194
LnN3YXAoX195KTsgfQoKCn0KIyA4MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOC4xL21lbW9yeSIgMiAzCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3VuaXF1ZV9wdHIuaCIgMSAzCiMgMzkgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3VuaXF1
ZV9wdHIuaCIgMwpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAo
ImRlZmF1bHQiKSkpCnsKCgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBhdXRvX3B0
cjsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgZGVmYXVsdF9kZWxldGUK
ICAgIHsKICAgICAgY29uc3RleHByIGRlZmF1bHRfZGVsZXRlKCkgbm9leGNlcHQgPSBkZWZhdWx0
OwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VwLCB0eXBlbmFtZSA9IHR5cGVuYW1lCiAgICAg
ICAgZW5hYmxlX2lmPGlzX2NvbnZlcnRpYmxlPF9VcCosIF9UcCo+Ojp2YWx1ZT46OnR5cGU+CiAg
ICAgICAgZGVmYXVsdF9kZWxldGUoY29uc3QgZGVmYXVsdF9kZWxldGU8X1VwPiYpIG5vZXhjZXB0
IHsgfQoKICAgICAgdm9pZAogICAgICBvcGVyYXRvcigpKF9UcCogX19wdHIpIGNvbnN0CiAgICAg
IHsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKF9UcCk+MCwKICAgICAgICAiY2FuJ3QgZGVsZXRlIHBv
aW50ZXIgdG8gaW5jb21wbGV0ZSB0eXBlIik7CiBkZWxldGUgX19wdHI7CiAgICAgIH0KICAgIH07
CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBkZWZhdWx0X2RlbGV0ZTxf
VHBbXT4KICAgIHsKICAgIHByaXZhdGU6CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VcD4KIHVz
aW5nIF9fcmVtb3ZlX2N2ID0gdHlwZW5hbWUgcmVtb3ZlX2N2PF9VcD46OnR5cGU7CgoKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX1VwPgogdXNpbmcgX19pc19kZXJpdmVkX1RwCiAgID0gX19hbmRf
PCBpc19iYXNlX29mPF9UcCwgX1VwPiwKICAgICAgX19ub3RfPGlzX3NhbWU8X19yZW1vdmVfY3Y8
X1RwPiwgX19yZW1vdmVfY3Y8X1VwPj4+ID47CgogICAgcHVibGljOgogICAgICBjb25zdGV4cHIg
ZGVmYXVsdF9kZWxldGUoKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CgogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVXAsIHR5cGVuYW1lID0gdHlwZW5hbWUKICAgICAgICBlbmFibGVfaWY8IV9faXNfZGVy
aXZlZF9UcDxfVXA+Ojp2YWx1ZT46OnR5cGU+CiAgICAgICAgZGVmYXVsdF9kZWxldGUoY29uc3Qg
ZGVmYXVsdF9kZWxldGU8X1VwW10+Jikgbm9leGNlcHQgeyB9CgogICAgICB2b2lkCiAgICAgIG9w
ZXJhdG9yKCkoX1RwKiBfX3B0cikgY29uc3QKICAgICAgewogc3RhdGljX2Fzc2VydChzaXplb2Yo
X1RwKT4wLAogICAgICAgICJjYW4ndCBkZWxldGUgcG9pbnRlciB0byBpbmNvbXBsZXRlIHR5cGUi
KTsKIGRlbGV0ZSBbXSBfX3B0cjsKICAgICAgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Vw
PgogdHlwZW5hbWUgZW5hYmxlX2lmPF9faXNfZGVyaXZlZF9UcDxfVXA+Ojp2YWx1ZT46OnR5cGUK
IG9wZXJhdG9yKCkoX1VwKikgY29uc3QgPSBkZWxldGU7CiAgICB9OwoKCiAgdGVtcGxhdGUgPHR5
cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0RwID0gZGVmYXVsdF9kZWxldGU8X1RwPiA+CiAgICBjbGFz
cyB1bmlxdWVfcHRyCiAgICB7CgogICAgICBjbGFzcyBfUG9pbnRlcgogICAgICB7CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVXA+CiAgIHN0YXRpYyB0eXBlbmFtZSBfVXA6OnBvaW50ZXIgX190ZXN0KHR5
cGVuYW1lIF9VcDo6cG9pbnRlciopOwoKIHRlbXBsYXRlPHR5cGVuYW1lIF9VcD4KICAgc3RhdGlj
IF9UcCogX190ZXN0KC4uLik7CgogdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPF9E
cD46OnR5cGUgX0RlbDsKCiAgICAgIHB1YmxpYzoKIHR5cGVkZWYgZGVjbHR5cGUoX190ZXN0PF9E
ZWw+KDApKSB0eXBlOwogICAgICB9OwoKICAgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHR5cGVuYW1l
IF9Qb2ludGVyOjp0eXBlLCBfRHA+IF9fdHVwbGVfdHlwZTsKICAgICAgX190dXBsZV90eXBlIF9N
X3Q7CgogICAgcHVibGljOgogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9Qb2ludGVyOjp0eXBlIHBv
aW50ZXI7CiAgICAgIHR5cGVkZWYgX1RwIGVsZW1lbnRfdHlwZTsKICAgICAgdHlwZWRlZiBfRHAg
ZGVsZXRlcl90eXBlOwoKCiAgICAgIGNvbnN0ZXhwciB1bmlxdWVfcHRyKCkgbm9leGNlcHQKICAg
ICAgOiBfTV90KCkKICAgICAgeyBzdGF0aWNfYXNzZXJ0KCFpc19wb2ludGVyPGRlbGV0ZXJfdHlw
ZT46OnZhbHVlLAogICAgICAgImNvbnN0cnVjdGVkIHdpdGggbnVsbCBmdW5jdGlvbiBwb2ludGVy
IGRlbGV0ZXIiKTsgfQoKICAgICAgZXhwbGljaXQKICAgICAgdW5pcXVlX3B0cihwb2ludGVyIF9f
cCkgbm9leGNlcHQKICAgICAgOiBfTV90KF9fcCwgZGVsZXRlcl90eXBlKCkpCiAgICAgIHsgc3Rh
dGljX2Fzc2VydCghaXNfcG9pbnRlcjxkZWxldGVyX3R5cGU+Ojp2YWx1ZSwKICAgICAgICJjb25z
dHJ1Y3RlZCB3aXRoIG51bGwgZnVuY3Rpb24gcG9pbnRlciBkZWxldGVyIik7IH0KCiAgICAgIHVu
aXF1ZV9wdHIocG9pbnRlciBfX3AsCiAgIHR5cGVuYW1lIGNvbmRpdGlvbmFsPGlzX3JlZmVyZW5j
ZTxkZWxldGVyX3R5cGU+Ojp2YWx1ZSwKICAgICBkZWxldGVyX3R5cGUsIGNvbnN0IGRlbGV0ZXJf
dHlwZSY+Ojp0eXBlIF9fZCkgbm9leGNlcHQKICAgICAgOiBfTV90KF9fcCwgX19kKSB7IH0KCiAg
ICAgIHVuaXF1ZV9wdHIocG9pbnRlciBfX3AsCiAgIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8
ZGVsZXRlcl90eXBlPjo6dHlwZSYmIF9fZCkgbm9leGNlcHQKICAgICAgOiBfTV90KHN0ZDo6bW92
ZShfX3ApLCBzdGQ6Om1vdmUoX19kKSkKICAgICAgeyBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX3Jl
ZmVyZW5jZTxkZWxldGVyX3R5cGU+Ojp2YWx1ZSwKICAgICAgICAicnZhbHVlIGRlbGV0ZXIgYm91
bmQgdG8gcmVmZXJlbmNlIik7IH0KCiAgICAgIGNvbnN0ZXhwciB1bmlxdWVfcHRyKG51bGxwdHJf
dCkgbm9leGNlcHQgOiB1bmlxdWVfcHRyKCkgeyB9CgoKICAgICAgdW5pcXVlX3B0cih1bmlxdWVf
cHRyJiYgX191KSBub2V4Y2VwdAogICAgICA6IF9NX3QoX191LnJlbGVhc2UoKSwgc3RkOjpmb3J3
YXJkPGRlbGV0ZXJfdHlwZT4oX191LmdldF9kZWxldGVyKCkpKSB7IH0KCiAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIF9VcCwgdHlwZW5hbWUgX0VwLCB0eXBlbmFtZSA9IF9SZXF1aXJlPAogICAgICAg
IGlzX2NvbnZlcnRpYmxlPHR5cGVuYW1lIHVuaXF1ZV9wdHI8X1VwLCBfRXA+Ojpwb2ludGVyLCBw
b2ludGVyPiwKICAgICAgICBfX25vdF88aXNfYXJyYXk8X1VwPj4sCiAgICAgICAgdHlwZW5hbWUg
Y29uZGl0aW9uYWw8aXNfcmVmZXJlbmNlPF9EcD46OnZhbHVlLAogICAgICAgIGlzX3NhbWU8X0Vw
LCBfRHA+LAogICAgICAgIGlzX2NvbnZlcnRpYmxlPF9FcCwgX0RwPj46OnR5cGU+PgogdW5pcXVl
X3B0cih1bmlxdWVfcHRyPF9VcCwgX0VwPiYmIF9fdSkgbm9leGNlcHQKIDogX01fdChfX3UucmVs
ZWFzZSgpLCBzdGQ6OmZvcndhcmQ8X0VwPihfX3UuZ2V0X2RlbGV0ZXIoKSkpCiB7IH0KCgogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVXAsIHR5cGVuYW1lID0gX1JlcXVpcmU8CiAgICAgICAgaXNf
Y29udmVydGlibGU8X1VwKiwgX1RwKj4sIGlzX3NhbWU8X0RwLCBkZWZhdWx0X2RlbGV0ZTxfVHA+
Pj4+CiB1bmlxdWVfcHRyKGF1dG9fcHRyPF9VcD4mJiBfX3UpIG5vZXhjZXB0OwoKCgogICAgICB+
dW5pcXVlX3B0cigpIG5vZXhjZXB0CiAgICAgIHsKIGF1dG8mIF9fcHRyID0gc3RkOjpnZXQ8MD4o
X01fdCk7CiBpZiAoX19wdHIgIT0gbnVsbHB0cikKICAgZ2V0X2RlbGV0ZXIoKShfX3B0cik7CiBf
X3B0ciA9IHBvaW50ZXIoKTsKICAgICAgfQoKCiAgICAgIHVuaXF1ZV9wdHImCiAgICAgIG9wZXJh
dG9yPSh1bmlxdWVfcHRyJiYgX191KSBub2V4Y2VwdAogICAgICB7CiByZXNldChfX3UucmVsZWFz
ZSgpKTsKIGdldF9kZWxldGVyKCkgPSBzdGQ6OmZvcndhcmQ8ZGVsZXRlcl90eXBlPihfX3UuZ2V0
X2RlbGV0ZXIoKSk7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCiAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9VcCwgdHlwZW5hbWUgX0VwPgogdHlwZW5hbWUgZW5hYmxlX2lmPCBfX2FuZF88CiAgIGlz
X2NvbnZlcnRpYmxlPHR5cGVuYW1lIHVuaXF1ZV9wdHI8X1VwLCBfRXA+Ojpwb2ludGVyLCBwb2lu
dGVyPiwKICAgX19ub3RfPGlzX2FycmF5PF9VcD4+CiAgID46OnZhbHVlLAogICB1bmlxdWVfcHRy
Jj46OnR5cGUKIG9wZXJhdG9yPSh1bmlxdWVfcHRyPF9VcCwgX0VwPiYmIF9fdSkgbm9leGNlcHQK
IHsKICAgcmVzZXQoX191LnJlbGVhc2UoKSk7CiAgIGdldF9kZWxldGVyKCkgPSBzdGQ6OmZvcndh
cmQ8X0VwPihfX3UuZ2V0X2RlbGV0ZXIoKSk7CiAgIHJldHVybiAqdGhpczsKIH0KCiAgICAgIHVu
aXF1ZV9wdHImCiAgICAgIG9wZXJhdG9yPShudWxscHRyX3QpIG5vZXhjZXB0CiAgICAgIHsKIHJl
c2V0KCk7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCgogICAgICB0eXBlbmFtZSBhZGRfbHZhbHVl
X3JlZmVyZW5jZTxlbGVtZW50X3R5cGU+Ojp0eXBlCiAgICAgIG9wZXJhdG9yKigpIGNvbnN0CiAg
ICAgIHsKIDsKIHJldHVybiAqZ2V0KCk7CiAgICAgIH0KCiAgICAgIHBvaW50ZXIKICAgICAgb3Bl
cmF0b3ItPigpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsKIDsKIHJldHVybiBnZXQoKTsKICAgICAg
fQoKICAgICAgcG9pbnRlcgogICAgICBnZXQoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVy
biBzdGQ6OmdldDwwPihfTV90KTsgfQoKICAgICAgZGVsZXRlcl90eXBlJgogICAgICBnZXRfZGVs
ZXRlcigpIG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0ZDo6Z2V0PDE+KF9NX3QpOyB9CgogICAg
ICBjb25zdCBkZWxldGVyX3R5cGUmCiAgICAgIGdldF9kZWxldGVyKCkgY29uc3Qgbm9leGNlcHQK
ICAgICAgeyByZXR1cm4gc3RkOjpnZXQ8MT4oX01fdCk7IH0KCiAgICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBnZXQoKSA9PSBwb2ludGVy
KCkgPyBmYWxzZSA6IHRydWU7IH0KCgogICAgICBwb2ludGVyCiAgICAgIHJlbGVhc2UoKSBub2V4
Y2VwdAogICAgICB7CiBwb2ludGVyIF9fcCA9IGdldCgpOwogc3RkOjpnZXQ8MD4oX01fdCkgPSBw
b2ludGVyKCk7CiByZXR1cm4gX19wOwogICAgICB9CgogICAgICB2b2lkCiAgICAgIHJlc2V0KHBv
aW50ZXIgX19wID0gcG9pbnRlcigpKSBub2V4Y2VwdAogICAgICB7CiB1c2luZyBzdGQ6OnN3YXA7
CiBzd2FwKHN0ZDo6Z2V0PDA+KF9NX3QpLCBfX3ApOwogaWYgKF9fcCAhPSBwb2ludGVyKCkpCiAg
IGdldF9kZWxldGVyKCkoX19wKTsKICAgICAgfQoKICAgICAgdm9pZAogICAgICBzd2FwKHVuaXF1
ZV9wdHImIF9fdSkgbm9leGNlcHQKICAgICAgewogdXNpbmcgc3RkOjpzd2FwOwogc3dhcChfTV90
LCBfX3UuX01fdCk7CiAgICAgIH0KCgogICAgICB1bmlxdWVfcHRyKGNvbnN0IHVuaXF1ZV9wdHIm
KSA9IGRlbGV0ZTsKICAgICAgdW5pcXVlX3B0ciYgb3BlcmF0b3I9KGNvbnN0IHVuaXF1ZV9wdHIm
KSA9IGRlbGV0ZTsKICB9OwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBf
RHA+CiAgICBjbGFzcyB1bmlxdWVfcHRyPF9UcFtdLCBfRHA+CiAgICB7CgogICAgICBjbGFzcyBf
UG9pbnRlcgogICAgICB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBfVXA+CiAgIHN0YXRpYyB0eXBlbmFt
ZSBfVXA6OnBvaW50ZXIgX190ZXN0KHR5cGVuYW1lIF9VcDo6cG9pbnRlciopOwoKIHRlbXBsYXRl
PHR5cGVuYW1lIF9VcD4KICAgc3RhdGljIF9UcCogX190ZXN0KC4uLik7CgogdHlwZWRlZiB0eXBl
bmFtZSByZW1vdmVfcmVmZXJlbmNlPF9EcD46OnR5cGUgX0RlbDsKCiAgICAgIHB1YmxpYzoKIHR5
cGVkZWYgZGVjbHR5cGUoX190ZXN0PF9EZWw+KDApKSB0eXBlOwogICAgICB9OwoKICAgICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPHR5cGVuYW1lIF9Qb2ludGVyOjp0eXBlLCBfRHA+IF9fdHVwbGVfdHlw
ZTsKICAgICAgX190dXBsZV90eXBlIF9NX3Q7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVXA+
CiB1c2luZyBfX3JlbW92ZV9jdiA9IHR5cGVuYW1lIHJlbW92ZV9jdjxfVXA+Ojp0eXBlOwoKCiAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VcD4KIHVzaW5nIF9faXNfZGVyaXZlZF9UcAogICA9IF9f
YW5kXzwgaXNfYmFzZV9vZjxfVHAsIF9VcD4sCiAgICAgIF9fbm90Xzxpc19zYW1lPF9fcmVtb3Zl
X2N2PF9UcD4sIF9fcmVtb3ZlX2N2PF9VcD4+PiA+OwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
X1VwLCB0eXBlbmFtZSBfRXAsCiAgICAgICAgdHlwZW5hbWUgX1RwX3BvaW50ZXIgPSB0eXBlbmFt
ZSBfUG9pbnRlcjo6dHlwZSwKICAgICAgICB0eXBlbmFtZSBfVXBfcG9pbnRlciA9IHR5cGVuYW1l
IHVuaXF1ZV9wdHI8X1VwLCBfRXA+Ojpwb2ludGVyPgogdXNpbmcgX19zYWZlX2NvbnZlcnNpb24g
PSBfX2FuZF88CiAgICAgaXNfY29udmVydGlibGU8X1VwX3BvaW50ZXIsIF9UcF9wb2ludGVyPiwK
ICAgICBpc19hcnJheTxfVXA+LAogICAgIF9fb3JfPF9fbm90Xzxpc19wb2ludGVyPF9VcF9wb2lu
dGVyPj4sCiAgICBfX25vdF88aXNfcG9pbnRlcjxfVHBfcG9pbnRlcj4+LAogICAgX19ub3RfPF9f
aXNfZGVyaXZlZF9UcDx0eXBlbmFtZSByZW1vdmVfZXh0ZW50PF9VcD46OnR5cGU+PgogICAgID4K
ICAgPjsKCiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX1BvaW50ZXI6OnR5cGUg
cG9pbnRlcjsKICAgICAgdHlwZWRlZiBfVHAgZWxlbWVudF90eXBlOwogICAgICB0eXBlZGVmIF9E
cCBkZWxldGVyX3R5cGU7CgoKICAgICAgY29uc3RleHByIHVuaXF1ZV9wdHIoKSBub2V4Y2VwdAog
ICAgICA6IF9NX3QoKQogICAgICB7IHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfcG9pbnRlcjxkZWxl
dGVyX3R5cGU+Ojp2YWx1ZSwKICAgICAgICAiY29uc3RydWN0ZWQgd2l0aCBudWxsIGZ1bmN0aW9u
IHBvaW50ZXIgZGVsZXRlciIpOyB9CgogICAgICBleHBsaWNpdAogICAgICB1bmlxdWVfcHRyKHBv
aW50ZXIgX19wKSBub2V4Y2VwdAogICAgICA6IF9NX3QoX19wLCBkZWxldGVyX3R5cGUoKSkKICAg
ICAgeyBzdGF0aWNfYXNzZXJ0KCFpc19wb2ludGVyPGRlbGV0ZXJfdHlwZT46OnZhbHVlLAogICAg
ICAgICJjb25zdHJ1Y3RlZCB3aXRoIG51bGwgZnVuY3Rpb24gcG9pbnRlciBkZWxldGVyIik7IH0K
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VcCwgdHlwZW5hbWUgPSBfUmVxdWlyZTxpc19wb2lu
dGVyPHBvaW50ZXI+LAogICAgICAgIGlzX2NvbnZlcnRpYmxlPF9VcCosIHBvaW50ZXI+LCBfX2lz
X2Rlcml2ZWRfVHA8X1VwPj4+CiBleHBsaWNpdAogdW5pcXVlX3B0cihfVXAqIF9fcCkgPSBkZWxl
dGU7CgogICAgICB1bmlxdWVfcHRyKHBvaW50ZXIgX19wLAogICB0eXBlbmFtZSBjb25kaXRpb25h
bDxpc19yZWZlcmVuY2U8ZGVsZXRlcl90eXBlPjo6dmFsdWUsCiAgICAgICBkZWxldGVyX3R5cGUs
IGNvbnN0IGRlbGV0ZXJfdHlwZSY+Ojp0eXBlIF9fZCkgbm9leGNlcHQKICAgICAgOiBfTV90KF9f
cCwgX19kKSB7IH0KCiAgICAgIHVuaXF1ZV9wdHIocG9pbnRlciBfX3AsIHR5cGVuYW1lCiAgIHJl
bW92ZV9yZWZlcmVuY2U8ZGVsZXRlcl90eXBlPjo6dHlwZSYmIF9fZCkgbm9leGNlcHQKICAgICAg
OiBfTV90KHN0ZDo6bW92ZShfX3ApLCBzdGQ6Om1vdmUoX19kKSkKICAgICAgeyBzdGF0aWNfYXNz
ZXJ0KCFpc19yZWZlcmVuY2U8ZGVsZXRlcl90eXBlPjo6dmFsdWUsCiAgICAgICAgInJ2YWx1ZSBk
ZWxldGVyIGJvdW5kIHRvIHJlZmVyZW5jZSIpOyB9CgoKICAgICAgdW5pcXVlX3B0cih1bmlxdWVf
cHRyJiYgX191KSBub2V4Y2VwdAogICAgICA6IF9NX3QoX191LnJlbGVhc2UoKSwgc3RkOjpmb3J3
YXJkPGRlbGV0ZXJfdHlwZT4oX191LmdldF9kZWxldGVyKCkpKSB7IH0KCiAgICAgIGNvbnN0ZXhw
ciB1bmlxdWVfcHRyKG51bGxwdHJfdCkgbm9leGNlcHQgOiB1bmlxdWVfcHRyKCkgeyB9CgogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVXAsIHR5cGVuYW1lIF9FcCwKICAgICAgICB0eXBlbmFtZSA9
IF9SZXF1aXJlPF9fc2FmZV9jb252ZXJzaW9uPF9VcCwgX0VwPiwKICAgdHlwZW5hbWUgY29uZGl0
aW9uYWw8aXNfcmVmZXJlbmNlPF9EcD46OnZhbHVlLAogICAgICAgICAgaXNfc2FtZTxfRXAsIF9E
cD4sCiAgICAgICAgICBpc19jb252ZXJ0aWJsZTxfRXAsIF9EcD4+Ojp0eXBlCiAgICAgICAgPj4K
IHVuaXF1ZV9wdHIodW5pcXVlX3B0cjxfVXAsIF9FcD4mJiBfX3UpIG5vZXhjZXB0CiA6IF9NX3Qo
X191LnJlbGVhc2UoKSwgc3RkOjpmb3J3YXJkPF9FcD4oX191LmdldF9kZWxldGVyKCkpKQogeyB9
CgoKICAgICAgfnVuaXF1ZV9wdHIoKQogICAgICB7CiBhdXRvJiBfX3B0ciA9IHN0ZDo6Z2V0PDA+
KF9NX3QpOwogaWYgKF9fcHRyICE9IG51bGxwdHIpCiAgIGdldF9kZWxldGVyKCkoX19wdHIpOwog
X19wdHIgPSBwb2ludGVyKCk7CiAgICAgIH0KCgogICAgICB1bmlxdWVfcHRyJgogICAgICBvcGVy
YXRvcj0odW5pcXVlX3B0ciYmIF9fdSkgbm9leGNlcHQKICAgICAgewogcmVzZXQoX191LnJlbGVh
c2UoKSk7CiBnZXRfZGVsZXRlcigpID0gc3RkOjpmb3J3YXJkPGRlbGV0ZXJfdHlwZT4oX191Lmdl
dF9kZWxldGVyKCkpOwogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVXAsIHR5cGVuYW1lIF9FcD4KIHR5cGVuYW1lCiBlbmFibGVfaWY8X19zYWZlX2NvbnZl
cnNpb248X1VwLCBfRXA+Ojp2YWx1ZSwgdW5pcXVlX3B0ciY+Ojp0eXBlCiBvcGVyYXRvcj0odW5p
cXVlX3B0cjxfVXAsIF9FcD4mJiBfX3UpIG5vZXhjZXB0CiB7CiAgIHJlc2V0KF9fdS5yZWxlYXNl
KCkpOwogICBnZXRfZGVsZXRlcigpID0gc3RkOjpmb3J3YXJkPF9FcD4oX191LmdldF9kZWxldGVy
KCkpOwogICByZXR1cm4gKnRoaXM7CiB9CgogICAgICB1bmlxdWVfcHRyJgogICAgICBvcGVyYXRv
cj0obnVsbHB0cl90KSBub2V4Y2VwdAogICAgICB7CiByZXNldCgpOwogcmV0dXJuICp0aGlzOwog
ICAgICB9CgoKICAgICAgdHlwZW5hbWUgc3RkOjphZGRfbHZhbHVlX3JlZmVyZW5jZTxlbGVtZW50
X3R5cGU+Ojp0eXBlCiAgICAgIG9wZXJhdG9yW10oc2l6ZV90IF9faSkgY29uc3QKICAgICAgewog
OwogcmV0dXJuIGdldCgpW19faV07CiAgICAgIH0KCiAgICAgIHBvaW50ZXIKICAgICAgZ2V0KCkg
Y29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gc3RkOjpnZXQ8MD4oX01fdCk7IH0KCiAgICAg
IGRlbGV0ZXJfdHlwZSYKICAgICAgZ2V0X2RlbGV0ZXIoKSBub2V4Y2VwdAogICAgICB7IHJldHVy
biBzdGQ6OmdldDwxPihfTV90KTsgfQoKICAgICAgY29uc3QgZGVsZXRlcl90eXBlJgogICAgICBn
ZXRfZGVsZXRlcigpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0ZDo6Z2V0PDE+KF9N
X3QpOyB9CgogICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Qgbm9leGNlcHQKICAg
ICAgeyByZXR1cm4gZ2V0KCkgPT0gcG9pbnRlcigpID8gZmFsc2UgOiB0cnVlOyB9CgoKICAgICAg
cG9pbnRlcgogICAgICByZWxlYXNlKCkgbm9leGNlcHQKICAgICAgewogcG9pbnRlciBfX3AgPSBn
ZXQoKTsKIHN0ZDo6Z2V0PDA+KF9NX3QpID0gcG9pbnRlcigpOwogcmV0dXJuIF9fcDsKICAgICAg
fQoKICAgICAgdm9pZAogICAgICByZXNldCgpIG5vZXhjZXB0CiAgICAgIHsgcmVzZXQocG9pbnRl
cigpKTsgfQoKICAgICAgdm9pZAogICAgICByZXNldChwb2ludGVyIF9fcCkgbm9leGNlcHQKICAg
ICAgewogdXNpbmcgc3RkOjpzd2FwOwogc3dhcChzdGQ6OmdldDwwPihfTV90KSwgX19wKTsKIGlm
IChfX3AgIT0gbnVsbHB0cikKICAgZ2V0X2RlbGV0ZXIoKShfX3ApOwogICAgICB9CgogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVXAsIHR5cGVuYW1lID0gX1JlcXVpcmU8aXNfcG9pbnRlcjxwb2lu
dGVyPiwKICAgICAgICBpc19jb252ZXJ0aWJsZTxfVXAqLCBwb2ludGVyPiwgX19pc19kZXJpdmVk
X1RwPF9VcD4+Pgogdm9pZCByZXNldChfVXAqKSA9IGRlbGV0ZTsKCiAgICAgIHZvaWQKICAgICAg
c3dhcCh1bmlxdWVfcHRyJiBfX3UpIG5vZXhjZXB0CiAgICAgIHsKIHVzaW5nIHN0ZDo6c3dhcDsK
IHN3YXAoX01fdCwgX191Ll9NX3QpOwogICAgICB9CgoKICAgICAgdW5pcXVlX3B0cihjb25zdCB1
bmlxdWVfcHRyJikgPSBkZWxldGU7CiAgICAgIHVuaXF1ZV9wdHImIG9wZXJhdG9yPShjb25zdCB1
bmlxdWVfcHRyJikgPSBkZWxldGU7CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VwLCB0eXBl
bmFtZSA9IF9SZXF1aXJlPGlzX3BvaW50ZXI8cG9pbnRlcj4sCiAgICAgICAgaXNfY29udmVydGli
bGU8X1VwKiwgcG9pbnRlcj4sIF9faXNfZGVyaXZlZF9UcDxfVXA+Pj4KIHVuaXF1ZV9wdHIoX1Vw
KiwgdHlwZW5hbWUKICAgICBjb25kaXRpb25hbDxpc19yZWZlcmVuY2U8ZGVsZXRlcl90eXBlPjo6
dmFsdWUsCiAgICAgZGVsZXRlcl90eXBlLCBjb25zdCBkZWxldGVyX3R5cGUmPjo6dHlwZSkgPSBk
ZWxldGU7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVXAsIHR5cGVuYW1lID0gX1JlcXVpcmU8
aXNfcG9pbnRlcjxwb2ludGVyPiwKICAgICAgICBpc19jb252ZXJ0aWJsZTxfVXAqLCBwb2ludGVy
PiwgX19pc19kZXJpdmVkX1RwPF9VcD4+PgogdW5pcXVlX3B0cihfVXAqLCB0eXBlbmFtZQogICAg
IHJlbW92ZV9yZWZlcmVuY2U8ZGVsZXRlcl90eXBlPjo6dHlwZSYmKSA9IGRlbGV0ZTsKICAgIH07
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0RwPgogICAgaW5saW5lIHZvaWQK
ICAgIHN3YXAodW5pcXVlX3B0cjxfVHAsIF9EcD4mIF9feCwKICB1bmlxdWVfcHRyPF9UcCwgX0Rw
PiYgX195KSBub2V4Y2VwdAogICAgeyBfX3guc3dhcChfX3kpOyB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcCwgdHlwZW5hbWUgX0RwLAogICAgdHlwZW5hbWUgX1VwLCB0eXBlbmFtZSBfRXA+CiAg
ICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I9PShjb25zdCB1bmlxdWVfcHRyPF9UcCwgX0RwPiYg
X194LAogICAgICAgIGNvbnN0IHVuaXF1ZV9wdHI8X1VwLCBfRXA+JiBfX3kpCiAgICB7IHJldHVy
biBfX3guZ2V0KCkgPT0gX195LmdldCgpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlw
ZW5hbWUgX0RwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3QgdW5pcXVlX3B0
cjxfVHAsIF9EcD4mIF9feCwgbnVsbHB0cl90KSBub2V4Y2VwdAogICAgeyByZXR1cm4gIV9feDsg
fQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9EcD4KICAgIGlubGluZSBib29s
CiAgICBvcGVyYXRvcj09KG51bGxwdHJfdCwgY29uc3QgdW5pcXVlX3B0cjxfVHAsIF9EcD4mIF9f
eCkgbm9leGNlcHQKICAgIHsgcmV0dXJuICFfX3g7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
LCB0eXBlbmFtZSBfRHAsCiAgICB0eXBlbmFtZSBfVXAsIHR5cGVuYW1lIF9FcD4KICAgIGlubGlu
ZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IHVuaXF1ZV9wdHI8X1RwLCBfRHA+JiBfX3gsCiAg
ICAgICAgY29uc3QgdW5pcXVlX3B0cjxfVXAsIF9FcD4mIF9feSkKICAgIHsgcmV0dXJuIF9feC5n
ZXQoKSAhPSBfX3kuZ2V0KCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBf
RHA+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25zdCB1bmlxdWVfcHRyPF9UcCwg
X0RwPiYgX194LCBudWxscHRyX3QpIG5vZXhjZXB0CiAgICB7IHJldHVybiAoYm9vbClfX3g7IH0K
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfRHA+CiAgICBpbmxpbmUgYm9vbAog
ICAgb3BlcmF0b3IhPShudWxscHRyX3QsIGNvbnN0IHVuaXF1ZV9wdHI8X1RwLCBfRHA+JiBfX3gp
IG5vZXhjZXB0CiAgICB7IHJldHVybiAoYm9vbClfX3g7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwLCB0eXBlbmFtZSBfRHAsCiAgICB0eXBlbmFtZSBfVXAsIHR5cGVuYW1lIF9FcD4KICAgIGlu
bGluZSBib29sCiAgICBvcGVyYXRvcjwoY29uc3QgdW5pcXVlX3B0cjxfVHAsIF9EcD4mIF9feCwK
ICAgICAgIGNvbnN0IHVuaXF1ZV9wdHI8X1VwLCBfRXA+JiBfX3kpCiAgICB7CiAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUKIHN0ZDo6Y29tbW9uX3R5cGU8dHlwZW5hbWUgdW5pcXVlX3B0cjxfVHAsIF9E
cD46OnBvaW50ZXIsCiAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHVuaXF1ZV9wdHI8X1VwLCBf
RXA+Ojpwb2ludGVyPjo6dHlwZSBfQ1Q7CiAgICAgIHJldHVybiBzdGQ6Omxlc3M8X0NUPigpKF9f
eC5nZXQoKSwgX195LmdldCgpKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBl
bmFtZSBfRHA+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IHVuaXF1ZV9wdHI8
X1RwLCBfRHA+JiBfX3gsIG51bGxwdHJfdCkKICAgIHsgcmV0dXJuIHN0ZDo6bGVzczx0eXBlbmFt
ZSB1bmlxdWVfcHRyPF9UcCwgX0RwPjo6cG9pbnRlcj4oKShfX3guZ2V0KCksCiAgICAgICAgIG51
bGxwdHIpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0RwPgogICAgaW5s
aW5lIGJvb2wKICAgIG9wZXJhdG9yPChudWxscHRyX3QsIGNvbnN0IHVuaXF1ZV9wdHI8X1RwLCBf
RHA+JiBfX3gpCiAgICB7IHJldHVybiBzdGQ6Omxlc3M8dHlwZW5hbWUgdW5pcXVlX3B0cjxfVHAs
IF9EcD46OnBvaW50ZXI+KCkobnVsbHB0ciwKICAgICAgICAgX194LmdldCgpKTsgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9EcCwKICAgIHR5cGVuYW1lIF9VcCwgdHlwZW5h
bWUgX0VwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPD0oY29uc3QgdW5pcXVlX3B0cjxf
VHAsIF9EcD4mIF9feCwKICAgICAgICBjb25zdCB1bmlxdWVfcHRyPF9VcCwgX0VwPiYgX195KQog
ICAgeyByZXR1cm4gIShfX3kgPCBfX3gpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlw
ZW5hbWUgX0RwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPD0oY29uc3QgdW5pcXVlX3B0
cjxfVHAsIF9EcD4mIF9feCwgbnVsbHB0cl90KQogICAgeyByZXR1cm4gIShudWxscHRyIDwgX194
KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9EcD4KICAgIGlubGluZSBi
b29sCiAgICBvcGVyYXRvcjw9KG51bGxwdHJfdCwgY29uc3QgdW5pcXVlX3B0cjxfVHAsIF9EcD4m
IF9feCkKICAgIHsgcmV0dXJuICEoX194IDwgbnVsbHB0cik7IH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwLCB0eXBlbmFtZSBfRHAsCiAgICB0eXBlbmFtZSBfVXAsIHR5cGVuYW1lIF9FcD4KICAg
IGlubGluZSBib29sCiAgICBvcGVyYXRvcj4oY29uc3QgdW5pcXVlX3B0cjxfVHAsIF9EcD4mIF9f
eCwKICAgICAgIGNvbnN0IHVuaXF1ZV9wdHI8X1VwLCBfRXA+JiBfX3kpCiAgICB7IHJldHVybiAo
X195IDwgX194KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9EcD4KICAg
IGlubGluZSBib29sCiAgICBvcGVyYXRvcj4oY29uc3QgdW5pcXVlX3B0cjxfVHAsIF9EcD4mIF9f
eCwgbnVsbHB0cl90KQogICAgeyByZXR1cm4gc3RkOjpsZXNzPHR5cGVuYW1lIHVuaXF1ZV9wdHI8
X1RwLCBfRHA+Ojpwb2ludGVyPigpKG51bGxwdHIsCiAgICAgICAgIF9feC5nZXQoKSk7IH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfRHA+CiAgICBpbmxpbmUgYm9vbAogICAg
b3BlcmF0b3I+KG51bGxwdHJfdCwgY29uc3QgdW5pcXVlX3B0cjxfVHAsIF9EcD4mIF9feCkKICAg
IHsgcmV0dXJuIHN0ZDo6bGVzczx0eXBlbmFtZSB1bmlxdWVfcHRyPF9UcCwgX0RwPjo6cG9pbnRl
cj4oKShfX3guZ2V0KCksCiAgICAgICAgIG51bGxwdHIpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcCwgdHlwZW5hbWUgX0RwLAogICAgdHlwZW5hbWUgX1VwLCB0eXBlbmFtZSBfRXA+CiAgICBp
bmxpbmUgYm9vbAogICAgb3BlcmF0b3I+PShjb25zdCB1bmlxdWVfcHRyPF9UcCwgX0RwPiYgX194
LAogICAgICAgIGNvbnN0IHVuaXF1ZV9wdHI8X1VwLCBfRXA+JiBfX3kpCiAgICB7IHJldHVybiAh
KF9feCA8IF9feSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfRHA+CiAg
ICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I+PShjb25zdCB1bmlxdWVfcHRyPF9UcCwgX0RwPiYg
X194LCBudWxscHRyX3QpCiAgICB7IHJldHVybiAhKF9feCA8IG51bGxwdHIpOyB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0RwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJh
dG9yPj0obnVsbHB0cl90LCBjb25zdCB1bmlxdWVfcHRyPF9UcCwgX0RwPiYgX194KQogICAgeyBy
ZXR1cm4gIShudWxscHRyIDwgX194KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBl
bmFtZSBfRHA+CiAgICBzdHJ1Y3QgaGFzaDx1bmlxdWVfcHRyPF9UcCwgX0RwPj4KICAgIDogcHVi
bGljIF9faGFzaF9iYXNlPHNpemVfdCwgdW5pcXVlX3B0cjxfVHAsIF9EcD4+CiAgICB7CiAgICAg
IHNpemVfdAogICAgICBvcGVyYXRvcigpKGNvbnN0IHVuaXF1ZV9wdHI8X1RwLCBfRHA+JiBfX3Up
IGNvbnN0IG5vZXhjZXB0CiAgICAgIHsKIHR5cGVkZWYgdW5pcXVlX3B0cjxfVHAsIF9EcD4gX1VQ
OwogcmV0dXJuIHN0ZDo6aGFzaDx0eXBlbmFtZSBfVVA6OnBvaW50ZXI+KCkoX191LmdldCgpKTsK
ICAgICAgfQogICAgfTsKCgoKCn0KIyA4MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOC4xL21lbW9yeSIgMiAzCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc2hhcmVkX3B0ci5oIiAxIDMKIyA1MiAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc2hh
cmVkX3B0ci5oIiAzCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOC4xL2JpdHMvc2hhcmVkX3B0cl9iYXNlLmgiIDEgMwojIDUyICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zaGFyZWRfcHRyX2Jhc2Uu
aCIgMwpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1
bHQiKSkpCnsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgYXV0b19wdHI7CgoKCgoKCiAg
Y2xhc3MgYmFkX3dlYWtfcHRyIDogcHVibGljIHN0ZDo6ZXhjZXB0aW9uCiAgewogIHB1YmxpYzoK
ICAgIHZpcnR1YWwgY2hhciBjb25zdCoKICAgIHdoYXQoKSBjb25zdCBub2V4Y2VwdDsKCiAgICB2
aXJ0dWFsIH5iYWRfd2Vha19wdHIoKSBub2V4Y2VwdDsKICB9OwoKCiAgaW5saW5lIHZvaWQKICBf
X3Rocm93X2JhZF93ZWFrX3B0cigpCiAgeyAoX19idWlsdGluX2Fib3J0KCkpOyB9CgogIHVzaW5n
IF9fZ251X2N4eDo6X0xvY2tfcG9saWN5OwogIHVzaW5nIF9fZ251X2N4eDo6X19kZWZhdWx0X2xv
Y2tfcG9saWN5OwogIHVzaW5nIF9fZ251X2N4eDo6X1Nfc2luZ2xlOwogIHVzaW5nIF9fZ251X2N4
eDo6X1NfbXV0ZXg7CiAgdXNpbmcgX19nbnVfY3h4OjpfU19hdG9taWM7CgoKICB0ZW1wbGF0ZTxf
TG9ja19wb2xpY3kgX0xwPgogICAgY2xhc3MgX011dGV4X2Jhc2UKICAgIHsKICAgIHByb3RlY3Rl
ZDoKCiAgICAgIGVudW0geyBfU19uZWVkX2JhcnJpZXJzID0gMCB9OwogICAgfTsKCiAgdGVtcGxh
dGU8PgogICAgY2xhc3MgX011dGV4X2Jhc2U8X1NfbXV0ZXg+CiAgICA6IHB1YmxpYyBfX2dudV9j
eHg6Ol9fbXV0ZXgKICAgIHsKICAgIHByb3RlY3RlZDoKCgoKICAgICAgZW51bSB7IF9TX25lZWRf
YmFycmllcnMgPSAxIH07CiAgICB9OwoKICB0ZW1wbGF0ZTxfTG9ja19wb2xpY3kgX0xwID0gX19k
ZWZhdWx0X2xvY2tfcG9saWN5PgogICAgY2xhc3MgX1NwX2NvdW50ZWRfYmFzZQogICAgOiBwdWJs
aWMgX011dGV4X2Jhc2U8X0xwPgogICAgewogICAgcHVibGljOgogICAgICBfU3BfY291bnRlZF9i
YXNlKCkgbm9leGNlcHQKICAgICAgOiBfTV91c2VfY291bnQoMSksIF9NX3dlYWtfY291bnQoMSkg
eyB9CgogICAgICB2aXJ0dWFsCiAgICAgIH5fU3BfY291bnRlZF9iYXNlKCkgbm9leGNlcHQKICAg
ICAgeyB9CgoKCiAgICAgIHZpcnR1YWwgdm9pZAogICAgICBfTV9kaXNwb3NlKCkgbm9leGNlcHQg
PSAwOwoKCiAgICAgIHZpcnR1YWwgdm9pZAogICAgICBfTV9kZXN0cm95KCkgbm9leGNlcHQKICAg
ICAgeyBkZWxldGUgdGhpczsgfQoKICAgICAgdmlydHVhbCB2b2lkKgogICAgICBfTV9nZXRfZGVs
ZXRlcihjb25zdCBzdGQ6OnR5cGVfaW5mbyYpID0gMDsKCiAgICAgIHZvaWQKICAgICAgX01fYWRk
X3JlZl9jb3B5KCkKICAgICAgeyBfX2dudV9jeHg6Ol9fYXRvbWljX2FkZF9kaXNwYXRjaCgmX01f
dXNlX2NvdW50LCAxKTsgfQoKICAgICAgdm9pZAogICAgICBfTV9hZGRfcmVmX2xvY2soKTsKCiAg
ICAgIHZvaWQKICAgICAgX01fcmVsZWFzZSgpIG5vZXhjZXB0CiAgICAgIHsKCiAgICAgICAgOwog
aWYgKF9fZ251X2N4eDo6X19leGNoYW5nZV9hbmRfYWRkX2Rpc3BhdGNoKCZfTV91c2VfY291bnQs
IC0xKSA9PSAxKQogICB7CiAgICAgICAgICAgIDsKICAgICBfTV9kaXNwb3NlKCk7CgoKCgogICAg
IGlmIChfTXV0ZXhfYmFzZTxfTHA+OjpfU19uZWVkX2JhcnJpZXJzKQogICAgICAgewogICAgICAg
ICBfX2FzbSBfX3ZvbGF0aWxlICgiIjo6OiJtZW1vcnkiKTsKICAgICAgICAgX19hc20gX192b2xh
dGlsZSAoIiI6OjoibWVtb3J5Iik7CiAgICAgICB9CgoKICAgICAgICAgICAgOwogICAgIGlmIChf
X2dudV9jeHg6Ol9fZXhjaGFuZ2VfYW5kX2FkZF9kaXNwYXRjaCgmX01fd2Vha19jb3VudCwKICAg
ICAgICAgICAgIC0xKSA9PSAxKQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIDsKICAg
ICAgICAgX01fZGVzdHJveSgpOwogICAgICAgICAgICAgIH0KICAgfQogICAgICB9CgogICAgICB2
b2lkCiAgICAgIF9NX3dlYWtfYWRkX3JlZigpIG5vZXhjZXB0CiAgICAgIHsgX19nbnVfY3h4Ojpf
X2F0b21pY19hZGRfZGlzcGF0Y2goJl9NX3dlYWtfY291bnQsIDEpOyB9CgogICAgICB2b2lkCiAg
ICAgIF9NX3dlYWtfcmVsZWFzZSgpIG5vZXhjZXB0CiAgICAgIHsKCiAgICAgICAgOwogaWYgKF9f
Z251X2N4eDo6X19leGNoYW5nZV9hbmRfYWRkX2Rpc3BhdGNoKCZfTV93ZWFrX2NvdW50LCAtMSkg
PT0gMSkKICAgewogICAgICAgICAgICA7CiAgICAgaWYgKF9NdXRleF9iYXNlPF9McD46Ol9TX25l
ZWRfYmFycmllcnMpCiAgICAgICB7CgoKICAgICAgICAgX19hc20gX192b2xhdGlsZSAoIiI6Ojoi
bWVtb3J5Iik7CiAgICAgICAgIF9fYXNtIF9fdm9sYXRpbGUgKCIiOjo6Im1lbW9yeSIpOwogICAg
ICAgfQogICAgIF9NX2Rlc3Ryb3koKTsKICAgfQogICAgICB9CgogICAgICBsb25nCiAgICAgIF9N
X2dldF91c2VfY291bnQoKSBjb25zdCBub2V4Y2VwdAogICAgICB7CgoKICAgICAgICByZXR1cm4g
X19hdG9taWNfbG9hZF9uKCZfTV91c2VfY291bnQsIDApOwogICAgICB9CgogICAgcHJpdmF0ZToK
ICAgICAgX1NwX2NvdW50ZWRfYmFzZShfU3BfY291bnRlZF9iYXNlIGNvbnN0JikgPSBkZWxldGU7
CiAgICAgIF9TcF9jb3VudGVkX2Jhc2UmIG9wZXJhdG9yPShfU3BfY291bnRlZF9iYXNlIGNvbnN0
JikgPSBkZWxldGU7CgogICAgICBfQXRvbWljX3dvcmQgX01fdXNlX2NvdW50OwogICAgICBfQXRv
bWljX3dvcmQgX01fd2Vha19jb3VudDsKICAgIH07CgogIHRlbXBsYXRlPD4KICAgIGlubGluZSB2
b2lkCiAgICBfU3BfY291bnRlZF9iYXNlPF9TX3NpbmdsZT46OgogICAgX01fYWRkX3JlZl9sb2Nr
KCkKICAgIHsKICAgICAgaWYgKF9fZ251X2N4eDo6X19leGNoYW5nZV9hbmRfYWRkX2Rpc3BhdGNo
KCZfTV91c2VfY291bnQsIDEpID09IDApCiB7CiAgIF9NX3VzZV9jb3VudCA9IDA7CiAgIF9fdGhy
b3dfYmFkX3dlYWtfcHRyKCk7CiB9CiAgICB9CgogIHRlbXBsYXRlPD4KICAgIGlubGluZSB2b2lk
CiAgICBfU3BfY291bnRlZF9iYXNlPF9TX211dGV4Pjo6CiAgICBfTV9hZGRfcmVmX2xvY2soKQog
ICAgewogICAgICBfX2dudV9jeHg6Ol9fc2NvcGVkX2xvY2sgc2VudHJ5KCp0aGlzKTsKICAgICAg
aWYgKF9fZ251X2N4eDo6X19leGNoYW5nZV9hbmRfYWRkX2Rpc3BhdGNoKCZfTV91c2VfY291bnQs
IDEpID09IDApCiB7CiAgIF9NX3VzZV9jb3VudCA9IDA7CiAgIF9fdGhyb3dfYmFkX3dlYWtfcHRy
KCk7CiB9CiAgICB9CgogIHRlbXBsYXRlPD4KICAgIGlubGluZSB2b2lkCiAgICBfU3BfY291bnRl
ZF9iYXNlPF9TX2F0b21pYz46OgogICAgX01fYWRkX3JlZl9sb2NrKCkKICAgIHsKCiAgICAgIF9B
dG9taWNfd29yZCBfX2NvdW50ID0gX01fdXNlX2NvdW50OwogICAgICBkbwogewogICBpZiAoX19j
b3VudCA9PSAwKQogICAgIF9fdGhyb3dfYmFkX3dlYWtfcHRyKCk7CgoKIH0KICAgICAgd2hpbGUg
KCFfX2F0b21pY19jb21wYXJlX2V4Y2hhbmdlX24oJl9NX3VzZV9jb3VudCwgJl9fY291bnQsIF9f
Y291bnQgKyAxLAogICAgICAgdHJ1ZSwgNCwKICAgICAgIDApKTsKICAgIH0KCgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHAsIF9Mb2NrX3BvbGljeSBfTHAgPSBfX2RlZmF1bHRfbG9ja19wb2xpY3k+
CiAgICBjbGFzcyBfX3NoYXJlZF9wdHI7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgX0xvY2tf
cG9saWN5IF9McCA9IF9fZGVmYXVsdF9sb2NrX3BvbGljeT4KICAgIGNsYXNzIF9fd2Vha19wdHI7
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgX0xvY2tfcG9saWN5IF9McCA9IF9fZGVmYXVsdF9s
b2NrX3BvbGljeT4KICAgIGNsYXNzIF9fZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXM7CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4KICAgIGNsYXNzIHNoYXJlZF9wdHI7CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4KICAgIGNsYXNzIHdlYWtfcHRyOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBzdHJ1Y3Qgb3duZXJfbGVzczsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY2xhc3Mg
ZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXM7CgogIHRlbXBsYXRlPF9Mb2NrX3BvbGljeSBfTHAgPSBf
X2RlZmF1bHRfbG9ja19wb2xpY3k+CiAgICBjbGFzcyBfX3dlYWtfY291bnQ7CgogIHRlbXBsYXRl
PF9Mb2NrX3BvbGljeSBfTHAgPSBfX2RlZmF1bHRfbG9ja19wb2xpY3k+CiAgICBjbGFzcyBfX3No
YXJlZF9jb3VudDsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUHRyLCBfTG9ja19wb2xpY3kgX0xw
PgogICAgY2xhc3MgX1NwX2NvdW50ZWRfcHRyIGZpbmFsIDogcHVibGljIF9TcF9jb3VudGVkX2Jh
c2U8X0xwPgogICAgewogICAgcHVibGljOgogICAgICBleHBsaWNpdAogICAgICBfU3BfY291bnRl
ZF9wdHIoX1B0ciBfX3ApCiAgICAgIDogX01fcHRyKF9fcCkgeyB9CgogICAgICB2aXJ0dWFsIHZv
aWQKICAgICAgX01fZGlzcG9zZSgpIG5vZXhjZXB0CiAgICAgIHsgZGVsZXRlIF9NX3B0cjsgfQoK
ICAgICAgdmlydHVhbCB2b2lkCiAgICAgIF9NX2Rlc3Ryb3koKSBub2V4Y2VwdAogICAgICB7IGRl
bGV0ZSB0aGlzOyB9CgogICAgICB2aXJ0dWFsIHZvaWQqCiAgICAgIF9NX2dldF9kZWxldGVyKGNv
bnN0IHN0ZDo6dHlwZV9pbmZvJikKICAgICAgeyByZXR1cm4gMDsgfQoKICAgICAgX1NwX2NvdW50
ZWRfcHRyKGNvbnN0IF9TcF9jb3VudGVkX3B0ciYpID0gZGVsZXRlOwogICAgICBfU3BfY291bnRl
ZF9wdHImIG9wZXJhdG9yPShjb25zdCBfU3BfY291bnRlZF9wdHImKSA9IGRlbGV0ZTsKCiAgICBw
cm90ZWN0ZWQ6CiAgICAgIF9QdHIgX01fcHRyOwogICAgfTsKCiAgdGVtcGxhdGU8PgogICAgaW5s
aW5lIHZvaWQKICAgIF9TcF9jb3VudGVkX3B0cjxudWxscHRyX3QsIF9TX3NpbmdsZT46Ol9NX2Rp
c3Bvc2UoKSBub2V4Y2VwdCB7IH0KCiAgdGVtcGxhdGU8PgogICAgaW5saW5lIHZvaWQKICAgIF9T
cF9jb3VudGVkX3B0cjxudWxscHRyX3QsIF9TX211dGV4Pjo6X01fZGlzcG9zZSgpIG5vZXhjZXB0
IHsgfQoKICB0ZW1wbGF0ZTw+CiAgICBpbmxpbmUgdm9pZAogICAgX1NwX2NvdW50ZWRfcHRyPG51
bGxwdHJfdCwgX1NfYXRvbWljPjo6X01fZGlzcG9zZSgpIG5vZXhjZXB0IHsgfQoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1B0ciwgdHlwZW5hbWUgX0RlbGV0ZXIsIHR5cGVuYW1lIF9BbGxvYywgX0xv
Y2tfcG9saWN5IF9McD4KICAgIGNsYXNzIF9TcF9jb3VudGVkX2RlbGV0ZXIgZmluYWwgOiBwdWJs
aWMgX1NwX2NvdW50ZWRfYmFzZTxfTHA+CiAgICB7CgoKCiAgICAgIHN0cnVjdCBfTXlfRGVsZXRl
cgogICAgICA6IHB1YmxpYyBfQWxsb2MKICAgICAgewogX0RlbGV0ZXIgX01fZGVsOwogX015X0Rl
bGV0ZXIoX0RlbGV0ZXIgX19kLCBjb25zdCBfQWxsb2MmIF9fYSkKIDogX0FsbG9jKF9fYSksIF9N
X2RlbChfX2QpIHsgfQogICAgICB9OwoKICAgIHB1YmxpYzoKCiAgICAgIF9TcF9jb3VudGVkX2Rl
bGV0ZXIoX1B0ciBfX3AsIF9EZWxldGVyIF9fZCkKICAgICAgOiBfTV9wdHIoX19wKSwgX01fZGVs
KF9fZCwgX0FsbG9jKCkpIHsgfQoKCiAgICAgIF9TcF9jb3VudGVkX2RlbGV0ZXIoX1B0ciBfX3As
IF9EZWxldGVyIF9fZCwgY29uc3QgX0FsbG9jJiBfX2EpCiAgICAgIDogX01fcHRyKF9fcCksIF9N
X2RlbChfX2QsIF9fYSkgeyB9CgogICAgICB+X1NwX2NvdW50ZWRfZGVsZXRlcigpIG5vZXhjZXB0
IHsgfQoKICAgICAgdmlydHVhbCB2b2lkCiAgICAgIF9NX2Rpc3Bvc2UoKSBub2V4Y2VwdAogICAg
ICB7IF9NX2RlbC5fTV9kZWwoX01fcHRyKTsgfQoKICAgICAgdmlydHVhbCB2b2lkCiAgICAgIF9N
X2Rlc3Ryb3koKSBub2V4Y2VwdAogICAgICB7CiB0eXBlZGVmIHR5cGVuYW1lIGFsbG9jYXRvcl90
cmFpdHM8X0FsbG9jPjo6dGVtcGxhdGUKICAgcmViaW5kX3RyYWl0czxfU3BfY291bnRlZF9kZWxl
dGVyPiBfQWxsb2NfdHJhaXRzOwogdHlwZW5hbWUgX0FsbG9jX3RyYWl0czo6YWxsb2NhdG9yX3R5
cGUgX19hKF9NX2RlbCk7CiBfQWxsb2NfdHJhaXRzOjpkZXN0cm95KF9fYSwgdGhpcyk7CiBfQWxs
b2NfdHJhaXRzOjpkZWFsbG9jYXRlKF9fYSwgdGhpcywgMSk7CiAgICAgIH0KCiAgICAgIHZpcnR1
YWwgdm9pZCoKICAgICAgX01fZ2V0X2RlbGV0ZXIoY29uc3Qgc3RkOjp0eXBlX2luZm8mIF9fdGkp
CiAgICAgIHsKCgoKICAgICAgICByZXR1cm4gMDsKCiAgICAgIH0KCiAgICBwcm90ZWN0ZWQ6CiAg
ICAgIF9QdHIgX01fcHRyOwogICAgICBfTXlfRGVsZXRlciBfTV9kZWw7CiAgICB9OwoKCgogIHN0
cnVjdCBfU3BfbWFrZV9zaGFyZWRfdGFnIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0
eXBlbmFtZSBfQWxsb2MsIF9Mb2NrX3BvbGljeSBfTHA+CiAgICBjbGFzcyBfU3BfY291bnRlZF9w
dHJfaW5wbGFjZSBmaW5hbCA6IHB1YmxpYyBfU3BfY291bnRlZF9iYXNlPF9McD4KICAgIHsKCgoK
ICAgICAgc3RydWN0IF9JbXBsCiAgICAgIDogcHVibGljIF9BbGxvYwogICAgICB7CiBfSW1wbChf
QWxsb2MgX19hKSA6IF9BbGxvYyhfX2EpLCBfTV9wdHIoKSB7IH0KIF9UcCogX01fcHRyOwogICAg
ICB9OwoKICAgIHB1YmxpYzoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3M+CiBfU3Bf
Y291bnRlZF9wdHJfaW5wbGFjZShfQWxsb2MgX19hLCBfQXJncyYmLi4uIF9fYXJncykKIDogX01f
aW1wbChfX2EpLCBfTV9zdG9yYWdlKCkKIHsKICAgX01faW1wbC5fTV9wdHIgPSBzdGF0aWNfY2Fz
dDxfVHAqPihzdGF0aWNfY2FzdDx2b2lkKj4oJl9NX3N0b3JhZ2UpKTsKCgogICBhbGxvY2F0b3Jf
dHJhaXRzPF9BbGxvYz46OmNvbnN0cnVjdChfX2EsIF9NX2ltcGwuX01fcHRyLAogICAgICAgc3Rk
Ojpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsKIH0KCiAgICAgIH5fU3BfY291bnRlZF9wdHJf
aW5wbGFjZSgpIG5vZXhjZXB0IHsgfQoKICAgICAgdmlydHVhbCB2b2lkCiAgICAgIF9NX2Rpc3Bv
c2UoKSBub2V4Y2VwdAogICAgICB7IGFsbG9jYXRvcl90cmFpdHM8X0FsbG9jPjo6ZGVzdHJveShf
TV9pbXBsLCBfTV9pbXBsLl9NX3B0cik7IH0KCgogICAgICB2aXJ0dWFsIHZvaWQKICAgICAgX01f
ZGVzdHJveSgpIG5vZXhjZXB0CiAgICAgIHsKIHR5cGVkZWYgdHlwZW5hbWUgYWxsb2NhdG9yX3Ry
YWl0czxfQWxsb2M+Ojp0ZW1wbGF0ZQogICByZWJpbmRfdHJhaXRzPF9TcF9jb3VudGVkX3B0cl9p
bnBsYWNlPiBfQWxsb2NfdHJhaXRzOwogdHlwZW5hbWUgX0FsbG9jX3RyYWl0czo6YWxsb2NhdG9y
X3R5cGUgX19hKF9NX2ltcGwpOwogX0FsbG9jX3RyYWl0czo6ZGVzdHJveShfX2EsIHRoaXMpOwog
X0FsbG9jX3RyYWl0czo6ZGVhbGxvY2F0ZShfX2EsIHRoaXMsIDEpOwogICAgICB9CgoKICAgICAg
dmlydHVhbCB2b2lkKgogICAgICBfTV9nZXRfZGVsZXRlcihjb25zdCBzdGQ6OnR5cGVfaW5mbyYg
X190aSkgbm9leGNlcHQKICAgICAgewoKCgoKCiAgICAgICAgcmV0dXJuIDA7CgogICAgICB9Cgog
ICAgcHJpdmF0ZToKICAgICAgX0ltcGwgX01faW1wbDsKICAgICAgdHlwZW5hbWUgYWxpZ25lZF9z
dG9yYWdlPHNpemVvZihfVHApLCBhbGlnbm1lbnRfb2Y8X1RwPjo6dmFsdWU+Ojp0eXBlCiBfTV9z
dG9yYWdlOwogICAgfTsKCiAgdGVtcGxhdGU8X0xvY2tfcG9saWN5IF9McD4KICAgIGNsYXNzIF9f
c2hhcmVkX2NvdW50CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIGNvbnN0ZXhwciBfX3NoYXJlZF9j
b3VudCgpIG5vZXhjZXB0IDogX01fcGkoMCkKICAgICAgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUHRyPgogICAgICAgIGV4cGxpY2l0CiBfX3NoYXJlZF9jb3VudChfUHRyIF9fcCkgOiBf
TV9waSgwKQogewogICBpZiAodHJ1ZSkKICAgICB7CiAgICAgICBfTV9waSA9IG5ldyBfU3BfY291
bnRlZF9wdHI8X1B0ciwgX0xwPihfX3ApOwogICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsKICAg
ICAgIGRlbGV0ZSBfX3A7CiAgICAgICA7CiAgICAgfQogfQoKICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgX1B0ciwgdHlwZW5hbWUgX0RlbGV0ZXI+CiBfX3NoYXJlZF9jb3VudChfUHRyIF9fcCwgX0Rl
bGV0ZXIgX19kKSA6IF9NX3BpKDApCiB7CgogICB0eXBlZGVmIHN0ZDo6YWxsb2NhdG9yPGludD4g
X0FsbG9jOwogICB0eXBlZGVmIF9TcF9jb3VudGVkX2RlbGV0ZXI8X1B0ciwgX0RlbGV0ZXIsIF9B
bGxvYywgX0xwPiBfU3BfY2RfdHlwZTsKICAgdHlwZWRlZiB0eXBlbmFtZSBhbGxvY2F0b3JfdHJh
aXRzPF9BbGxvYz46OnRlbXBsYXRlCiAgICAgcmViaW5kX3RyYWl0czxfU3BfY2RfdHlwZT4gX0Fs
bG9jX3RyYWl0czsKICAgdHlwZW5hbWUgX0FsbG9jX3RyYWl0czo6YWxsb2NhdG9yX3R5cGUgX19h
OwogICBfU3BfY2RfdHlwZSogX19tZW0gPSAwOwogICBpZiAodHJ1ZSkKICAgICB7CiAgICAgICBf
X21lbSA9IF9BbGxvY190cmFpdHM6OmFsbG9jYXRlKF9fYSwgMSk7CiAgICAgICBfQWxsb2NfdHJh
aXRzOjpjb25zdHJ1Y3QoX19hLCBfX21lbSwgX19wLCBzdGQ6Om1vdmUoX19kKSk7CiAgICAgICBf
TV9waSA9IF9fbWVtOwogICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsKICAgICAgIF9fZChfX3Ap
OwogICAgICAgaWYgKF9fbWVtKQogICAgICAgICBfQWxsb2NfdHJhaXRzOjpkZWFsbG9jYXRlKF9f
YSwgX19tZW0sIDEpOwogICAgICAgOwogICAgIH0KIH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IF9QdHIsIHR5cGVuYW1lIF9EZWxldGVyLCB0eXBlbmFtZSBfQWxsb2M+CiBfX3NoYXJlZF9jb3Vu
dChfUHRyIF9fcCwgX0RlbGV0ZXIgX19kLCBfQWxsb2MgX19hKSA6IF9NX3BpKDApCiB7CiAgIHR5
cGVkZWYgX1NwX2NvdW50ZWRfZGVsZXRlcjxfUHRyLCBfRGVsZXRlciwgX0FsbG9jLCBfTHA+IF9T
cF9jZF90eXBlOwogICB0eXBlZGVmIHR5cGVuYW1lIGFsbG9jYXRvcl90cmFpdHM8X0FsbG9jPjo6
dGVtcGxhdGUKICAgICByZWJpbmRfdHJhaXRzPF9TcF9jZF90eXBlPiBfQWxsb2NfdHJhaXRzOwog
ICB0eXBlbmFtZSBfQWxsb2NfdHJhaXRzOjphbGxvY2F0b3JfdHlwZSBfX2EyKF9fYSk7CiAgIF9T
cF9jZF90eXBlKiBfX21lbSA9IDA7CiAgIGlmICh0cnVlKQogICAgIHsKICAgICAgIF9fbWVtID0g
X0FsbG9jX3RyYWl0czo6YWxsb2NhdGUoX19hMiwgMSk7CiAgICAgICBfQWxsb2NfdHJhaXRzOjpj
b25zdHJ1Y3QoX19hMiwgX19tZW0sCiAgICBfX3AsIHN0ZDo6bW92ZShfX2QpLCBzdGQ6Om1vdmUo
X19hKSk7CiAgICAgICBfTV9waSA9IF9fbWVtOwogICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsK
ICAgICAgIF9fZChfX3ApOwogICAgICAgaWYgKF9fbWVtKQogICAgICAgICBfQWxsb2NfdHJhaXRz
OjpkZWFsbG9jYXRlKF9fYTIsIF9fbWVtLCAxKTsKICAgICAgIDsKICAgICB9CiB9CgogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYywgdHlwZW5hbWUuLi4gX0FyZ3M+
CiBfX3NoYXJlZF9jb3VudChfU3BfbWFrZV9zaGFyZWRfdGFnLCBfVHAqLCBjb25zdCBfQWxsb2Mm
IF9fYSwKICAgICAgICAgX0FyZ3MmJi4uLiBfX2FyZ3MpCiA6IF9NX3BpKDApCiB7CiAgIHR5cGVk
ZWYgX1NwX2NvdW50ZWRfcHRyX2lucGxhY2U8X1RwLCBfQWxsb2MsIF9McD4gX1NwX2NwX3R5cGU7
CiAgIHR5cGVkZWYgdHlwZW5hbWUgYWxsb2NhdG9yX3RyYWl0czxfQWxsb2M+Ojp0ZW1wbGF0ZQog
ICAgIHJlYmluZF90cmFpdHM8X1NwX2NwX3R5cGU+IF9BbGxvY190cmFpdHM7CiAgIHR5cGVuYW1l
IF9BbGxvY190cmFpdHM6OmFsbG9jYXRvcl90eXBlIF9fYTIoX19hKTsKICAgX1NwX2NwX3R5cGUq
IF9fbWVtID0gX0FsbG9jX3RyYWl0czo6YWxsb2NhdGUoX19hMiwgMSk7CiAgIGlmICh0cnVlKQog
ICAgIHsKICAgICAgIF9BbGxvY190cmFpdHM6OmNvbnN0cnVjdChfX2EyLCBfX21lbSwgc3RkOjpt
b3ZlKF9fYSksCiAgICAgIHN0ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLik7CiAgICAgICBf
TV9waSA9IF9fbWVtOwogICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsKICAgICAgIF9BbGxvY190
cmFpdHM6OmRlYWxsb2NhdGUoX19hMiwgX19tZW0sIDEpOwogICAgICAgOwogICAgIH0KIH0KCgoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgICAgIGV4cGxpY2l0CiBfX3NoYXJlZF9j
b3VudChzdGQ6OmF1dG9fcHRyPF9UcD4mJiBfX3IpOwoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHAsIHR5cGVuYW1lIF9EZWw+CiAgICAgICAgZXhwbGljaXQKIF9fc2hhcmVkX2NvdW50KHN0
ZDo6dW5pcXVlX3B0cjxfVHAsIF9EZWw+JiYgX19yKQogOiBfTV9waShfU19jcmVhdGVfZnJvbV91
cChzdGQ6Om1vdmUoX19yKSkpCiB7IF9fci5yZWxlYXNlKCk7IH0KCgogICAgICBleHBsaWNpdCBf
X3NoYXJlZF9jb3VudChjb25zdCBfX3dlYWtfY291bnQ8X0xwPiYgX19yKTsKCiAgICAgIH5fX3No
YXJlZF9jb3VudCgpIG5vZXhjZXB0CiAgICAgIHsKIGlmIChfTV9waSAhPSAwKQogICBfTV9waS0+
X01fcmVsZWFzZSgpOwogICAgICB9CgogICAgICBfX3NoYXJlZF9jb3VudChjb25zdCBfX3NoYXJl
ZF9jb3VudCYgX19yKSBub2V4Y2VwdAogICAgICA6IF9NX3BpKF9fci5fTV9waSkKICAgICAgewog
aWYgKF9NX3BpICE9IDApCiAgIF9NX3BpLT5fTV9hZGRfcmVmX2NvcHkoKTsKICAgICAgfQoKICAg
ICAgX19zaGFyZWRfY291bnQmCiAgICAgIG9wZXJhdG9yPShjb25zdCBfX3NoYXJlZF9jb3VudCYg
X19yKSBub2V4Y2VwdAogICAgICB7CiBfU3BfY291bnRlZF9iYXNlPF9McD4qIF9fdG1wID0gX19y
Ll9NX3BpOwogaWYgKF9fdG1wICE9IF9NX3BpKQogICB7CiAgICAgaWYgKF9fdG1wICE9IDApCiAg
ICAgICBfX3RtcC0+X01fYWRkX3JlZl9jb3B5KCk7CiAgICAgaWYgKF9NX3BpICE9IDApCiAgICAg
ICBfTV9waS0+X01fcmVsZWFzZSgpOwogICAgIF9NX3BpID0gX190bXA7CiAgIH0KIHJldHVybiAq
dGhpczsKICAgICAgfQoKICAgICAgdm9pZAogICAgICBfTV9zd2FwKF9fc2hhcmVkX2NvdW50JiBf
X3IpIG5vZXhjZXB0CiAgICAgIHsKIF9TcF9jb3VudGVkX2Jhc2U8X0xwPiogX190bXAgPSBfX3Iu
X01fcGk7CiBfX3IuX01fcGkgPSBfTV9waTsKIF9NX3BpID0gX190bXA7CiAgICAgIH0KCiAgICAg
IGxvbmcKICAgICAgX01fZ2V0X3VzZV9jb3VudCgpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0
dXJuIF9NX3BpICE9IDAgPyBfTV9waS0+X01fZ2V0X3VzZV9jb3VudCgpIDogMDsgfQoKICAgICAg
Ym9vbAogICAgICBfTV91bmlxdWUoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiB0aGlz
LT5fTV9nZXRfdXNlX2NvdW50KCkgPT0gMTsgfQoKICAgICAgdm9pZCoKICAgICAgX01fZ2V0X2Rl
bGV0ZXIoY29uc3Qgc3RkOjp0eXBlX2luZm8mIF9fdGkpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsg
cmV0dXJuIF9NX3BpID8gX01fcGktPl9NX2dldF9kZWxldGVyKF9fdGkpIDogMDsgfQoKICAgICAg
Ym9vbAogICAgICBfTV9sZXNzKGNvbnN0IF9fc2hhcmVkX2NvdW50JiBfX3JocykgY29uc3Qgbm9l
eGNlcHQKICAgICAgeyByZXR1cm4gc3RkOjpsZXNzPF9TcF9jb3VudGVkX2Jhc2U8X0xwPio+KCko
dGhpcy0+X01fcGksIF9fcmhzLl9NX3BpKTsgfQoKICAgICAgYm9vbAogICAgICBfTV9sZXNzKGNv
bnN0IF9fd2Vha19jb3VudDxfTHA+JiBfX3JocykgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1
cm4gc3RkOjpsZXNzPF9TcF9jb3VudGVkX2Jhc2U8X0xwPio+KCkodGhpcy0+X01fcGksIF9fcmhz
Ll9NX3BpKTsgfQoKCiAgICAgIGZyaWVuZCBpbmxpbmUgYm9vbAogICAgICBvcGVyYXRvcj09KGNv
bnN0IF9fc2hhcmVkX2NvdW50JiBfX2EsIGNvbnN0IF9fc2hhcmVkX2NvdW50JiBfX2IpIG5vZXhj
ZXB0CiAgICAgIHsgcmV0dXJuIF9fYS5fTV9waSA9PSBfX2IuX01fcGk7IH0KCiAgICBwcml2YXRl
OgogICAgICBmcmllbmQgY2xhc3MgX193ZWFrX2NvdW50PF9McD47CgogICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9EZWw+CiBzdGF0aWMgX1NwX2NvdW50ZWRfYmFzZTxfTHA+
KgogX1NfY3JlYXRlX2Zyb21fdXAoc3RkOjp1bmlxdWVfcHRyPF9UcCwgX0RlbD4mJiBfX3IsCiAg
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX3JlZmVyZW5jZTxfRGVsPjo6dmFsdWU+
Ojp0eXBlKiA9IDApCiB7CiAgIHR5cGVkZWYgdHlwZW5hbWUgdW5pcXVlX3B0cjxfVHAsIF9EZWw+
Ojpwb2ludGVyIF9QdHI7CiAgIHJldHVybiBuZXcgX1NwX2NvdW50ZWRfZGVsZXRlcjxfUHRyLCBf
RGVsLCBzdGQ6OmFsbG9jYXRvcjx2b2lkPiwKICAgICBfTHA+KF9fci5nZXQoKSwgX19yLmdldF9k
ZWxldGVyKCkpOwogfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfRGVs
Pgogc3RhdGljIF9TcF9jb3VudGVkX2Jhc2U8X0xwPioKIF9TX2NyZWF0ZV9mcm9tX3VwKHN0ZDo6
dW5pcXVlX3B0cjxfVHAsIF9EZWw+JiYgX19yLAogICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX3JlZmVyZW5jZTxfRGVsPjo6dmFsdWU+Ojp0eXBlKiA9IDApCiB7CiAgIHR5cGVkZWYg
dHlwZW5hbWUgdW5pcXVlX3B0cjxfVHAsIF9EZWw+Ojpwb2ludGVyIF9QdHI7CiAgIHR5cGVkZWYg
dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPF9EZWw+Ojp0eXBlIF9EZWwxOwogICB0eXBl
ZGVmIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8X0RlbDE+IF9EZWwyOwogICByZXR1cm4gbmV3IF9T
cF9jb3VudGVkX2RlbGV0ZXI8X1B0ciwgX0RlbDIsIHN0ZDo6YWxsb2NhdG9yPHZvaWQ+LAogICAg
IF9McD4oX19yLmdldCgpLCBzdGQ6OnJlZihfX3IuZ2V0X2RlbGV0ZXIoKSkpOwogfQoKICAgICAg
X1NwX2NvdW50ZWRfYmFzZTxfTHA+KiBfTV9waTsKICAgIH07CgoKICB0ZW1wbGF0ZTxfTG9ja19w
b2xpY3kgX0xwPgogICAgY2xhc3MgX193ZWFrX2NvdW50CiAgICB7CiAgICBwdWJsaWM6CiAgICAg
IGNvbnN0ZXhwciBfX3dlYWtfY291bnQoKSBub2V4Y2VwdCA6IF9NX3BpKDApCiAgICAgIHsgfQoK
ICAgICAgX193ZWFrX2NvdW50KGNvbnN0IF9fc2hhcmVkX2NvdW50PF9McD4mIF9fcikgbm9leGNl
cHQKICAgICAgOiBfTV9waShfX3IuX01fcGkpCiAgICAgIHsKIGlmIChfTV9waSAhPSAwKQogICBf
TV9waS0+X01fd2Vha19hZGRfcmVmKCk7CiAgICAgIH0KCiAgICAgIF9fd2Vha19jb3VudChjb25z
dCBfX3dlYWtfY291bnQ8X0xwPiYgX19yKSBub2V4Y2VwdAogICAgICA6IF9NX3BpKF9fci5fTV9w
aSkKICAgICAgewogaWYgKF9NX3BpICE9IDApCiAgIF9NX3BpLT5fTV93ZWFrX2FkZF9yZWYoKTsK
ICAgICAgfQoKICAgICAgfl9fd2Vha19jb3VudCgpIG5vZXhjZXB0CiAgICAgIHsKIGlmIChfTV9w
aSAhPSAwKQogICBfTV9waS0+X01fd2Vha19yZWxlYXNlKCk7CiAgICAgIH0KCiAgICAgIF9fd2Vh
a19jb3VudDxfTHA+JgogICAgICBvcGVyYXRvcj0oY29uc3QgX19zaGFyZWRfY291bnQ8X0xwPiYg
X19yKSBub2V4Y2VwdAogICAgICB7CiBfU3BfY291bnRlZF9iYXNlPF9McD4qIF9fdG1wID0gX19y
Ll9NX3BpOwogaWYgKF9fdG1wICE9IDApCiAgIF9fdG1wLT5fTV93ZWFrX2FkZF9yZWYoKTsKIGlm
IChfTV9waSAhPSAwKQogICBfTV9waS0+X01fd2Vha19yZWxlYXNlKCk7CiBfTV9waSA9IF9fdG1w
OwogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICBfX3dlYWtfY291bnQ8X0xwPiYKICAgICAg
b3BlcmF0b3I9KGNvbnN0IF9fd2Vha19jb3VudDxfTHA+JiBfX3IpIG5vZXhjZXB0CiAgICAgIHsK
IF9TcF9jb3VudGVkX2Jhc2U8X0xwPiogX190bXAgPSBfX3IuX01fcGk7CiBpZiAoX190bXAgIT0g
MCkKICAgX190bXAtPl9NX3dlYWtfYWRkX3JlZigpOwogaWYgKF9NX3BpICE9IDApCiAgIF9NX3Bp
LT5fTV93ZWFrX3JlbGVhc2UoKTsKIF9NX3BpID0gX190bXA7CiByZXR1cm4gKnRoaXM7CiAgICAg
IH0KCiAgICAgIHZvaWQKICAgICAgX01fc3dhcChfX3dlYWtfY291bnQ8X0xwPiYgX19yKSBub2V4
Y2VwdAogICAgICB7CiBfU3BfY291bnRlZF9iYXNlPF9McD4qIF9fdG1wID0gX19yLl9NX3BpOwog
X19yLl9NX3BpID0gX01fcGk7CiBfTV9waSA9IF9fdG1wOwogICAgICB9CgogICAgICBsb25nCiAg
ICAgIF9NX2dldF91c2VfY291bnQoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBfTV9w
aSAhPSAwID8gX01fcGktPl9NX2dldF91c2VfY291bnQoKSA6IDA7IH0KCiAgICAgIGJvb2wKICAg
ICAgX01fbGVzcyhjb25zdCBfX3dlYWtfY291bnQmIF9fcmhzKSBjb25zdCBub2V4Y2VwdAogICAg
ICB7IHJldHVybiBzdGQ6Omxlc3M8X1NwX2NvdW50ZWRfYmFzZTxfTHA+Kj4oKSh0aGlzLT5fTV9w
aSwgX19yaHMuX01fcGkpOyB9CgogICAgICBib29sCiAgICAgIF9NX2xlc3MoY29uc3QgX19zaGFy
ZWRfY291bnQ8X0xwPiYgX19yaHMpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIHN0ZDo6
bGVzczxfU3BfY291bnRlZF9iYXNlPF9McD4qPigpKHRoaXMtPl9NX3BpLCBfX3Jocy5fTV9waSk7
IH0KCgogICAgICBmcmllbmQgaW5saW5lIGJvb2wKICAgICAgb3BlcmF0b3I9PShjb25zdCBfX3dl
YWtfY291bnQmIF9fYSwgY29uc3QgX193ZWFrX2NvdW50JiBfX2IpIG5vZXhjZXB0CiAgICAgIHsg
cmV0dXJuIF9fYS5fTV9waSA9PSBfX2IuX01fcGk7IH0KCiAgICBwcml2YXRlOgogICAgICBmcmll
bmQgY2xhc3MgX19zaGFyZWRfY291bnQ8X0xwPjsKCiAgICAgIF9TcF9jb3VudGVkX2Jhc2U8X0xw
PiogX01fcGk7CiAgICB9OwoKCiAgdGVtcGxhdGU8X0xvY2tfcG9saWN5IF9McD4KICAgIGlubGlu
ZSBfX3NoYXJlZF9jb3VudDxfTHA+OjogX19zaGFyZWRfY291bnQoY29uc3QgX193ZWFrX2NvdW50
PF9McD4mIF9fcikKICAgIDogX01fcGkoX19yLl9NX3BpKQogICAgewogICAgICBpZiAoX01fcGkg
IT0gMCkKIF9NX3BpLT5fTV9hZGRfcmVmX2xvY2soKTsKICAgICAgZWxzZQogX190aHJvd19iYWRf
d2Vha19wdHIoKTsKICAgIH0KCgoKCgogIHRlbXBsYXRlPF9Mb2NrX3BvbGljeSBfTHAsIHR5cGVu
YW1lIF9UcDEsIHR5cGVuYW1lIF9UcDI+CiAgICB2b2lkCiAgICBfX2VuYWJsZV9zaGFyZWRfZnJv
bV90aGlzX2hlbHBlcihjb25zdCBfX3NoYXJlZF9jb3VudDxfTHA+JiwKICAgICAgICAgY29uc3Qg
X19lbmFibGVfc2hhcmVkX2Zyb21fdGhpczxfVHAxLAogICAgICAgICBfTHA+KiwgY29uc3QgX1Rw
MiopIG5vZXhjZXB0OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwgdHlwZW5hbWUgX1RwMj4K
ICAgIHZvaWQKICAgIF9fZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXNfaGVscGVyKGNvbnN0IF9fc2hh
cmVkX2NvdW50PD4mLAogICAgICAgICBjb25zdCBlbmFibGVfc2hhcmVkX2Zyb21fdGhpczxfVHAx
PiosCiAgICAgICAgIGNvbnN0IF9UcDIqKSBub2V4Y2VwdDsKCiAgdGVtcGxhdGU8X0xvY2tfcG9s
aWN5IF9McD4KICAgIGlubGluZSB2b2lkCiAgICBfX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzX2hl
bHBlcihjb25zdCBfX3NoYXJlZF9jb3VudDxfTHA+JiwgLi4uKSBub2V4Y2VwdAogICAgeyB9CgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIF9Mb2NrX3BvbGljeSBfTHA+CiAgICBjbGFzcyBfX3No
YXJlZF9wdHIKICAgIHsKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBfVHAgZWxlbWVudF90eXBl
OwoKICAgICAgY29uc3RleHByIF9fc2hhcmVkX3B0cigpIG5vZXhjZXB0CiAgICAgIDogX01fcHRy
KDApLCBfTV9yZWZjb3VudCgpCiAgICAgIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
MT4KIGV4cGxpY2l0IF9fc2hhcmVkX3B0cihfVHAxKiBfX3ApCiAgICAgICAgOiBfTV9wdHIoX19w
KSwgX01fcmVmY291bnQoX19wKQogewogIAogICBzdGF0aWNfYXNzZXJ0KCBzaXplb2YoX1RwMSkg
PiAwLCAiaW5jb21wbGV0ZSB0eXBlIiApOwogICBfX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzX2hl
bHBlcihfTV9yZWZjb3VudCwgX19wLCBfX3ApOwogfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwMSwgdHlwZW5hbWUgX0RlbGV0ZXI+CiBfX3NoYXJlZF9wdHIoX1RwMSogX19wLCBfRGVsZXRl
ciBfX2QpCiA6IF9NX3B0cihfX3ApLCBfTV9yZWZjb3VudChfX3AsIF9fZCkKIHsKICAKCiAgIF9f
ZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXNfaGVscGVyKF9NX3JlZmNvdW50LCBfX3AsIF9fcCk7CiB9
CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxLCB0eXBlbmFtZSBfRGVsZXRlciwgdHlwZW5h
bWUgX0FsbG9jPgogX19zaGFyZWRfcHRyKF9UcDEqIF9fcCwgX0RlbGV0ZXIgX19kLCBfQWxsb2Mg
X19hKQogOiBfTV9wdHIoX19wKSwgX01fcmVmY291bnQoX19wLCBfX2QsIHN0ZDo6bW92ZShfX2Ep
KQogewogIAoKICAgX19lbmFibGVfc2hhcmVkX2Zyb21fdGhpc19oZWxwZXIoX01fcmVmY291bnQs
IF9fcCwgX19wKTsKIH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9EZWxldGVyPgogX19zaGFy
ZWRfcHRyKG51bGxwdHJfdCBfX3AsIF9EZWxldGVyIF9fZCkKIDogX01fcHRyKDApLCBfTV9yZWZj
b3VudChfX3AsIF9fZCkKIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0RlbGV0ZXIsIHR5
cGVuYW1lIF9BbGxvYz4KICAgICAgICBfX3NoYXJlZF9wdHIobnVsbHB0cl90IF9fcCwgX0RlbGV0
ZXIgX19kLCBfQWxsb2MgX19hKQogOiBfTV9wdHIoMCksIF9NX3JlZmNvdW50KF9fcCwgX19kLCBz
dGQ6Om1vdmUoX19hKSkKIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4KIF9fc2hh
cmVkX3B0cihjb25zdCBfX3NoYXJlZF9wdHI8X1RwMSwgX0xwPiYgX19yLCBfVHAqIF9fcCkgbm9l
eGNlcHQKIDogX01fcHRyKF9fcCksIF9NX3JlZmNvdW50KF9fci5fTV9yZWZjb3VudCkKIHsgfQoK
ICAgICAgX19zaGFyZWRfcHRyKGNvbnN0IF9fc2hhcmVkX3B0ciYpIG5vZXhjZXB0ID0gZGVmYXVs
dDsKICAgICAgX19zaGFyZWRfcHRyJiBvcGVyYXRvcj0oY29uc3QgX19zaGFyZWRfcHRyJikgbm9l
eGNlcHQgPSBkZWZhdWx0OwogICAgICB+X19zaGFyZWRfcHRyKCkgPSBkZWZhdWx0OwoKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwgdHlwZW5hbWUgPSB0eXBlbmFtZQogICAgICAgIHN0ZDo6
ZW5hYmxlX2lmPHN0ZDo6aXNfY29udmVydGlibGU8X1RwMSosIF9UcCo+Ojp2YWx1ZT46OnR5cGU+
CiBfX3NoYXJlZF9wdHIoY29uc3QgX19zaGFyZWRfcHRyPF9UcDEsIF9McD4mIF9fcikgbm9leGNl
cHQKIDogX01fcHRyKF9fci5fTV9wdHIpLCBfTV9yZWZjb3VudChfX3IuX01fcmVmY291bnQpCiB7
IH0KCiAgICAgIF9fc2hhcmVkX3B0cihfX3NoYXJlZF9wdHImJiBfX3IpIG5vZXhjZXB0CiAgICAg
IDogX01fcHRyKF9fci5fTV9wdHIpLCBfTV9yZWZjb3VudCgpCiAgICAgIHsKIF9NX3JlZmNvdW50
Ll9NX3N3YXAoX19yLl9NX3JlZmNvdW50KTsKIF9fci5fTV9wdHIgPSAwOwogICAgICB9CgogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxLCB0eXBlbmFtZSA9IHR5cGVuYW1lCiAgICAgICAgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19jb252ZXJ0aWJsZTxfVHAxKiwgX1RwKj46OnZhbHVlPjo6dHlw
ZT4KIF9fc2hhcmVkX3B0cihfX3NoYXJlZF9wdHI8X1RwMSwgX0xwPiYmIF9fcikgbm9leGNlcHQK
IDogX01fcHRyKF9fci5fTV9wdHIpLCBfTV9yZWZjb3VudCgpCiB7CiAgIF9NX3JlZmNvdW50Ll9N
X3N3YXAoX19yLl9NX3JlZmNvdW50KTsKICAgX19yLl9NX3B0ciA9IDA7CiB9CgogICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHAxPgogZXhwbGljaXQgX19zaGFyZWRfcHRyKGNvbnN0IF9fd2Vha19w
dHI8X1RwMSwgX0xwPiYgX19yKQogOiBfTV9yZWZjb3VudChfX3IuX01fcmVmY291bnQpCiB7CiAg
CgoKCiAgIF9NX3B0ciA9IF9fci5fTV9wdHI7CiB9CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwMSwgdHlwZW5hbWUgX0RlbD4KIF9fc2hhcmVkX3B0cihzdGQ6OnVuaXF1ZV9wdHI8X1RwMSwg
X0RlbD4mJiBfX3IpCiA6IF9NX3B0cihfX3IuZ2V0KCkpLCBfTV9yZWZjb3VudCgpCiB7CiAgCiAg
IGF1dG8gX190bXAgPSBzdGQ6Ol9fYWRkcmVzc29mKCpfX3IuZ2V0KCkpOwogICBfTV9yZWZjb3Vu
dCA9IF9fc2hhcmVkX2NvdW50PF9McD4oc3RkOjptb3ZlKF9fcikpOwogICBfX2VuYWJsZV9zaGFy
ZWRfZnJvbV90aGlzX2hlbHBlcihfTV9yZWZjb3VudCwgX190bXAsIF9fdG1wKTsKIH0KCgoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4KIF9fc2hhcmVkX3B0cihzdGQ6OmF1dG9fcHRyPF9U
cDE+JiYgX19yKTsKCgoKICAgICAgY29uc3RleHByIF9fc2hhcmVkX3B0cihudWxscHRyX3QpIG5v
ZXhjZXB0CiAgICAgIDogX01fcHRyKDApLCBfTV9yZWZjb3VudCgpCiAgICAgIHsgfQoKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4KIF9fc2hhcmVkX3B0ciYKIG9wZXJhdG9yPShjb25zdCBf
X3NoYXJlZF9wdHI8X1RwMSwgX0xwPiYgX19yKSBub2V4Y2VwdAogewogICBfTV9wdHIgPSBfX3Iu
X01fcHRyOwogICBfTV9yZWZjb3VudCA9IF9fci5fTV9yZWZjb3VudDsKICAgcmV0dXJuICp0aGlz
OwogfQoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDE+CiBfX3NoYXJlZF9wdHImCiBvcGVy
YXRvcj0oc3RkOjphdXRvX3B0cjxfVHAxPiYmIF9fcikKIHsKICAgX19zaGFyZWRfcHRyKHN0ZDo6
bW92ZShfX3IpKS5zd2FwKCp0aGlzKTsKICAgcmV0dXJuICp0aGlzOwogfQoKCiAgICAgIF9fc2hh
cmVkX3B0ciYKICAgICAgb3BlcmF0b3I9KF9fc2hhcmVkX3B0ciYmIF9fcikgbm9leGNlcHQKICAg
ICAgewogX19zaGFyZWRfcHRyKHN0ZDo6bW92ZShfX3IpKS5zd2FwKCp0aGlzKTsKIHJldHVybiAq
dGhpczsKICAgICAgfQoKICAgICAgdGVtcGxhdGU8Y2xhc3MgX1RwMT4KIF9fc2hhcmVkX3B0ciYK
IG9wZXJhdG9yPShfX3NoYXJlZF9wdHI8X1RwMSwgX0xwPiYmIF9fcikgbm9leGNlcHQKIHsKICAg
X19zaGFyZWRfcHRyKHN0ZDo6bW92ZShfX3IpKS5zd2FwKCp0aGlzKTsKICAgcmV0dXJuICp0aGlz
OwogfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwgdHlwZW5hbWUgX0RlbD4KIF9fc2hh
cmVkX3B0ciYKIG9wZXJhdG9yPShzdGQ6OnVuaXF1ZV9wdHI8X1RwMSwgX0RlbD4mJiBfX3IpCiB7
CiAgIF9fc2hhcmVkX3B0cihzdGQ6Om1vdmUoX19yKSkuc3dhcCgqdGhpcyk7CiAgIHJldHVybiAq
dGhpczsKIH0KCiAgICAgIHZvaWQKICAgICAgcmVzZXQoKSBub2V4Y2VwdAogICAgICB7IF9fc2hh
cmVkX3B0cigpLnN3YXAoKnRoaXMpOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxPgog
dm9pZAogcmVzZXQoX1RwMSogX19wKQogewoKICAgOwogICBfX3NoYXJlZF9wdHIoX19wKS5zd2Fw
KCp0aGlzKTsKIH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDEsIHR5cGVuYW1lIF9EZWxl
dGVyPgogdm9pZAogcmVzZXQoX1RwMSogX19wLCBfRGVsZXRlciBfX2QpCiB7IF9fc2hhcmVkX3B0
cihfX3AsIF9fZCkuc3dhcCgqdGhpcyk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDEs
IHR5cGVuYW1lIF9EZWxldGVyLCB0eXBlbmFtZSBfQWxsb2M+CiB2b2lkCiAgICAgICAgcmVzZXQo
X1RwMSogX19wLCBfRGVsZXRlciBfX2QsIF9BbGxvYyBfX2EpCiAgICAgICAgeyBfX3NoYXJlZF9w
dHIoX19wLCBfX2QsIHN0ZDo6bW92ZShfX2EpKS5zd2FwKCp0aGlzKTsgfQoKCiAgICAgIHR5cGVu
YW1lIHN0ZDo6YWRkX2x2YWx1ZV9yZWZlcmVuY2U8X1RwPjo6dHlwZQogICAgICBvcGVyYXRvcioo
KSBjb25zdCBub2V4Y2VwdAogICAgICB7CiA7CiByZXR1cm4gKl9NX3B0cjsKICAgICAgfQoKICAg
ICAgX1RwKgogICAgICBvcGVyYXRvci0+KCkgY29uc3Qgbm9leGNlcHQKICAgICAgewogOwogcmV0
dXJuIF9NX3B0cjsKICAgICAgfQoKICAgICAgX1RwKgogICAgICBnZXQoKSBjb25zdCBub2V4Y2Vw
dAogICAgICB7IHJldHVybiBfTV9wdHI7IH0KCiAgICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wo
KSBjb25zdAogICAgICB7IHJldHVybiBfTV9wdHIgPT0gMCA/IGZhbHNlIDogdHJ1ZTsgfQoKICAg
ICAgYm9vbAogICAgICB1bmlxdWUoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBfTV9y
ZWZjb3VudC5fTV91bmlxdWUoKTsgfQoKICAgICAgbG9uZwogICAgICB1c2VfY291bnQoKSBjb25z
dCBub2V4Y2VwdAogICAgICB7IHJldHVybiBfTV9yZWZjb3VudC5fTV9nZXRfdXNlX2NvdW50KCk7
IH0KCiAgICAgIHZvaWQKICAgICAgc3dhcChfX3NoYXJlZF9wdHI8X1RwLCBfTHA+JiBfX290aGVy
KSBub2V4Y2VwdAogICAgICB7CiBzdGQ6OnN3YXAoX01fcHRyLCBfX290aGVyLl9NX3B0cik7CiBf
TV9yZWZjb3VudC5fTV9zd2FwKF9fb3RoZXIuX01fcmVmY291bnQpOwogICAgICB9CgogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxPgogYm9vbAogb3duZXJfYmVmb3JlKF9fc2hhcmVkX3B0cjxf
VHAxLCBfTHA+IGNvbnN0JiBfX3JocykgY29uc3QKIHsgcmV0dXJuIF9NX3JlZmNvdW50Ll9NX2xl
c3MoX19yaHMuX01fcmVmY291bnQpOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxPgog
Ym9vbAogb3duZXJfYmVmb3JlKF9fd2Vha19wdHI8X1RwMSwgX0xwPiBjb25zdCYgX19yaHMpIGNv
bnN0CiB7IHJldHVybiBfTV9yZWZjb3VudC5fTV9sZXNzKF9fcmhzLl9NX3JlZmNvdW50KTsgfQoj
IDk5NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2Jp
dHMvc2hhcmVkX3B0cl9iYXNlLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jPgog
ICAgICAgIHN0cnVjdCBfRGVsZXRlcgogICAgICAgIHsKICAgICAgICAgIHZvaWQgb3BlcmF0b3Io
KShfVHAqIF9fcHRyKQogICAgICAgICAgewogICAgIHR5cGVkZWYgYWxsb2NhdG9yX3RyYWl0czxf
QWxsb2M+IF9BbGxvY190cmFpdHM7CiAgICAgX0FsbG9jX3RyYWl0czo6ZGVzdHJveShfTV9hbGxv
YywgX19wdHIpOwogICAgIF9BbGxvY190cmFpdHM6OmRlYWxsb2NhdGUoX01fYWxsb2MsIF9fcHRy
LCAxKTsKICAgICAgICAgIH0KICAgICAgICAgIF9BbGxvYyBfTV9hbGxvYzsKICAgICAgICB9OwoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZS4uLiBfQXJncz4KIF9fc2hh
cmVkX3B0cihfU3BfbWFrZV9zaGFyZWRfdGFnIF9fdGFnLCBjb25zdCBfQWxsb2MmIF9fYSwKICAg
ICAgIF9BcmdzJiYuLi4gX19hcmdzKQogOiBfTV9wdHIoKSwgX01fcmVmY291bnQoKQogICAgICAg
IHsKICAgdHlwZWRlZiB0eXBlbmFtZSBfQWxsb2M6OnRlbXBsYXRlIHJlYmluZDxfVHA+OjpvdGhl
ciBfQWxsb2MyOwogICAgICAgICAgX0RlbGV0ZXI8X0FsbG9jMj4gX19kZWwgPSB7IF9BbGxvYzIo
X19hKSB9OwogICB0eXBlZGVmIGFsbG9jYXRvcl90cmFpdHM8X0FsbG9jMj4gX190cmFpdHM7CiAg
ICAgICAgICBfTV9wdHIgPSBfX3RyYWl0czo6YWxsb2NhdGUoX19kZWwuX01fYWxsb2MsIDEpOwog
ICBpZiAodHJ1ZSkKICAgICB7CgoKICAgICAgIF9fdHJhaXRzOjpjb25zdHJ1Y3QoX19kZWwuX01f
YWxsb2MsIF9NX3B0ciwKICAgICAgICAgICAgICAgICAgICBzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9f
YXJncykuLi4pOwogICAgIH0KICAgaWYgKGZhbHNlKQogICAgIHsKICAgICAgIF9fdHJhaXRzOjpk
ZWFsbG9jYXRlKF9fZGVsLl9NX2FsbG9jLCBfTV9wdHIsIDEpOwogICAgICAgOwogICAgIH0KICAg
ICAgICAgIF9fc2hhcmVkX2NvdW50PF9McD4gX19jb3VudChfTV9wdHIsIF9fZGVsLCBfX2RlbC5f
TV9hbGxvYyk7CiAgICAgICAgICBfTV9yZWZjb3VudC5fTV9zd2FwKF9fY291bnQpOwogICBfX2Vu
YWJsZV9zaGFyZWRfZnJvbV90aGlzX2hlbHBlcihfTV9yZWZjb3VudCwgX01fcHRyLCBfTV9wdHIp
OwogICAgICAgIH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxLCBfTG9ja19wb2xpY3kg
X0xwMSwgdHlwZW5hbWUgX0FsbG9jLAogICAgICAgIHR5cGVuYW1lLi4uIF9BcmdzPgogZnJpZW5k
IF9fc2hhcmVkX3B0cjxfVHAxLCBfTHAxPgogX19hbGxvY2F0ZV9zaGFyZWQoY29uc3QgX0FsbG9j
JiBfX2EsIF9BcmdzJiYuLi4gX19hcmdzKTsKCiAgICBwcml2YXRlOgogICAgICB2b2lkKgogICAg
ICBfTV9nZXRfZGVsZXRlcihjb25zdCBzdGQ6OnR5cGVfaW5mbyYgX190aSkgY29uc3Qgbm9leGNl
cHQKICAgICAgeyByZXR1cm4gX01fcmVmY291bnQuX01fZ2V0X2RlbGV0ZXIoX190aSk7IH0KCiAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDEsIF9Mb2NrX3BvbGljeSBfTHAxPiBmcmllbmQgY2xh
c3MgX19zaGFyZWRfcHRyOwogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxLCBfTG9ja19wb2xp
Y3kgX0xwMT4gZnJpZW5kIGNsYXNzIF9fd2Vha19wdHI7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRGVsLCB0eXBlbmFtZSBfVHAxLCBfTG9ja19wb2xpY3kgX0xwMT4KIGZyaWVuZCBfRGVsKiBn
ZXRfZGVsZXRlcihjb25zdCBfX3NoYXJlZF9wdHI8X1RwMSwgX0xwMT4mKSBub2V4Y2VwdDsKCiAg
ICAgIF9UcCogX01fcHRyOwogICAgICBfX3NoYXJlZF9jb3VudDxfTHA+IF9NX3JlZmNvdW50Owog
ICAgfTsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxLCB0eXBlbmFtZSBfVHAyLCBfTG9ja19w
b2xpY3kgX0xwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3QgX19zaGFyZWRf
cHRyPF9UcDEsIF9McD4mIF9fYSwKICAgICAgICBjb25zdCBfX3NoYXJlZF9wdHI8X1RwMiwgX0xw
PiYgX19iKSBub2V4Y2VwdAogICAgeyByZXR1cm4gX19hLmdldCgpID09IF9fYi5nZXQoKTsgfQoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIF9Mb2NrX3BvbGljeSBfTHA+CiAgICBpbmxpbmUgYm9v
bAogICAgb3BlcmF0b3I9PShjb25zdCBfX3NoYXJlZF9wdHI8X1RwLCBfTHA+JiBfX2EsIG51bGxw
dHJfdCkgbm9leGNlcHQKICAgIHsgcmV0dXJuICFfX2E7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwLCBfTG9ja19wb2xpY3kgX0xwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPT0obnVs
bHB0cl90LCBjb25zdCBfX3NoYXJlZF9wdHI8X1RwLCBfTHA+JiBfX2EpIG5vZXhjZXB0CiAgICB7
IHJldHVybiAhX19hOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDEsIHR5cGVuYW1lIF9UcDIs
IF9Mb2NrX3BvbGljeSBfTHA+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25zdCBf
X3NoYXJlZF9wdHI8X1RwMSwgX0xwPiYgX19hLAogICAgICAgIGNvbnN0IF9fc2hhcmVkX3B0cjxf
VHAyLCBfTHA+JiBfX2IpIG5vZXhjZXB0CiAgICB7IHJldHVybiBfX2EuZ2V0KCkgIT0gX19iLmdl
dCgpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgX0xvY2tfcG9saWN5IF9McD4KICAgIGlu
bGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IF9fc2hhcmVkX3B0cjxfVHAsIF9McD4mIF9f
YSwgbnVsbHB0cl90KSBub2V4Y2VwdAogICAgeyByZXR1cm4gKGJvb2wpX19hOyB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcCwgX0xvY2tfcG9saWN5IF9McD4KICAgIGlubGluZSBib29sCiAgICBv
cGVyYXRvciE9KG51bGxwdHJfdCwgY29uc3QgX19zaGFyZWRfcHRyPF9UcCwgX0xwPiYgX19hKSBu
b2V4Y2VwdAogICAgeyByZXR1cm4gKGJvb2wpX19hOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cDEsIHR5cGVuYW1lIF9UcDIsIF9Mb2NrX3BvbGljeSBfTHA+CiAgICBpbmxpbmUgYm9vbAogICAg
b3BlcmF0b3I8KGNvbnN0IF9fc2hhcmVkX3B0cjxfVHAxLCBfTHA+JiBfX2EsCiAgICAgICBjb25z
dCBfX3NoYXJlZF9wdHI8X1RwMiwgX0xwPiYgX19iKSBub2V4Y2VwdAogICAgewogICAgICB0eXBl
ZGVmIHR5cGVuYW1lIHN0ZDo6Y29tbW9uX3R5cGU8X1RwMSosIF9UcDIqPjo6dHlwZSBfQ1Q7CiAg
ICAgIHJldHVybiBzdGQ6Omxlc3M8X0NUPigpKF9fYS5nZXQoKSwgX19iLmdldCgpKTsKICAgIH0K
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBfTG9ja19wb2xpY3kgX0xwPgogICAgaW5saW5lIGJv
b2wKICAgIG9wZXJhdG9yPChjb25zdCBfX3NoYXJlZF9wdHI8X1RwLCBfTHA+JiBfX2EsIG51bGxw
dHJfdCkgbm9leGNlcHQKICAgIHsgcmV0dXJuIHN0ZDo6bGVzczxfVHAqPigpKF9fYS5nZXQoKSwg
bnVsbHB0cik7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBfTG9ja19wb2xpY3kgX0xwPgog
ICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPChudWxscHRyX3QsIGNvbnN0IF9fc2hhcmVkX3B0
cjxfVHAsIF9McD4mIF9fYSkgbm9leGNlcHQKICAgIHsgcmV0dXJuIHN0ZDo6bGVzczxfVHAqPigp
KG51bGxwdHIsIF9fYS5nZXQoKSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwgdHlwZW5h
bWUgX1RwMiwgX0xvY2tfcG9saWN5IF9McD4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcjw9
KGNvbnN0IF9fc2hhcmVkX3B0cjxfVHAxLCBfTHA+JiBfX2EsCiAgICAgICAgY29uc3QgX19zaGFy
ZWRfcHRyPF9UcDIsIF9McD4mIF9fYikgbm9leGNlcHQKICAgIHsgcmV0dXJuICEoX19iIDwgX19h
KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIF9Mb2NrX3BvbGljeSBfTHA+CiAgICBpbmxp
bmUgYm9vbAogICAgb3BlcmF0b3I8PShjb25zdCBfX3NoYXJlZF9wdHI8X1RwLCBfTHA+JiBfX2Es
IG51bGxwdHJfdCkgbm9leGNlcHQKICAgIHsgcmV0dXJuICEobnVsbHB0ciA8IF9fYSk7IH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBfTG9ja19wb2xpY3kgX0xwPgogICAgaW5saW5lIGJvb2wK
ICAgIG9wZXJhdG9yPD0obnVsbHB0cl90LCBjb25zdCBfX3NoYXJlZF9wdHI8X1RwLCBfTHA+JiBf
X2EpIG5vZXhjZXB0CiAgICB7IHJldHVybiAhKF9fYSA8IG51bGxwdHIpOyB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcDEsIHR5cGVuYW1lIF9UcDIsIF9Mb2NrX3BvbGljeSBfTHA+CiAgICBpbmxp
bmUgYm9vbAogICAgb3BlcmF0b3I+KGNvbnN0IF9fc2hhcmVkX3B0cjxfVHAxLCBfTHA+JiBfX2Es
CiAgICAgICBjb25zdCBfX3NoYXJlZF9wdHI8X1RwMiwgX0xwPiYgX19iKSBub2V4Y2VwdAogICAg
eyByZXR1cm4gKF9fYiA8IF9fYSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBfTG9ja19w
b2xpY3kgX0xwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPihjb25zdCBfX3NoYXJlZF9w
dHI8X1RwLCBfTHA+JiBfX2EsIG51bGxwdHJfdCkgbm9leGNlcHQKICAgIHsgcmV0dXJuIHN0ZDo6
bGVzczxfVHAqPigpKG51bGxwdHIsIF9fYS5nZXQoKSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwLCBfTG9ja19wb2xpY3kgX0xwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPihudWxs
cHRyX3QsIGNvbnN0IF9fc2hhcmVkX3B0cjxfVHAsIF9McD4mIF9fYSkgbm9leGNlcHQKICAgIHsg
cmV0dXJuIHN0ZDo6bGVzczxfVHAqPigpKF9fYS5nZXQoKSwgbnVsbHB0cik7IH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwMSwgdHlwZW5hbWUgX1RwMiwgX0xvY2tfcG9saWN5IF9McD4KICAgIGlu
bGluZSBib29sCiAgICBvcGVyYXRvcj49KGNvbnN0IF9fc2hhcmVkX3B0cjxfVHAxLCBfTHA+JiBf
X2EsCiAgICAgICAgY29uc3QgX19zaGFyZWRfcHRyPF9UcDIsIF9McD4mIF9fYikgbm9leGNlcHQK
ICAgIHsgcmV0dXJuICEoX19hIDwgX19iKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIF9M
b2NrX3BvbGljeSBfTHA+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I+PShjb25zdCBfX3No
YXJlZF9wdHI8X1RwLCBfTHA+JiBfX2EsIG51bGxwdHJfdCkgbm9leGNlcHQKICAgIHsgcmV0dXJu
ICEoX19hIDwgbnVsbHB0cik7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBfTG9ja19wb2xp
Y3kgX0xwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPj0obnVsbHB0cl90LCBjb25zdCBf
X3NoYXJlZF9wdHI8X1RwLCBfTHA+JiBfX2EpIG5vZXhjZXB0CiAgICB7IHJldHVybiAhKG51bGxw
dHIgPCBfX2EpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9TcD4KICAgIHN0cnVjdCBfU3BfbGVz
cyA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1NwLCBfU3AsIGJvb2w+CiAgICB7CiAgICAgIGJv
b2wKICAgICAgb3BlcmF0b3IoKShjb25zdCBfU3AmIF9fbGhzLCBjb25zdCBfU3AmIF9fcmhzKSBj
b25zdCBub2V4Y2VwdAogICAgICB7CiB0eXBlZGVmIHR5cGVuYW1lIF9TcDo6ZWxlbWVudF90eXBl
IGVsZW1lbnRfdHlwZTsKIHJldHVybiBzdGQ6Omxlc3M8ZWxlbWVudF90eXBlKj4oKShfX2xocy5n
ZXQoKSwgX19yaHMuZ2V0KCkpOwogICAgICB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHAsIF9Mb2NrX3BvbGljeSBfTHA+CiAgICBzdHJ1Y3QgbGVzczxfX3NoYXJlZF9wdHI8X1RwLCBf
THA+PgogICAgOiBwdWJsaWMgX1NwX2xlc3M8X19zaGFyZWRfcHRyPF9UcCwgX0xwPj4KICAgIHsg
fTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgX0xvY2tfcG9saWN5IF9McD4KICAgIGlubGlu
ZSB2b2lkCiAgICBzd2FwKF9fc2hhcmVkX3B0cjxfVHAsIF9McD4mIF9fYSwgX19zaGFyZWRfcHRy
PF9UcCwgX0xwPiYgX19iKSBub2V4Y2VwdAogICAgeyBfX2Euc3dhcChfX2IpOyB9CiMgMTE4NCAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc2hh
cmVkX3B0cl9iYXNlLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9UcDEs
IF9Mb2NrX3BvbGljeSBfTHA+CiAgICBpbmxpbmUgX19zaGFyZWRfcHRyPF9UcCwgX0xwPgogICAg
c3RhdGljX3BvaW50ZXJfY2FzdChjb25zdCBfX3NoYXJlZF9wdHI8X1RwMSwgX0xwPiYgX19yKSBu
b2V4Y2VwdAogICAgeyByZXR1cm4gX19zaGFyZWRfcHRyPF9UcCwgX0xwPihfX3IsIHN0YXRpY19j
YXN0PF9UcCo+KF9fci5nZXQoKSkpOyB9CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0
eXBlbmFtZSBfVHAxLCBfTG9ja19wb2xpY3kgX0xwPgogICAgaW5saW5lIF9fc2hhcmVkX3B0cjxf
VHAsIF9McD4KICAgIGNvbnN0X3BvaW50ZXJfY2FzdChjb25zdCBfX3NoYXJlZF9wdHI8X1RwMSwg
X0xwPiYgX19yKSBub2V4Y2VwdAogICAgeyByZXR1cm4gX19zaGFyZWRfcHRyPF9UcCwgX0xwPihf
X3IsIGNvbnN0X2Nhc3Q8X1RwKj4oX19yLmdldCgpKSk7IH0KCgoKCgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHAsIHR5cGVuYW1lIF9UcDEsIF9Mb2NrX3BvbGljeSBfTHA+CiAgICBpbmxpbmUgX19z
aGFyZWRfcHRyPF9UcCwgX0xwPgogICAgZHluYW1pY19wb2ludGVyX2Nhc3QoY29uc3QgX19zaGFy
ZWRfcHRyPF9UcDEsIF9McD4mIF9fcikgbm9leGNlcHQKICAgIHsKICAgICAgaWYgKF9UcCogX19w
ID0gZHluYW1pY19jYXN0PF9UcCo+KF9fci5nZXQoKSkpCiByZXR1cm4gX19zaGFyZWRfcHRyPF9U
cCwgX0xwPihfX3IsIF9fcCk7CiAgICAgIHJldHVybiBfX3NoYXJlZF9wdHI8X1RwLCBfTHA+KCk7
CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIF9Mb2NrX3BvbGljeSBfTHA+CiAgICBj
bGFzcyBfX3dlYWtfcHRyCiAgICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgX1RwIGVsZW1l
bnRfdHlwZTsKCiAgICAgIGNvbnN0ZXhwciBfX3dlYWtfcHRyKCkgbm9leGNlcHQKICAgICAgOiBf
TV9wdHIoMCksIF9NX3JlZmNvdW50KCkKICAgICAgeyB9CgogICAgICBfX3dlYWtfcHRyKGNvbnN0
IF9fd2Vha19wdHImKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CiAgICAgIF9fd2Vha19wdHImIG9wZXJh
dG9yPShjb25zdCBfX3dlYWtfcHRyJikgbm9leGNlcHQgPSBkZWZhdWx0OwogICAgICB+X193ZWFr
X3B0cigpID0gZGVmYXVsdDsKIyAxMjQyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC44LjEvYml0cy9zaGFyZWRfcHRyX2Jhc2UuaCIgMwogICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHAxLCB0eXBlbmFtZSA9IHR5cGVuYW1lCiAgICAgICAgc3RkOjplbmFibGVf
aWY8c3RkOjppc19jb252ZXJ0aWJsZTxfVHAxKiwgX1RwKj46OnZhbHVlPjo6dHlwZT4KIF9fd2Vh
a19wdHIoY29uc3QgX193ZWFrX3B0cjxfVHAxLCBfTHA+JiBfX3IpIG5vZXhjZXB0CiA6IF9NX3Jl
ZmNvdW50KF9fci5fTV9yZWZjb3VudCkKICAgICAgICB7IF9NX3B0ciA9IF9fci5sb2NrKCkuZ2V0
KCk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDEsIHR5cGVuYW1lID0gdHlwZW5hbWUK
ICAgICAgICBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnZlcnRpYmxlPF9UcDEqLCBfVHAqPjo6
dmFsdWU+Ojp0eXBlPgogX193ZWFrX3B0cihjb25zdCBfX3NoYXJlZF9wdHI8X1RwMSwgX0xwPiYg
X19yKSBub2V4Y2VwdAogOiBfTV9wdHIoX19yLl9NX3B0ciksIF9NX3JlZmNvdW50KF9fci5fTV9y
ZWZjb3VudCkKIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4KIF9fd2Vha19wdHIm
CiBvcGVyYXRvcj0oY29uc3QgX193ZWFrX3B0cjxfVHAxLCBfTHA+JiBfX3IpIG5vZXhjZXB0CiB7
CiAgIF9NX3B0ciA9IF9fci5sb2NrKCkuZ2V0KCk7CiAgIF9NX3JlZmNvdW50ID0gX19yLl9NX3Jl
ZmNvdW50OwogICByZXR1cm4gKnRoaXM7CiB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAx
PgogX193ZWFrX3B0ciYKIG9wZXJhdG9yPShjb25zdCBfX3NoYXJlZF9wdHI8X1RwMSwgX0xwPiYg
X19yKSBub2V4Y2VwdAogewogICBfTV9wdHIgPSBfX3IuX01fcHRyOwogICBfTV9yZWZjb3VudCA9
IF9fci5fTV9yZWZjb3VudDsKICAgcmV0dXJuICp0aGlzOwogfQoKICAgICAgX19zaGFyZWRfcHRy
PF9UcCwgX0xwPgogICAgICBsb2NrKCkgY29uc3Qgbm9leGNlcHQKICAgICAgewoKCiBpZiAoZXhw
aXJlZCgpKQogICByZXR1cm4gX19zaGFyZWRfcHRyPGVsZW1lbnRfdHlwZSwgX0xwPigpOwoKIGlm
ICh0cnVlKQogICB7CiAgICAgcmV0dXJuIF9fc2hhcmVkX3B0cjxlbGVtZW50X3R5cGUsIF9McD4o
KnRoaXMpOwogICB9CiBpZiAoZmFsc2UpCiAgIHsKCgoKICAgICByZXR1cm4gX19zaGFyZWRfcHRy
PGVsZW1lbnRfdHlwZSwgX0xwPigpOwogICB9CgoKCgoKCgogICAgICB9CgogICAgICBsb25nCiAg
ICAgIHVzZV9jb3VudCgpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9NX3JlZmNvdW50
Ll9NX2dldF91c2VfY291bnQoKTsgfQoKICAgICAgYm9vbAogICAgICBleHBpcmVkKCkgY29uc3Qg
bm9leGNlcHQKICAgICAgeyByZXR1cm4gX01fcmVmY291bnQuX01fZ2V0X3VzZV9jb3VudCgpID09
IDA7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDE+CiBib29sCiBvd25lcl9iZWZvcmUo
Y29uc3QgX19zaGFyZWRfcHRyPF9UcDEsIF9McD4mIF9fcmhzKSBjb25zdAogeyByZXR1cm4gX01f
cmVmY291bnQuX01fbGVzcyhfX3Jocy5fTV9yZWZjb3VudCk7IH0KCiAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcDE+CiBib29sCiBvd25lcl9iZWZvcmUoY29uc3QgX193ZWFrX3B0cjxfVHAxLCBf
THA+JiBfX3JocykgY29uc3QKIHsgcmV0dXJuIF9NX3JlZmNvdW50Ll9NX2xlc3MoX19yaHMuX01f
cmVmY291bnQpOyB9CgogICAgICB2b2lkCiAgICAgIHJlc2V0KCkgbm9leGNlcHQKICAgICAgeyBf
X3dlYWtfcHRyKCkuc3dhcCgqdGhpcyk7IH0KCiAgICAgIHZvaWQKICAgICAgc3dhcChfX3dlYWtf
cHRyJiBfX3MpIG5vZXhjZXB0CiAgICAgIHsKIHN0ZDo6c3dhcChfTV9wdHIsIF9fcy5fTV9wdHIp
OwogX01fcmVmY291bnQuX01fc3dhcChfX3MuX01fcmVmY291bnQpOwogICAgICB9CgogICAgcHJp
dmF0ZToKCiAgICAgIHZvaWQKICAgICAgX01fYXNzaWduKF9UcCogX19wdHIsIGNvbnN0IF9fc2hh
cmVkX2NvdW50PF9McD4mIF9fcmVmY291bnQpIG5vZXhjZXB0CiAgICAgIHsKIF9NX3B0ciA9IF9f
cHRyOwogX01fcmVmY291bnQgPSBfX3JlZmNvdW50OwogICAgICB9CgogICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHAxLCBfTG9ja19wb2xpY3kgX0xwMT4gZnJpZW5kIGNsYXNzIF9fc2hhcmVkX3B0
cjsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwgX0xvY2tfcG9saWN5IF9McDE+IGZyaWVu
ZCBjbGFzcyBfX3dlYWtfcHRyOwogICAgICBmcmllbmQgY2xhc3MgX19lbmFibGVfc2hhcmVkX2Zy
b21fdGhpczxfVHAsIF9McD47CiAgICAgIGZyaWVuZCBjbGFzcyBlbmFibGVfc2hhcmVkX2Zyb21f
dGhpczxfVHA+OwoKICAgICAgX1RwKiBfTV9wdHI7CiAgICAgIF9fd2Vha19jb3VudDxfTHA+IF9N
X3JlZmNvdW50OwogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgX0xvY2tfcG9saWN5
IF9McD4KICAgIGlubGluZSB2b2lkCiAgICBzd2FwKF9fd2Vha19wdHI8X1RwLCBfTHA+JiBfX2Es
IF9fd2Vha19wdHI8X1RwLCBfTHA+JiBfX2IpIG5vZXhjZXB0CiAgICB7IF9fYS5zd2FwKF9fYik7
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVHAxPgogICAgc3RydWN0IF9T
cF9vd25lcl9sZXNzIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsIF9UcCwgYm9vbD4KICAg
IHsKICAgICAgYm9vbAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX19saHMsIGNvbnN0IF9U
cCYgX19yaHMpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9fbGhzLm93bmVyX2JlZm9yZShfX3Jocyk7
IH0KCiAgICAgIGJvb2wKICAgICAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9fbGhzLCBjb25zdCBf
VHAxJiBfX3JocykgY29uc3QKICAgICAgeyByZXR1cm4gX19saHMub3duZXJfYmVmb3JlKF9fcmhz
KTsgfQoKICAgICAgYm9vbAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcDEmIF9fbGhzLCBjb25z
dCBfVHAmIF9fcmhzKSBjb25zdAogICAgICB7IHJldHVybiBfX2xocy5vd25lcl9iZWZvcmUoX19y
aHMpOyB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIF9Mb2NrX3BvbGljeSBfTHA+
CiAgICBzdHJ1Y3Qgb3duZXJfbGVzczxfX3NoYXJlZF9wdHI8X1RwLCBfTHA+PgogICAgOiBwdWJs
aWMgX1NwX293bmVyX2xlc3M8X19zaGFyZWRfcHRyPF9UcCwgX0xwPiwgX193ZWFrX3B0cjxfVHAs
IF9McD4+CiAgICB7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgX0xvY2tfcG9saWN5IF9M
cD4KICAgIHN0cnVjdCBvd25lcl9sZXNzPF9fd2Vha19wdHI8X1RwLCBfTHA+PgogICAgOiBwdWJs
aWMgX1NwX293bmVyX2xlc3M8X193ZWFrX3B0cjxfVHAsIF9McD4sIF9fc2hhcmVkX3B0cjxfVHAs
IF9McD4+CiAgICB7IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIF9Mb2NrX3BvbGljeSBf
THA+CiAgICBjbGFzcyBfX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzCiAgICB7CiAgICBwcm90ZWN0
ZWQ6CiAgICAgIGNvbnN0ZXhwciBfX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCkgbm9leGNlcHQg
eyB9CgogICAgICBfX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKGNvbnN0IF9fZW5hYmxlX3NoYXJl
ZF9mcm9tX3RoaXMmKSBub2V4Y2VwdCB7IH0KCiAgICAgIF9fZW5hYmxlX3NoYXJlZF9mcm9tX3Ro
aXMmCiAgICAgIG9wZXJhdG9yPShjb25zdCBfX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzJikgbm9l
eGNlcHQKICAgICAgeyByZXR1cm4gKnRoaXM7IH0KCiAgICAgIH5fX2VuYWJsZV9zaGFyZWRfZnJv
bV90aGlzKCkgeyB9CgogICAgcHVibGljOgogICAgICBfX3NoYXJlZF9wdHI8X1RwLCBfTHA+CiAg
ICAgIHNoYXJlZF9mcm9tX3RoaXMoKQogICAgICB7IHJldHVybiBfX3NoYXJlZF9wdHI8X1RwLCBf
THA+KHRoaXMtPl9NX3dlYWtfdGhpcyk7IH0KCiAgICAgIF9fc2hhcmVkX3B0cjxjb25zdCBfVHAs
IF9McD4KICAgICAgc2hhcmVkX2Zyb21fdGhpcygpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9fc2hh
cmVkX3B0cjxjb25zdCBfVHAsIF9McD4odGhpcy0+X01fd2Vha190aGlzKTsgfQoKICAgIHByaXZh
dGU6CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDE+CiB2b2lkCiBfTV93ZWFrX2Fzc2lnbihf
VHAxKiBfX3AsIGNvbnN0IF9fc2hhcmVkX2NvdW50PF9McD4mIF9fbikgY29uc3Qgbm9leGNlcHQK
IHsgX01fd2Vha190aGlzLl9NX2Fzc2lnbihfX3AsIF9fbik7IH0KCiAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcDE+CiBmcmllbmQgdm9pZAogX19lbmFibGVfc2hhcmVkX2Zyb21fdGhpc19oZWxw
ZXIoY29uc3QgX19zaGFyZWRfY291bnQ8X0xwPiYgX19wbiwKICAgICAgY29uc3QgX19lbmFibGVf
c2hhcmVkX2Zyb21fdGhpcyogX19wZSwKICAgICAgY29uc3QgX1RwMSogX19weCkgbm9leGNlcHQK
IHsKICAgaWYgKF9fcGUgIT0gMCkKICAgICBfX3BlLT5fTV93ZWFrX2Fzc2lnbihjb25zdF9jYXN0
PF9UcDEqPihfX3B4KSwgX19wbik7CiB9CgogICAgICBtdXRhYmxlIF9fd2Vha19wdHI8X1RwLCBf
THA+IF9NX3dlYWtfdGhpczsKICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIF9Mb2Nr
X3BvbGljeSBfTHAsIHR5cGVuYW1lIF9BbGxvYywgdHlwZW5hbWUuLi4gX0FyZ3M+CiAgICBpbmxp
bmUgX19zaGFyZWRfcHRyPF9UcCwgX0xwPgogICAgX19hbGxvY2F0ZV9zaGFyZWQoY29uc3QgX0Fs
bG9jJiBfX2EsIF9BcmdzJiYuLi4gX19hcmdzKQogICAgewogICAgICByZXR1cm4gX19zaGFyZWRf
cHRyPF9UcCwgX0xwPihfU3BfbWFrZV9zaGFyZWRfdGFnKCksIF9fYSwKICAgICAgICBzdGQ6OmZv
cndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAs
IF9Mb2NrX3BvbGljeSBfTHAsIHR5cGVuYW1lLi4uIF9BcmdzPgogICAgaW5saW5lIF9fc2hhcmVk
X3B0cjxfVHAsIF9McD4KICAgIF9fbWFrZV9zaGFyZWQoX0FyZ3MmJi4uLiBfX2FyZ3MpCiAgICB7
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8X1RwPjo6dHlwZSBfVHBf
bmM7CiAgICAgIHJldHVybiBzdGQ6Ol9fYWxsb2NhdGVfc2hhcmVkPF9UcCwgX0xwPihzdGQ6OmFs
bG9jYXRvcjxfVHBfbmM+KCksCiAgICAgICAgICAgc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3Mp
Li4uKTsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgX0xvY2tfcG9saWN5IF9McD4K
ICAgIHN0cnVjdCBoYXNoPF9fc2hhcmVkX3B0cjxfVHAsIF9McD4+CiAgICA6IHB1YmxpYyBfX2hh
c2hfYmFzZTxzaXplX3QsIF9fc2hhcmVkX3B0cjxfVHAsIF9McD4+CiAgICB7CiAgICAgIHNpemVf
dAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9fc2hhcmVkX3B0cjxfVHAsIF9McD4mIF9fcykgY29u
c3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gc3RkOjpoYXNoPF9UcCo+KCkoX19zLmdldCgpKTsg
fQogICAgfTsKCgp9CiMgNTMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjguMS9iaXRzL3NoYXJlZF9wdHIuaCIgMiAzCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmli
dXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgoKCgoKCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9DaCwgdHlwZW5hbWUgX1RyLCB0eXBlbmFtZSBfVHAsIF9Mb2NrX3BvbGljeSBf
THA+CiAgICBpbmxpbmUgc3RkOjpiYXNpY19vc3RyZWFtPF9DaCwgX1RyPiYKICAgIG9wZXJhdG9y
PDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaCwgX1RyPiYgX19vcywKICAgICAgICBjb25zdCBfX3No
YXJlZF9wdHI8X1RwLCBfTHA+JiBfX3ApCiAgICB7CiAgICAgIF9fb3MgPDwgX19wLmdldCgpOwog
ICAgICByZXR1cm4gX19vczsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9EZWwsIHR5cGVu
YW1lIF9UcCwgX0xvY2tfcG9saWN5IF9McD4KICAgIGlubGluZSBfRGVsKgogICAgZ2V0X2RlbGV0
ZXIoY29uc3QgX19zaGFyZWRfcHRyPF9UcCwgX0xwPiYgX19wKSBub2V4Y2VwdAogICAgewoKCgog
ICAgICByZXR1cm4gMDsKCiAgICB9CiMgOTIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3NoYXJlZF9wdHIuaCIgMwogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4KICAgIGNsYXNzIHNoYXJlZF9wdHIgOiBwdWJsaWMgX19zaGFyZWRfcHRyPF9UcD4K
ICAgIHsKICAgIHB1YmxpYzoKCgoKCiAgICAgIGNvbnN0ZXhwciBzaGFyZWRfcHRyKCkgbm9leGNl
cHQKICAgICAgOiBfX3NoYXJlZF9wdHI8X1RwPigpIHsgfQoKICAgICAgc2hhcmVkX3B0cihjb25z
dCBzaGFyZWRfcHRyJikgbm9leGNlcHQgPSBkZWZhdWx0OwoKCgoKCgoKICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwMT4KIGV4cGxpY2l0IHNoYXJlZF9wdHIoX1RwMSogX19wKQogICAgICAgIDog
X19zaGFyZWRfcHRyPF9UcD4oX19wKSB7IH0KIyAxMjggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3NoYXJlZF9wdHIuaCIgMwogICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHAxLCB0eXBlbmFtZSBfRGVsZXRlcj4KIHNoYXJlZF9wdHIoX1RwMSog
X19wLCBfRGVsZXRlciBfX2QpCiAgICAgICAgOiBfX3NoYXJlZF9wdHI8X1RwPihfX3AsIF9fZCkg
eyB9CiMgMTQ1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44
LjEvYml0cy9zaGFyZWRfcHRyLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0RlbGV0ZXI+
CiBzaGFyZWRfcHRyKG51bGxwdHJfdCBfX3AsIF9EZWxldGVyIF9fZCkKICAgICAgICA6IF9fc2hh
cmVkX3B0cjxfVHA+KF9fcCwgX19kKSB7IH0KIyAxNjQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3NoYXJlZF9wdHIuaCIgMwogICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHAxLCB0eXBlbmFtZSBfRGVsZXRlciwgdHlwZW5hbWUgX0FsbG9jPgog
c2hhcmVkX3B0cihfVHAxKiBfX3AsIF9EZWxldGVyIF9fZCwgX0FsbG9jIF9fYSkKIDogX19zaGFy
ZWRfcHRyPF9UcD4oX19wLCBfX2QsIHN0ZDo6bW92ZShfX2EpKSB7IH0KIyAxODMgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3NoYXJlZF9wdHIu
aCIgMwogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRGVsZXRlciwgdHlwZW5hbWUgX0FsbG9jPgog
c2hhcmVkX3B0cihudWxscHRyX3QgX19wLCBfRGVsZXRlciBfX2QsIF9BbGxvYyBfX2EpCiA6IF9f
c2hhcmVkX3B0cjxfVHA+KF9fcCwgX19kLCBzdGQ6Om1vdmUoX19hKSkgeyB9CiMgMjA1ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljgu
MS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zaGFyZWRf
cHRyLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4KIHNoYXJlZF9wdHIoY29uc3Qg
c2hhcmVkX3B0cjxfVHAxPiYgX19yLCBfVHAqIF9fcCkgbm9leGNlcHQKIDogX19zaGFyZWRfcHRy
PF9UcD4oX19yLCBfX3ApIHsgfQojIDIxNiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc2hhcmVkX3B0ci5oIiAzCiAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcDEsIHR5cGVuYW1lID0gdHlwZW5hbWUKICAgICAgICBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX2NvbnZlcnRpYmxlPF9UcDEqLCBfVHAqPjo6dmFsdWU+Ojp0eXBlPgogc2hhcmVkX3B0
cihjb25zdCBzaGFyZWRfcHRyPF9UcDE+JiBfX3IpIG5vZXhjZXB0CiAgICAgICAgOiBfX3NoYXJl
ZF9wdHI8X1RwPihfX3IpIHsgfQoKCgoKCgogICAgICBzaGFyZWRfcHRyKHNoYXJlZF9wdHImJiBf
X3IpIG5vZXhjZXB0CiAgICAgIDogX19zaGFyZWRfcHRyPF9UcD4oc3RkOjptb3ZlKF9fcikpIHsg
fQoKCgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxLCB0eXBlbmFtZSA9IHR5cGVuYW1l
CiAgICAgICAgc3RkOjplbmFibGVfaWY8c3RkOjppc19jb252ZXJ0aWJsZTxfVHAxKiwgX1RwKj46
OnZhbHVlPjo6dHlwZT4KIHNoYXJlZF9wdHIoc2hhcmVkX3B0cjxfVHAxPiYmIF9fcikgbm9leGNl
cHQKIDogX19zaGFyZWRfcHRyPF9UcD4oc3RkOjptb3ZlKF9fcikpIHsgfQojIDI0NyAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc2hhcmVkX3B0
ci5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDE+CiBleHBsaWNpdCBzaGFyZWRfcHRy
KGNvbnN0IHdlYWtfcHRyPF9UcDE+JiBfX3IpCiA6IF9fc2hhcmVkX3B0cjxfVHA+KF9fcikgeyB9
CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4KIHNoYXJlZF9wdHIoc3RkOjphdXRvX3B0
cjxfVHAxPiYmIF9fcik7CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwgdHlwZW5hbWUg
X0RlbD4KIHNoYXJlZF9wdHIoc3RkOjp1bmlxdWVfcHRyPF9UcDEsIF9EZWw+JiYgX19yKQogOiBf
X3NoYXJlZF9wdHI8X1RwPihzdGQ6Om1vdmUoX19yKSkgeyB9CgoKCgoKCiAgICAgIGNvbnN0ZXhw
ciBzaGFyZWRfcHRyKG51bGxwdHJfdCBfX3ApIG5vZXhjZXB0CiAgICAgIDogX19zaGFyZWRfcHRy
PF9UcD4oX19wKSB7IH0KCiAgICAgIHNoYXJlZF9wdHImIG9wZXJhdG9yPShjb25zdCBzaGFyZWRf
cHRyJikgbm9leGNlcHQgPSBkZWZhdWx0OwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4K
IHNoYXJlZF9wdHImCiBvcGVyYXRvcj0oY29uc3Qgc2hhcmVkX3B0cjxfVHAxPiYgX19yKSBub2V4
Y2VwdAogewogICB0aGlzLT5fX3NoYXJlZF9wdHI8X1RwPjo6b3BlcmF0b3I9KF9fcik7CiAgIHJl
dHVybiAqdGhpczsKIH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxPgogc2hhcmVkX3B0
ciYKIG9wZXJhdG9yPShzdGQ6OmF1dG9fcHRyPF9UcDE+JiYgX19yKQogewogICB0aGlzLT5fX3No
YXJlZF9wdHI8X1RwPjo6b3BlcmF0b3I9KHN0ZDo6bW92ZShfX3IpKTsKICAgcmV0dXJuICp0aGlz
OwogfQoKCiAgICAgIHNoYXJlZF9wdHImCiAgICAgIG9wZXJhdG9yPShzaGFyZWRfcHRyJiYgX19y
KSBub2V4Y2VwdAogICAgICB7CiB0aGlzLT5fX3NoYXJlZF9wdHI8X1RwPjo6b3BlcmF0b3I9KHN0
ZDo6bW92ZShfX3IpKTsKIHJldHVybiAqdGhpczsKICAgICAgfQoKICAgICAgdGVtcGxhdGU8Y2xh
c3MgX1RwMT4KIHNoYXJlZF9wdHImCiBvcGVyYXRvcj0oc2hhcmVkX3B0cjxfVHAxPiYmIF9fcikg
bm9leGNlcHQKIHsKICAgdGhpcy0+X19zaGFyZWRfcHRyPF9UcD46Om9wZXJhdG9yPShzdGQ6Om1v
dmUoX19yKSk7CiAgIHJldHVybiAqdGhpczsKIH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cDEsIHR5cGVuYW1lIF9EZWw+CiBzaGFyZWRfcHRyJgogb3BlcmF0b3I9KHN0ZDo6dW5pcXVlX3B0
cjxfVHAxLCBfRGVsPiYmIF9fcikKIHsKICAgdGhpcy0+X19zaGFyZWRfcHRyPF9UcD46Om9wZXJh
dG9yPShzdGQ6Om1vdmUoX19yKSk7CiAgIHJldHVybiAqdGhpczsKIH0KCiAgICBwcml2YXRlOgoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZS4uLiBfQXJncz4KIHNoYXJl
ZF9wdHIoX1NwX21ha2Vfc2hhcmVkX3RhZyBfX3RhZywgY29uc3QgX0FsbG9jJiBfX2EsCiAgICAg
X0FyZ3MmJi4uLiBfX2FyZ3MpCiA6IF9fc2hhcmVkX3B0cjxfVHA+KF9fdGFnLCBfX2EsIHN0ZDo6
Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLikKIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwMSwgdHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZS4uLiBfQXJncz4KIGZyaWVuZCBzaGFyZWRf
cHRyPF9UcDE+CiBhbGxvY2F0ZV9zaGFyZWQoY29uc3QgX0FsbG9jJiBfX2EsIF9BcmdzJiYuLi4g
X19hcmdzKTsKICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxLCB0eXBlbmFtZSBfVHAy
PgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3Qgc2hhcmVkX3B0cjxfVHAxPiYg
X19hLAogICAgICAgIGNvbnN0IHNoYXJlZF9wdHI8X1RwMj4mIF9fYikgbm9leGNlcHQKICAgIHsg
cmV0dXJuIF9fYS5nZXQoKSA9PSBfX2IuZ2V0KCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3Qgc2hhcmVkX3B0cjxfVHA+JiBf
X2EsIG51bGxwdHJfdCkgbm9leGNlcHQKICAgIHsgcmV0dXJuICFfX2E7IH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPT0obnVsbHB0cl90LCBj
b25zdCBzaGFyZWRfcHRyPF9UcD4mIF9fYSkgbm9leGNlcHQKICAgIHsgcmV0dXJuICFfX2E7IH0K
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwgdHlwZW5hbWUgX1RwMj4KICAgIGlubGluZSBib29s
CiAgICBvcGVyYXRvciE9KGNvbnN0IHNoYXJlZF9wdHI8X1RwMT4mIF9fYSwKICAgICAgICBjb25z
dCBzaGFyZWRfcHRyPF9UcDI+JiBfX2IpIG5vZXhjZXB0CiAgICB7IHJldHVybiBfX2EuZ2V0KCkg
IT0gX19iLmdldCgpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBib29s
CiAgICBvcGVyYXRvciE9KGNvbnN0IHNoYXJlZF9wdHI8X1RwPiYgX19hLCBudWxscHRyX3QpIG5v
ZXhjZXB0CiAgICB7IHJldHVybiAoYm9vbClfX2E7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0obnVsbHB0cl90LCBjb25zdCBzaGFyZWRf
cHRyPF9UcD4mIF9fYSkgbm9leGNlcHQKICAgIHsgcmV0dXJuIChib29sKV9fYTsgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHAxLCB0eXBlbmFtZSBfVHAyPgogICAgaW5saW5lIGJvb2wKICAgIG9w
ZXJhdG9yPChjb25zdCBzaGFyZWRfcHRyPF9UcDE+JiBfX2EsCiAgICAgICBjb25zdCBzaGFyZWRf
cHRyPF9UcDI+JiBfX2IpIG5vZXhjZXB0CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3Rk
Ojpjb21tb25fdHlwZTxfVHAxKiwgX1RwMio+Ojp0eXBlIF9DVDsKICAgICAgcmV0dXJuIHN0ZDo6
bGVzczxfQ1Q+KCkoX19hLmdldCgpLCBfX2IuZ2V0KCkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IHNoYXJlZF9wdHI8
X1RwPiYgX19hLCBudWxscHRyX3QpIG5vZXhjZXB0CiAgICB7IHJldHVybiBzdGQ6Omxlc3M8X1Rw
Kj4oKShfX2EuZ2V0KCksIG51bGxwdHIpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAg
IGlubGluZSBib29sCiAgICBvcGVyYXRvcjwobnVsbHB0cl90LCBjb25zdCBzaGFyZWRfcHRyPF9U
cD4mIF9fYSkgbm9leGNlcHQKICAgIHsgcmV0dXJuIHN0ZDo6bGVzczxfVHAqPigpKG51bGxwdHIs
IF9fYS5nZXQoKSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwgdHlwZW5hbWUgX1RwMj4K
ICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcjw9KGNvbnN0IHNoYXJlZF9wdHI8X1RwMT4mIF9f
YSwKICAgICAgICBjb25zdCBzaGFyZWRfcHRyPF9UcDI+JiBfX2IpIG5vZXhjZXB0CiAgICB7IHJl
dHVybiAhKF9fYiA8IF9fYSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5l
IGJvb2wKICAgIG9wZXJhdG9yPD0oY29uc3Qgc2hhcmVkX3B0cjxfVHA+JiBfX2EsIG51bGxwdHJf
dCkgbm9leGNlcHQKICAgIHsgcmV0dXJuICEobnVsbHB0ciA8IF9fYSk7IH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPD0obnVsbHB0cl90LCBj
b25zdCBzaGFyZWRfcHRyPF9UcD4mIF9fYSkgbm9leGNlcHQKICAgIHsgcmV0dXJuICEoX19hIDwg
bnVsbHB0cik7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwgdHlwZW5hbWUgX1RwMj4KICAg
IGlubGluZSBib29sCiAgICBvcGVyYXRvcj4oY29uc3Qgc2hhcmVkX3B0cjxfVHAxPiYgX19hLAog
ICAgICAgY29uc3Qgc2hhcmVkX3B0cjxfVHAyPiYgX19iKSBub2V4Y2VwdAogICAgeyByZXR1cm4g
KF9fYiA8IF9fYSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGJvb2wK
ICAgIG9wZXJhdG9yPihjb25zdCBzaGFyZWRfcHRyPF9UcD4mIF9fYSwgbnVsbHB0cl90KSBub2V4
Y2VwdAogICAgeyByZXR1cm4gc3RkOjpsZXNzPF9UcCo+KCkobnVsbHB0ciwgX19hLmdldCgpKTsg
fQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I+
KG51bGxwdHJfdCwgY29uc3Qgc2hhcmVkX3B0cjxfVHA+JiBfX2EpIG5vZXhjZXB0CiAgICB7IHJl
dHVybiBzdGQ6Omxlc3M8X1RwKj4oKShfX2EuZ2V0KCksIG51bGxwdHIpOyB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcDEsIHR5cGVuYW1lIF9UcDI+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0
b3I+PShjb25zdCBzaGFyZWRfcHRyPF9UcDE+JiBfX2EsCiAgICAgICAgY29uc3Qgc2hhcmVkX3B0
cjxfVHAyPiYgX19iKSBub2V4Y2VwdAogICAgeyByZXR1cm4gIShfX2EgPCBfX2IpOyB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj49KGNvbnN0
IHNoYXJlZF9wdHI8X1RwPiYgX19hLCBudWxscHRyX3QpIG5vZXhjZXB0CiAgICB7IHJldHVybiAh
KF9fYSA8IG51bGxwdHIpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBi
b29sCiAgICBvcGVyYXRvcj49KG51bGxwdHJfdCwgY29uc3Qgc2hhcmVkX3B0cjxfVHA+JiBfX2Ep
IG5vZXhjZXB0CiAgICB7IHJldHVybiAhKG51bGxwdHIgPCBfX2EpOyB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBsZXNzPHNoYXJlZF9wdHI8X1RwPj4gOiBwdWJsaWMgX1Nw
X2xlc3M8c2hhcmVkX3B0cjxfVHA+PgogICAgeyB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PgogICAgaW5saW5lIHZvaWQKICAgIHN3YXAoc2hhcmVkX3B0cjxfVHA+JiBfX2EsIHNoYXJlZF9w
dHI8X1RwPiYgX19iKSBub2V4Y2VwdAogICAgeyBfX2Euc3dhcChfX2IpOyB9CgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9UcDE+CiAgICBpbmxpbmUgc2hhcmVkX3B0cjxfVHA+
CiAgICBzdGF0aWNfcG9pbnRlcl9jYXN0KGNvbnN0IHNoYXJlZF9wdHI8X1RwMT4mIF9fcikgbm9l
eGNlcHQKICAgIHsgcmV0dXJuIHNoYXJlZF9wdHI8X1RwPihfX3IsIHN0YXRpY19jYXN0PF9UcCo+
KF9fci5nZXQoKSkpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1RwMT4K
ICAgIGlubGluZSBzaGFyZWRfcHRyPF9UcD4KICAgIGNvbnN0X3BvaW50ZXJfY2FzdChjb25zdCBz
aGFyZWRfcHRyPF9UcDE+JiBfX3IpIG5vZXhjZXB0CiAgICB7IHJldHVybiBzaGFyZWRfcHRyPF9U
cD4oX19yLCBjb25zdF9jYXN0PF9UcCo+KF9fci5nZXQoKSkpOyB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcCwgdHlwZW5hbWUgX1RwMT4KICAgIGlubGluZSBzaGFyZWRfcHRyPF9UcD4KICAgIGR5
bmFtaWNfcG9pbnRlcl9jYXN0KGNvbnN0IHNoYXJlZF9wdHI8X1RwMT4mIF9fcikgbm9leGNlcHQK
ICAgIHsKICAgICAgaWYgKF9UcCogX19wID0gZHluYW1pY19jYXN0PF9UcCo+KF9fci5nZXQoKSkp
CiByZXR1cm4gc2hhcmVkX3B0cjxfVHA+KF9fciwgX19wKTsKICAgICAgcmV0dXJuIHNoYXJlZF9w
dHI8X1RwPigpOwogICAgfQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjbGFz
cyB3ZWFrX3B0ciA6IHB1YmxpYyBfX3dlYWtfcHRyPF9UcD4KICAgIHsKICAgIHB1YmxpYzoKICAg
ICAgY29uc3RleHByIHdlYWtfcHRyKCkgbm9leGNlcHQKICAgICAgOiBfX3dlYWtfcHRyPF9UcD4o
KSB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDEsIHR5cGVuYW1lID0gdHlwZW5hbWUK
ICAgICAgICBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnZlcnRpYmxlPF9UcDEqLCBfVHAqPjo6
dmFsdWU+Ojp0eXBlPgogd2Vha19wdHIoY29uc3Qgd2Vha19wdHI8X1RwMT4mIF9fcikgbm9leGNl
cHQKIDogX193ZWFrX3B0cjxfVHA+KF9fcikgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHAxLCB0eXBlbmFtZSA9IHR5cGVuYW1lCiAgICAgICAgc3RkOjplbmFibGVfaWY8c3RkOjppc19j
b252ZXJ0aWJsZTxfVHAxKiwgX1RwKj46OnZhbHVlPjo6dHlwZT4KIHdlYWtfcHRyKGNvbnN0IHNo
YXJlZF9wdHI8X1RwMT4mIF9fcikgbm9leGNlcHQKIDogX193ZWFrX3B0cjxfVHA+KF9fcikgeyB9
CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxPgogd2Vha19wdHImCiBvcGVyYXRvcj0oY29u
c3Qgd2Vha19wdHI8X1RwMT4mIF9fcikgbm9leGNlcHQKIHsKICAgdGhpcy0+X193ZWFrX3B0cjxf
VHA+OjpvcGVyYXRvcj0oX19yKTsKICAgcmV0dXJuICp0aGlzOwogfQoKICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwMT4KIHdlYWtfcHRyJgogb3BlcmF0b3I9KGNvbnN0IHNoYXJlZF9wdHI8X1Rw
MT4mIF9fcikgbm9leGNlcHQKIHsKICAgdGhpcy0+X193ZWFrX3B0cjxfVHA+OjpvcGVyYXRvcj0o
X19yKTsKICAgcmV0dXJuICp0aGlzOwogfQoKICAgICAgc2hhcmVkX3B0cjxfVHA+CiAgICAgIGxv
Y2soKSBjb25zdCBub2V4Y2VwdAogICAgICB7CgogaWYgKHRoaXMtPmV4cGlyZWQoKSkKICAgcmV0
dXJuIHNoYXJlZF9wdHI8X1RwPigpOwoKIGlmICh0cnVlKQogICB7CiAgICAgcmV0dXJuIHNoYXJl
ZF9wdHI8X1RwPigqdGhpcyk7CiAgIH0KIGlmIChmYWxzZSkKICAgewogICAgIHJldHVybiBzaGFy
ZWRfcHRyPF9UcD4oKTsKICAgfQoKCgogICAgICB9CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogICAgaW5saW5lIHZvaWQKICAgIHN3YXAod2Vha19wdHI8X1RwPiYgX19hLCB3ZWFr
X3B0cjxfVHA+JiBfX2IpIG5vZXhjZXB0CiAgICB7IF9fYS5zd2FwKF9fYik7IH0KCgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3Qgb3duZXJfbGVzczsKCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBvd25lcl9sZXNzPHNoYXJlZF9wdHI8X1RwPj4KICAgIDog
cHVibGljIF9TcF9vd25lcl9sZXNzPHNoYXJlZF9wdHI8X1RwPiwgd2Vha19wdHI8X1RwPj4KICAg
IHsgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBvd25lcl9sZXNzPHdl
YWtfcHRyPF9UcD4+CiAgICA6IHB1YmxpYyBfU3Bfb3duZXJfbGVzczx3ZWFrX3B0cjxfVHA+LCBz
aGFyZWRfcHRyPF9UcD4+CiAgICB7IH07CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAg
IGNsYXNzIGVuYWJsZV9zaGFyZWRfZnJvbV90aGlzCiAgICB7CiAgICBwcm90ZWN0ZWQ6CiAgICAg
IGNvbnN0ZXhwciBlbmFibGVfc2hhcmVkX2Zyb21fdGhpcygpIG5vZXhjZXB0IHsgfQoKICAgICAg
ZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoY29uc3QgZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMmKSBu
b2V4Y2VwdCB7IH0KCiAgICAgIGVuYWJsZV9zaGFyZWRfZnJvbV90aGlzJgogICAgICBvcGVyYXRv
cj0oY29uc3QgZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMmKSBub2V4Y2VwdAogICAgICB7IHJldHVy
biAqdGhpczsgfQoKICAgICAgfmVuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCkgeyB9CgogICAgcHVi
bGljOgogICAgICBzaGFyZWRfcHRyPF9UcD4KICAgICAgc2hhcmVkX2Zyb21fdGhpcygpCiAgICAg
IHsgcmV0dXJuIHNoYXJlZF9wdHI8X1RwPih0aGlzLT5fTV93ZWFrX3RoaXMpOyB9CgogICAgICBz
aGFyZWRfcHRyPGNvbnN0IF9UcD4KICAgICAgc2hhcmVkX2Zyb21fdGhpcygpIGNvbnN0CiAgICAg
IHsgcmV0dXJuIHNoYXJlZF9wdHI8Y29uc3QgX1RwPih0aGlzLT5fTV93ZWFrX3RoaXMpOyB9Cgog
ICAgcHJpdmF0ZToKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4KIHZvaWQKIF9NX3dlYWtf
YXNzaWduKF9UcDEqIF9fcCwgY29uc3QgX19zaGFyZWRfY291bnQ8PiYgX19uKSBjb25zdCBub2V4
Y2VwdAogeyBfTV93ZWFrX3RoaXMuX01fYXNzaWduKF9fcCwgX19uKTsgfQoKICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwMT4KIGZyaWVuZCB2b2lkCiBfX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlz
X2hlbHBlcihjb25zdCBfX3NoYXJlZF9jb3VudDw+JiBfX3BuLAogICAgICBjb25zdCBlbmFibGVf
c2hhcmVkX2Zyb21fdGhpcyogX19wZSwKICAgICAgY29uc3QgX1RwMSogX19weCkgbm9leGNlcHQK
IHsKICAgaWYgKF9fcGUgIT0gMCkKICAgICBfX3BlLT5fTV93ZWFrX2Fzc2lnbihjb25zdF9jYXN0
PF9UcDEqPihfX3B4KSwgX19wbik7CiB9CgogICAgICBtdXRhYmxlIHdlYWtfcHRyPF9UcD4gX01f
d2Vha190aGlzOwogICAgfTsKIyA1OTMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9iaXRzL3NoYXJlZF9wdHIuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcCwgdHlwZW5hbWUgX0FsbG9jLCB0eXBlbmFtZS4uLiBfQXJncz4KICAgIGlubGluZSBzaGFy
ZWRfcHRyPF9UcD4KICAgIGFsbG9jYXRlX3NoYXJlZChjb25zdCBfQWxsb2MmIF9fYSwgX0FyZ3Mm
Ji4uLiBfX2FyZ3MpCiAgICB7CiAgICAgIHJldHVybiBzaGFyZWRfcHRyPF9UcD4oX1NwX21ha2Vf
c2hhcmVkX3RhZygpLCBfX2EsCiAgICAgICAgc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4u
KTsKICAgIH0KIyA2MDggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjguMS9iaXRzL3NoYXJlZF9wdHIuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlw
ZW5hbWUuLi4gX0FyZ3M+CiAgICBpbmxpbmUgc2hhcmVkX3B0cjxfVHA+CiAgICBtYWtlX3NoYXJl
ZChfQXJncyYmLi4uIF9fYXJncykKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OnJl
bW92ZV9jb25zdDxfVHA+Ojp0eXBlIF9UcF9uYzsKICAgICAgcmV0dXJuIHN0ZDo6YWxsb2NhdGVf
c2hhcmVkPF9UcD4oc3RkOjphbGxvY2F0b3I8X1RwX25jPigpLAogICAgICAgICAgIHN0ZDo6Zm9y
d2FyZDxfQXJncz4oX19hcmdzKS4uLik7CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
CiAgICBzdHJ1Y3QgaGFzaDxzaGFyZWRfcHRyPF9UcD4+CiAgICA6IHB1YmxpYyBfX2hhc2hfYmFz
ZTxzaXplX3QsIHNoYXJlZF9wdHI8X1RwPj4KICAgIHsKICAgICAgc2l6ZV90CiAgICAgIG9wZXJh
dG9yKCkoY29uc3Qgc2hhcmVkX3B0cjxfVHA+JiBfX3MpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsg
cmV0dXJuIHN0ZDo6aGFzaDxfVHAqPigpKF9fcy5nZXQoKSk7IH0KICAgIH07CgoKCgp9CiMgODMg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9tZW1vcnki
IDIgMwoKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44
LjEvYmFja3dhcmQvYXV0b19wdHIuaCIgMSAzCiMgMzYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iYWNrd2FyZC9hdXRvX3B0ci5oIiAzCm5hbWVzcGFj
ZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKIyA0
NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JhY2t3
YXJkL2F1dG9fcHRyLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAxPgogICAgc3RydWN0IGF1
dG9fcHRyX3JlZgogICAgewogICAgICBfVHAxKiBfTV9wdHI7CgogICAgICBleHBsaWNpdAogICAg
ICBhdXRvX3B0cl9yZWYoX1RwMSogX19wKTogX01fcHRyKF9fcCkgeyB9CiAgICB9IF9fYXR0cmli
dXRlX18gKChfX2RlcHJlY2F0ZWRfXykpOwojIDg2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYmFja3dhcmQvYXV0b19wdHIuaCIgMwogIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4KICAgIGNsYXNzIGF1dG9fcHRyCiAgICB7CiAgICBwcml2YXRlOgogICAg
ICBfVHAqIF9NX3B0cjsKCiAgICBwdWJsaWM6CgogICAgICB0eXBlZGVmIF9UcCBlbGVtZW50X3R5
cGU7CgoKCgoKCgogICAgICBleHBsaWNpdAogICAgICBhdXRvX3B0cihlbGVtZW50X3R5cGUqIF9f
cCA9IDApIHRocm93KCkgOiBfTV9wdHIoX19wKSB7IH0KIyAxMTIgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iYWNrd2FyZC9hdXRvX3B0ci5oIiAzCiAg
ICAgIGF1dG9fcHRyKGF1dG9fcHRyJiBfX2EpIHRocm93KCkgOiBfTV9wdHIoX19hLnJlbGVhc2Uo
KSkgeyB9CiMgMTI0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC44LjEvYmFja3dhcmQvYXV0b19wdHIuaCIgMwogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAx
PgogICAgICAgIGF1dG9fcHRyKGF1dG9fcHRyPF9UcDE+JiBfX2EpIHRocm93KCkgOiBfTV9wdHIo
X19hLnJlbGVhc2UoKSkgeyB9CiMgMTM1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC44LjEvYmFja3dhcmQvYXV0b19wdHIuaCIgMwogICAgICBhdXRvX3B0ciYK
ICAgICAgb3BlcmF0b3I9KGF1dG9fcHRyJiBfX2EpIHRocm93KCkKICAgICAgewogcmVzZXQoX19h
LnJlbGVhc2UoKSk7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KIyAxNTIgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iYWNrd2FyZC9hdXRvX3B0ci5oIiAz
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDE+CiAgICAgICAgYXV0b19wdHImCiAgICAgICAg
b3BlcmF0b3I9KGF1dG9fcHRyPF9UcDE+JiBfX2EpIHRocm93KCkKICAgICAgICB7CiAgIHJlc2V0
KF9fYS5yZWxlYXNlKCkpOwogICByZXR1cm4gKnRoaXM7CiB9CiMgMTcwICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYmFja3dhcmQvYXV0b19wdHIuaCIg
MwogICAgICB+YXV0b19wdHIoKSB7IGRlbGV0ZSBfTV9wdHI7IH0KIyAxODAgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iYWNrd2FyZC9hdXRvX3B0ci5o
IiAzCiAgICAgIGVsZW1lbnRfdHlwZSYKICAgICAgb3BlcmF0b3IqKCkgY29uc3QgdGhyb3coKQog
ICAgICB7CiA7CiByZXR1cm4gKl9NX3B0cjsKICAgICAgfQoKCgoKCgoKICAgICAgZWxlbWVudF90
eXBlKgogICAgICBvcGVyYXRvci0+KCkgY29uc3QgdGhyb3coKQogICAgICB7CiA7CiByZXR1cm4g
X01fcHRyOwogICAgICB9CiMgMjEwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC44LjEvYmFja3dhcmQvYXV0b19wdHIuaCIgMwogICAgICBlbGVtZW50X3R5cGUq
CiAgICAgIGdldCgpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gX01fcHRyOyB9CiMgMjI0ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljgu
MS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYmFja3dhcmQvYXV0
b19wdHIuaCIgMwogICAgICBlbGVtZW50X3R5cGUqCiAgICAgIHJlbGVhc2UoKSB0aHJvdygpCiAg
ICAgIHsKIGVsZW1lbnRfdHlwZSogX190bXAgPSBfTV9wdHI7CiBfTV9wdHIgPSAwOwogcmV0dXJu
IF9fdG1wOwogICAgICB9CiMgMjM5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC44LjEvYmFja3dhcmQvYXV0b19wdHIuaCIgMwogICAgICB2b2lkCiAgICAgIHJl
c2V0KGVsZW1lbnRfdHlwZSogX19wID0gMCkgdGhyb3coKQogICAgICB7CiBpZiAoX19wICE9IF9N
X3B0cikKICAgewogICAgIGRlbGV0ZSBfTV9wdHI7CiAgICAgX01fcHRyID0gX19wOwogICB9CiAg
ICAgIH0KIyAyNjAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjguMS9iYWNrd2FyZC9hdXRvX3B0ci5oIiAzCiAgICAgIGF1dG9fcHRyKGF1dG9fcHRyX3JlZjxl
bGVtZW50X3R5cGU+IF9fcmVmKSB0aHJvdygpCiAgICAgIDogX01fcHRyKF9fcmVmLl9NX3B0cikg
eyB9CgogICAgICBhdXRvX3B0ciYKICAgICAgb3BlcmF0b3I9KGF1dG9fcHRyX3JlZjxlbGVtZW50
X3R5cGU+IF9fcmVmKSB0aHJvdygpCiAgICAgIHsKIGlmIChfX3JlZi5fTV9wdHIgIT0gdGhpcy0+
Z2V0KCkpCiAgIHsKICAgICBkZWxldGUgX01fcHRyOwogICAgIF9NX3B0ciA9IF9fcmVmLl9NX3B0
cjsKICAgfQogcmV0dXJuICp0aGlzOwogICAgICB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHAxPgogICAgICAgIG9wZXJhdG9yIGF1dG9fcHRyX3JlZjxfVHAxPigpIHRocm93KCkKICAgICAg
ICB7IHJldHVybiBhdXRvX3B0cl9yZWY8X1RwMT4odGhpcy0+cmVsZWFzZSgpKTsgfQoKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4KICAgICAgICBvcGVyYXRvciBhdXRvX3B0cjxfVHAxPigp
IHRocm93KCkKICAgICAgICB7IHJldHVybiBhdXRvX3B0cjxfVHAxPih0aGlzLT5yZWxlYXNlKCkp
OyB9CiAgICB9IF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpOwoKCgogIHRlbXBsYXRl
PD4KICAgIGNsYXNzIGF1dG9fcHRyPHZvaWQ+CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVk
ZWYgdm9pZCBlbGVtZW50X3R5cGU7CiAgICB9IF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRf
XykpOwoKCiAgdGVtcGxhdGU8X0xvY2tfcG9saWN5IF9McD4KICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+CiAgICBpbmxpbmUKICAgIF9fc2hhcmVkX2NvdW50PF9McD46Ol9fc2hhcmVkX2NvdW50KHN0
ZDo6YXV0b19wdHI8X1RwPiYmIF9fcikKICAgIDogX01fcGkobmV3IF9TcF9jb3VudGVkX3B0cjxf
VHAqLCBfTHA+KF9fci5nZXQoKSkpCiAgICB7IF9fci5yZWxlYXNlKCk7IH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwLCBfTG9ja19wb2xpY3kgX0xwPgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDE+
CiAgICBpbmxpbmUKICAgIF9fc2hhcmVkX3B0cjxfVHAsIF9McD46Ol9fc2hhcmVkX3B0cihzdGQ6
OmF1dG9fcHRyPF9UcDE+JiYgX19yKQogICAgOiBfTV9wdHIoX19yLmdldCgpKSwgX01fcmVmY291
bnQoKQogICAgewogICAgIAogICAgICBzdGF0aWNfYXNzZXJ0KCBzaXplb2YoX1RwMSkgPiAwLCAi
aW5jb21wbGV0ZSB0eXBlIiApOwogICAgICBfVHAxKiBfX3RtcCA9IF9fci5nZXQoKTsKICAgICAg
X01fcmVmY291bnQgPSBfX3NoYXJlZF9jb3VudDxfTHA+KHN0ZDo6bW92ZShfX3IpKTsKICAgICAg
X19lbmFibGVfc2hhcmVkX2Zyb21fdGhpc19oZWxwZXIoX01fcmVmY291bnQsIF9fdG1wLCBfX3Rt
cCk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHAxPgogICAgaW5saW5lCiAgICBzaGFyZWRfcHRyPF9UcD46OnNoYXJlZF9wdHIoc3RkOjphdXRv
X3B0cjxfVHAxPiYmIF9fcikKICAgIDogX19zaGFyZWRfcHRyPF9UcD4oc3RkOjptb3ZlKF9fcikp
IHsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9EcD4KICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVXAsIHR5cGVuYW1lPgogICAgaW5saW5lCiAgICB1bmlxdWVfcHRyPF9UcCwgX0Rw
Pjo6dW5pcXVlX3B0cihhdXRvX3B0cjxfVXA+JiYgX191KSBub2V4Y2VwdAogICAgOiBfTV90KF9f
dS5yZWxlYXNlKCksIGRlbGV0ZXJfdHlwZSgpKSB7IH0KCgoKfQojIDg1ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvbWVtb3J5IiAyIDMKIyAzMiAiL2hv
bWUvd2Via2l0YnVpbGRib3Qvc2xhdmVzL2VmbC1BUk12Ny10aHVtYjItYnVpbGQvYnVpbGRzbGF2
ZS9lZmwtYXJtdjctdGh1bWIyLWJ1aWxkL2J1aWxkL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJh
cy5oIiAyCgojIDEgIi9ob21lL3dlYmtpdGJ1aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIy
LWJ1aWxkL2J1aWxkc2xhdmUvZWZsLWFybXY3LXRodW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvV1RG
L3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIiAxCiMgNjcgIi9ob21lL3dlYmtpdGJ1aWxkYm90L3Ns
YXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxkc2xhdmUvZWZsLWFybXY3LXRodW1iMi1i
dWlsZC9idWlsZC9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIgpuYW1lc3BhY2Ug
V1RGIHsKCmVudW0gY2xhc3MgQ2hlY2tlZFN0YXRlIHsKICAgIERpZE92ZXJmbG93LAogICAgRGlk
Tm90T3ZlcmZsb3cKfTsKCmNsYXNzIENyYXNoT25PdmVyZmxvdyB7CnB1YmxpYzoKICAgIHN0YXRp
YyB2b2lkIG92ZXJmbG93ZWQoKQogICAgewogICAgICAgIFdURkNyYXNoKCk7CiAgICB9CgogICAg
dm9pZCBjbGVhck92ZXJmbG93KCkgeyB9CgpwdWJsaWM6CiAgICBib29sIGhhc092ZXJmbG93ZWQo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQp9OwoKY2xhc3MgUmVjb3JkT3ZlcmZsb3cgewpwcm90
ZWN0ZWQ6CiAgICBSZWNvcmRPdmVyZmxvdygpCiAgICAgICAgOiBtX292ZXJmbG93ZWQoZmFsc2Up
CiAgICB7CiAgICB9CgogICAgdm9pZCBvdmVyZmxvd2VkKCkKICAgIHsKICAgICAgICBtX292ZXJm
bG93ZWQgPSB0cnVlOwogICAgfQoKICAgIHZvaWQgY2xlYXJPdmVyZmxvdygpCiAgICB7CiAgICAg
ICAgbV9vdmVyZmxvd2VkID0gZmFsc2U7CiAgICB9CgpwdWJsaWM6CiAgICBib29sIGhhc092ZXJm
bG93ZWQoKSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93ZWQ7IH0KCnByaXZhdGU6CiAgICB1bnNp
Z25lZCBjaGFyIG1fb3ZlcmZsb3dlZDsKfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBULCBjbGFzcyBP
dmVyZmxvd0hhbmRsZXIgPSBDcmFzaE9uT3ZlcmZsb3c+IGNsYXNzIENoZWNrZWQ7CnRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVtb3ZlQ2hlY2tlZDsKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHN0cnVjdCBSZW1vdmVDaGVja2VkPENoZWNrZWQ8VD4+OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFRh
cmdldCwgdHlwZW5hbWUgU291cmNlLCBib29sIHRhcmdldFNpZ25lZCA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8VGFyZ2V0Pjo6aXNfc2lnbmVkLCBib29sIHNvdXJjZVNpZ25lZCA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8U291cmNlPjo6aXNfc2lnbmVkPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjsKdGVtcGxh
dGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tl
cjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIGZhbHNlPiB7CiAgICBzdGF0aWMgYm9vbCBpbkJvdW5k
cyhTb3VyY2UgdmFsdWUpCiAgICB7CgoKICAgICAgICByZXR1cm4gdmFsdWUgPD0gc3RkOjpudW1l
cmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsKICAgIH0KfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBU
YXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3Vy
Y2UsIHRydWUsIHRydWU+IHsKICAgIHN0YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkK
ICAgIHsKCgogICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1pbigp
IDw9IHZhbHVlICYmIHZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWF4KCk7
CiAgICB9Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0
cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwgdHJ1ZT4gewogICAgc3Rh
dGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgewoKICAgICAgICBpZiAodmFsdWUg
PCAwKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CgoKICAgICAgICBpZiAoc2l6ZW9mKFRhcmdl
dCkgPj0gc2l6ZW9mKFNvdXJjZSkpCiAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUYXJn
ZXQ+KHZhbHVlKSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46Om1heCgpOwoKCiAgICAg
ICAgcmV0dXJuIHZhbHVlIDw9IHN0YXRpY19jYXN0PFNvdXJjZT4oc3RkOjpudW1lcmljX2xpbWl0
czxUYXJnZXQ+OjptYXgoKSk7CiAgICB9Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0
eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCB0cnVl
LCBmYWxzZT4gewogICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNlIHZhbHVlKQogICAgewoK
ICAgICAgICBpZiAoc2l6ZW9mKFRhcmdldCkgPD0gc2l6ZW9mKFNvdXJjZSkpCiAgICAgICAgICAg
IHJldHVybiB2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTb3VyY2U+KHN0ZDo6bnVtZXJpY19saW1pdHM8
VGFyZ2V0Pjo6bWF4KCkpOwoKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cn07Cgp0ZW1wbGF0
ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2UsIGJvb2wgQ2FuRWxpZGUgPSBzdGQ6
OmlzX3NhbWU8VGFyZ2V0LCBTb3VyY2U+Ojp2YWx1ZSB8fCAoc2l6ZW9mKFRhcmdldCkgPiBzaXpl
b2YoU291cmNlKSkgPiBzdHJ1Y3QgQm91bmRzQ2hlY2tFbGlkZXI7CnRlbXBsYXRlIDx0eXBlbmFt
ZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0NoZWNrRWxpZGVyPFRhcmdl
dCwgU291cmNlLCB0cnVlPiB7CiAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UpIHsgcmV0
dXJuIHRydWU7IH0KfTsKdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNl
PiBzdHJ1Y3QgQm91bmRzQ2hlY2tFbGlkZXI8VGFyZ2V0LCBTb3VyY2UsIGZhbHNlPiA6IHB1Ymxp
YyBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlPiB7Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUg
VGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0luQm91bmRzKFNv
dXJjZSB2YWx1ZSkKewogICAgcmV0dXJuIEJvdW5kc0NoZWNrRWxpZGVyPFRhcmdldCwgU291cmNl
Pjo6aW5Cb3VuZHModmFsdWUpOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlbW92
ZUNoZWNrZWQgewogICAgdHlwZWRlZiBUIENsZWFuVHlwZTsKICAgIHN0YXRpYyBjb25zdCBDbGVh
blR5cGUgRGVmYXVsdFZhbHVlID0gMDsKfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
UmVtb3ZlQ2hlY2tlZDxDaGVja2VkPFQsIENyYXNoT25PdmVyZmxvdz4+IHsKICAgIHR5cGVkZWYg
dHlwZW5hbWUgUmVtb3ZlQ2hlY2tlZDxUPjo6Q2xlYW5UeXBlIENsZWFuVHlwZTsKICAgIHN0YXRp
YyBjb25zdCBDbGVhblR5cGUgRGVmYXVsdFZhbHVlID0gMDsKfTsKCnRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgUmVtb3ZlQ2hlY2tlZDxDaGVja2VkPFQsIFJlY29yZE92ZXJmbG93Pj4gewog
ICAgdHlwZWRlZiB0eXBlbmFtZSBSZW1vdmVDaGVja2VkPFQ+OjpDbGVhblR5cGUgQ2xlYW5UeXBl
OwogICAgc3RhdGljIGNvbnN0IENsZWFuVHlwZSBEZWZhdWx0VmFsdWUgPSAwOwp9OwoKCgp0ZW1w
bGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgYm9vbCB1SXNCaWdnZXIgPSAoc2l6ZW9mKFUp
ID4gc2l6ZW9mKFYpKSwgYm9vbCBzYW1lU2l6ZSA9IChzaXplb2YoVSkgPT0gc2l6ZW9mKFYpKT4g
c3RydWN0IFJlc3VsdEJhc2U7CnRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPiBzdHJ1
Y3QgUmVzdWx0QmFzZTxVLCBWLCB0cnVlLCBmYWxzZT4gewogICAgdHlwZWRlZiBVIFJlc3VsdFR5
cGU7Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3RydWN0IFJlc3VsdEJh
c2U8VSwgViwgZmFsc2UsIGZhbHNlPiB7CiAgICB0eXBlZGVmIFYgUmVzdWx0VHlwZTsKfTsKCnRl
bXBsYXRlIDx0eXBlbmFtZSBVPiBzdHJ1Y3QgUmVzdWx0QmFzZTxVLCBVLCBmYWxzZSwgdHJ1ZT4g
ewogICAgdHlwZWRlZiBVIFJlc3VsdFR5cGU7Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlw
ZW5hbWUgViwgYm9vbCB1SXNTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFU+Ojppc19zaWdu
ZWQsIGJvb2wgdklzU2lnbmVkID0gc3RkOjpudW1lcmljX2xpbWl0czxWPjo6aXNfc2lnbmVkPiBz
dHJ1Y3QgU2lnbmVkbmVzc1NlbGVjdG9yOwp0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUg
Vj4gc3RydWN0IFNpZ25lZG5lc3NTZWxlY3RvcjxVLCBWLCB0cnVlLCB0cnVlPiB7CiAgICB0eXBl
ZGVmIFUgUmVzdWx0VHlwZTsKfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPiBz
dHJ1Y3QgU2lnbmVkbmVzc1NlbGVjdG9yPFUsIFYsIGZhbHNlLCBmYWxzZT4gewogICAgdHlwZWRl
ZiBVIFJlc3VsdFR5cGU7Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3Ry
dWN0IFNpZ25lZG5lc3NTZWxlY3RvcjxVLCBWLCB0cnVlLCBmYWxzZT4gewogICAgdHlwZWRlZiBW
IFJlc3VsdFR5cGU7Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3RydWN0
IFNpZ25lZG5lc3NTZWxlY3RvcjxVLCBWLCBmYWxzZSwgdHJ1ZT4gewogICAgdHlwZWRlZiBVIFJl
c3VsdFR5cGU7Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3RydWN0IFJl
c3VsdEJhc2U8VSwgViwgZmFsc2UsIHRydWU+IHsKICAgIHR5cGVkZWYgdHlwZW5hbWUgU2lnbmVk
bmVzc1NlbGVjdG9yPFUsIFY+OjpSZXN1bHRUeXBlIFJlc3VsdFR5cGU7Cn07Cgp0ZW1wbGF0ZSA8
dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3RydWN0IFJlc3VsdCA6IFJlc3VsdEJhc2U8dHlwZW5h
bWUgUmVtb3ZlQ2hlY2tlZDxVPjo6Q2xlYW5UeXBlLCB0eXBlbmFtZSBSZW1vdmVDaGVja2VkPFY+
OjpDbGVhblR5cGU+IHsKfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBMSFMsIHR5cGVuYW1lIFJIUywg
dHlwZW5hbWUgUmVzdWx0VHlwZSA9IHR5cGVuYW1lIFJlc3VsdDxMSFMsIFJIUz46OlJlc3VsdFR5
cGUsCiAgICBib29sIGxoc1NpZ25lZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8TEhTPjo6aXNfc2ln
bmVkLCBib29sIHJoc1NpZ25lZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8UkhTPjo6aXNfc2lnbmVk
PiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXJhdGlvbnM7Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgTEhTLCB0
eXBlbmFtZSBSSFMsIHR5cGVuYW1lIFJlc3VsdFR5cGU+IHN0cnVjdCBBcml0aG1ldGljT3BlcmF0
aW9uczxMSFMsIFJIUywgUmVzdWx0VHlwZSwgdHJ1ZSwgdHJ1ZT4gewoKCgogICAgc3RhdGljIGlu
bGluZSBib29sIHNpZ25zTWF0Y2goTEhTIGxocywgUkhTIHJocykKICAgIHsKICAgICAgICByZXR1
cm4gKGxocyBeIHJocykgPj0gMDsKICAgIH0KCiAgICBzdGF0aWMgaW5saW5lIGJvb2wgYWRkKExI
UyBsaHMsIFJIUyByaHMsIFJlc3VsdFR5cGUmIHJlc3VsdCkgX19hdHRyaWJ1dGVfXygoX193YXJu
X3VudXNlZF9yZXN1bHRfXykpCiAgICB7CiAgICAgICAgaWYgKHNpZ25zTWF0Y2gobGhzLCByaHMp
KSB7CiAgICAgICAgICAgIGlmIChsaHMgPj0gMCkgewogICAgICAgICAgICAgICAgaWYgKChzdGQ6
Om51bWVyaWNfbGltaXRzPFJlc3VsdFR5cGU+OjptYXgoKSAtIHJocykgPCBsaHMpCiAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgUmVzdWx0VHlwZSB0ZW1wID0gbGhzIC0gc3RkOjpudW1lcmljX2xpbWl0czxSZXN1bHRU
eXBlPjo6bWluKCk7CiAgICAgICAgICAgICAgICBpZiAocmhzIDwgLXRlbXApCiAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJl
c3VsdCA9IGxocyArIHJoczsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBzdGF0aWMg
aW5saW5lIGJvb2wgc3ViKExIUyBsaHMsIFJIUyByaHMsIFJlc3VsdFR5cGUmIHJlc3VsdCkgX19h
dHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpCiAgICB7CiAgICAgICAgaWYgKCFz
aWduc01hdGNoKGxocywgcmhzKSkgewogICAgICAgICAgICBpZiAobGhzID49IDApIHsKICAgICAg
ICAgICAgICAgIGlmIChsaHMgPiBzdGQ6Om51bWVyaWNfbGltaXRzPFJlc3VsdFR5cGU+OjptYXgo
KSArIHJocykKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAocmhzID4gc3RkOjpudW1lcmljX2xpbWl0czxSZXN1
bHRUeXBlPjo6bWF4KCkgKyBsaHMpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJlc3VsdCA9IGxocyAtIHJoczsKICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBzdGF0aWMgaW5saW5lIGJvb2wgbXVsdGlwbHkoTEhT
IGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5f
dW51c2VkX3Jlc3VsdF9fKSkKICAgIHsKICAgICAgICBpZiAoc2lnbnNNYXRjaChsaHMsIHJocykp
IHsKICAgICAgICAgICAgaWYgKGxocyA+PSAwKSB7CiAgICAgICAgICAgICAgICBpZiAobGhzICYm
IChzdGQ6Om51bWVyaWNfbGltaXRzPFJlc3VsdFR5cGU+OjptYXgoKSAvIGxocykgPCByaHMpCiAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PFJlc3VsdFR5cGU+KGxocykgPT0gc3RkOjpudW1l
cmljX2xpbWl0czxSZXN1bHRUeXBlPjo6bWluKCkgfHwgc3RhdGljX2Nhc3Q8UmVzdWx0VHlwZT4o
cmhzKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPFJlc3VsdFR5cGU+OjptaW4oKSkKICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICBpZiAoKHN0ZDo6bnVtZXJp
Y19saW1pdHM8UmVzdWx0VHlwZT46Om1heCgpIC8gLWxocykgPCAtcmhzKQogICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgIGlmIChsaHMgPCAwKSB7CiAgICAgICAgICAgICAgICBpZiAocmhzICYmIGxocyA8IChz
dGQ6Om51bWVyaWNfbGltaXRzPFJlc3VsdFR5cGU+OjptaW4oKSAvIHJocykpCiAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgaWYgKGxocyAmJiByaHMgPCAoc3RkOjpudW1lcmljX2xpbWl0czxSZXN1bHRUeXBlPjo6bWlu
KCkgLyBsaHMpKQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
fQogICAgICAgIH0KICAgICAgICByZXN1bHQgPSBsaHMgKiByaHM7CiAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICB9CgogICAgc3RhdGljIGlubGluZSBib29sIGVxdWFscyhMSFMgbGhzLCBSSFMgcmhz
KSB7IHJldHVybiBsaHMgPT0gcmhzOyB9Cgp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIExIUywgdHlw
ZW5hbWUgUkhTLCB0eXBlbmFtZSBSZXN1bHRUeXBlPiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXJhdGlv
bnM8TEhTLCBSSFMsIFJlc3VsdFR5cGUsIGZhbHNlLCBmYWxzZT4gewoKICAgIHN0YXRpYyBpbmxp
bmUgYm9vbCBhZGQoTEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KSBfX2F0dHJp
YnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkKICAgIHsKICAgICAgICBSZXN1bHRUeXBl
IHRlbXAgPSBsaHMgKyByaHM7CiAgICAgICAgaWYgKHRlbXAgPCBsaHMpCiAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICByZXN1bHQgPSB0ZW1wOwogICAgICAgIHJldHVybiB0cnVlOwog
ICAgfQoKICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBzdWIoTEhTIGxocywgUkhTIHJocywgUmVzdWx0
VHlwZSYgcmVzdWx0KSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkKICAg
IHsKICAgICAgICBSZXN1bHRUeXBlIHRlbXAgPSBsaHMgLSByaHM7CiAgICAgICAgaWYgKHRlbXAg
PiBsaHMpCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICByZXN1bHQgPSB0ZW1wOwog
ICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBtdWx0aXBs
eShMSFMgbGhzLCBSSFMgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIF9fYXR0cmlidXRlX18oKF9f
d2Fybl91bnVzZWRfcmVzdWx0X18pKQogICAgewogICAgICAgIGlmICghbGhzIHx8ICFyaHMpIHsK
ICAgICAgICAgICAgcmVzdWx0ID0gMDsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
fQogICAgICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPFJlc3VsdFR5cGU+OjptYXgoKSAvIGxo
cyA8IHJocykKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIHJlc3VsdCA9IGxocyAq
IHJoczsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBzdGF0aWMgaW5saW5lIGJvb2wg
ZXF1YWxzKExIUyBsaHMsIFJIUyByaHMpIHsgcmV0dXJuIGxocyA9PSByaHM7IH0KCn07Cgp0ZW1w
bGF0ZSA8dHlwZW5hbWUgUmVzdWx0VHlwZT4gc3RydWN0IEFyaXRobWV0aWNPcGVyYXRpb25zPGlu
dCwgdW5zaWduZWQsIFJlc3VsdFR5cGUsIHRydWUsIGZhbHNlPiB7CiAgICBzdGF0aWMgaW5saW5l
IGJvb2wgYWRkKGludDY0X3QgbGhzLCBpbnQ2NF90IHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KQog
ICAgewogICAgICAgIGludDY0X3QgdGVtcCA9IGxocyArIHJoczsKICAgICAgICBpZiAodGVtcCA8
IHN0ZDo6bnVtZXJpY19saW1pdHM8UmVzdWx0VHlwZT46Om1pbigpKQogICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgaWYgKHRlbXAgPiBzdGQ6Om51bWVyaWNfbGltaXRzPFJlc3VsdFR5
cGU+OjptYXgoKSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIHJlc3VsdCA9IHN0
YXRpY19jYXN0PFJlc3VsdFR5cGU+KHRlbXApOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoK
ICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBzdWIoaW50NjRfdCBsaHMsIGludDY0X3QgcmhzLCBSZXN1
bHRUeXBlJiByZXN1bHQpCiAgICB7CiAgICAgICAgaW50NjRfdCB0ZW1wID0gbGhzIC0gcmhzOwog
ICAgICAgIGlmICh0ZW1wIDwgc3RkOjpudW1lcmljX2xpbWl0czxSZXN1bHRUeXBlPjo6bWluKCkp
CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICBpZiAodGVtcCA+IHN0ZDo6bnVtZXJp
Y19saW1pdHM8UmVzdWx0VHlwZT46Om1heCgpKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8UmVzdWx0VHlwZT4odGVtcCk7CiAgICAgICAgcmV0
dXJuIHRydWU7CiAgICB9CgogICAgc3RhdGljIGlubGluZSBib29sIG11bHRpcGx5KGludDY0X3Qg
bGhzLCBpbnQ2NF90IHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KQogICAgewogICAgICAgIGludDY0
X3QgdGVtcCA9IGxocyAqIHJoczsKICAgICAgICBpZiAodGVtcCA8IHN0ZDo6bnVtZXJpY19saW1p
dHM8UmVzdWx0VHlwZT46Om1pbigpKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
aWYgKHRlbXAgPiBzdGQ6Om51bWVyaWNfbGltaXRzPFJlc3VsdFR5cGU+OjptYXgoKSkKICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFJlc3VsdFR5
cGU+KHRlbXApOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHN0YXRpYyBpbmxpbmUg
Ym9vbCBlcXVhbHMoaW50IGxocywgdW5zaWduZWQgcmhzKQogICAgewogICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ2NF90PihsaHMpID09IHN0YXRpY19jYXN0PGludDY0X3Q+KHJocyk7CiAg
ICB9Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0VHlwZT4gc3RydWN0IEFyaXRobWV0aWNP
cGVyYXRpb25zPHVuc2lnbmVkLCBpbnQsIFJlc3VsdFR5cGUsIGZhbHNlLCB0cnVlPiB7CiAgICBz
dGF0aWMgaW5saW5lIGJvb2wgYWRkKGludDY0X3QgbGhzLCBpbnQ2NF90IHJocywgUmVzdWx0VHlw
ZSYgcmVzdWx0KQogICAgewogICAgICAgIHJldHVybiBBcml0aG1ldGljT3BlcmF0aW9uczxpbnQs
IHVuc2lnbmVkLCBSZXN1bHRUeXBlPjo6YWRkKHJocywgbGhzLCByZXN1bHQpOwogICAgfQoKICAg
IHN0YXRpYyBpbmxpbmUgYm9vbCBzdWIoaW50NjRfdCBsaHMsIGludDY0X3QgcmhzLCBSZXN1bHRU
eXBlJiByZXN1bHQpCiAgICB7CiAgICAgICAgcmV0dXJuIEFyaXRobWV0aWNPcGVyYXRpb25zPGlu
dCwgdW5zaWduZWQsIFJlc3VsdFR5cGU+OjpzdWIobGhzLCByaHMsIHJlc3VsdCk7CiAgICB9Cgog
ICAgc3RhdGljIGlubGluZSBib29sIG11bHRpcGx5KGludDY0X3QgbGhzLCBpbnQ2NF90IHJocywg
UmVzdWx0VHlwZSYgcmVzdWx0KQogICAgewogICAgICAgIHJldHVybiBBcml0aG1ldGljT3BlcmF0
aW9uczxpbnQsIHVuc2lnbmVkLCBSZXN1bHRUeXBlPjo6bXVsdGlwbHkocmhzLCBsaHMsIHJlc3Vs
dCk7CiAgICB9CgogICAgc3RhdGljIGlubGluZSBib29sIGVxdWFscyh1bnNpZ25lZCBsaHMsIGlu
dCByaHMpCiAgICB7CiAgICAgICAgcmV0dXJuIEFyaXRobWV0aWNPcGVyYXRpb25zPGludCwgdW5z
aWduZWQsIFJlc3VsdFR5cGU+OjplcXVhbHMocmhzLCBsaHMpOwogICAgfQp9OwoKdGVtcGxhdGUg
PHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFI+IHN0YXRpYyBpbmxpbmUgYm9vbCBz
YWZlQWRkKFUgbGhzLCBWIHJocywgUiYgcmVzdWx0KQp7CiAgICByZXR1cm4gQXJpdGhtZXRpY09w
ZXJhdGlvbnM8VSwgViwgUj46OmFkZChsaHMsIHJocywgcmVzdWx0KTsKfQoKdGVtcGxhdGUgPHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFI+IHN0YXRpYyBpbmxpbmUgYm9vbCBzYWZl
U3ViKFUgbGhzLCBWIHJocywgUiYgcmVzdWx0KQp7CiAgICByZXR1cm4gQXJpdGhtZXRpY09wZXJh
dGlvbnM8VSwgViwgUj46OnN1YihsaHMsIHJocywgcmVzdWx0KTsKfQoKdGVtcGxhdGUgPHR5cGVu
YW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFI+IHN0YXRpYyBpbmxpbmUgYm9vbCBzYWZlTXVs
dGlwbHkoVSBsaHMsIFYgcmhzLCBSJiByZXN1bHQpCnsKICAgIHJldHVybiBBcml0aG1ldGljT3Bl
cmF0aW9uczxVLCBWLCBSPjo6bXVsdGlwbHkobGhzLCByaHMsIHJlc3VsdCk7Cn0KCnRlbXBsYXRl
IDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPiBzdGF0aWMgaW5saW5lIGJvb2wgc2FmZUVxdWFscyhV
IGxocywgViByaHMpCnsKICAgIHJldHVybiBBcml0aG1ldGljT3BlcmF0aW9uczxVLCBWPjo6ZXF1
YWxzKGxocywgcmhzKTsKfQoKZW51bSBSZXN1bHRPdmVyZmxvd2VkVGFnIHsgUmVzdWx0T3ZlcmZs
b3dlZCB9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGNsYXNzIE92ZXJmbG93SGFuZGxlcj4gY2xh
c3MgQ2hlY2tlZCA6IHB1YmxpYyBPdmVyZmxvd0hhbmRsZXIgewpwdWJsaWM6CiAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgX1QsIGNsYXNzIF9PdmVyZmxvd0hhbmRsZXI+IGZyaWVuZCBjbGFzcyBDaGVj
a2VkOwogICAgQ2hlY2tlZCgpCiAgICAgICAgOiBtX3ZhbHVlKDApCiAgICB7CiAgICB9CgogICAg
Q2hlY2tlZChSZXN1bHRPdmVyZmxvd2VkVGFnKQogICAgICAgIDogbV92YWx1ZSgwKQogICAgewog
ICAgICAgIHRoaXMtPm92ZXJmbG93ZWQoKTsKICAgIH0KCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VT4gQ2hlY2tlZChVIHZhbHVlKQogICAgewogICAgICAgIGlmICghaXNJbkJvdW5kczxUPih2YWx1
ZSkpCiAgICAgICAgICAgIHRoaXMtPm92ZXJmbG93ZWQoKTsKICAgICAgICBtX3ZhbHVlID0gc3Rh
dGljX2Nhc3Q8VD4odmFsdWUpOwogICAgfQoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWPiBDaGVj
a2VkKGNvbnN0IENoZWNrZWQ8VCwgVj4mIHJocykKICAgICAgICA6IG1fdmFsdWUocmhzLm1fdmFs
dWUpCiAgICB7CiAgICAgICAgaWYgKHJocy5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgICAgIHRo
aXMtPm92ZXJmbG93ZWQoKTsKICAgIH0KCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gQ2hlY2tl
ZChjb25zdCBDaGVja2VkPFUsIE92ZXJmbG93SGFuZGxlcj4mIHJocykKICAgICAgICA6IE92ZXJm
bG93SGFuZGxlcihyaHMpCiAgICB7CiAgICAgICAgaWYgKCFpc0luQm91bmRzPFQ+KHJocy5tX3Zh
bHVlKSkKICAgICAgICAgICAgdGhpcy0+b3ZlcmZsb3dlZCgpOwogICAgICAgIG1fdmFsdWUgPSBz
dGF0aWNfY2FzdDxUPihyaHMubV92YWx1ZSk7CiAgICB9CgogICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFY+IENoZWNrZWQoY29uc3QgQ2hlY2tlZDxVLCBWPiYgcmhzKQogICAgewog
ICAgICAgIGlmIChyaHMuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICAgICB0aGlzLT5vdmVyZmxv
d2VkKCk7CiAgICAgICAgaWYgKCFpc0luQm91bmRzPFQ+KHJocy5tX3ZhbHVlKSkKICAgICAgICAg
ICAgdGhpcy0+b3ZlcmZsb3dlZCgpOwogICAgICAgIG1fdmFsdWUgPSBzdGF0aWNfY2FzdDxUPihy
aHMubV92YWx1ZSk7CiAgICB9CgogICAgY29uc3QgQ2hlY2tlZCYgb3BlcmF0b3I9KENoZWNrZWQg
cmhzKQogICAgewogICAgICAgIHRoaXMtPmNsZWFyT3ZlcmZsb3coKTsKICAgICAgICBpZiAocmhz
Lmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgICAgdGhpcy0+b3ZlcmZsb3dlZCgpOwogICAgICAg
IG1fdmFsdWUgPSBzdGF0aWNfY2FzdDxUPihyaHMubV92YWx1ZSk7CiAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgfQoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBjb25zdCBDaGVja2VkJiBvcGVy
YXRvcj0oVSB2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gKnRoaXMgPSBDaGVja2VkKHZhbHVl
KTsKICAgIH0KCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gY29uc3QgQ2hl
Y2tlZCYgb3BlcmF0b3I9KGNvbnN0IENoZWNrZWQ8VSwgVj4mIHJocykKICAgIHsKICAgICAgICBy
ZXR1cm4gKnRoaXMgPSBDaGVja2VkKHJocyk7CiAgICB9CgoKICAgIGNvbnN0IENoZWNrZWQmIG9w
ZXJhdG9yKysoKQogICAgewogICAgICAgIGlmIChtX3ZhbHVlID09IHN0ZDo6bnVtZXJpY19saW1p
dHM8VD46Om1heCgpKQogICAgICAgICAgICB0aGlzLT5vdmVyZmxvd2VkKCk7CiAgICAgICAgbV92
YWx1ZSsrOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICBjb25zdCBDaGVja2VkJiBv
cGVyYXRvci0tKCkKICAgIHsKICAgICAgICBpZiAobV92YWx1ZSA9PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPFQ+OjptaW4oKSkKICAgICAgICAgICAgdGhpcy0+b3ZlcmZsb3dlZCgpOwogICAgICAgIG1f
dmFsdWUtLTsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgoKICAgIGNvbnN0IENoZWNrZWQg
b3BlcmF0b3IrKyhpbnQpCiAgICB7CiAgICAgICAgaWYgKG1fdmFsdWUgPT0gc3RkOjpudW1lcmlj
X2xpbWl0czxUPjo6bWF4KCkpCiAgICAgICAgICAgIHRoaXMtPm92ZXJmbG93ZWQoKTsKICAgICAg
ICByZXR1cm4gQ2hlY2tlZChtX3ZhbHVlKyspOwogICAgfQoKICAgIGNvbnN0IENoZWNrZWQgb3Bl
cmF0b3ItLShpbnQpCiAgICB7CiAgICAgICAgaWYgKG1fdmFsdWUgPT0gc3RkOjpudW1lcmljX2xp
bWl0czxUPjo6bWluKCkpCiAgICAgICAgICAgIHRoaXMtPm92ZXJmbG93ZWQoKTsKICAgICAgICBy
ZXR1cm4gQ2hlY2tlZChtX3ZhbHVlLS0pOwogICAgfQoKCiAgICBib29sIG9wZXJhdG9yISgpIGNv
bnN0CiAgICB7CiAgICAgICAgaWYgKHRoaXMtPmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgICAg
V1RGQ3Jhc2goKTsKICAgICAgICByZXR1cm4gIW1fdmFsdWU7CiAgICB9CgogICAgdHlwZWRlZiB2
b2lkKiAoQ2hlY2tlZDo6KlVuc3BlY2lmaWVkQm9vbFR5cGUpOwogICAgb3BlcmF0b3IgVW5zcGVj
aWZpZWRCb29sVHlwZSooKSBjb25zdAogICAgewogICAgICAgIGlmICh0aGlzLT5oYXNPdmVyZmxv
d2VkKCkpCiAgICAgICAgICAgIFdURkNyYXNoKCk7CiAgICAgICAgcmV0dXJuIChtX3ZhbHVlKSA/
IHJlaW50ZXJwcmV0X2Nhc3Q8VW5zcGVjaWZpZWRCb29sVHlwZSo+KDEpIDogMDsKICAgIH0KCgog
ICAgVCB1bnNhZmVHZXQoKSBjb25zdAogICAgewogICAgICAgIGlmICh0aGlzLT5oYXNPdmVyZmxv
d2VkKCkpCiAgICAgICAgICAgIFdURkNyYXNoKCk7CiAgICAgICAgcmV0dXJuIG1fdmFsdWU7CiAg
ICB9CgogICAgaW5saW5lIENoZWNrZWRTdGF0ZSBzYWZlR2V0KFQmIHZhbHVlKSBjb25zdCBfX2F0
dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkKICAgIHsKICAgICAgICB2YWx1ZSA9
IG1fdmFsdWU7CiAgICAgICAgaWYgKHRoaXMtPmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgICAg
cmV0dXJuIENoZWNrZWRTdGF0ZTo6RGlkT3ZlcmZsb3c7CiAgICAgICAgcmV0dXJuIENoZWNrZWRT
dGF0ZTo6RGlkTm90T3ZlcmZsb3c7CiAgICB9CgoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBj
b25zdCBDaGVja2VkIG9wZXJhdG9yKz0oVSByaHMpCiAgICB7CiAgICAgICAgaWYgKCFzYWZlQWRk
KG1fdmFsdWUsIHJocywgbV92YWx1ZSkpCiAgICAgICAgICAgIHRoaXMtPm92ZXJmbG93ZWQoKTsK
ICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IGNv
bnN0IENoZWNrZWQgb3BlcmF0b3ItPShVIHJocykKICAgIHsKICAgICAgICBpZiAoIXNhZmVTdWIo
bV92YWx1ZSwgcmhzLCBtX3ZhbHVlKSkKICAgICAgICAgICAgdGhpcy0+b3ZlcmZsb3dlZCgpOwog
ICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gY29u
c3QgQ2hlY2tlZCBvcGVyYXRvcio9KFUgcmhzKQogICAgewogICAgICAgIGlmICghc2FmZU11bHRp
cGx5KG1fdmFsdWUsIHJocywgbV92YWx1ZSkpCiAgICAgICAgICAgIHRoaXMtPm92ZXJmbG93ZWQo
KTsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAgY29uc3QgQ2hlY2tlZCBvcGVyYXRv
cio9KGRvdWJsZSByaHMpCiAgICB7CiAgICAgICAgZG91YmxlIHJlc3VsdCA9IHJocyAqIG1fdmFs
dWU7CgogICAgICAgIGlmICghKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1pbigpIDw9IHJlc3Vs
dCAmJiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSA+PSByZXN1bHQpKQogICAgICAgICAg
ICB0aGlzLT5vdmVyZmxvd2VkKCk7CiAgICAgICAgbV92YWx1ZSA9IChUKXJlc3VsdDsKICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAgY29uc3QgQ2hlY2tlZCBvcGVyYXRvcio9KGZsb2F0
IHJocykKICAgIHsKICAgICAgICByZXR1cm4gKnRoaXMgKj0gKGRvdWJsZSlyaHM7CiAgICB9Cgog
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IGNvbnN0IENoZWNrZWQgb3BlcmF0
b3IrPShDaGVja2VkPFUsIFY+IHJocykKICAgIHsKICAgICAgICBpZiAocmhzLmhhc092ZXJmbG93
ZWQoKSkKICAgICAgICAgICAgdGhpcy0+b3ZlcmZsb3dlZCgpOwogICAgICAgIHJldHVybiAqdGhp
cyArPSByaHMubV92YWx1ZTsKICAgIH0KCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5h
bWUgVj4gY29uc3QgQ2hlY2tlZCBvcGVyYXRvci09KENoZWNrZWQ8VSwgVj4gcmhzKQogICAgewog
ICAgICAgIGlmIChyaHMuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICAgICB0aGlzLT5vdmVyZmxv
d2VkKCk7CiAgICAgICAgcmV0dXJuICp0aGlzIC09IHJocy5tX3ZhbHVlOwogICAgfQoKICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPiBjb25zdCBDaGVja2VkIG9wZXJhdG9yKj0o
Q2hlY2tlZDxVLCBWPiByaHMpCiAgICB7CiAgICAgICAgaWYgKHJocy5oYXNPdmVyZmxvd2VkKCkp
CiAgICAgICAgICAgIHRoaXMtPm92ZXJmbG93ZWQoKTsKICAgICAgICByZXR1cm4gKnRoaXMgKj0g
cmhzLm1fdmFsdWU7CiAgICB9CgoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWPiBib29sIG9wZXJh
dG9yPT0oQ2hlY2tlZDxULCBWPiByaHMpCiAgICB7CiAgICAgICAgcmV0dXJuIHVuc2FmZUdldCgp
ID09IHJocy51bnNhZmVHZXQoKTsKICAgIH0KCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gYm9v
bCBvcGVyYXRvcj09KFUgcmhzKQogICAgewogICAgICAgIGlmICh0aGlzLT5oYXNPdmVyZmxvd2Vk
KCkpCiAgICAgICAgICAgIHRoaXMtPm92ZXJmbG93ZWQoKTsKICAgICAgICByZXR1cm4gc2FmZUVx
dWFscyhtX3ZhbHVlLCByaHMpOwogICAgfQoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWPiBjb25zdCBDaGVja2VkIG9wZXJhdG9yPT0oQ2hlY2tlZDxVLCBWPiByaHMpCiAgICB7
CiAgICAgICAgcmV0dXJuIHVuc2FmZUdldCgpID09IENoZWNrZWQocmhzLnVuc2FmZUdldCgpKTsK
ICAgIH0KCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvciE9KFUgcmhzKQog
ICAgewogICAgICAgIHJldHVybiAhKCp0aGlzID09IHJocyk7CiAgICB9Cgpwcml2YXRlOgoKICAg
IENoZWNrZWQoZmxvYXQpOwogICAgQ2hlY2tlZChkb3VibGUpOwogICAgdm9pZCBvcGVyYXRvcj0o
ZmxvYXQpOwogICAgdm9pZCBvcGVyYXRvcj0oZG91YmxlKTsKICAgIHZvaWQgb3BlcmF0b3IrPShm
bG9hdCk7CiAgICB2b2lkIG9wZXJhdG9yKz0oZG91YmxlKTsKICAgIHZvaWQgb3BlcmF0b3ItPShm
bG9hdCk7CiAgICB2b2lkIG9wZXJhdG9yLT0oZG91YmxlKTsKICAgIFQgbV92YWx1ZTsKfTsKCnRl
bXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+
IHN0YXRpYyBpbmxpbmUgQ2hlY2tlZDx0eXBlbmFtZSBSZXN1bHQ8VSwgVj46OlJlc3VsdFR5cGUs
IE92ZXJmbG93SGFuZGxlcj4gb3BlcmF0b3IrKENoZWNrZWQ8VSwgT3ZlcmZsb3dIYW5kbGVyPiBs
aHMsIENoZWNrZWQ8ViwgT3ZlcmZsb3dIYW5kbGVyPiByaHMpCnsKICAgIFUgeCA9IDA7CiAgICBW
IHkgPSAwOwogICAgYm9vbCBvdmVyZmxvd2VkID0gbGhzLnNhZmVHZXQoeCkgPT0gQ2hlY2tlZFN0
YXRlOjpEaWRPdmVyZmxvdyB8fCByaHMuc2FmZUdldCh5KSA9PSBDaGVja2VkU3RhdGU6OkRpZE92
ZXJmbG93OwogICAgdHlwZW5hbWUgUmVzdWx0PFUsIFY+OjpSZXN1bHRUeXBlIHJlc3VsdCA9IDA7
CiAgICBvdmVyZmxvd2VkIHw9ICFzYWZlQWRkKHgsIHksIHJlc3VsdCk7CiAgICBpZiAob3ZlcmZs
b3dlZCkKICAgICAgICByZXR1cm4gUmVzdWx0T3ZlcmZsb3dlZDsKICAgIHJldHVybiByZXN1bHQ7
Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBPdmVyZmxvd0hh
bmRsZXI+IHN0YXRpYyBpbmxpbmUgQ2hlY2tlZDx0eXBlbmFtZSBSZXN1bHQ8VSwgVj46OlJlc3Vs
dFR5cGUsIE92ZXJmbG93SGFuZGxlcj4gb3BlcmF0b3ItKENoZWNrZWQ8VSwgT3ZlcmZsb3dIYW5k
bGVyPiBsaHMsIENoZWNrZWQ8ViwgT3ZlcmZsb3dIYW5kbGVyPiByaHMpCnsKICAgIFUgeCA9IDA7
CiAgICBWIHkgPSAwOwogICAgYm9vbCBvdmVyZmxvd2VkID0gbGhzLnNhZmVHZXQoeCkgPT0gQ2hl
Y2tlZFN0YXRlOjpEaWRPdmVyZmxvdyB8fCByaHMuc2FmZUdldCh5KSA9PSBDaGVja2VkU3RhdGU6
OkRpZE92ZXJmbG93OwogICAgdHlwZW5hbWUgUmVzdWx0PFUsIFY+OjpSZXN1bHRUeXBlIHJlc3Vs
dCA9IDA7CiAgICBvdmVyZmxvd2VkIHw9ICFzYWZlU3ViKHgsIHksIHJlc3VsdCk7CiAgICBpZiAo
b3ZlcmZsb3dlZCkKICAgICAgICByZXR1cm4gUmVzdWx0T3ZlcmZsb3dlZDsKICAgIHJldHVybiBy
ZXN1bHQ7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBPdmVy
Zmxvd0hhbmRsZXI+IHN0YXRpYyBpbmxpbmUgQ2hlY2tlZDx0eXBlbmFtZSBSZXN1bHQ8VSwgVj46
OlJlc3VsdFR5cGUsIE92ZXJmbG93SGFuZGxlcj4gb3BlcmF0b3IqKENoZWNrZWQ8VSwgT3ZlcmZs
b3dIYW5kbGVyPiBsaHMsIENoZWNrZWQ8ViwgT3ZlcmZsb3dIYW5kbGVyPiByaHMpCnsKICAgIFUg
eCA9IDA7CiAgICBWIHkgPSAwOwogICAgYm9vbCBvdmVyZmxvd2VkID0gbGhzLnNhZmVHZXQoeCkg
PT0gQ2hlY2tlZFN0YXRlOjpEaWRPdmVyZmxvdyB8fCByaHMuc2FmZUdldCh5KSA9PSBDaGVja2Vk
U3RhdGU6OkRpZE92ZXJmbG93OwogICAgdHlwZW5hbWUgUmVzdWx0PFUsIFY+OjpSZXN1bHRUeXBl
IHJlc3VsdCA9IDA7CiAgICBvdmVyZmxvd2VkIHw9ICFzYWZlTXVsdGlwbHkoeCwgeSwgcmVzdWx0
KTsKICAgIGlmIChvdmVyZmxvd2VkKQogICAgICAgIHJldHVybiBSZXN1bHRPdmVyZmxvd2VkOwog
ICAgcmV0dXJuIHJlc3VsdDsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5
cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gc3RhdGljIGlubGluZSBDaGVja2VkPHR5cGVuYW1lIFJl
c3VsdDxVLCBWPjo6UmVzdWx0VHlwZSwgT3ZlcmZsb3dIYW5kbGVyPiBvcGVyYXRvcisoQ2hlY2tl
ZDxVLCBPdmVyZmxvd0hhbmRsZXI+IGxocywgViByaHMpCnsKICAgIHJldHVybiBsaHMgKyBDaGVj
a2VkPFYsIE92ZXJmbG93SGFuZGxlcj4ocmhzKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gc3RhdGljIGlubGluZSBDaGVja2Vk
PHR5cGVuYW1lIFJlc3VsdDxVLCBWPjo6UmVzdWx0VHlwZSwgT3ZlcmZsb3dIYW5kbGVyPiBvcGVy
YXRvci0oQ2hlY2tlZDxVLCBPdmVyZmxvd0hhbmRsZXI+IGxocywgViByaHMpCnsKICAgIHJldHVy
biBsaHMgLSBDaGVja2VkPFYsIE92ZXJmbG93SGFuZGxlcj4ocmhzKTsKfQoKdGVtcGxhdGUgPHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gc3RhdGljIGlu
bGluZSBDaGVja2VkPHR5cGVuYW1lIFJlc3VsdDxVLCBWPjo6UmVzdWx0VHlwZSwgT3ZlcmZsb3dI
YW5kbGVyPiBvcGVyYXRvciooQ2hlY2tlZDxVLCBPdmVyZmxvd0hhbmRsZXI+IGxocywgViByaHMp
CnsKICAgIHJldHVybiBsaHMgKiBDaGVja2VkPFYsIE92ZXJmbG93SGFuZGxlcj4ocmhzKTsKfQoK
dGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxl
cj4gc3RhdGljIGlubGluZSBDaGVja2VkPHR5cGVuYW1lIFJlc3VsdDxVLCBWPjo6UmVzdWx0VHlw
ZSwgT3ZlcmZsb3dIYW5kbGVyPiBvcGVyYXRvcisoVSBsaHMsIENoZWNrZWQ8ViwgT3ZlcmZsb3dI
YW5kbGVyPiByaHMpCnsKICAgIHJldHVybiBDaGVja2VkPFUsIE92ZXJmbG93SGFuZGxlcj4obGhz
KSArIHJoczsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIE92
ZXJmbG93SGFuZGxlcj4gc3RhdGljIGlubGluZSBDaGVja2VkPHR5cGVuYW1lIFJlc3VsdDxVLCBW
Pjo6UmVzdWx0VHlwZSwgT3ZlcmZsb3dIYW5kbGVyPiBvcGVyYXRvci0oVSBsaHMsIENoZWNrZWQ8
ViwgT3ZlcmZsb3dIYW5kbGVyPiByaHMpCnsKICAgIHJldHVybiBDaGVja2VkPFUsIE92ZXJmbG93
SGFuZGxlcj4obGhzKSAtIHJoczsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYs
IHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gc3RhdGljIGlubGluZSBDaGVja2VkPHR5cGVuYW1l
IFJlc3VsdDxVLCBWPjo6UmVzdWx0VHlwZSwgT3ZlcmZsb3dIYW5kbGVyPiBvcGVyYXRvciooVSBs
aHMsIENoZWNrZWQ8ViwgT3ZlcmZsb3dIYW5kbGVyPiByaHMpCnsKICAgIHJldHVybiBDaGVja2Vk
PFUsIE92ZXJmbG93SGFuZGxlcj4obGhzKSAqIHJoczsKfQoKCnR5cGVkZWYgQ2hlY2tlZDxpbnQ4
X3QsIFJlY29yZE92ZXJmbG93PiBDaGVja2VkSW50ODsKdHlwZWRlZiBDaGVja2VkPHVpbnQ4X3Qs
IFJlY29yZE92ZXJmbG93PiBDaGVja2VkVWludDg7CnR5cGVkZWYgQ2hlY2tlZDxpbnQxNl90LCBS
ZWNvcmRPdmVyZmxvdz4gQ2hlY2tlZEludDE2Owp0eXBlZGVmIENoZWNrZWQ8dWludDE2X3QsIFJl
Y29yZE92ZXJmbG93PiBDaGVja2VkVWludDE2Owp0eXBlZGVmIENoZWNrZWQ8aW50MzJfdCwgUmVj
b3JkT3ZlcmZsb3c+IENoZWNrZWRJbnQzMjsKdHlwZWRlZiBDaGVja2VkPHVpbnQzMl90LCBSZWNv
cmRPdmVyZmxvdz4gQ2hlY2tlZFVpbnQzMjsKdHlwZWRlZiBDaGVja2VkPGludDY0X3QsIFJlY29y
ZE92ZXJmbG93PiBDaGVja2VkSW50NjQ7CnR5cGVkZWYgQ2hlY2tlZDx1aW50NjRfdCwgUmVjb3Jk
T3ZlcmZsb3c+IENoZWNrZWRVaW50NjQ7CnR5cGVkZWYgQ2hlY2tlZDxzaXplX3QsIFJlY29yZE92
ZXJmbG93PiBDaGVja2VkU2l6ZTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CkNo
ZWNrZWQ8VCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRTdW0oVSB2YWx1ZSkKewogICAgcmV0dXJu
IENoZWNrZWQ8VCwgUmVjb3JkT3ZlcmZsb3c+KHZhbHVlKTsKfQp0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVLCB0eXBlbmFtZS4uLiBBcmdzPgpDaGVja2VkPFQsIFJlY29yZE92ZXJmbG93
PiBjaGVja2VkU3VtKFUgdmFsdWUsIEFyZ3MuLi4gYXJncykKewogICAgcmV0dXJuIENoZWNrZWQ8
VCwgUmVjb3JkT3ZlcmZsb3c+KHZhbHVlKSArIGNoZWNrZWRTdW08VD4oYXJncy4uLik7Cn0KCgoK
CnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+IGJvb2wgc3VtT3ZlcmZsb3dz
KEFyZ3MuLi4gYXJncykKewogICAgcmV0dXJuIGNoZWNrZWRTdW08VD4oYXJncy4uLikuaGFzT3Zl
cmZsb3dlZCgpOwp9Cgp9Cgp1c2luZyBXVEY6OkNoZWNrZWQ7CnVzaW5nIFdURjo6Q2hlY2tlZFN0
YXRlOwp1c2luZyBXVEY6OlJlY29yZE92ZXJmbG93Owp1c2luZyBXVEY6OkNoZWNrZWRJbnQ4Owp1
c2luZyBXVEY6OkNoZWNrZWRVaW50ODsKdXNpbmcgV1RGOjpDaGVja2VkSW50MTY7CnVzaW5nIFdU
Rjo6Q2hlY2tlZFVpbnQxNjsKdXNpbmcgV1RGOjpDaGVja2VkSW50MzI7CnVzaW5nIFdURjo6Q2hl
Y2tlZFVpbnQzMjsKdXNpbmcgV1RGOjpDaGVja2VkSW50NjQ7CnVzaW5nIFdURjo6Q2hlY2tlZFVp
bnQ2NDsKdXNpbmcgV1RGOjpDaGVja2VkU2l6ZTsKdXNpbmcgV1RGOjpjaGVja2VkU3VtOwp1c2lu
ZyBXVEY6OnN1bU92ZXJmbG93czsKIyAzNCAiL2hvbWUvd2Via2l0YnVpbGRib3Qvc2xhdmVzL2Vm
bC1BUk12Ny10aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJtdjctdGh1bWIyLWJ1aWxkL2J1
aWxkL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oIiAyCiMgOTIgIi9ob21lL3dlYmtpdGJ1
aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxkc2xhdmUvZWZsLWFybXY3
LXRodW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaCIKdGVtcGxh
dGU8dHlwZW5hbWUgVHlwZT4KaW5saW5lIGJvb2wgaXNQb2ludGVyVHlwZUFsaWdubWVudE9rYXko
VHlwZSogcHRyKQp7CiAgICByZXR1cm4gIShyZWludGVycHJldF9jYXN0PGludHB0cl90PihwdHIp
ICUgX19hbGlnbm9mX18oVHlwZSkpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlUHRyPgppbmxp
bmUgVHlwZVB0ciByZWludGVycHJldF9jYXN0X3B0cih2b2lkKiBwdHIpCnsKICAgICgodm9pZCkw
KTsKICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFR5cGVQdHI+KHB0cik7Cn0KCnRlbXBsYXRl
PHR5cGVuYW1lIFR5cGVQdHI+CmlubGluZSBUeXBlUHRyIHJlaW50ZXJwcmV0X2Nhc3RfcHRyKGNv
bnN0IHZvaWQqIHB0cikKewogICAgKCh2b2lkKTApOwogICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8VHlwZVB0cj4ocHRyKTsKfQojIDEyMCAiL2hvbWUvd2Via2l0YnVpbGRib3Qvc2xhdmVzL2Vm
bC1BUk12Ny10aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJtdjctdGh1bWIyLWJ1aWxkL2J1
aWxkL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oIgpuYW1lc3BhY2UgV1RGIHsKCnRlbXBs
YXRlPHR5cGVuYW1lIFQ+CmlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp
IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSYmIG1vdmUoVCYmIHZhbHVl
KQp7CiAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbHZhbHVlX3JlZmVyZW5jZTxUPjo6dmFsdWUs
ICJUIGlzIG5vdCBhbiBsdmFsdWUgcmVmZXJlbmNlOyBtb3ZlKCkgaXMgdW5uZWNlc3NhcnkuIik7
CgogICAgdXNpbmcgTm9uUmVmUXVhbGlmaWVkVHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3Jl
ZmVyZW5jZTxUPjo6dHlwZTsKICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfY29uc3Q8Tm9uUmVm
UXVhbGlmaWVkVHlwZT46OnZhbHVlLCAiVCBpcyBjb25zdCBxdWFsaWZpZWQuIik7CiAgICByZXR1
cm4gc3RkOjptb3ZlKHZhbHVlKTsKfQoKc3RhdGljIGNvbnN0IHNpemVfdCBLQiA9IDEwMjQ7CnN0
YXRpYyBjb25zdCBzaXplX3QgTUIgPSAxMDI0ICogMTAyNDsKCmlubGluZSBib29sIGlzUG9pbnRl
ckFsaWduZWQodm9pZCogcCkKewogICAgcmV0dXJuICEoKGludHB0cl90KShwKSAmIChzaXplb2Yo
Y2hhciopIC0gMSkpOwp9CgppbmxpbmUgYm9vbCBpczhCeXRlQWxpZ25lZCh2b2lkKiBwKQp7CiAg
ICByZXR1cm4gISgodWludHB0cl90KShwKSAmIChzaXplb2YoZG91YmxlKSAtIDEpKTsKfQoKCgoK
dGVtcGxhdGU8dHlwZW5hbWUgVG9UeXBlLCB0eXBlbmFtZSBGcm9tVHlwZT4KaW5saW5lIFRvVHlw
ZSBiaXR3aXNlX2Nhc3QoRnJvbVR5cGUgZnJvbSkKewogICAgc3RhdGljX2Fzc2VydChzaXplb2Yo
RnJvbVR5cGUpID09IHNpemVvZihUb1R5cGUpLCAiYml0d2lzZV9jYXN0IHNpemUgb2YgRnJvbVR5
cGUgYW5kIFRvVHlwZSBtdXN0IGJlIGVxdWFsISIpOwogICAgdW5pb24gewogICAgICAgIEZyb21U
eXBlIGZyb207CiAgICAgICAgVG9UeXBlIHRvOwogICAgfSB1OwogICAgdS5mcm9tID0gZnJvbTsK
ICAgIHJldHVybiB1LnRvOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUb1R5cGUsIHR5cGVuYW1lIEZy
b21UeXBlPgppbmxpbmUgVG9UeXBlIHNhZmVDYXN0KEZyb21UeXBlIHZhbHVlKQp7CiAgICAoKHZv
aWQpMCk7CiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VG9UeXBlPih2YWx1ZSk7Cn0KCgppbmxpbmUg
c2l6ZV90IGJpdENvdW50KHVuc2lnbmVkIGJpdHMpCnsKICAgIGJpdHMgPSBiaXRzIC0gKChiaXRz
ID4+IDEpICYgMHg1NTU1NTU1NSk7CiAgICBiaXRzID0gKGJpdHMgJiAweDMzMzMzMzMzKSArICgo
Yml0cyA+PiAyKSAmIDB4MzMzMzMzMzMpOwogICAgcmV0dXJuICgoKGJpdHMgKyAoYml0cyA+PiA0
KSkgJiAweEYwRjBGMEYpICogMHgxMDEwMTAxKSA+PiAyNDsKfQoKaW5saW5lIHNpemVfdCBiaXRD
b3VudCh1aW50NjRfdCBiaXRzKQp7CiAgICByZXR1cm4gYml0Q291bnQoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGJpdHMpKSArIGJpdENvdW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPihiaXRzID4+IDMy
KSk7Cn0KCgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgU2l6ZT4gY2hhciAoJkFycmF5TGVu
Z3RoSGVscGVyRnVuY3Rpb24oVCAoJilbU2l6ZV0pKVtTaXplXTsKCgp0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBjaGFyICgmQXJyYXlMZW5ndGhIZWxwZXJGdW5jdGlvbihUICgmKVswXSkpWzBdOwoKCgoK
aW5saW5lIHNpemVfdCByb3VuZFVwVG9NdWx0aXBsZU9mKHNpemVfdCBkaXZpc29yLCBzaXplX3Qg
eCkKewogICAgKCh2b2lkKTApOwogICAgc2l6ZV90IHJlbWFpbmRlck1hc2sgPSBkaXZpc29yIC0g
MTsKICAgIHJldHVybiAoeCArIHJlbWFpbmRlck1hc2spICYgfnJlbWFpbmRlck1hc2s7Cn0KCnRl
bXBsYXRlPHNpemVfdCBkaXZpc29yPiBpbmxpbmUgc2l6ZV90IHJvdW5kVXBUb011bHRpcGxlT2Yo
c2l6ZV90IHgpCnsKICAgIHN0YXRpY19hc3NlcnQoZGl2aXNvciAmJiAhKGRpdmlzb3IgJiAoZGl2
aXNvciAtIDEpKSwgImRpdmlzb3IgbXVzdCBiZSBhIHBvd2VyIG9mIHR3byEiKTsKICAgIHJldHVy
biByb3VuZFVwVG9NdWx0aXBsZU9mKGRpdmlzb3IsIHgpOwp9CgplbnVtIEJpbmFyeVNlYXJjaE1v
ZGUgewogICAgS2V5TXVzdEJlUHJlc2VudEluQXJyYXksCiAgICBLZXlNaWdodE5vdEJlUHJlc2Vu
dEluQXJyYXksCiAgICBSZXR1cm5BZGphY2VudEVsZW1lbnRJZktleUlzTm90UHJlc2VudAp9OwoK
dGVtcGxhdGU8dHlwZW5hbWUgQXJyYXlFbGVtZW50VHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlw
ZW5hbWUgQXJyYXlUeXBlLCB0eXBlbmFtZSBFeHRyYWN0S2V5LCBCaW5hcnlTZWFyY2hNb2RlIG1v
ZGU+CmlubGluZSBBcnJheUVsZW1lbnRUeXBlKiBiaW5hcnlTZWFyY2hJbXBsKEFycmF5VHlwZSYg
YXJyYXksIHNpemVfdCBzaXplLCBLZXlUeXBlIGtleSwgY29uc3QgRXh0cmFjdEtleSYgZXh0cmFj
dEtleSA9IEV4dHJhY3RLZXkoKSkKewogICAgc2l6ZV90IG9mZnNldCA9IDA7CiAgICB3aGlsZSAo
c2l6ZSA+IDEpIHsKICAgICAgICBzaXplX3QgcG9zID0gKHNpemUgLSAxKSA+PiAxOwogICAgICAg
IEtleVR5cGUgdmFsID0gZXh0cmFjdEtleSgmYXJyYXlbb2Zmc2V0ICsgcG9zXSk7CgogICAgICAg
IGlmICh2YWwgPT0ga2V5KQogICAgICAgICAgICByZXR1cm4gJmFycmF5W29mZnNldCArIHBvc107
CgoKICAgICAgICBpZiAoa2V5IDwgdmFsKQogICAgICAgICAgICBzaXplID0gcG9zOwoKICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgc2l6ZSAtPSAocG9zICsgMSk7CiAgICAgICAgICAgIG9mZnNl
dCArPSAocG9zICsgMSk7CiAgICAgICAgfQoKICAgICAgICAoKHZvaWQpMCk7CiAgICB9CgogICAg
aWYgKG1vZGUgPT0gS2V5TWlnaHROb3RCZVByZXNlbnRJbkFycmF5ICYmICFzaXplKQogICAgICAg
IHJldHVybiAwOwoKICAgIEFycmF5RWxlbWVudFR5cGUqIHJlc3VsdCA9ICZhcnJheVtvZmZzZXRd
OwoKICAgIGlmIChtb2RlID09IEtleU1pZ2h0Tm90QmVQcmVzZW50SW5BcnJheSAmJiBrZXkgIT0g
ZXh0cmFjdEtleShyZXN1bHQpKQogICAgICAgIHJldHVybiAwOwoKICAgIGlmIChtb2RlID09IEtl
eU11c3RCZVByZXNlbnRJbkFycmF5KSB7CiAgICAgICAgKCh2b2lkKTApOwogICAgICAgICgodm9p
ZCkwKTsKICAgIH0KCiAgICByZXR1cm4gcmVzdWx0Owp9CgoKdGVtcGxhdGU8dHlwZW5hbWUgQXJy
YXlFbGVtZW50VHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgQXJyYXlUeXBlLCB0eXBl
bmFtZSBFeHRyYWN0S2V5PgppbmxpbmUgQXJyYXlFbGVtZW50VHlwZSogYmluYXJ5U2VhcmNoKEFy
cmF5VHlwZSYgYXJyYXksIHNpemVfdCBzaXplLCBLZXlUeXBlIGtleSwgRXh0cmFjdEtleSBleHRy
YWN0S2V5ID0gRXh0cmFjdEtleSgpKQp7CiAgICByZXR1cm4gYmluYXJ5U2VhcmNoSW1wbDxBcnJh
eUVsZW1lbnRUeXBlLCBLZXlUeXBlLCBBcnJheVR5cGUsIEV4dHJhY3RLZXksIEtleU11c3RCZVBy
ZXNlbnRJbkFycmF5PihhcnJheSwgc2l6ZSwga2V5LCBleHRyYWN0S2V5KTsKfQoKCnRlbXBsYXRl
PHR5cGVuYW1lIEFycmF5RWxlbWVudFR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIEFy
cmF5VHlwZSwgdHlwZW5hbWUgRXh0cmFjdEtleT4KaW5saW5lIEFycmF5RWxlbWVudFR5cGUqIHRy
eUJpbmFyeVNlYXJjaChBcnJheVR5cGUmIGFycmF5LCBzaXplX3Qgc2l6ZSwgS2V5VHlwZSBrZXks
IEV4dHJhY3RLZXkgZXh0cmFjdEtleSA9IEV4dHJhY3RLZXkoKSkKewogICAgcmV0dXJuIGJpbmFy
eVNlYXJjaEltcGw8QXJyYXlFbGVtZW50VHlwZSwgS2V5VHlwZSwgQXJyYXlUeXBlLCBFeHRyYWN0
S2V5LCBLZXlNaWdodE5vdEJlUHJlc2VudEluQXJyYXk+KGFycmF5LCBzaXplLCBrZXksIGV4dHJh
Y3RLZXkpOwp9CgoKdGVtcGxhdGU8dHlwZW5hbWUgQXJyYXlFbGVtZW50VHlwZSwgdHlwZW5hbWUg
S2V5VHlwZSwgdHlwZW5hbWUgQXJyYXlUeXBlLCB0eXBlbmFtZSBFeHRyYWN0S2V5PgppbmxpbmUg
QXJyYXlFbGVtZW50VHlwZSogYXBwcm94aW1hdGVCaW5hcnlTZWFyY2goQXJyYXlUeXBlJiBhcnJh
eSwgc2l6ZV90IHNpemUsIEtleVR5cGUga2V5LCBFeHRyYWN0S2V5IGV4dHJhY3RLZXkgPSBFeHRy
YWN0S2V5KCkpCnsKICAgIHJldHVybiBiaW5hcnlTZWFyY2hJbXBsPEFycmF5RWxlbWVudFR5cGUs
IEtleVR5cGUsIEFycmF5VHlwZSwgRXh0cmFjdEtleSwgUmV0dXJuQWRqYWNlbnRFbGVtZW50SWZL
ZXlJc05vdFByZXNlbnQ+KGFycmF5LCBzaXplLCBrZXksIGV4dHJhY3RLZXkpOwp9CgoKdGVtcGxh
dGU8dHlwZW5hbWUgQXJyYXlFbGVtZW50VHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUg
QXJyYXlUeXBlLCB0eXBlbmFtZSBFeHRyYWN0S2V5PgppbmxpbmUgQXJyYXlFbGVtZW50VHlwZSog
YmluYXJ5U2VhcmNoKGNvbnN0IEFycmF5VHlwZSYgYXJyYXksIHNpemVfdCBzaXplLCBLZXlUeXBl
IGtleSwgRXh0cmFjdEtleSBleHRyYWN0S2V5ID0gRXh0cmFjdEtleSgpKQp7CiAgICByZXR1cm4g
YmluYXJ5U2VhcmNoSW1wbDxBcnJheUVsZW1lbnRUeXBlLCBLZXlUeXBlLCBBcnJheVR5cGUsIEV4
dHJhY3RLZXksIEtleU11c3RCZVByZXNlbnRJbkFycmF5Pihjb25zdF9jYXN0PEFycmF5VHlwZSY+
KGFycmF5KSwgc2l6ZSwga2V5LCBleHRyYWN0S2V5KTsKfQp0ZW1wbGF0ZTx0eXBlbmFtZSBBcnJh
eUVsZW1lbnRUeXBlLCB0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBBcnJheVR5cGUsIHR5cGVu
YW1lIEV4dHJhY3RLZXk+CmlubGluZSBBcnJheUVsZW1lbnRUeXBlKiB0cnlCaW5hcnlTZWFyY2go
Y29uc3QgQXJyYXlUeXBlJiBhcnJheSwgc2l6ZV90IHNpemUsIEtleVR5cGUga2V5LCBFeHRyYWN0
S2V5IGV4dHJhY3RLZXkgPSBFeHRyYWN0S2V5KCkpCnsKICAgIHJldHVybiBiaW5hcnlTZWFyY2hJ
bXBsPEFycmF5RWxlbWVudFR5cGUsIEtleVR5cGUsIEFycmF5VHlwZSwgRXh0cmFjdEtleSwgS2V5
TWlnaHROb3RCZVByZXNlbnRJbkFycmF5Pihjb25zdF9jYXN0PEFycmF5VHlwZSY+KGFycmF5KSwg
c2l6ZSwga2V5LCBleHRyYWN0S2V5KTsKfQp0ZW1wbGF0ZTx0eXBlbmFtZSBBcnJheUVsZW1lbnRU
eXBlLCB0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBBcnJheVR5cGUsIHR5cGVuYW1lIEV4dHJh
Y3RLZXk+CmlubGluZSBBcnJheUVsZW1lbnRUeXBlKiBhcHByb3hpbWF0ZUJpbmFyeVNlYXJjaChj
b25zdCBBcnJheVR5cGUmIGFycmF5LCBzaXplX3Qgc2l6ZSwgS2V5VHlwZSBrZXksIEV4dHJhY3RL
ZXkgZXh0cmFjdEtleSA9IEV4dHJhY3RLZXkoKSkKewogICAgcmV0dXJuIGJpbmFyeVNlYXJjaElt
cGw8QXJyYXlFbGVtZW50VHlwZSwgS2V5VHlwZSwgQXJyYXlUeXBlLCBFeHRyYWN0S2V5LCBSZXR1
cm5BZGphY2VudEVsZW1lbnRJZktleUlzTm90UHJlc2VudD4oY29uc3RfY2FzdDxBcnJheVR5cGUm
PihhcnJheSksIHNpemUsIGtleSwgZXh0cmFjdEtleSk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFZl
Y3RvclR5cGUsIHR5cGVuYW1lIEVsZW1lbnRUeXBlPgppbmxpbmUgdm9pZCBpbnNlcnRJbnRvQm91
bmRlZFZlY3RvcihWZWN0b3JUeXBlJiB2ZWN0b3IsIHNpemVfdCBzaXplLCBjb25zdCBFbGVtZW50
VHlwZSYgZWxlbWVudCwgc2l6ZV90IGluZGV4KQp7CiAgICBmb3IgKHNpemVfdCBpID0gc2l6ZTsg
aS0tID4gaW5kZXggKyAxOykKICAgICAgICB2ZWN0b3JbaV0gPSB2ZWN0b3JbaSAtIDFdOwogICAg
dmVjdG9yW2luZGV4XSA9IGVsZW1lbnQ7Cn0KCgoKCiBib29sIGlzQ29tcGlsYXRpb25UaHJlYWQo
KTsKCn0KIyAzMjYgIi9ob21lL3dlYmtpdGJ1aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIy
LWJ1aWxkL2J1aWxkc2xhdmUvZWZsLWFybXY3LXRodW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvV1RG
L3d0Zi9TdGRMaWJFeHRyYXMuaCIKZW51bSBOb3ROdWxsVGFnIHsgTm90TnVsbCB9OwppbmxpbmUg
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pCnsK
ICAgICgodm9pZCkwKTsKICAgIHJldHVybiBsb2NhdGlvbjsKfQojIDM0NCAiL2hvbWUvd2Via2l0
YnVpbGRib3Qvc2xhdmVzL2VmbC1BUk12Ny10aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJt
djctdGh1bWIyLWJ1aWxkL2J1aWxkL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oIgpuYW1l
c3BhY2Ugc3RkIHsKCgp0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgX1VuaXF1ZV9pZiB7CiAgICB0
eXBlZGVmIHVuaXF1ZV9wdHI8VD4gX1NpbmdsZV9vYmplY3Q7Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBU
PiBzdHJ1Y3QgX1VuaXF1ZV9pZjxUW10+IHsKICAgIHR5cGVkZWYgdW5pcXVlX3B0cjxUW10+IF9V
bmtub3duX2JvdW5kOwp9OwoKdGVtcGxhdGU8Y2xhc3MgVCwgc2l6ZV90IE4+IHN0cnVjdCBfVW5p
cXVlX2lmPFRbTl0+IHsKICAgIHR5cGVkZWYgdm9pZCBfS25vd25fYm91bmQ7Cn07Cgp0ZW1wbGF0
ZTxjbGFzcyBULCBjbGFzcy4uLiBBcmdzPiBpbmxpbmUgdHlwZW5hbWUgX1VuaXF1ZV9pZjxUPjo6
X1NpbmdsZV9vYmplY3QKbWFrZV91bmlxdWUoQXJncyYmLi4uIGFyZ3MpCnsKICAgIHJldHVybiB1
bmlxdWVfcHRyPFQ+KG5ldyBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwp9Cgp0ZW1w
bGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgX1VuaXF1ZV9pZjxUPjo6X1Vua25vd25fYm91
bmQKbWFrZV91bmlxdWUoc2l6ZV90IG4pCnsKICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2V4
dGVudDxUPjo6dHlwZSBVOwogICAgcmV0dXJuIHVuaXF1ZV9wdHI8VD4obmV3IFVbbl0oKSk7Cn0K
CnRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzLi4uIEFyZ3M+IHR5cGVuYW1lIF9VbmlxdWVfaWY8VD46
Ol9Lbm93bl9ib3VuZAptYWtlX3VuaXF1ZShBcmdzJiYuLi4pID0gZGVsZXRlOwoKCgoKCnRlbXBs
YXRlPHNpemVfdC4uLiBpbmRleGVzPiBzdHJ1Y3QgaW5kZXhfc2VxdWVuY2UgewogICAgc3RhdGlj
IHNpemVfdCBzaXplKCkgeyByZXR1cm4gc2l6ZW9mLi4uKGluZGV4ZXMpOyB9Cn07Cgp0ZW1wbGF0
ZTxzaXplX3QgY3VycmVudEluZGV4LCBzaXplX3QuLi5pbmRleGVzPiBzdHJ1Y3QgbWFrZV9pbmRl
eF9zZXF1ZW5jZV9oZWxwZXI7Cgp0ZW1wbGF0ZTxzaXplX3QuLi5pbmRleGVzPiBzdHJ1Y3QgbWFr
ZV9pbmRleF9zZXF1ZW5jZV9oZWxwZXI8MCwgaW5kZXhlcy4uLj4gewogICAgdHlwZWRlZiBzdGQ6
OmluZGV4X3NlcXVlbmNlPGluZGV4ZXMuLi4+IHR5cGU7Cn07Cgp0ZW1wbGF0ZTxzaXplX3QgY3Vy
cmVudEluZGV4LCBzaXplX3QuLi5pbmRleGVzPiBzdHJ1Y3QgbWFrZV9pbmRleF9zZXF1ZW5jZV9o
ZWxwZXIgewogICAgdHlwZWRlZiB0eXBlbmFtZSBtYWtlX2luZGV4X3NlcXVlbmNlX2hlbHBlcjxj
dXJyZW50SW5kZXggLSAxLCBjdXJyZW50SW5kZXggLSAxLCBpbmRleGVzLi4uPjo6dHlwZSB0eXBl
Owp9OwoKdGVtcGxhdGU8c2l6ZV90IGxlbmd0aD4gc3RydWN0IG1ha2VfaW5kZXhfc2VxdWVuY2Ug
OiBwdWJsaWMgbWFrZV9pbmRleF9zZXF1ZW5jZV9oZWxwZXI8bGVuZ3RoPjo6dHlwZSB7IH07CgoK
CgpuYW1lc3BhY2UgbGl0ZXJhbHMgewpuYW1lc3BhY2UgY2hyb25vX2xpdGVyYWxzIHsKICAgIGNv
bnN0ZXhwciBpbmxpbmUgY2hyb25vOjpzZWNvbmRzIG9wZXJhdG9yIiIgX3ModW5zaWduZWQgbG9u
ZyBsb25nIHMpCiAgICB7CiAgICAgICAgcmV0dXJuIGNocm9ubzo6c2Vjb25kcyhzdGF0aWNfY2Fz
dDxjaHJvbm86OnNlY29uZHM6OnJlcD4ocykpOwogICAgfQoKICAgIGNvbnN0ZXhwciBjaHJvbm86
Om1pbGxpc2Vjb25kcyBvcGVyYXRvciIiIF9tcyh1bnNpZ25lZCBsb25nIGxvbmcgbXMpCiAgICB7
CiAgICAgICAgcmV0dXJuIGNocm9ubzo6bWlsbGlzZWNvbmRzKHN0YXRpY19jYXN0PGNocm9ubzo6
bWlsbGlzZWNvbmRzOjpyZXA+KG1zKSk7CiAgICB9Cn0KfQoKfQoKdXNpbmcgV1RGOjpLQjsKdXNp
bmcgV1RGOjpNQjsKdXNpbmcgV1RGOjppc0NvbXBpbGF0aW9uVGhyZWFkOwp1c2luZyBXVEY6Omlu
c2VydEludG9Cb3VuZGVkVmVjdG9yOwp1c2luZyBXVEY6OmlzUG9pbnRlckFsaWduZWQ7CnVzaW5n
IFdURjo6aXM4Qnl0ZUFsaWduZWQ7CnVzaW5nIFdURjo6YmluYXJ5U2VhcmNoOwp1c2luZyBXVEY6
OnRyeUJpbmFyeVNlYXJjaDsKdXNpbmcgV1RGOjphcHByb3hpbWF0ZUJpbmFyeVNlYXJjaDsKdXNp
bmcgV1RGOjpiaXR3aXNlX2Nhc3Q7CnVzaW5nIFdURjo6c2FmZUNhc3Q7CgoKCnVzaW5nIG5hbWVz
cGFjZSBzdGQ6OmxpdGVyYWxzOjpjaHJvbm9fbGl0ZXJhbHM7CiMgMjggIi9ob21lL3dlYmtpdGJ1
aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxkc2xhdmUvZWZsLWFybXY3
LXRodW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgiIDIKCm5hbWVz
cGFjZSBXVEYgewoKCiAgICB2b2lkKiBmYXN0TWFsbG9jKHNpemVfdCk7CiAgICB2b2lkKiBmYXN0
WmVyb2VkTWFsbG9jKHNpemVfdCk7CiAgICB2b2lkKiBmYXN0Q2FsbG9jKHNpemVfdCBudW1FbGVt
ZW50cywgc2l6ZV90IGVsZW1lbnRTaXplKTsKICAgIHZvaWQqIGZhc3RSZWFsbG9jKHZvaWQqLCBz
aXplX3QpOwogICAgY2hhciogZmFzdFN0ckR1cChjb25zdCBjaGFyKik7CiAgICBzaXplX3QgZmFz
dE1hbGxvY1NpemUoY29uc3Qgdm9pZCopOwogICAgc2l6ZV90IGZhc3RNYWxsb2NHb29kU2l6ZShz
aXplX3QpOwoKICAgIHN0cnVjdCBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB7CiAgICAgICAgVHJ5TWFs
bG9jUmV0dXJuVmFsdWUodm9pZCogZGF0YSkKICAgICAgICAgICAgOiBtX2RhdGEoZGF0YSkKICAg
ICAgICB7CiAgICAgICAgfQogICAgICAgIFRyeU1hbGxvY1JldHVyblZhbHVlKGNvbnN0IFRyeU1h
bGxvY1JldHVyblZhbHVlJiBzb3VyY2UpCiAgICAgICAgICAgIDogbV9kYXRhKHNvdXJjZS5tX2Rh
dGEpCiAgICAgICAgewogICAgICAgICAgICBzb3VyY2UubV9kYXRhID0gMDsKICAgICAgICB9CiAg
ICAgICAgflRyeU1hbGxvY1JldHVyblZhbHVlKCkgeyAoKHZvaWQpMCk7IH0KICAgICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gYm9vbCBnZXRWYWx1ZShUJiBkYXRhKSBfX2F0dHJpYnV0ZV9fKChf
X3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7CiAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IG9w
ZXJhdG9yIFBvc3NpYmx5TnVsbDxUPigpCiAgICAgICAgewogICAgICAgICAgICBUIHZhbHVlOwog
ICAgICAgICAgICBnZXRWYWx1ZSh2YWx1ZSk7CiAgICAgICAgICAgIHJldHVybiBQb3NzaWJseU51
bGw8VD4odmFsdWUpOwogICAgICAgIH0KICAgIHByaXZhdGU6CiAgICAgICAgbXV0YWJsZSB2b2lk
KiBtX2RhdGE7CiAgICB9OwoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBib29sIFRyeU1hbGxv
Y1JldHVyblZhbHVlOjpnZXRWYWx1ZShUJiBkYXRhKQogICAgewogICAgICAgIHVuaW9uIHUgeyB2
b2lkKiBkYXRhOyBUIHRhcmdldDsgfSByZXM7CiAgICAgICAgcmVzLmRhdGEgPSBtX2RhdGE7CiAg
ICAgICAgZGF0YSA9IHJlcy50YXJnZXQ7CiAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9ICEhbV9k
YXRhOwogICAgICAgIG1fZGF0YSA9IDA7CiAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogICAg
fQoKICAgIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RNYWxsb2Moc2l6ZV90IG4pOwogICAg
VHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdFplcm9lZE1hbGxvYyhzaXplX3Qgbik7CiAgICBU
cnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0Q2FsbG9jKHNpemVfdCBuX2VsZW1lbnRzLCBzaXpl
X3QgZWxlbWVudF9zaXplKTsKICAgIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RSZWFsbG9j
KHZvaWQqIHAsIHNpemVfdCBuKTsKCiAgICB2b2lkIGZhc3RGcmVlKHZvaWQqKTsKCgoKCgoKICAg
IHZvaWQgcmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7CgogICAgc3RydWN0IEZhc3RNYWxs
b2NTdGF0aXN0aWNzIHsKICAgICAgICBzaXplX3QgcmVzZXJ2ZWRWTUJ5dGVzOwogICAgICAgIHNp
emVfdCBjb21taXR0ZWRWTUJ5dGVzOwogICAgICAgIHNpemVfdCBmcmVlTGlzdEJ5dGVzOwogICAg
fTsKICAgIEZhc3RNYWxsb2NTdGF0aXN0aWNzIGZhc3RNYWxsb2NTdGF0aXN0aWNzKCk7CgoKCiAg
ICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBBbGxvY0FsaWdubWVudEludGVnZXI7CgogICAg
bmFtZXNwYWNlIEludGVybmFsIHsKICAgICAgICBlbnVtIEFsbG9jVHlwZSB7CiAgICAgICAgICAg
IEFsbG9jVHlwZU1hbGxvYyA9IDB4Mzc1ZDY3NTAsCiAgICAgICAgICAgIEFsbG9jVHlwZUNsYXNz
TmV3LAogICAgICAgICAgICBBbGxvY1R5cGVDbGFzc05ld0FycmF5LAogICAgICAgICAgICBBbGxv
Y1R5cGVOZXcsCiAgICAgICAgICAgIEFsbG9jVHlwZU5ld0FycmF5CiAgICAgICAgfTsKCiAgICAg
ICAgZW51bSB7CiAgICAgICAgICAgIFZhbGlkYXRpb25QcmVmaXggPSAweGYwMGRmMDBkLAogICAg
ICAgICAgICBWYWxpZGF0aW9uU3VmZml4ID0gMHgwYmFkZjAwZAogICAgICAgIH07CgogICAgICAg
IHR5cGVkZWYgdW5zaWduZWQgVmFsaWRhdGlvblRhZzsKCiAgICAgICAgc3RydWN0IFZhbGlkYXRp
b25IZWFkZXIgewogICAgICAgICAgICBBbGxvY1R5cGUgbV90eXBlOwogICAgICAgICAgICB1bnNp
Z25lZCBtX3NpemU7CiAgICAgICAgICAgIFZhbGlkYXRpb25UYWcgbV9wcmVmaXg7CiAgICAgICAg
ICAgIHVuc2lnbmVkIG1fYWxpZ25tZW50OwogICAgICAgIH07CgogICAgICAgIHN0YXRpYyBjb25z
dCBpbnQgVmFsaWRhdGlvbkJ1ZmZlclNpemUgPSBzaXplb2YoVmFsaWRhdGlvbkhlYWRlcikgKyBz
aXplb2YoVmFsaWRhdGlvblRhZyk7CiAgICB9CiMgMjEwICIvaG9tZS93ZWJraXRidWlsZGJvdC9z
bGF2ZXMvZWZsLUFSTXY3LXRodW1iMi1idWlsZC9idWlsZHNsYXZlL2VmbC1hcm12Ny10aHVtYjIt
YnVpbGQvYnVpbGQvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oIgogICAgaW5saW5lIHZvaWQg
ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2Modm9pZCosIEludGVybmFsOjpBbGxvY1R5cGUp
CiAgICB7CiAgICB9CgogICAgaW5saW5lIHZvaWQgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVl
KHZvaWQqLCBJbnRlcm5hbDo6QWxsb2NUeXBlKQogICAgewogICAgfQoKCgp9Cgp1c2luZyBXVEY6
OmZhc3RDYWxsb2M7CnVzaW5nIFdURjo6ZmFzdEZyZWU7CnVzaW5nIFdURjo6ZmFzdE1hbGxvYzsK
dXNpbmcgV1RGOjpmYXN0TWFsbG9jR29vZFNpemU7CnVzaW5nIFdURjo6ZmFzdE1hbGxvY1NpemU7
CnVzaW5nIFdURjo6ZmFzdFJlYWxsb2M7CnVzaW5nIFdURjo6ZmFzdFN0ckR1cDsKdXNpbmcgV1RG
OjpmYXN0WmVyb2VkTWFsbG9jOwp1c2luZyBXVEY6OnRyeUZhc3RDYWxsb2M7CnVzaW5nIFdURjo6
dHJ5RmFzdE1hbGxvYzsKdXNpbmcgV1RGOjp0cnlGYXN0UmVhbGxvYzsKdXNpbmcgV1RGOjp0cnlG
YXN0WmVyb2VkTWFsbG9jOwojIDU3ICIvaG9tZS93ZWJraXRidWlsZGJvdC9zbGF2ZXMvZWZsLUFS
TXY3LXRodW1iMi1idWlsZC9idWlsZHNsYXZlL2VmbC1hcm12Ny10aHVtYjItYnVpbGQvYnVpbGQv
U291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oIiAyCgoKIyAxICIvaG9tZS93ZWJraXRidWls
ZGJvdC9zbGF2ZXMvZWZsLUFSTXY3LXRodW1iMi1idWlsZC9idWlsZHNsYXZlL2VmbC1hcm12Ny10
aHVtYjItYnVpbGQvYnVpbGQvU291cmNlL1dURi93dGYvRGlzYWxsb3dDVHlwZS5oIiAxCiMgNjAg
Ii9ob21lL3dlYmtpdGJ1aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxk
c2xhdmUvZWZsLWFybXY3LXRodW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Y29uZmlnLmgiIDIKIyAyNyAiL2hvbWUvd2Via2l0YnVpbGRib3Qvc2xhdmVzL2VmbC1BUk12Ny10
aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJtdjctdGh1bWIyLWJ1aWxkL2J1aWxkL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcCIgMgojIDEgIi9o
b21lL3dlYmtpdGJ1aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxkc2xh
dmUvZWZsLWFybXY3LXRodW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5oIiAxCiMgMjkgIi9ob21lL3dlYmtpdGJ1aWxkYm90L3Ns
YXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxkc2xhdmUvZWZsLWFybXY3LXRodW1iMi1i
dWlsZC9idWlsZC9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5oIgojIDEgIi9ob21lL3dlYmtpdGJ1aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1
aWxkL2J1aWxkc2xhdmUvZWZsLWFybXY3LXRodW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgiIDEKIyAzMyAiL2hvbWUvd2Via2l0YnVpbGRib3Qv
c2xhdmVzL2VmbC1BUk12Ny10aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJtdjctdGh1bWIy
LWJ1aWxkL2J1aWxkL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaCIKIyAx
ICIvaG9tZS93ZWJraXRidWlsZGJvdC9zbGF2ZXMvZWZsLUFSTXY3LXRodW1iMi1idWlsZC9idWls
ZHNsYXZlL2VmbC1hcm12Ny10aHVtYjItYnVpbGQvYnVpbGQvV2ViS2l0QnVpbGQvUmVsZWFzZS9E
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9CeXRlY29kZXMuaCIgMQojIDM0ICIvaG9tZS93
ZWJraXRidWlsZGJvdC9zbGF2ZXMvZWZsLUFSTXY3LXRodW1iMi1idWlsZC9idWlsZHNsYXZlL2Vm
bC1hcm12Ny10aHVtYjItYnVpbGQvYnVpbGQvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L09wY29kZS5oIiAyCiMgMSAiL2hvbWUvd2Via2l0YnVpbGRib3Qvc2xhdmVzL2VmbC1BUk12Ny10
aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJtdjctdGh1bWIyLWJ1aWxkL2J1aWxkL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9wY29kZS5oIiAxCiMgMzUgIi9ob21lL3dlYmtp
dGJ1aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxkc2xhdmUvZWZsLWFy
bXY3LXRodW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bj
b2RlLmgiIDIKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOC4xL2FsZ29yaXRobSIgMSAzCiMgNTggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9hbGdvcml0aG0iIDMKICAgICAgIAojIDU5ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYWxnb3JpdGhtIiAzCgoKCiMg
MSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMv
c3RsX2FsZ28uaCIgMSAzCiMgNTkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgiIDMKIyAxICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvY3N0ZGxpYiIgMSAzCiMgMzkgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9jc3RkbGliIiAzCiAgICAg
ICAKIyA0MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4x
L2NzdGRsaWIiIDMKIyA2MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOC4xL2JpdHMvc3RsX2FsZ28uaCIgMiAzCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYWxnb3JpdGhtZndkLmgiIDEgMwojIDMz
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9h
bGdvcml0aG1md2QuaCIgMwogICAgICAgCiMgMzQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2FsZ29yaXRobWZ3ZC5oIiAzCiMgNDIgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4x
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL2FsZ29yaXRo
bWZ3ZC5oIiAzCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgi
ZGVmYXVsdCIpKSkKewoKIyAxOTQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjguMS9iaXRzL2FsZ29yaXRobWZ3ZC5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0lJdGVyLCB0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgYm9vbAogICAgYWxsX29mKF9JSXRlciwg
X0lJdGVyLCBfUHJlZGljYXRlKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJdGVyLCB0eXBlbmFt
ZSBfUHJlZGljYXRlPgogICAgYm9vbAogICAgYW55X29mKF9JSXRlciwgX0lJdGVyLCBfUHJlZGlj
YXRlKTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9GSXRlciwgdHlwZW5hbWUgX1RwPgogICAgYm9v
bAogICAgYmluYXJ5X3NlYXJjaChfRkl0ZXIsIF9GSXRlciwgY29uc3QgX1RwJik7CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9GSXRlciwgdHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAg
IGJvb2wKICAgIGJpbmFyeV9zZWFyY2goX0ZJdGVyLCBfRkl0ZXIsIGNvbnN0IF9UcCYsIF9Db21w
YXJlKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJdGVyLCB0eXBlbmFtZSBfT0l0ZXI+CiAgICBf
T0l0ZXIKICAgIGNvcHkoX0lJdGVyLCBfSUl0ZXIsIF9PSXRlcik7CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9CSXRlcjEsIHR5cGVuYW1lIF9CSXRlcjI+CiAgICBfQkl0ZXIyCiAgICBjb3B5X2JhY2t3
YXJkKF9CSXRlcjEsIF9CSXRlcjEsIF9CSXRlcjIpOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJ
dGVyLCB0eXBlbmFtZSBfT0l0ZXIsIHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgICBfT0l0ZXIKICAg
IGNvcHlfaWYoX0lJdGVyLCBfSUl0ZXIsIF9PSXRlciwgX1ByZWRpY2F0ZSk7CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9JSXRlciwgdHlwZW5hbWUgX1NpemUsIHR5cGVuYW1lIF9PSXRlcj4KICAgIF9P
SXRlcgogICAgY29weV9uKF9JSXRlciwgX1NpemUsIF9PSXRlcik7CgoKCgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfRkl0ZXIsIHR5cGVuYW1lIF9UcD4KICAgIHBhaXI8X0ZJdGVyLCBfRkl0ZXI+CiAg
ICBlcXVhbF9yYW5nZShfRkl0ZXIsIF9GSXRlciwgY29uc3QgX1RwJik7CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9GSXRlciwgdHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIHBhaXI8
X0ZJdGVyLCBfRkl0ZXI+CiAgICBlcXVhbF9yYW5nZShfRkl0ZXIsIF9GSXRlciwgY29uc3QgX1Rw
JiwgX0NvbXBhcmUpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRkl0ZXIsIHR5cGVuYW1lIF9UcD4K
ICAgIHZvaWQKICAgIGZpbGwoX0ZJdGVyLCBfRkl0ZXIsIGNvbnN0IF9UcCYpOwoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfT0l0ZXIsIHR5cGVuYW1lIF9TaXplLCB0eXBlbmFtZSBfVHA+CiAgICBfT0l0
ZXIKICAgIGZpbGxfbihfT0l0ZXIsIF9TaXplLCBjb25zdCBfVHAmKTsKCgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfRkl0ZXIxLCB0eXBlbmFtZSBfRkl0ZXIyPgogICAgX0ZJdGVyMQogICAgZmluZF9l
bmQoX0ZJdGVyMSwgX0ZJdGVyMSwgX0ZJdGVyMiwgX0ZJdGVyMik7CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9GSXRlcjEsIHR5cGVuYW1lIF9GSXRlcjIsIHR5cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+
CiAgICBfRkl0ZXIxCiAgICBmaW5kX2VuZChfRkl0ZXIxLCBfRkl0ZXIxLCBfRkl0ZXIyLCBfRkl0
ZXIyLCBfQmluYXJ5UHJlZGljYXRlKTsKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JSXRlciwg
dHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIF9JSXRlcgogICAgZmluZF9pZl9ub3QoX0lJdGVyLCBf
SUl0ZXIsIF9QcmVkaWNhdGUpOwoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JSXRlcjEsIHR5
cGVuYW1lIF9JSXRlcjI+CiAgICBib29sCiAgICBpbmNsdWRlcyhfSUl0ZXIxLCBfSUl0ZXIxLCBf
SUl0ZXIyLCBfSUl0ZXIyKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJdGVyMSwgdHlwZW5hbWUg
X0lJdGVyMiwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBib29sCiAgICBpbmNsdWRlcyhfSUl0ZXIx
LCBfSUl0ZXIxLCBfSUl0ZXIyLCBfSUl0ZXIyLCBfQ29tcGFyZSk7CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9CSXRlcj4KICAgIHZvaWQKICAgIGlucGxhY2VfbWVyZ2UoX0JJdGVyLCBfQkl0ZXIsIF9C
SXRlcik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9CSXRlciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAg
ICB2b2lkCiAgICBpbnBsYWNlX21lcmdlKF9CSXRlciwgX0JJdGVyLCBfQkl0ZXIsIF9Db21wYXJl
KTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SQUl0ZXI+CiAgICBib29sCiAgICBpc19oZWFwKF9S
QUl0ZXIsIF9SQUl0ZXIpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUkFJdGVyLCB0eXBlbmFtZSBf
Q29tcGFyZT4KICAgIGJvb2wKICAgIGlzX2hlYXAoX1JBSXRlciwgX1JBSXRlciwgX0NvbXBhcmUp
OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUkFJdGVyPgogICAgX1JBSXRlcgogICAgaXNfaGVhcF91
bnRpbChfUkFJdGVyLCBfUkFJdGVyKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JBSXRlciwgdHlw
ZW5hbWUgX0NvbXBhcmU+CiAgICBfUkFJdGVyCiAgICBpc19oZWFwX3VudGlsKF9SQUl0ZXIsIF9S
QUl0ZXIsIF9Db21wYXJlKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJdGVyLCB0eXBlbmFtZSBf
UHJlZGljYXRlPgogICAgYm9vbAogICAgaXNfcGFydGl0aW9uZWQoX0lJdGVyLCBfSUl0ZXIsIF9Q
cmVkaWNhdGUpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRkl0ZXIxLCB0eXBlbmFtZSBfRkl0ZXIy
PgogICAgYm9vbAogICAgaXNfcGVybXV0YXRpb24oX0ZJdGVyMSwgX0ZJdGVyMSwgX0ZJdGVyMik7
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9GSXRlcjEsIHR5cGVuYW1lIF9GSXRlcjIsCiAgICB0eXBl
bmFtZSBfQmluYXJ5UHJlZGljYXRlPgogICAgYm9vbAogICAgaXNfcGVybXV0YXRpb24oX0ZJdGVy
MSwgX0ZJdGVyMSwgX0ZJdGVyMiwgX0JpbmFyeVByZWRpY2F0ZSk7CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9GSXRlcj4KICAgIGJvb2wKICAgIGlzX3NvcnRlZChfRkl0ZXIsIF9GSXRlcik7CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9GSXRlciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBib29sCiAgICBp
c19zb3J0ZWQoX0ZJdGVyLCBfRkl0ZXIsIF9Db21wYXJlKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0ZJdGVyPgogICAgX0ZJdGVyCiAgICBpc19zb3J0ZWRfdW50aWwoX0ZJdGVyLCBfRkl0ZXIpOwoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRkl0ZXIsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgX0ZJdGVy
CiAgICBpc19zb3J0ZWRfdW50aWwoX0ZJdGVyLCBfRkl0ZXIsIF9Db21wYXJlKTsKCgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9GSXRlcjEsIHR5cGVuYW1lIF9GSXRlcjI+CiAgICB2b2lkCiAgICBpdGVy
X3N3YXAoX0ZJdGVyMSwgX0ZJdGVyMik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9GSXRlciwgdHlw
ZW5hbWUgX1RwPgogICAgX0ZJdGVyCiAgICBsb3dlcl9ib3VuZChfRkl0ZXIsIF9GSXRlciwgY29u
c3QgX1RwJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9GSXRlciwgdHlwZW5hbWUgX1RwLCB0eXBl
bmFtZSBfQ29tcGFyZT4KICAgIF9GSXRlcgogICAgbG93ZXJfYm91bmQoX0ZJdGVyLCBfRkl0ZXIs
IGNvbnN0IF9UcCYsIF9Db21wYXJlKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JBSXRlcj4KICAg
IHZvaWQKICAgIG1ha2VfaGVhcChfUkFJdGVyLCBfUkFJdGVyKTsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1JBSXRlciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBtYWtlX2hlYXAoX1JB
SXRlciwgX1JBSXRlciwgX0NvbXBhcmUpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBj
b25zdCBfVHAmCiAgICBtYXgoY29uc3QgX1RwJiwgY29uc3QgX1RwJik7CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBjb25zdCBfVHAmCiAgICBtYXgoY29u
c3QgX1RwJiwgY29uc3QgX1RwJiwgX0NvbXBhcmUpOwoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+CiAgICBjb25zdCBfVHAmCiAgICBtaW4oY29uc3QgX1RwJiwgY29uc3QgX1RwJik7CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBjb25zdCBfVHAmCiAg
ICBtaW4oY29uc3QgX1RwJiwgY29uc3QgX1RwJiwgX0NvbXBhcmUpOwoKCgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+CiAgICBwYWlyPGNvbnN0IF9UcCYsIGNvbnN0IF9UcCY+CiAgICBtaW5tYXgo
Y29uc3QgX1RwJiwgY29uc3QgX1RwJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5h
bWUgX0NvbXBhcmU+CiAgICBwYWlyPGNvbnN0IF9UcCYsIGNvbnN0IF9UcCY+CiAgICBtaW5tYXgo
Y29uc3QgX1RwJiwgY29uc3QgX1RwJiwgX0NvbXBhcmUpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Rkl0ZXI+CiAgICBwYWlyPF9GSXRlciwgX0ZJdGVyPgogICAgbWlubWF4X2VsZW1lbnQoX0ZJdGVy
LCBfRkl0ZXIpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRkl0ZXIsIHR5cGVuYW1lIF9Db21wYXJl
PgogICAgcGFpcjxfRkl0ZXIsIF9GSXRlcj4KICAgIG1pbm1heF9lbGVtZW50KF9GSXRlciwgX0ZJ
dGVyLCBfQ29tcGFyZSk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIF9UcAogICAgbWlu
KGluaXRpYWxpemVyX2xpc3Q8X1RwPik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5h
bWUgX0NvbXBhcmU+CiAgICBfVHAKICAgIG1pbihpbml0aWFsaXplcl9saXN0PF9UcD4sIF9Db21w
YXJlKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgX1RwCiAgICBtYXgoaW5pdGlhbGl6
ZXJfbGlzdDxfVHA+KTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ29tcGFy
ZT4KICAgIF9UcAogICAgbWF4KGluaXRpYWxpemVyX2xpc3Q8X1RwPiwgX0NvbXBhcmUpOwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBwYWlyPF9UcCwgX1RwPgogICAgbWlubWF4KGluaXRp
YWxpemVyX2xpc3Q8X1RwPik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0Nv
bXBhcmU+CiAgICBwYWlyPF9UcCwgX1RwPgogICAgbWlubWF4KGluaXRpYWxpemVyX2xpc3Q8X1Rw
PiwgX0NvbXBhcmUpOwoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQkl0ZXI+CiAgICBib29sCiAg
ICBuZXh0X3Blcm11dGF0aW9uKF9CSXRlciwgX0JJdGVyKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0JJdGVyLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGJvb2wKICAgIG5leHRfcGVybXV0YXRpb24o
X0JJdGVyLCBfQkl0ZXIsIF9Db21wYXJlKTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JSXRlciwg
dHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIGJvb2wKICAgIG5vbmVfb2YoX0lJdGVyLCBfSUl0ZXIs
IF9QcmVkaWNhdGUpOwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJdGVyLCB0eXBlbmFtZSBf
UkFJdGVyPgogICAgX1JBSXRlcgogICAgcGFydGlhbF9zb3J0X2NvcHkoX0lJdGVyLCBfSUl0ZXIs
IF9SQUl0ZXIsIF9SQUl0ZXIpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0ZXIsIHR5cGVuYW1l
IF9SQUl0ZXIsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgX1JBSXRlcgogICAgcGFydGlhbF9zb3J0
X2NvcHkoX0lJdGVyLCBfSUl0ZXIsIF9SQUl0ZXIsIF9SQUl0ZXIsIF9Db21wYXJlKTsKCgoKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0lJdGVyLCB0eXBlbmFtZSBfT0l0ZXIxLAogICAgdHlwZW5hbWUg
X09JdGVyMiwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIHBhaXI8X09JdGVyMSwgX09JdGVyMj4K
ICAgIHBhcnRpdGlvbl9jb3B5KF9JSXRlciwgX0lJdGVyLCBfT0l0ZXIxLCBfT0l0ZXIyLCBfUHJl
ZGljYXRlKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZJdGVyLCB0eXBlbmFtZSBfUHJlZGljYXRl
PgogICAgX0ZJdGVyCiAgICBwYXJ0aXRpb25fcG9pbnQoX0ZJdGVyLCBfRkl0ZXIsIF9QcmVkaWNh
dGUpOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JBSXRlcj4KICAgIHZvaWQKICAgIHBvcF9oZWFw
KF9SQUl0ZXIsIF9SQUl0ZXIpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUkFJdGVyLCB0eXBlbmFt
ZSBfQ29tcGFyZT4KICAgIHZvaWQKICAgIHBvcF9oZWFwKF9SQUl0ZXIsIF9SQUl0ZXIsIF9Db21w
YXJlKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JJdGVyPgogICAgYm9vbAogICAgcHJldl9wZXJt
dXRhdGlvbihfQkl0ZXIsIF9CSXRlcik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9CSXRlciwgdHlw
ZW5hbWUgX0NvbXBhcmU+CiAgICBib29sCiAgICBwcmV2X3Blcm11dGF0aW9uKF9CSXRlciwgX0JJ
dGVyLCBfQ29tcGFyZSk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SQUl0ZXI+CiAgICB2b2lkCiAg
ICBwdXNoX2hlYXAoX1JBSXRlciwgX1JBSXRlcik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SQUl0
ZXIsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgdm9pZAogICAgcHVzaF9oZWFwKF9SQUl0ZXIsIF9S
QUl0ZXIsIF9Db21wYXJlKTsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRkl0ZXIsIHR5cGVuYW1l
IF9UcD4KICAgIF9GSXRlcgogICAgcmVtb3ZlKF9GSXRlciwgX0ZJdGVyLCBjb25zdCBfVHAmKTsK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZJdGVyLCB0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgX0ZJ
dGVyCiAgICByZW1vdmVfaWYoX0ZJdGVyLCBfRkl0ZXIsIF9QcmVkaWNhdGUpOwoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfSUl0ZXIsIHR5cGVuYW1lIF9PSXRlciwgdHlwZW5hbWUgX1RwPgogICAgX09J
dGVyCiAgICByZW1vdmVfY29weShfSUl0ZXIsIF9JSXRlciwgX09JdGVyLCBjb25zdCBfVHAmKTsK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJdGVyLCB0eXBlbmFtZSBfT0l0ZXIsIHR5cGVuYW1lIF9Q
cmVkaWNhdGU+CiAgICBfT0l0ZXIKICAgIHJlbW92ZV9jb3B5X2lmKF9JSXRlciwgX0lJdGVyLCBf
T0l0ZXIsIF9QcmVkaWNhdGUpOwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JSXRlciwgdHlwZW5h
bWUgX09JdGVyLCB0eXBlbmFtZSBfVHA+CiAgICBfT0l0ZXIKICAgIHJlcGxhY2VfY29weShfSUl0
ZXIsIF9JSXRlciwgX09JdGVyLCBjb25zdCBfVHAmLCBjb25zdCBfVHAmKTsKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0l0ZXIsIHR5cGVuYW1lIF9PSXRlciwgdHlwZW5hbWUgX1ByZWRpY2F0ZSwgdHlw
ZW5hbWUgX1RwPgogICAgX09JdGVyCiAgICByZXBsYWNlX2NvcHlfaWYoX0l0ZXIsIF9JdGVyLCBf
T0l0ZXIsIF9QcmVkaWNhdGUsIGNvbnN0IF9UcCYpOwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9C
SXRlcj4KICAgIHZvaWQKICAgIHJldmVyc2UoX0JJdGVyLCBfQkl0ZXIpOwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQkl0ZXIsIHR5cGVuYW1lIF9PSXRlcj4KICAgIF9PSXRlcgogICAgcmV2ZXJzZV9j
b3B5KF9CSXRlciwgX0JJdGVyLCBfT0l0ZXIpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRkl0ZXI+
CiAgICB2b2lkCiAgICByb3RhdGUoX0ZJdGVyLCBfRkl0ZXIsIF9GSXRlcik7CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9GSXRlciwgdHlwZW5hbWUgX09JdGVyPgogICAgX09JdGVyCiAgICByb3RhdGVf
Y29weShfRkl0ZXIsIF9GSXRlciwgX0ZJdGVyLCBfT0l0ZXIpOwojIDUzNSAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvYWxnb3JpdGhtZndkLmgi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUkFJdGVyLCB0eXBlbmFtZSBfVUdlbmVyYXRvcj4KICAg
IHZvaWQKICAgIHNodWZmbGUoX1JBSXRlciwgX1JBSXRlciwgX1VHZW5lcmF0b3ImJik7CgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfUkFJdGVyPgogICAgdm9pZAogICAgc29ydF9oZWFwKF9SQUl0ZXIs
IF9SQUl0ZXIpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUkFJdGVyLCB0eXBlbmFtZSBfQ29tcGFy
ZT4KICAgIHZvaWQKICAgIHNvcnRfaGVhcChfUkFJdGVyLCBfUkFJdGVyLCBfQ29tcGFyZSk7Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9CSXRlciwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIF9CSXRl
cgogICAgc3RhYmxlX3BhcnRpdGlvbihfQkl0ZXIsIF9CSXRlciwgX1ByZWRpY2F0ZSk7CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHZvaWQKICAgIHN3YXAoX1RwJiwgX1RwJikKCiAgICBu
b2V4Y2VwdChfX2FuZF88aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGU8X1RwPiwKICAgICAg
ICAgICAgIGlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlPF9UcD4+Ojp2YWx1ZSkKCiAgICA7Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgc2l6ZV90IF9ObT4KICAgIHZvaWQKICAgIHN3YXAoX1Rw
ICgmX19hKVtfTm1dLCBfVHAgKCZfX2IpW19ObV0pCgogICAgbm9leGNlcHQobm9leGNlcHQoc3dh
cCgqX19hLCAqX19iKSkpCgogICAgOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRkl0ZXIxLCB0eXBl
bmFtZSBfRkl0ZXIyPgogICAgX0ZJdGVyMgogICAgc3dhcF9yYW5nZXMoX0ZJdGVyMSwgX0ZJdGVy
MSwgX0ZJdGVyMik7CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZJdGVyPgogICAgX0ZJdGVyCiAg
ICB1bmlxdWUoX0ZJdGVyLCBfRkl0ZXIpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRkl0ZXIsIHR5
cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+CiAgICBfRkl0ZXIKICAgIHVuaXF1ZShfRkl0ZXIsIF9G
SXRlciwgX0JpbmFyeVByZWRpY2F0ZSk7CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZJdGVyLCB0
eXBlbmFtZSBfVHA+CiAgICBfRkl0ZXIKICAgIHVwcGVyX2JvdW5kKF9GSXRlciwgX0ZJdGVyLCBj
b25zdCBfVHAmKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZJdGVyLCB0eXBlbmFtZSBfVHAsIHR5
cGVuYW1lIF9Db21wYXJlPgogICAgX0ZJdGVyCiAgICB1cHBlcl9ib3VuZChfRkl0ZXIsIF9GSXRl
ciwgY29uc3QgX1RwJiwgX0NvbXBhcmUpOwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZJdGVy
PgogICAgX0ZJdGVyCiAgICBhZGphY2VudF9maW5kKF9GSXRlciwgX0ZJdGVyKTsKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0ZJdGVyLCB0eXBlbmFtZSBfQmluYXJ5UHJlZGljYXRlPgogICAgX0ZJdGVy
CiAgICBhZGphY2VudF9maW5kKF9GSXRlciwgX0ZJdGVyLCBfQmluYXJ5UHJlZGljYXRlKTsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0lJdGVyLCB0eXBlbmFtZSBfVHA+CiAgICB0eXBlbmFtZSBpdGVy
YXRvcl90cmFpdHM8X0lJdGVyPjo6ZGlmZmVyZW5jZV90eXBlCiAgICBjb3VudChfSUl0ZXIsIF9J
SXRlciwgY29uc3QgX1RwJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JSXRlciwgdHlwZW5hbWUg
X1ByZWRpY2F0ZT4KICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSUl0ZXI+OjpkaWZmZXJl
bmNlX3R5cGUKICAgIGNvdW50X2lmKF9JSXRlciwgX0lJdGVyLCBfUHJlZGljYXRlKTsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0lJdGVyMSwgdHlwZW5hbWUgX0lJdGVyMj4KICAgIGJvb2wKICAgIGVx
dWFsKF9JSXRlcjEsIF9JSXRlcjEsIF9JSXRlcjIpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0
ZXIxLCB0eXBlbmFtZSBfSUl0ZXIyLCB0eXBlbmFtZSBfQmluYXJ5UHJlZGljYXRlPgogICAgYm9v
bAogICAgZXF1YWwoX0lJdGVyMSwgX0lJdGVyMSwgX0lJdGVyMiwgX0JpbmFyeVByZWRpY2F0ZSk7
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JSXRlciwgdHlwZW5hbWUgX1RwPgogICAgX0lJdGVyCiAg
ICBmaW5kKF9JSXRlciwgX0lJdGVyLCBjb25zdCBfVHAmKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0ZJdGVyMSwgdHlwZW5hbWUgX0ZJdGVyMj4KICAgIF9GSXRlcjEKICAgIGZpbmRfZmlyc3Rfb2Yo
X0ZJdGVyMSwgX0ZJdGVyMSwgX0ZJdGVyMiwgX0ZJdGVyMik7CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9GSXRlcjEsIHR5cGVuYW1lIF9GSXRlcjIsIHR5cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+CiAg
ICBfRkl0ZXIxCiAgICBmaW5kX2ZpcnN0X29mKF9GSXRlcjEsIF9GSXRlcjEsIF9GSXRlcjIsIF9G
SXRlcjIsIF9CaW5hcnlQcmVkaWNhdGUpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0ZXIsIHR5
cGVuYW1lIF9QcmVkaWNhdGU+CiAgICBfSUl0ZXIKICAgIGZpbmRfaWYoX0lJdGVyLCBfSUl0ZXIs
IF9QcmVkaWNhdGUpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0ZXIsIHR5cGVuYW1lIF9GdW5j
dD4KICAgIF9GdW5jdAogICAgZm9yX2VhY2goX0lJdGVyLCBfSUl0ZXIsIF9GdW5jdCk7CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9GSXRlciwgdHlwZW5hbWUgX0dlbmVyYXRvcj4KICAgIHZvaWQKICAg
IGdlbmVyYXRlKF9GSXRlciwgX0ZJdGVyLCBfR2VuZXJhdG9yKTsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX09JdGVyLCB0eXBlbmFtZSBfU2l6ZSwgdHlwZW5hbWUgX0dlbmVyYXRvcj4KICAgIF9PSXRl
cgogICAgZ2VuZXJhdGVfbihfT0l0ZXIsIF9TaXplLCBfR2VuZXJhdG9yKTsKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0lJdGVyMSwgdHlwZW5hbWUgX0lJdGVyMj4KICAgIGJvb2wKICAgIGxleGljb2dy
YXBoaWNhbF9jb21wYXJlKF9JSXRlcjEsIF9JSXRlcjEsIF9JSXRlcjIsIF9JSXRlcjIpOwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0ZXIxLCB0eXBlbmFtZSBfSUl0ZXIyLCB0eXBlbmFtZSBfQ29t
cGFyZT4KICAgIGJvb2wKICAgIGxleGljb2dyYXBoaWNhbF9jb21wYXJlKF9JSXRlcjEsIF9JSXRl
cjEsIF9JSXRlcjIsIF9JSXRlcjIsIF9Db21wYXJlKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZJ
dGVyPgogICAgX0ZJdGVyCiAgICBtYXhfZWxlbWVudChfRkl0ZXIsIF9GSXRlcik7CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9GSXRlciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBfRkl0ZXIKICAgIG1h
eF9lbGVtZW50KF9GSXRlciwgX0ZJdGVyLCBfQ29tcGFyZSk7CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9JSXRlcjEsIHR5cGVuYW1lIF9JSXRlcjIsIHR5cGVuYW1lIF9PSXRlcj4KICAgIF9PSXRlcgog
ICAgbWVyZ2UoX0lJdGVyMSwgX0lJdGVyMSwgX0lJdGVyMiwgX0lJdGVyMiwgX09JdGVyKTsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0lJdGVyMSwgdHlwZW5hbWUgX0lJdGVyMiwgdHlwZW5hbWUgX09J
dGVyLAogICAgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBfT0l0ZXIKICAgIG1lcmdlKF9JSXRlcjEs
IF9JSXRlcjEsIF9JSXRlcjIsIF9JSXRlcjIsIF9PSXRlciwgX0NvbXBhcmUpOwoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfRkl0ZXI+CiAgICBfRkl0ZXIKICAgIG1pbl9lbGVtZW50KF9GSXRlciwgX0ZJ
dGVyKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZJdGVyLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAg
IF9GSXRlcgogICAgbWluX2VsZW1lbnQoX0ZJdGVyLCBfRkl0ZXIsIF9Db21wYXJlKTsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0lJdGVyMSwgdHlwZW5hbWUgX0lJdGVyMj4KICAgIHBhaXI8X0lJdGVy
MSwgX0lJdGVyMj4KICAgIG1pc21hdGNoKF9JSXRlcjEsIF9JSXRlcjEsIF9JSXRlcjIpOwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0ZXIxLCB0eXBlbmFtZSBfSUl0ZXIyLCB0eXBlbmFtZSBfQmlu
YXJ5UHJlZGljYXRlPgogICAgcGFpcjxfSUl0ZXIxLCBfSUl0ZXIyPgogICAgbWlzbWF0Y2goX0lJ
dGVyMSwgX0lJdGVyMSwgX0lJdGVyMiwgX0JpbmFyeVByZWRpY2F0ZSk7CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9SQUl0ZXI+CiAgICB2b2lkCiAgICBudGhfZWxlbWVudChfUkFJdGVyLCBfUkFJdGVy
LCBfUkFJdGVyKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JBSXRlciwgdHlwZW5hbWUgX0NvbXBh
cmU+CiAgICB2b2lkCiAgICBudGhfZWxlbWVudChfUkFJdGVyLCBfUkFJdGVyLCBfUkFJdGVyLCBf
Q29tcGFyZSk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SQUl0ZXI+CiAgICB2b2lkCiAgICBwYXJ0
aWFsX3NvcnQoX1JBSXRlciwgX1JBSXRlciwgX1JBSXRlcik7CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9SQUl0ZXIsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgdm9pZAogICAgcGFydGlhbF9zb3J0KF9S
QUl0ZXIsIF9SQUl0ZXIsIF9SQUl0ZXIsIF9Db21wYXJlKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0JJdGVyLCB0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgX0JJdGVyCiAgICBwYXJ0aXRpb24oX0JJ
dGVyLCBfQkl0ZXIsIF9QcmVkaWNhdGUpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUkFJdGVyPgog
ICAgdm9pZAogICAgcmFuZG9tX3NodWZmbGUoX1JBSXRlciwgX1JBSXRlcik7CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9SQUl0ZXIsIHR5cGVuYW1lIF9HZW5lcmF0b3I+CiAgICB2b2lkCiAgICByYW5k
b21fc2h1ZmZsZShfUkFJdGVyLCBfUkFJdGVyLAoKICAgICBfR2VuZXJhdG9yJiYpOwoKCgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfRkl0ZXIsIHR5cGVuYW1lIF9UcD4KICAgIHZvaWQKICAgIHJlcGxh
Y2UoX0ZJdGVyLCBfRkl0ZXIsIGNvbnN0IF9UcCYsIGNvbnN0IF9UcCYpOwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfRkl0ZXIsIHR5cGVuYW1lIF9QcmVkaWNhdGUsIHR5cGVuYW1lIF9UcD4KICAgIHZv
aWQKICAgIHJlcGxhY2VfaWYoX0ZJdGVyLCBfRkl0ZXIsIF9QcmVkaWNhdGUsIGNvbnN0IF9UcCYp
OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRkl0ZXIxLCB0eXBlbmFtZSBfRkl0ZXIyPgogICAgX0ZJ
dGVyMQogICAgc2VhcmNoKF9GSXRlcjEsIF9GSXRlcjEsIF9GSXRlcjIsIF9GSXRlcjIpOwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfRkl0ZXIxLCB0eXBlbmFtZSBfRkl0ZXIyLCB0eXBlbmFtZSBfQmlu
YXJ5UHJlZGljYXRlPgogICAgX0ZJdGVyMQogICAgc2VhcmNoKF9GSXRlcjEsIF9GSXRlcjEsIF9G
SXRlcjIsIF9GSXRlcjIsIF9CaW5hcnlQcmVkaWNhdGUpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Rkl0ZXIsIHR5cGVuYW1lIF9TaXplLCB0eXBlbmFtZSBfVHA+CiAgICBfRkl0ZXIKICAgIHNlYXJj
aF9uKF9GSXRlciwgX0ZJdGVyLCBfU2l6ZSwgY29uc3QgX1RwJik7CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9GSXRlciwgdHlwZW5hbWUgX1NpemUsIHR5cGVuYW1lIF9UcCwKICAgIHR5cGVuYW1lIF9C
aW5hcnlQcmVkaWNhdGU+CiAgICBfRkl0ZXIKICAgIHNlYXJjaF9uKF9GSXRlciwgX0ZJdGVyLCBf
U2l6ZSwgY29uc3QgX1RwJiwgX0JpbmFyeVByZWRpY2F0ZSk7CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9JSXRlcjEsIHR5cGVuYW1lIF9JSXRlcjIsIHR5cGVuYW1lIF9PSXRlcj4KICAgIF9PSXRlcgog
ICAgc2V0X2RpZmZlcmVuY2UoX0lJdGVyMSwgX0lJdGVyMSwgX0lJdGVyMiwgX0lJdGVyMiwgX09J
dGVyKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJdGVyMSwgdHlwZW5hbWUgX0lJdGVyMiwgdHlw
ZW5hbWUgX09JdGVyLAogICAgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBfT0l0ZXIKICAgIHNldF9k
aWZmZXJlbmNlKF9JSXRlcjEsIF9JSXRlcjEsIF9JSXRlcjIsIF9JSXRlcjIsIF9PSXRlciwgX0Nv
bXBhcmUpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0ZXIxLCB0eXBlbmFtZSBfSUl0ZXIyLCB0
eXBlbmFtZSBfT0l0ZXI+CiAgICBfT0l0ZXIKICAgIHNldF9pbnRlcnNlY3Rpb24oX0lJdGVyMSwg
X0lJdGVyMSwgX0lJdGVyMiwgX0lJdGVyMiwgX09JdGVyKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0lJdGVyMSwgdHlwZW5hbWUgX0lJdGVyMiwgdHlwZW5hbWUgX09JdGVyLAogICAgdHlwZW5hbWUg
X0NvbXBhcmU+CiAgICBfT0l0ZXIKICAgIHNldF9pbnRlcnNlY3Rpb24oX0lJdGVyMSwgX0lJdGVy
MSwgX0lJdGVyMiwgX0lJdGVyMiwgX09JdGVyLCBfQ29tcGFyZSk7CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9JSXRlcjEsIHR5cGVuYW1lIF9JSXRlcjIsIHR5cGVuYW1lIF9PSXRlcj4KICAgIF9PSXRl
cgogICAgc2V0X3N5bW1ldHJpY19kaWZmZXJlbmNlKF9JSXRlcjEsIF9JSXRlcjEsIF9JSXRlcjIs
IF9JSXRlcjIsIF9PSXRlcik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JSXRlcjEsIHR5cGVuYW1l
IF9JSXRlcjIsIHR5cGVuYW1lIF9PSXRlciwKICAgIHR5cGVuYW1lIF9Db21wYXJlPgogICAgX09J
dGVyCiAgICBzZXRfc3ltbWV0cmljX2RpZmZlcmVuY2UoX0lJdGVyMSwgX0lJdGVyMSwgX0lJdGVy
MiwgX0lJdGVyMiwKICAgICAgICBfT0l0ZXIsIF9Db21wYXJlKTsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0lJdGVyMSwgdHlwZW5hbWUgX0lJdGVyMiwgdHlwZW5hbWUgX09JdGVyPgogICAgX09JdGVy
CiAgICBzZXRfdW5pb24oX0lJdGVyMSwgX0lJdGVyMSwgX0lJdGVyMiwgX0lJdGVyMiwgX09JdGVy
KTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJdGVyMSwgdHlwZW5hbWUgX0lJdGVyMiwgdHlwZW5h
bWUgX09JdGVyLAogICAgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBfT0l0ZXIKICAgIHNldF91bmlv
bihfSUl0ZXIxLCBfSUl0ZXIxLCBfSUl0ZXIyLCBfSUl0ZXIyLCBfT0l0ZXIsIF9Db21wYXJlKTsK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JBSXRlcj4KICAgIHZvaWQKICAgIHNvcnQoX1JBSXRlciwg
X1JBSXRlcik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SQUl0ZXIsIHR5cGVuYW1lIF9Db21wYXJl
PgogICAgdm9pZAogICAgc29ydChfUkFJdGVyLCBfUkFJdGVyLCBfQ29tcGFyZSk7CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9SQUl0ZXI+CiAgICB2b2lkCiAgICBzdGFibGVfc29ydChfUkFJdGVyLCBf
UkFJdGVyKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JBSXRlciwgdHlwZW5hbWUgX0NvbXBhcmU+
CiAgICB2b2lkCiAgICBzdGFibGVfc29ydChfUkFJdGVyLCBfUkFJdGVyLCBfQ29tcGFyZSk7Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9JSXRlciwgdHlwZW5hbWUgX09JdGVyLCB0eXBlbmFtZSBfVW5h
cnlPcGVyYXRpb24+CiAgICBfT0l0ZXIKICAgIHRyYW5zZm9ybShfSUl0ZXIsIF9JSXRlciwgX09J
dGVyLCBfVW5hcnlPcGVyYXRpb24pOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0ZXIxLCB0eXBl
bmFtZSBfSUl0ZXIyLCB0eXBlbmFtZSBfT0l0ZXIsCiAgICB0eXBlbmFtZSBfQmluYXJ5T3BlcmF0
aW9uPgogICAgX09JdGVyCiAgICB0cmFuc2Zvcm0oX0lJdGVyMSwgX0lJdGVyMSwgX0lJdGVyMiwg
X09JdGVyLCBfQmluYXJ5T3BlcmF0aW9uKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJdGVyLCB0
eXBlbmFtZSBfT0l0ZXI+CiAgICBfT0l0ZXIKICAgIHVuaXF1ZV9jb3B5KF9JSXRlciwgX0lJdGVy
LCBfT0l0ZXIpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0ZXIsIHR5cGVuYW1lIF9PSXRlciwg
dHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4KICAgIF9PSXRlcgogICAgdW5pcXVlX2NvcHkoX0lJ
dGVyLCBfSUl0ZXIsIF9PSXRlciwgX0JpbmFyeVByZWRpY2F0ZSk7CgoKfQojIDYxICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfYWxnby5o
IiAyIDMKIyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44
LjEvYml0cy9zdGxfaGVhcC5oIiAxIDMKIyA2MSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2hlYXAuaCIgMwpuYW1lc3BhY2Ugc3RkIF9f
YXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgoKCgoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfRGlzdGFuY2U+
CiAgICBfRGlzdGFuY2UKICAgIF9faXNfaGVhcF91bnRpbChfUmFuZG9tQWNjZXNzSXRlcmF0b3Ig
X19maXJzdCwgX0Rpc3RhbmNlIF9fbikKICAgIHsKICAgICAgX0Rpc3RhbmNlIF9fcGFyZW50ID0g
MDsKICAgICAgZm9yIChfRGlzdGFuY2UgX19jaGlsZCA9IDE7IF9fY2hpbGQgPCBfX247ICsrX19j
aGlsZCkKIHsKICAgaWYgKF9fZmlyc3RbX19wYXJlbnRdIDwgX19maXJzdFtfX2NoaWxkXSkKICAg
ICByZXR1cm4gX19jaGlsZDsKICAgaWYgKChfX2NoaWxkICYgMSkgPT0gMCkKICAgICArK19fcGFy
ZW50OwogfQogICAgICByZXR1cm4gX19uOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9EaXN0YW5jZSwKICAgIHR5cGVuYW1lIF9Db21w
YXJlPgogICAgX0Rpc3RhbmNlCiAgICBfX2lzX2hlYXBfdW50aWwoX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yIF9fZmlyc3QsIF9EaXN0YW5jZSBfX24sCiAgICAgIF9Db21wYXJlIF9fY29tcCkKICAgIHsK
ICAgICAgX0Rpc3RhbmNlIF9fcGFyZW50ID0gMDsKICAgICAgZm9yIChfRGlzdGFuY2UgX19jaGls
ZCA9IDE7IF9fY2hpbGQgPCBfX247ICsrX19jaGlsZCkKIHsKICAgaWYgKF9fY29tcChfX2ZpcnN0
W19fcGFyZW50XSwgX19maXJzdFtfX2NoaWxkXSkpCiAgICAgcmV0dXJuIF9fY2hpbGQ7CiAgIGlm
ICgoX19jaGlsZCAmIDEpID09IDApCiAgICAgKytfX3BhcmVudDsKIH0KICAgICAgcmV0dXJuIF9f
bjsKICAgIH0KCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5
cGVuYW1lIF9EaXN0YW5jZT4KICAgIGlubGluZSBib29sCiAgICBfX2lzX2hlYXAoX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9EaXN0YW5jZSBfX24pCiAgICB7IHJldHVybiBzdGQ6Ol9f
aXNfaGVhcF91bnRpbChfX2ZpcnN0LCBfX24pID09IF9fbjsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlLAogICAgdHlwZW5hbWUg
X0Rpc3RhbmNlPgogICAgaW5saW5lIGJvb2wKICAgIF9faXNfaGVhcChfUmFuZG9tQWNjZXNzSXRl
cmF0b3IgX19maXJzdCwgX0NvbXBhcmUgX19jb21wLCBfRGlzdGFuY2UgX19uKQogICAgeyByZXR1
cm4gc3RkOjpfX2lzX2hlYXBfdW50aWwoX19maXJzdCwgX19uLCBfX2NvbXApID09IF9fbjsgfQoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+CiAgICBpbmxpbmUgYm9v
bAogICAgX19pc19oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IgX19sYXN0KQogICAgeyByZXR1cm4gc3RkOjpfX2lzX2hlYXAoX19maXJzdCwg
c3RkOjpkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QpKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
UmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgaW5saW5lIGJvb2wK
ICAgIF9faXNfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yIF9fbGFzdCwKICAgICAgIF9Db21wYXJlIF9fY29tcCkKICAgIHsgcmV0dXJuIHN0
ZDo6X19pc19oZWFwKF9fZmlyc3QsIF9fY29tcCwgc3RkOjpkaXN0YW5jZShfX2ZpcnN0LCBfX2xh
c3QpKTsgfQoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5
cGVuYW1lIF9EaXN0YW5jZSwgdHlwZW5hbWUgX1RwPgogICAgdm9pZAogICAgX19wdXNoX2hlYXAo
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsCiAgX0Rpc3RhbmNlIF9faG9sZUluZGV4LCBf
RGlzdGFuY2UgX190b3BJbmRleCwgX1RwIF9fdmFsdWUpCiAgICB7CiAgICAgIF9EaXN0YW5jZSBf
X3BhcmVudCA9IChfX2hvbGVJbmRleCAtIDEpIC8gMjsKICAgICAgd2hpbGUgKF9faG9sZUluZGV4
ID4gX190b3BJbmRleCAmJiAqKF9fZmlyc3QgKyBfX3BhcmVudCkgPCBfX3ZhbHVlKQogewogICAq
KF9fZmlyc3QgKyBfX2hvbGVJbmRleCkgPSBzdGQ6Om1vdmUoKihfX2ZpcnN0ICsgX19wYXJlbnQp
KTsKICAgX19ob2xlSW5kZXggPSBfX3BhcmVudDsKICAgX19wYXJlbnQgPSAoX19ob2xlSW5kZXgg
LSAxKSAvIDI7CiB9CiAgICAgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9IHN0ZDo6bW92ZShf
X3ZhbHVlKTsKICAgIH0KIyAxNTQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjguMS9iaXRzL3N0bF9oZWFwLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFu
ZG9tQWNjZXNzSXRlcmF0b3I+CiAgICBpbmxpbmUgdm9pZAogICAgcHVzaF9oZWFwKF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQogICAg
ewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRl
cmF0b3I+Ojp2YWx1ZV90eXBlCiAgIF9WYWx1ZVR5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
aXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQog
ICBfRGlzdGFuY2VUeXBlOwoKCiAgICAgCgogICAgIAogICAgICA7CiAgICAgIDsKCiAgICAgIF9W
YWx1ZVR5cGUgX192YWx1ZSA9IHN0ZDo6bW92ZSgqKF9fbGFzdCAtIDEpKTsKICAgICAgc3RkOjpf
X3B1c2hfaGVhcChfX2ZpcnN0LCBfRGlzdGFuY2VUeXBlKChfX2xhc3QgLSBfX2ZpcnN0KSAtIDEp
LAogICAgICAgICBfRGlzdGFuY2VUeXBlKDApLCBzdGQ6Om1vdmUoX192YWx1ZSkpOwogICAgfQoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9EaXN0
YW5jZSwgdHlwZW5hbWUgX1RwLAogICAgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBf
X3B1c2hfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX0Rpc3RhbmNlIF9faG9s
ZUluZGV4LAogIF9EaXN0YW5jZSBfX3RvcEluZGV4LCBfVHAgX192YWx1ZSwgX0NvbXBhcmUgX19j
b21wKQogICAgewogICAgICBfRGlzdGFuY2UgX19wYXJlbnQgPSAoX19ob2xlSW5kZXggLSAxKSAv
IDI7CiAgICAgIHdoaWxlIChfX2hvbGVJbmRleCA+IF9fdG9wSW5kZXgKICAgICAgJiYgX19jb21w
KCooX19maXJzdCArIF9fcGFyZW50KSwgX192YWx1ZSkpCiB7CiAgICooX19maXJzdCArIF9faG9s
ZUluZGV4KSA9IHN0ZDo6bW92ZSgqKF9fZmlyc3QgKyBfX3BhcmVudCkpOwogICBfX2hvbGVJbmRl
eCA9IF9fcGFyZW50OwogICBfX3BhcmVudCA9IChfX2hvbGVJbmRleCAtIDEpIC8gMjsKIH0KICAg
ICAgKihfX2ZpcnN0ICsgX19ob2xlSW5kZXgpID0gc3RkOjptb3ZlKF9fdmFsdWUpOwogICAgfQoj
IDIwNCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2Jp
dHMvc3RsX2hlYXAuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBpbmxpbmUgdm9pZAogICAgcHVzaF9oZWFwKF9SYW5k
b21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAog
ICAgICAgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJh
dG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiAgIF9WYWx1ZVR5
cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJ
dGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogICBfRGlzdGFuY2VUeXBlOwoKCiAgICAgCgogICAg
ICA7CiAgICAgIDsKCiAgICAgIF9WYWx1ZVR5cGUgX192YWx1ZSA9IHN0ZDo6bW92ZSgqKF9fbGFz
dCAtIDEpKTsKICAgICAgc3RkOjpfX3B1c2hfaGVhcChfX2ZpcnN0LCBfRGlzdGFuY2VUeXBlKChf
X2xhc3QgLSBfX2ZpcnN0KSAtIDEpLAogICAgICAgICBfRGlzdGFuY2VUeXBlKDApLCBzdGQ6Om1v
dmUoX192YWx1ZSksIF9fY29tcCk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0Rpc3RhbmNlLCB0eXBlbmFtZSBfVHA+CiAgICB2b2lk
CiAgICBfX2FkanVzdF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfRGlzdGFu
Y2UgX19ob2xlSW5kZXgsCiAgICBfRGlzdGFuY2UgX19sZW4sIF9UcCBfX3ZhbHVlKQogICAgewog
ICAgICBjb25zdCBfRGlzdGFuY2UgX190b3BJbmRleCA9IF9faG9sZUluZGV4OwogICAgICBfRGlz
dGFuY2UgX19zZWNvbmRDaGlsZCA9IF9faG9sZUluZGV4OwogICAgICB3aGlsZSAoX19zZWNvbmRD
aGlsZCA8IChfX2xlbiAtIDEpIC8gMikKIHsKICAgX19zZWNvbmRDaGlsZCA9IDIgKiAoX19zZWNv
bmRDaGlsZCArIDEpOwogICBpZiAoKihfX2ZpcnN0ICsgX19zZWNvbmRDaGlsZCkgPCAqKF9fZmly
c3QgKyAoX19zZWNvbmRDaGlsZCAtIDEpKSkKICAgICBfX3NlY29uZENoaWxkLS07CiAgICooX19m
aXJzdCArIF9faG9sZUluZGV4KSA9IHN0ZDo6bW92ZSgqKF9fZmlyc3QgKyBfX3NlY29uZENoaWxk
KSk7CiAgIF9faG9sZUluZGV4ID0gX19zZWNvbmRDaGlsZDsKIH0KICAgICAgaWYgKChfX2xlbiAm
IDEpID09IDAgJiYgX19zZWNvbmRDaGlsZCA9PSAoX19sZW4gLSAyKSAvIDIpCiB7CiAgIF9fc2Vj
b25kQ2hpbGQgPSAyICogKF9fc2Vjb25kQ2hpbGQgKyAxKTsKICAgKihfX2ZpcnN0ICsgX19ob2xl
SW5kZXgpID0gc3RkOjptb3ZlKCooX19maXJzdCArIChfX3NlY29uZENoaWxkIC0gMSkpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICBfX2hvbGVJbmRleCA9IF9fc2Vjb25k
Q2hpbGQgLSAxOwogfQogICAgICBzdGQ6Ol9fcHVzaF9oZWFwKF9fZmlyc3QsIF9faG9sZUluZGV4
LCBfX3RvcEluZGV4LAogICAgICAgICBzdGQ6Om1vdmUoX192YWx1ZSkpOwogICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+CiAgICBpbmxpbmUgdm9pZAogICAg
X19wb3BfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0
ZXJhdG9yIF9fbGFzdCwKICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19yZXN1bHQpCiAg
ICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJ
dGVyYXRvcj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
aXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQog
X0Rpc3RhbmNlVHlwZTsKCiAgICAgIF9WYWx1ZVR5cGUgX192YWx1ZSA9IHN0ZDo6bW92ZSgqX19y
ZXN1bHQpOwogICAgICAqX19yZXN1bHQgPSBzdGQ6Om1vdmUoKl9fZmlyc3QpOwogICAgICBzdGQ6
Ol9fYWRqdXN0X2hlYXAoX19maXJzdCwgX0Rpc3RhbmNlVHlwZSgwKSwKICAgIF9EaXN0YW5jZVR5
cGUoX19sYXN0IC0gX19maXJzdCksCiAgICBzdGQ6Om1vdmUoX192YWx1ZSkpOwogICAgfQojIDI3
OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMv
c3RsX2hlYXAuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4K
ICAgIGlubGluZSB2b2lkCiAgICBwb3BfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJz
dCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZQog
X1ZhbHVlVHlwZTsKCgogICAgIAoKICAgICAKICAgICAgOwogICAgICA7CiAgICAgIDsKCiAgICAg
IGlmIChfX2xhc3QgLSBfX2ZpcnN0ID4gMSkKIHsKICAgLS1fX2xhc3Q7CiAgIHN0ZDo6X19wb3Bf
aGVhcChfX2ZpcnN0LCBfX2xhc3QsIF9fbGFzdCk7CiB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0Rpc3RhbmNlLAogICAgdHlwZW5h
bWUgX1RwLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIHZvaWQKICAgIF9fYWRqdXN0X2hlYXAoX1Jh
bmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9EaXN0YW5jZSBfX2hvbGVJbmRleCwKICAgIF9E
aXN0YW5jZSBfX2xlbiwgX1RwIF9fdmFsdWUsIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAg
Y29uc3QgX0Rpc3RhbmNlIF9fdG9wSW5kZXggPSBfX2hvbGVJbmRleDsKICAgICAgX0Rpc3RhbmNl
IF9fc2Vjb25kQ2hpbGQgPSBfX2hvbGVJbmRleDsKICAgICAgd2hpbGUgKF9fc2Vjb25kQ2hpbGQg
PCAoX19sZW4gLSAxKSAvIDIpCiB7CiAgIF9fc2Vjb25kQ2hpbGQgPSAyICogKF9fc2Vjb25kQ2hp
bGQgKyAxKTsKICAgaWYgKF9fY29tcCgqKF9fZmlyc3QgKyBfX3NlY29uZENoaWxkKSwKICAgICAg
ICooX19maXJzdCArIChfX3NlY29uZENoaWxkIC0gMSkpKSkKICAgICBfX3NlY29uZENoaWxkLS07
CiAgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9IHN0ZDo6bW92ZSgqKF9fZmlyc3QgKyBfX3Nl
Y29uZENoaWxkKSk7CiAgIF9faG9sZUluZGV4ID0gX19zZWNvbmRDaGlsZDsKIH0KICAgICAgaWYg
KChfX2xlbiAmIDEpID09IDAgJiYgX19zZWNvbmRDaGlsZCA9PSAoX19sZW4gLSAyKSAvIDIpCiB7
CiAgIF9fc2Vjb25kQ2hpbGQgPSAyICogKF9fc2Vjb25kQ2hpbGQgKyAxKTsKICAgKihfX2ZpcnN0
ICsgX19ob2xlSW5kZXgpID0gc3RkOjptb3ZlKCooX19maXJzdCArIChfX3NlY29uZENoaWxkIC0g
MSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICBfX2hvbGVJbmRleCA9
IF9fc2Vjb25kQ2hpbGQgLSAxOwogfQogICAgICBzdGQ6Ol9fcHVzaF9oZWFwKF9fZmlyc3QsIF9f
aG9sZUluZGV4LCBfX3RvcEluZGV4LAogICAgICAgICBzdGQ6Om1vdmUoX192YWx1ZSksIF9fY29t
cCk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlw
ZW5hbWUgX0NvbXBhcmU+CiAgICBpbmxpbmUgdm9pZAogICAgX19wb3BfaGVhcChfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICAgICAg
ICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19yZXN1bHQsIF9Db21wYXJlIF9fY29tcCkKICAgIHsK
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVy
YXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCiBfRGlz
dGFuY2VUeXBlOwoKICAgICAgX1ZhbHVlVHlwZSBfX3ZhbHVlID0gc3RkOjptb3ZlKCpfX3Jlc3Vs
dCk7CiAgICAgICpfX3Jlc3VsdCA9IHN0ZDo6bW92ZSgqX19maXJzdCk7CiAgICAgIHN0ZDo6X19h
ZGp1c3RfaGVhcChfX2ZpcnN0LCBfRGlzdGFuY2VUeXBlKDApLAogICAgX0Rpc3RhbmNlVHlwZShf
X2xhc3QgLSBfX2ZpcnN0KSwKICAgIHN0ZDo6bW92ZShfX3ZhbHVlKSwgX19jb21wKTsKICAgIH0K
IyAzNTcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9i
aXRzL3N0bF9oZWFwLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0
b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgaW5saW5lIHZvaWQKICAgIHBvcF9oZWFwKF9SYW5k
b21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19s
YXN0LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CgogICAgIAoKICAgICAgOwogICAgICA7CiAgICAg
IDsKCiAgICAgIGlmIChfX2xhc3QgLSBfX2ZpcnN0ID4gMSkKIHsKICAgLS1fX2xhc3Q7CiAgIHN0
ZDo6X19wb3BfaGVhcChfX2ZpcnN0LCBfX2xhc3QsIF9fbGFzdCwgX19jb21wKTsKIH0KICAgIH0K
IyAzODQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9i
aXRzL3N0bF9oZWFwLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0
b3I+CiAgICB2b2lkCiAgICBtYWtlX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3Qs
IF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUKICAg
X1ZhbHVlVHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCiAgIF9EaXN0YW5jZVR5cGU7CgoKICAg
ICAKCiAgICAgCiAgICAgIDsKCiAgICAgIGlmIChfX2xhc3QgLSBfX2ZpcnN0IDwgMikKIHJldHVy
bjsKCiAgICAgIGNvbnN0IF9EaXN0YW5jZVR5cGUgX19sZW4gPSBfX2xhc3QgLSBfX2ZpcnN0Owog
ICAgICBfRGlzdGFuY2VUeXBlIF9fcGFyZW50ID0gKF9fbGVuIC0gMikgLyAyOwogICAgICB3aGls
ZSAodHJ1ZSkKIHsKICAgX1ZhbHVlVHlwZSBfX3ZhbHVlID0gc3RkOjptb3ZlKCooX19maXJzdCAr
IF9fcGFyZW50KSk7CiAgIHN0ZDo6X19hZGp1c3RfaGVhcChfX2ZpcnN0LCBfX3BhcmVudCwgX19s
ZW4sIHN0ZDo6bW92ZShfX3ZhbHVlKSk7CiAgIGlmIChfX3BhcmVudCA9PSAwKQogICAgIHJldHVy
bjsKICAgX19wYXJlbnQtLTsKIH0KICAgIH0KIyA0MjQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9oZWFwLmgiIDMKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgdm9p
ZAogICAgbWFrZV9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICAgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICB0
eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2
YWx1ZV90eXBlCiAgIF9WYWx1ZVR5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3Jf
dHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogICBfRGlzdGFu
Y2VUeXBlOwoKCiAgICAgCgogICAgICA7CgogICAgICBpZiAoX19sYXN0IC0gX19maXJzdCA8IDIp
CiByZXR1cm47CgogICAgICBjb25zdCBfRGlzdGFuY2VUeXBlIF9fbGVuID0gX19sYXN0IC0gX19m
aXJzdDsKICAgICAgX0Rpc3RhbmNlVHlwZSBfX3BhcmVudCA9IChfX2xlbiAtIDIpIC8gMjsKICAg
ICAgd2hpbGUgKHRydWUpCiB7CiAgIF9WYWx1ZVR5cGUgX192YWx1ZSA9IHN0ZDo6bW92ZSgqKF9f
Zmlyc3QgKyBfX3BhcmVudCkpOwogICBzdGQ6Ol9fYWRqdXN0X2hlYXAoX19maXJzdCwgX19wYXJl
bnQsIF9fbGVuLCBzdGQ6Om1vdmUoX192YWx1ZSksCiAgICAgICAgX19jb21wKTsKICAgaWYgKF9f
cGFyZW50ID09IDApCiAgICAgcmV0dXJuOwogICBfX3BhcmVudC0tOwogfQogICAgfQojIDQ2MyAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3Rs
X2hlYXAuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4KICAg
IHZvaWQKICAgIHNvcnRfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkKICAgIHsKCiAgICAgCgogICAgIAoKICAgICAgOwogICAg
ICA7CgogICAgICB3aGlsZSAoX19sYXN0IC0gX19maXJzdCA+IDEpCiB7CiAgIC0tX19sYXN0Owog
ICBzdGQ6Ol9fcG9wX2hlYXAoX19maXJzdCwgX19sYXN0LCBfX2xhc3QpOwogfQogICAgfQojIDQ5
MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMv
c3RsX2hlYXAuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwg
dHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBzb3J0X2hlYXAoX1JhbmRvbUFjY2Vzc0l0
ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsCiAgICAgICBfQ29t
cGFyZSBfX2NvbXApCiAgICB7CgogICAgIAoKICAgICAgOwogICAgICA7CgogICAgICB3aGlsZSAo
X19sYXN0IC0gX19maXJzdCA+IDEpCiB7CiAgIC0tX19sYXN0OwogICBzdGQ6Ol9fcG9wX2hlYXAo
X19maXJzdCwgX19sYXN0LCBfX2xhc3QsIF9fY29tcCk7CiB9CiAgICB9CiMgNTIxICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfaGVhcC5o
IiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPgogICAgaW5saW5l
IF9SYW5kb21BY2Nlc3NJdGVyYXRvcgogICAgaXNfaGVhcF91bnRpbChfUmFuZG9tQWNjZXNzSXRl
cmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkKICAgIHsKCiAgICAg
CgogICAgIAoKICAgICAgOwoKICAgICAgcmV0dXJuIF9fZmlyc3QgKyBzdGQ6Ol9faXNfaGVhcF91
bnRpbChfX2ZpcnN0LCBzdGQ6OmRpc3RhbmNlKF9fZmlyc3QsCiAgICAgICAgICAgX19sYXN0KSk7
CiAgICB9CiMgNTQ3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC44LjEvYml0cy9zdGxfaGVhcC5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGlubGluZSBfUmFuZG9tQWNjZXNzSXRl
cmF0b3IKICAgIGlzX2hlYXBfdW50aWwoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9S
YW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsCiAgICBfQ29tcGFyZSBfX2NvbXApCiAgICB7Cgog
ICAgIAoKICAgICAgOwoKICAgICAgcmV0dXJuIF9fZmlyc3QgKyBzdGQ6Ol9faXNfaGVhcF91bnRp
bChfX2ZpcnN0LCBzdGQ6OmRpc3RhbmNlKF9fZmlyc3QsCiAgICAgICAgICAgX19sYXN0KSwKICAg
ICAgICAgX19jb21wKTsKICAgIH0KIyA1NjkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9oZWFwLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+CiAgICBpbmxpbmUgYm9vbAogICAgaXNfaGVhcChfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkK
ICAgIHsgcmV0dXJuIHN0ZDo6aXNfaGVhcF91bnRpbChfX2ZpcnN0LCBfX2xhc3QpID09IF9fbGFz
dDsgfQojIDU4MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OC4xL2JpdHMvc3RsX2hlYXAuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJ
dGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBpbmxpbmUgYm9vbAogICAgaXNfaGVhcChf
UmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFz
dCwKICAgICBfQ29tcGFyZSBfX2NvbXApCiAgICB7IHJldHVybiBzdGQ6OmlzX2hlYXBfdW50aWwo
X19maXJzdCwgX19sYXN0LCBfX2NvbXApID09IF9fbGFzdDsgfQoKCgp9CiMgNjIgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgi
IDIgMwoKCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjguMS9yYW5kb20iIDEgMwojIDMyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC44LjEvcmFuZG9tIiAzCiAgICAgICAKIyAzMyAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL3JhbmRvbSIgMwoKCgoKCiMgMSAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2NtYXRoIiAxIDMKIyAz
OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2NtYXRo
IiAzCiAgICAgICAKIyA0MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOC4xL2NtYXRoIiAzCgoKCgojIDEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFu
Z29saW4tQVJNSEYvdXNyL2luY2x1ZGUvbWF0aC5oIiAxIDMgNAojIDMwICIvbW50L3N0b3JlL2No
cm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL21hdGguaCIgMyA0CmV4dGVy
biAiQyIgewoKCgojIDEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYv
dXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL2h1Z2VfdmFsLmgiIDEgMyA0CiMg
MzUgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUv
bWF0aC5oIiAyIDMgNAoKIyAxICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFS
TUhGL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy9odWdlX3ZhbGYuaCIgMSAz
IDQKIyAzNyAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5j
bHVkZS9tYXRoLmgiIDIgMyA0CiMgMSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xp
bi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvaHVnZV92YWxsLmgi
IDEgMyA0CiMgMzggIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNy
L2luY2x1ZGUvbWF0aC5oIiAyIDMgNAoKCiMgMSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1w
YW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvaW5mLmgi
IDEgMyA0CiMgNDEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNy
L2luY2x1ZGUvbWF0aC5oIiAyIDMgNAoKCiMgMSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1w
YW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvbmFuLmgi
IDEgMyA0CiMgNDQgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNy
L2luY2x1ZGUvbWF0aC5oIiAyIDMgNAoKCgojIDEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUt
cGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL21hdGhk
ZWYuaCIgMSAzIDQKIyAyOCAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1I
Ri91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvbWF0aGRlZi5oIiAzIDQKdHlw
ZWRlZiBmbG9hdCBmbG9hdF90OwoKdHlwZWRlZiBkb3VibGUgZG91YmxlX3Q7CiMgNDggIi9tbnQv
c3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvbWF0aC5oIiAy
IDMgNAojIDcxICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9p
bmNsdWRlL21hdGguaCIgMyA0CiMgMSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xp
bi1BUk1IRi91c3IvaW5jbHVkZS9hcm0tbGludXgtZ251ZWFiaWhmL2JpdHMvbWF0aGNhbGxzLmgi
IDEgMyA0CiMgNTMgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNy
L2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL21hdGhjYWxscy5oIiAzIDQKCgpleHRl
cm4gZG91YmxlIGFjb3MgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fYWNv
cyAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIGFzaW4gKGRvdWJsZSBfX3gp
IHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fYXNpbiAoZG91YmxlIF9feCkgdGhyb3cgKCk7Cgpl
eHRlcm4gZG91YmxlIGF0YW4gKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9f
YXRhbiAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIGF0YW4yIChkb3VibGUg
X195LCBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2F0YW4yIChkb3VibGUg
X195LCBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGNvcyAoZG91YmxlIF9f
eCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19jb3MgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoK
ZXh0ZXJuIGRvdWJsZSBzaW4gKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9f
c2luIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBkb3VibGUgdGFuIChkb3VibGUgX194
KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3RhbiAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoK
CgpleHRlcm4gZG91YmxlIGNvc2ggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91Ymxl
IF9fY29zaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIHNpbmggKGRvdWJs
ZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fc2luaCAoZG91YmxlIF9feCkgdGhyb3cg
KCk7CgpleHRlcm4gZG91YmxlIHRhbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91
YmxlIF9fdGFuaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCBzaW5jb3Mg
KGRvdWJsZSBfX3gsIGRvdWJsZSAqX19zaW54LCBkb3VibGUgKl9fY29zeCkgdGhyb3cgKCk7IGV4
dGVybiB2b2lkIF9fc2luY29zIChkb3VibGUgX194LCBkb3VibGUgKl9fc2lueCwgZG91YmxlICpf
X2Nvc3gpIHRocm93ICgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOwoKCgoKCmV4dGVybiBkb3VibGUgYWNvc2ggKGRvdWJsZSBfX3gp
IHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fYWNvc2ggKGRvdWJsZSBfX3gpIHRocm93ICgpOwoK
ZXh0ZXJuIGRvdWJsZSBhc2luaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUg
X19hc2luaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIGF0YW5oIChkb3Vi
bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2F0YW5oIChkb3VibGUgX194KSB0aHJv
dyAoKTsKCgoKCgoKCmV4dGVybiBkb3VibGUgZXhwIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0
ZXJuIGRvdWJsZSBfX2V4cCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBm
cmV4cCAoZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJs
ZSBfX2ZyZXhwIChkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQpIHRocm93ICgpOwoKCmV4dGVy
biBkb3VibGUgbGRleHAgKGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSB0aHJvdyAoKTsgZXh0
ZXJuIGRvdWJsZSBfX2xkZXhwIChkb3VibGUgX194LCBpbnQgX19leHBvbmVudCkgdGhyb3cgKCk7
CgoKZXh0ZXJuIGRvdWJsZSBsb2cgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91Ymxl
IF9fbG9nIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGxvZzEwIChkb3Vi
bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2xvZzEwIChkb3VibGUgX194KSB0aHJv
dyAoKTsKCgpleHRlcm4gZG91YmxlIG1vZGYgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19pcHRyKSB0
aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX21vZGYgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19pcHRy
KSB0aHJvdyAoKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCgoKCmV4
dGVybiBkb3VibGUgZXhwMTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9f
ZXhwMTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBwb3cxMCAoZG91Ymxl
IF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19wb3cxMCAoZG91YmxlIF9feCkgdGhyb3cg
KCk7CgoKCgoKZXh0ZXJuIGRvdWJsZSBleHBtMSAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVy
biBkb3VibGUgX19leHBtMSAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBs
b2cxcCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19sb2cxcCAoZG91Ymxl
IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBsb2diIChkb3VibGUgX194KSB0aHJvdyAo
KTsgZXh0ZXJuIGRvdWJsZSBfX2xvZ2IgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCgpleHRl
cm4gZG91YmxlIGV4cDIgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZXhw
MiAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBsb2cyIChkb3VibGUgX194
KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2xvZzIgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoK
CgoKCgoKCmV4dGVybiBkb3VibGUgcG93IChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAo
KTsgZXh0ZXJuIGRvdWJsZSBfX3BvdyAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7
CgoKZXh0ZXJuIGRvdWJsZSBzcXJ0IChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJs
ZSBfX3NxcnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCmV4dGVybiBkb3VibGUgaHlwb3Qg
KGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9faHlwb3Qg
KGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91YmxlIGNi
cnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fY2JydCAoZG91YmxlIF9f
eCkgdGhyb3cgKCk7CgoKCgoKCgoKZXh0ZXJuIGRvdWJsZSBjZWlsIChkb3VibGUgX194KSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19jZWlsIChk
b3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJu
IGRvdWJsZSBmYWJzIChkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7IGV4dGVybiBkb3VibGUgX19mYWJzIChkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJsZSBmbG9vciAoZG91YmxlIF9feCkg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fZmxv
b3IgKGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpl
eHRlcm4gZG91YmxlIGZtb2QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRl
cm4gZG91YmxlIF9fZm1vZCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCgpl
eHRlcm4gaW50IF9faXNpbmYgKGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZSAoZG91YmxlIF9fdmFsdWUpIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4gaW50IGlzaW5m
IChkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
CmV4dGVybiBpbnQgZmluaXRlIChkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgZHJlbSAoZG91YmxlIF9feCwgZG91Ymxl
IF9feSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19kcmVtIChkb3VibGUgX194LCBkb3VibGUg
X195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBzaWduaWZpY2FuZCAoZG91YmxlIF9feCkg
dGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19zaWduaWZpY2FuZCAoZG91YmxlIF9feCkgdGhyb3cg
KCk7CgoKCgoKZXh0ZXJuIGRvdWJsZSBjb3B5c2lnbiAoZG91YmxlIF9feCwgZG91YmxlIF9feSkg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fY29w
eXNpZ24gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBuYW4gKF9fY29uc3QgY2hhciAqX190YWdi
KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19u
YW4gKF9fY29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKCgoKZXh0ZXJuIGludCBfX2lzbmFuIChkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gaW50IGlzbmFuIChkb3VibGUg
X192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBk
b3VibGUgajAgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19qMCAoZG91YmxlKSB0
aHJvdyAoKTsKZXh0ZXJuIGRvdWJsZSBqMSAoZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJs
ZSBfX2oxIChkb3VibGUpIHRocm93ICgpOwpleHRlcm4gZG91YmxlIGpuIChpbnQsIGRvdWJsZSkg
dGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19qbiAoaW50LCBkb3VibGUpIHRocm93ICgpOwpleHRl
cm4gZG91YmxlIHkwIChkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9feTAgKGRvdWJs
ZSkgdGhyb3cgKCk7CmV4dGVybiBkb3VibGUgeTEgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBk
b3VibGUgX195MSAoZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGRvdWJsZSB5biAoaW50LCBkb3Vi
bGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9feW4gKGludCwgZG91YmxlKSB0aHJvdyAoKTsK
CgoKCgoKZXh0ZXJuIGRvdWJsZSBlcmYgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUg
X19lcmYgKGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBkb3VibGUgZXJmYyAoZG91YmxlKSB0aHJv
dyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2VyZmMgKGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBkb3Vi
bGUgbGdhbW1hIChkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fbGdhbW1hIChkb3Vi
bGUpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91YmxlIHRnYW1tYSAoZG91YmxlKSB0aHJvdyAo
KTsgZXh0ZXJuIGRvdWJsZSBfX3RnYW1tYSAoZG91YmxlKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4g
ZG91YmxlIGdhbW1hIChkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZ2FtbWEgKGRv
dWJsZSkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBkb3VibGUgbGdhbW1hX3IgKGRvdWJsZSwgaW50
ICpfX3NpZ25nYW1wKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2xnYW1tYV9yIChkb3VibGUs
IGludCAqX19zaWduZ2FtcCkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gZG91YmxlIHJpbnQgKGRv
dWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fcmludCAoZG91YmxlIF9feCkgdGhy
b3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBuZXh0YWZ0ZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kp
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX25l
eHRhZnRlciAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKZXh0ZXJuIGRvdWJsZSBuZXh0dG93YXJkIChkb3VibGUgX194LCBsb25n
IGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJu
IGRvdWJsZSBfX25leHR0b3dhcmQgKGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gZG91YmxlIHJlbWFpbmRl
ciAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19yZW1h
aW5kZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4gZG91Ymxl
IHNjYWxibiAoZG91YmxlIF9feCwgaW50IF9fbikgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19z
Y2FsYm4gKGRvdWJsZSBfX3gsIGludCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGlsb2di
IChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGludCBfX2lsb2diIChkb3VibGUgX194KSB0
aHJvdyAoKTsKCgoKCmV4dGVybiBkb3VibGUgc2NhbGJsbiAoZG91YmxlIF9feCwgbG9uZyBpbnQg
X19uKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxibG4gKGRvdWJsZSBfX3gsIGxvbmcg
aW50IF9fbikgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgbmVhcmJ5aW50IChkb3VibGUgX194
KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX25lYXJieWludCAoZG91YmxlIF9feCkgdGhyb3cg
KCk7CgoKCmV4dGVybiBkb3VibGUgcm91bmQgKGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX3JvdW5kIChkb3VibGUgX194KSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBkb3VibGUgdHJ1
bmMgKGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0
ZXJuIGRvdWJsZSBfX3RydW5jIChkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKCgpleHRlcm4gZG91YmxlIHJlbXF1byAoZG91YmxlIF9feCwgZG91Ymxl
IF9feSwgaW50ICpfX3F1bykgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19yZW1xdW8gKGRvdWJs
ZSBfX3gsIGRvdWJsZSBfX3ksIGludCAqX19xdW8pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9u
ZyBpbnQgbHJpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBpbnQgX19scmlu
dCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscmludCAoZG91
YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyaW50IChkb3VibGUg
X194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgaW50IGxyb3VuZCAoZG91YmxlIF9feCkgdGhy
b3cgKCk7IGV4dGVybiBsb25nIGludCBfX2xyb3VuZCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CmV4
dGVybiBsb25nIGxvbmcgaW50IGxscm91bmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4g
bG9uZyBsb25nIGludCBfX2xscm91bmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4g
ZG91YmxlIGZkaW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gZG91
YmxlIF9fZmRpbSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRv
dWJsZSBmbWF4IChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJs
ZSBfX2ZtYXggKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBkb3Vi
bGUgZm1pbiAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUg
X19mbWluIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBf
X2ZwY2xhc3NpZnkgKGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKQogICAgIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fc2lnbmJpdCAoZG91YmxlIF9fdmFsdWUpIHRo
cm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gZG91Ymxl
IGZtYSAoZG91YmxlIF9feCwgZG91YmxlIF9feSwgZG91YmxlIF9feikgdGhyb3cgKCk7IGV4dGVy
biBkb3VibGUgX19mbWEgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3ksIGRvdWJsZSBfX3opIHRocm93
ICgpOwoKCgoKCgoKCmV4dGVybiBkb3VibGUgc2NhbGIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX24p
IHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fc2NhbGIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX24p
IHRocm93ICgpOwojIDcyICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhG
L3Vzci9pbmNsdWRlL21hdGguaCIgMiAzIDQKIyA5NCAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50
dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9tYXRoLmgiIDMgNAojIDEgIi9tbnQvc3RvcmUv
Y2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVh
YmloZi9iaXRzL21hdGhjYWxscy5oIiAxIDMgNAojIDUzICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1
bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy9t
YXRoY2FsbHMuaCIgMyA0CgoKZXh0ZXJuIGZsb2F0IGFjb3NmIChmbG9hdCBfX3gpIHRocm93ICgp
OyBleHRlcm4gZmxvYXQgX19hY29zZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9h
dCBhc2luZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fYXNpbmYgKGZsb2F0
IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZmxvYXQgYXRhbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7
IGV4dGVybiBmbG9hdCBfX2F0YW5mIChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0
IGF0YW4yZiAoZmxvYXQgX195LCBmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19h
dGFuMmYgKGZsb2F0IF9feSwgZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgY29z
ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fY29zZiAoZmxvYXQgX194KSB0
aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBzaW5mIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4g
ZmxvYXQgX19zaW5mIChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IHRhbmYgKGZs
b2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3RhbmYgKGZsb2F0IF9feCkgdGhyb3cg
KCk7CgoKCgpleHRlcm4gZmxvYXQgY29zaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBm
bG9hdCBfX2Nvc2hmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IHNpbmhmIChm
bG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19zaW5oZiAoZmxvYXQgX194KSB0aHJv
dyAoKTsKCmV4dGVybiBmbG9hdCB0YW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZs
b2F0IF9fdGFuaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCBzaW5jb3Nm
IChmbG9hdCBfX3gsIGZsb2F0ICpfX3NpbngsIGZsb2F0ICpfX2Nvc3gpIHRocm93ICgpOyBleHRl
cm4gdm9pZCBfX3NpbmNvc2YgKGZsb2F0IF9feCwgZmxvYXQgKl9fc2lueCwgZmxvYXQgKl9fY29z
eCkgdGhyb3cgKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CgoKCgoKZXh0ZXJuIGZsb2F0IGFjb3NoZiAoZmxvYXQgX194KSB0aHJv
dyAoKTsgZXh0ZXJuIGZsb2F0IF9fYWNvc2hmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJu
IGZsb2F0IGFzaW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fYXNpbmhm
IChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IGF0YW5oZiAoZmxvYXQgX194KSB0
aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fYXRhbmhmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgoK
CgoKZXh0ZXJuIGZsb2F0IGV4cGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBf
X2V4cGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGZyZXhwZiAoZmxvYXQg
X194LCBpbnQgKl9fZXhwb25lbnQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19mcmV4cGYgKGZs
b2F0IF9feCwgaW50ICpfX2V4cG9uZW50KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgbGRleHBm
IChmbG9hdCBfX3gsIGludCBfX2V4cG9uZW50KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbGRl
eHBmIChmbG9hdCBfX3gsIGludCBfX2V4cG9uZW50KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQg
bG9nZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbG9nZiAoZmxvYXQgX194
KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgbG9nMTBmIChmbG9hdCBfX3gpIHRocm93ICgpOyBl
eHRlcm4gZmxvYXQgX19sb2cxMGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0
IG1vZGZmIChmbG9hdCBfX3gsIGZsb2F0ICpfX2lwdHIpIHRocm93ICgpOyBleHRlcm4gZmxvYXQg
X19tb2RmZiAoZmxvYXQgX194LCBmbG9hdCAqX19pcHRyKSB0aHJvdyAoKQogICAgIF9fYXR0cmli
dXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCgoKCmV4dGVybiBmbG9hdCBleHAxMGYgKGZsb2F0
IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2V4cDEwZiAoZmxvYXQgX194KSB0aHJvdyAo
KTsKCmV4dGVybiBmbG9hdCBwb3cxMGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9h
dCBfX3BvdzEwZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gZmxvYXQgZXhwbTFm
IChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19leHBtMWYgKGZsb2F0IF9feCkg
dGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGxvZzFwZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0
ZXJuIGZsb2F0IF9fbG9nMXBmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBs
b2diZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbG9nYmYgKGZsb2F0IF9f
eCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBmbG9hdCBleHAyZiAoZmxvYXQgX194KSB0aHJvdyAo
KTsgZXh0ZXJuIGZsb2F0IF9fZXhwMmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZs
b2F0IGxvZzJmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19sb2cyZiAoZmxv
YXQgX194KSB0aHJvdyAoKTsKCgoKCgoKCgpleHRlcm4gZmxvYXQgcG93ZiAoZmxvYXQgX194LCBm
bG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19wb3dmIChmbG9hdCBfX3gsIGZsb2F0
IF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IHNxcnRmIChmbG9hdCBfX3gpIHRocm93ICgp
OyBleHRlcm4gZmxvYXQgX19zcXJ0ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4g
ZmxvYXQgaHlwb3RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7IGV4dGVybiBmbG9h
dCBfX2h5cG90ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCgoKCgpleHRlcm4g
ZmxvYXQgY2JydGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2NicnRmIChm
bG9hdCBfX3gpIHRocm93ICgpOwoKCgoKCgoKCmV4dGVybiBmbG9hdCBjZWlsZiAoZmxvYXQgX194
KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2Nl
aWxmIChmbG9hdCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpl
eHRlcm4gZmxvYXQgZmFic2YgKGZsb2F0IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19mYWJzZiAoZmxvYXQgX194KSB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGZsb29yZiAoZmxvYXQgX194
KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2Zs
b29yZiAoZmxvYXQgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK
ZXh0ZXJuIGZsb2F0IGZtb2RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7IGV4dGVy
biBmbG9hdCBfX2Ztb2RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7CgoKCgpleHRl
cm4gaW50IF9faXNpbmZmIChmbG9hdCBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZWYgKGZsb2F0IF9fdmFsdWUpIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4gaW50IGlzaW5mZiAo
ZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4
dGVybiBpbnQgZmluaXRlZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBkcmVtZiAoZmxvYXQgX194LCBmbG9hdCBfX3kp
IHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19kcmVtZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRo
cm93ICgpOwoKCgpleHRlcm4gZmxvYXQgc2lnbmlmaWNhbmRmIChmbG9hdCBfX3gpIHRocm93ICgp
OyBleHRlcm4gZmxvYXQgX19zaWduaWZpY2FuZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCgoK
ZXh0ZXJuIGZsb2F0IGNvcHlzaWduZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fY29weXNpZ25mIChmbG9h
dCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
CgoKCgpleHRlcm4gZmxvYXQgbmFuZiAoX19jb25zdCBjaGFyICpfX3RhZ2IpIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fbmFuZiAoX19jb25zdCBj
aGFyICpfX3RhZ2IpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpl
eHRlcm4gaW50IF9faXNuYW5mIChmbG9hdCBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBpbnQgaXNuYW5mIChmbG9hdCBfX3ZhbHVlKSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGowZiAoZmxv
YXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19qMGYgKGZsb2F0KSB0aHJvdyAoKTsKZXh0ZXJu
IGZsb2F0IGoxZiAoZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19qMWYgKGZsb2F0KSB0
aHJvdyAoKTsKZXh0ZXJuIGZsb2F0IGpuZiAoaW50LCBmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBm
bG9hdCBfX2puZiAoaW50LCBmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBmbG9hdCB5MGYgKGZsb2F0
KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9feTBmIChmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBm
bG9hdCB5MWYgKGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9feTFmIChmbG9hdCkgdGhy
b3cgKCk7CmV4dGVybiBmbG9hdCB5bmYgKGludCwgZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxv
YXQgX195bmYgKGludCwgZmxvYXQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZmxvYXQgZXJmZiAo
ZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19lcmZmIChmbG9hdCkgdGhyb3cgKCk7CmV4
dGVybiBmbG9hdCBlcmZjZiAoZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19lcmZjZiAo
ZmxvYXQpIHRocm93ICgpOwpleHRlcm4gZmxvYXQgbGdhbW1hZiAoZmxvYXQpIHRocm93ICgpOyBl
eHRlcm4gZmxvYXQgX19sZ2FtbWFmIChmbG9hdCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBmbG9h
dCB0Z2FtbWFmIChmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3RnYW1tYWYgKGZsb2F0
KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gZmxvYXQgZ2FtbWFmIChmbG9hdCkgdGhyb3cgKCk7IGV4
dGVybiBmbG9hdCBfX2dhbW1hZiAoZmxvYXQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZmxvYXQg
bGdhbW1hZl9yIChmbG9hdCwgaW50ICpfX3NpZ25nYW1wKSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0
IF9fbGdhbW1hZl9yIChmbG9hdCwgaW50ICpfX3NpZ25nYW1wKSB0aHJvdyAoKTsKCgoKCgoKCmV4
dGVybiBmbG9hdCByaW50ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fcmlu
dGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IG5leHRhZnRlcmYgKGZsb2F0
IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4
dGVybiBmbG9hdCBfX25leHRhZnRlcmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgpleHRlcm4gZmxvYXQgbmV4dHRvd2FyZGYgKGZs
b2F0IF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7IGV4dGVybiBmbG9hdCBfX25leHR0b3dhcmRmIChmbG9hdCBfX3gsIGxvbmcgZG91Ymxl
IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gZmxv
YXQgcmVtYWluZGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4gZmxv
YXQgX19yZW1haW5kZXJmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7CgoKCmV4dGVy
biBmbG9hdCBzY2FsYm5mIChmbG9hdCBfX3gsIGludCBfX24pIHRocm93ICgpOyBleHRlcm4gZmxv
YXQgX19zY2FsYm5mIChmbG9hdCBfX3gsIGludCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gaW50
IGlsb2diZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGludCBfX2lsb2diZiAoZmxvYXQg
X194KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBmbG9hdCBzY2FsYmxuZiAoZmxvYXQgX194LCBsb25n
IGludCBfX24pIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19zY2FsYmxuZiAoZmxvYXQgX194LCBs
b25nIGludCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgbmVhcmJ5aW50ZiAoZmxvYXQg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbmVhcmJ5aW50ZiAoZmxvYXQgX194KSB0aHJv
dyAoKTsKCgoKZXh0ZXJuIGZsb2F0IHJvdW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX3JvdW5kZiAoZmxvYXQgX194KSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBmbG9hdCB0cnVu
Y2YgKGZsb2F0IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRl
cm4gZmxvYXQgX190cnVuY2YgKGZsb2F0IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCgoKZXh0ZXJuIGZsb2F0IHJlbXF1b2YgKGZsb2F0IF9feCwgZmxvYXQgX195
LCBpbnQgKl9fcXVvKSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fcmVtcXVvZiAoZmxvYXQgX194
LCBmbG9hdCBfX3ksIGludCAqX19xdW8pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBpbnQg
bHJpbnRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBpbnQgX19scmludGYgKGZs
b2F0IF9feCkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscmludGYgKGZsb2F0IF9f
eCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyaW50ZiAoZmxvYXQgX194KSB0
aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgaW50IGxyb3VuZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7
IGV4dGVybiBsb25nIGludCBfX2xyb3VuZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CmV4dGVybiBs
b25nIGxvbmcgaW50IGxscm91bmRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBs
b25nIGludCBfX2xscm91bmRmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQg
ZmRpbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZmRp
bWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgZm1heGYg
KGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZm1heGYgKGZs
b2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgZm1pbmYgKGZsb2F0
IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZm1pbmYgKGZsb2F0IF9f
eCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBfX2ZwY2xhc3NpZnlmIChmbG9h
dCBfX3ZhbHVlKSB0aHJvdyAoKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpl
eHRlcm4gaW50IF9fc2lnbmJpdGYgKGZsb2F0IF9fdmFsdWUpIHRocm93ICgpCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gZmxvYXQgZm1hZiAoZmxvYXQgX194LCBm
bG9hdCBfX3ksIGZsb2F0IF9feikgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2ZtYWYgKGZsb2F0
IF9feCwgZmxvYXQgX195LCBmbG9hdCBfX3opIHRocm93ICgpOwoKCgoKCgoKCmV4dGVybiBmbG9h
dCBzY2FsYmYgKGZsb2F0IF9feCwgZmxvYXQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9f
c2NhbGJmIChmbG9hdCBfX3gsIGZsb2F0IF9fbikgdGhyb3cgKCk7CiMgOTUgIi9tbnQvc3RvcmUv
Y2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMgNAoj
IDE0NiAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVk
ZS9tYXRoLmgiIDMgNAojIDEgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJN
SEYvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdudWVhYmloZi9iaXRzL21hdGhjYWxscy5oIiAxIDMg
NAojIDUzICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNs
dWRlL2FybS1saW51eC1nbnVlYWJpaGYvYml0cy9tYXRoY2FsbHMuaCIgMyA0CgoKZXh0ZXJuIGxv
bmcgZG91YmxlIGFjb3NsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXNtX18gKCIiICJh
Y29zIik7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Fjb3NsIChsb25nIGRvdWJsZSBfX3gpIHRocm93
ICgpIF9fYXNtX18gKCIiICJfX2Fjb3MiKTsKCmV4dGVybiBsb25nIGRvdWJsZSBhc2lubCAobG9u
ZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2FzbV9fICgiIiAiYXNpbiIpOyBleHRlcm4gbG9uZyBk
b3VibGUgX19hc2lubCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2FzbV9fICgiIiAiX19h
c2luIik7CgpleHRlcm4gbG9uZyBkb3VibGUgYXRhbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cg
KCkgX19hc21fXyAoIiIgImF0YW4iKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXRhbmwgKGxvbmcg
ZG91YmxlIF9feCkgdGhyb3cgKCkgX19hc21fXyAoIiIgIl9fYXRhbiIpOwoKZXh0ZXJuIGxvbmcg
ZG91YmxlIGF0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
IF9fYXNtX18gKCIiICJhdGFuMiIpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hdGFuMmwgKGxvbmcg
ZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2FzbV9fICgiIiAiX19hdGFu
MiIpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBjb3NsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
IF9fYXNtX18gKCIiICJjb3MiKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29zbCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKSBfX2FzbV9fICgiIiAiX19jb3MiKTsKCmV4dGVybiBsb25nIGRvdWJs
ZSBzaW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXNtX18gKCIiICJzaW4iKTsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fc2lubCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2FzbV9f
ICgiIiAiX19zaW4iKTsKCmV4dGVybiBsb25nIGRvdWJsZSB0YW5sIChsb25nIGRvdWJsZSBfX3gp
IHRocm93ICgpIF9fYXNtX18gKCIiICJ0YW4iKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fdGFubCAo
bG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2FzbV9fICgiIiAiX190YW4iKTsKCgoKCmV4dGVy
biBsb25nIGRvdWJsZSBjb3NobCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2FzbV9fICgi
IiAiY29zaCIpOyBleHRlcm4gbG9uZyBkb3VibGUgX19jb3NobCAobG9uZyBkb3VibGUgX194KSB0
aHJvdyAoKSBfX2FzbV9fICgiIiAiX19jb3NoIik7CgpleHRlcm4gbG9uZyBkb3VibGUgc2luaGwg
KGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hc21fXyAoIiIgInNpbmgiKTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fc2luaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hc21fXyAoIiIg
Il9fc2luaCIpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHRhbmhsIChsb25nIGRvdWJsZSBfX3gpIHRo
cm93ICgpIF9fYXNtX18gKCIiICJ0YW5oIik7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RhbmhsIChs
b25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXNtX18gKCIiICJfX3RhbmgiKTsKCgoKCmV4dGVy
biB2b2lkIHNpbmNvc2wgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgKl9fc2lueCwgbG9u
ZyBkb3VibGUgKl9fY29zeCkgdGhyb3cgKCkgX19hc21fXyAoIiIgInNpbmNvcyIpOyBleHRlcm4g
dm9pZCBfX3NpbmNvc2wgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgKl9fc2lueCwgbG9u
ZyBkb3VibGUgKl9fY29zeCkgdGhyb3cgKCkgX19hc21fXyAoIiIgIl9fc2luY29zIikKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoK
CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGFjb3NobCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSBf
X2FzbV9fICgiIiAiYWNvc2giKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYWNvc2hsIChsb25nIGRv
dWJsZSBfX3gpIHRocm93ICgpIF9fYXNtX18gKCIiICJfX2Fjb3NoIik7CgpleHRlcm4gbG9uZyBk
b3VibGUgYXNpbmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXNtX18gKCIiICJhc2lu
aCIpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hc2luaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cg
KCkgX19hc21fXyAoIiIgIl9fYXNpbmgiKTsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFuaGwgKGxv
bmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hc21fXyAoIiIgImF0YW5oIik7IGV4dGVybiBsb25n
IGRvdWJsZSBfX2F0YW5obCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2FzbV9fICgiIiAi
X19hdGFuaCIpOwoKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4cGwgKGxvbmcgZG91YmxlIF9f
eCkgdGhyb3cgKCkgX19hc21fXyAoIiIgImV4cCIpOyBleHRlcm4gbG9uZyBkb3VibGUgX19leHBs
IChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXNtX18gKCIiICJfX2V4cCIpOwoKCmV4dGVy
biBsb25nIGRvdWJsZSBmcmV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KSB0
aHJvdyAoKSBfX2FzbV9fICgiIiAiZnJleHAiKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZnJleHBs
IChsb25nIGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgdGhyb3cgKCkgX19hc21fXyAoIiIg
Il9fZnJleHAiKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbGRleHBsIChsb25nIGRvdWJsZSBfX3gs
IGludCBfX2V4cG9uZW50KSB0aHJvdyAoKSBfX2FzbV9fICgiIiAibGRleHAiKTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fbGRleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSB0aHJv
dyAoKSBfX2FzbV9fICgiIiAiX19sZGV4cCIpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2dsIChs
b25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXNtX18gKCIiICJsb2ciKTsgZXh0ZXJuIGxvbmcg
ZG91YmxlIF9fbG9nbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2FzbV9fICgiIiAiX19s
b2ciKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nMTBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93
ICgpIF9fYXNtX18gKCIiICJsb2cxMCIpOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2cxMGwgKGxv
bmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hc21fXyAoIiIgIl9fbG9nMTAiKTsKCgpleHRlcm4g
bG9uZyBkb3VibGUgbW9kZmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgKl9faXB0cikg
dGhyb3cgKCkgX19hc21fXyAoIiIgIm1vZGYiKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbW9kZmwg
KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgKl9faXB0cikgdGhyb3cgKCkgX19hc21fXyAo
IiIgIl9fbW9kZiIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwoKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGV4cDEwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2Fz
bV9fICgiIiAiZXhwMTAiKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhwMTBsIChsb25nIGRvdWJs
ZSBfX3gpIHRocm93ICgpIF9fYXNtX18gKCIiICJfX2V4cDEwIik7CgpleHRlcm4gbG9uZyBkb3Vi
bGUgcG93MTBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXNtX18gKCIiICJwb3cxMCIp
OyBleHRlcm4gbG9uZyBkb3VibGUgX19wb3cxMGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkg
X19hc21fXyAoIiIgIl9fcG93MTAiKTsKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXhwbTFsIChs
b25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXNtX18gKCIiICJleHBtMSIpOyBleHRlcm4gbG9u
ZyBkb3VibGUgX19leHBtMWwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hc21fXyAoIiIg
Il9fZXhwbTEiKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nMXBsIChsb25nIGRvdWJsZSBfX3gp
IHRocm93ICgpIF9fYXNtX18gKCIiICJsb2cxcCIpOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2cx
cGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hc21fXyAoIiIgIl9fbG9nMXAiKTsKCgpl
eHRlcm4gbG9uZyBkb3VibGUgbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hc21f
XyAoIiIgImxvZ2IiKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nYmwgKGxvbmcgZG91YmxlIF9f
eCkgdGhyb3cgKCkgX19hc21fXyAoIiIgIl9fbG9nYiIpOwoKCgoKCgpleHRlcm4gbG9uZyBkb3Vi
bGUgZXhwMmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hc21fXyAoIiIgImV4cDIiKTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhwMmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19h
c21fXyAoIiIgIl9fZXhwMiIpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2cybCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKSBfX2FzbV9fICgiIiAibG9nMiIpOyBleHRlcm4gbG9uZyBkb3VibGUg
X19sb2cybCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2FzbV9fICgiIiAiX19sb2cyIik7
CgoKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHBvd2wgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBk
b3VibGUgX195KSB0aHJvdyAoKSBfX2FzbV9fICgiIiAicG93Iik7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX3Bvd2wgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2Fz
bV9fICgiIiAiX19wb3ciKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgc3FydGwgKGxvbmcgZG91Ymxl
IF9feCkgdGhyb3cgKCkgX19hc21fXyAoIiIgInNxcnQiKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
c3FydGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hc21fXyAoIiIgIl9fc3FydCIpOwoK
CgoKCmV4dGVybiBsb25nIGRvdWJsZSBoeXBvdGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3Vi
bGUgX195KSB0aHJvdyAoKSBfX2FzbV9fICgiIiAiaHlwb3QiKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9faHlwb3RsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19h
c21fXyAoIiIgIl9faHlwb3QiKTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNicnRsIChsb25n
IGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXNtX18gKCIiICJjYnJ0Iik7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2NicnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXNtX18gKCIiICJfX2Ni
cnQiKTsKCgoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgY2VpbGwgKGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCkgX19hc21fXyAoIiIgImNlaWwiKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2NlaWxsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9f
YXNtX18gKCIiICJfX2NlaWwiKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJu
IGxvbmcgZG91YmxlIGZhYnNsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXNtX18gKCIi
ICJmYWJzIikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUg
X19mYWJzbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2FzbV9fICgiIiAiX19mYWJzIikg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbG9vcmwg
KGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hc21fXyAoIiIgImZsb29yIikgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbG9vcmwgKGxvbmcgZG91
YmxlIF9feCkgdGhyb3cgKCkgX19hc21fXyAoIiIgIl9fZmxvb3IiKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZtb2RsIChsb25nIGRvdWJsZSBfX3gs
IGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hc21fXyAoIiIgImZtb2QiKTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJv
dyAoKSBfX2FzbV9fICgiIiAiX19mbW9kIik7CgoKCgpleHRlcm4gaW50IF9faXNpbmZsIChsb25n
IGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2FzbV9fICgiIiAiX19pc2luZiIpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fZmluaXRlbCAobG9uZyBkb3VibGUg
X192YWx1ZSkgdGhyb3cgKCkgX19hc21fXyAoIiIgIl9fZmluaXRlIikgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCgoKCmV4dGVybiBpbnQgaXNpbmZsIChsb25nIGRvdWJsZSBfX3ZhbHVl
KSB0aHJvdyAoKSBfX2FzbV9fICgiIiAiaXNpbmYiKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKZXh0ZXJuIGludCBmaW5pdGVsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBf
X2FzbV9fICgiIiAiZmluaXRlIikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVy
biBsb25nIGRvdWJsZSBkcmVtbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRo
cm93ICgpIF9fYXNtX18gKCIiICJkcmVtIik7IGV4dGVybiBsb25nIGRvdWJsZSBfX2RyZW1sIChs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hc21fXyAoIiIgIl9f
ZHJlbSIpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgc2lnbmlmaWNhbmRsIChsb25nIGRvdWJsZSBf
X3gpIHRocm93ICgpIF9fYXNtX18gKCIiICJzaWduaWZpY2FuZCIpOyBleHRlcm4gbG9uZyBkb3Vi
bGUgX19zaWduaWZpY2FuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hc21fXyAoIiIg
Il9fc2lnbmlmaWNhbmQiKTsKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgY29weXNpZ25sIChsb25n
IGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hc21fXyAoIiIgImNvcHlz
aWduIikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19j
b3B5c2lnbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2Fz
bV9fICgiIiAiX19jb3B5c2lnbiIpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIG5hbmwgKF9fY29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAoKSBf
X2FzbV9fICgiIiAibmFuIikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9u
ZyBkb3VibGUgX19uYW5sIChfX2NvbnN0IGNoYXIgKl9fdGFnYikgdGhyb3cgKCkgX19hc21fXyAo
IiIgIl9fbmFuIikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCmV4dGVybiBpbnQg
X19pc25hbmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXNtX18gKCIiICJfX2lz
bmFuIikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gaW50IGlzbmFubCAo
bG9uZyBkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hc21fXyAoIiIgImlzbmFuIikgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBqMGwgKGxvbmcgZG91
YmxlKSB0aHJvdyAoKSBfX2FzbV9fICgiIiAiajAiKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fajBs
IChsb25nIGRvdWJsZSkgdGhyb3cgKCkgX19hc21fXyAoIiIgIl9fajAiKTsKZXh0ZXJuIGxvbmcg
ZG91YmxlIGoxbCAobG9uZyBkb3VibGUpIHRocm93ICgpIF9fYXNtX18gKCIiICJqMSIpOyBleHRl
cm4gbG9uZyBkb3VibGUgX19qMWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKSBfX2FzbV9fICgiIiAi
X19qMSIpOwpleHRlcm4gbG9uZyBkb3VibGUgam5sIChpbnQsIGxvbmcgZG91YmxlKSB0aHJvdyAo
KSBfX2FzbV9fICgiIiAiam4iKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fam5sIChpbnQsIGxvbmcg
ZG91YmxlKSB0aHJvdyAoKSBfX2FzbV9fICgiIiAiX19qbiIpOwpleHRlcm4gbG9uZyBkb3VibGUg
eTBsIChsb25nIGRvdWJsZSkgdGhyb3cgKCkgX19hc21fXyAoIiIgInkwIik7IGV4dGVybiBsb25n
IGRvdWJsZSBfX3kwbCAobG9uZyBkb3VibGUpIHRocm93ICgpIF9fYXNtX18gKCIiICJfX3kwIik7
CmV4dGVybiBsb25nIGRvdWJsZSB5MWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKSBfX2FzbV9fICgi
IiAieTEiKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feTFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCkg
X19hc21fXyAoIiIgIl9feTEiKTsKZXh0ZXJuIGxvbmcgZG91YmxlIHlubCAoaW50LCBsb25nIGRv
dWJsZSkgdGhyb3cgKCkgX19hc21fXyAoIiIgInluIik7IGV4dGVybiBsb25nIGRvdWJsZSBfX3lu
bCAoaW50LCBsb25nIGRvdWJsZSkgdGhyb3cgKCkgX19hc21fXyAoIiIgIl9feW4iKTsKCgoKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGVyZmwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKSBfX2FzbV9fICgi
IiAiZXJmIik7IGV4dGVybiBsb25nIGRvdWJsZSBfX2VyZmwgKGxvbmcgZG91YmxlKSB0aHJvdyAo
KSBfX2FzbV9fICgiIiAiX19lcmYiKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGVyZmNsIChsb25nIGRv
dWJsZSkgdGhyb3cgKCkgX19hc21fXyAoIiIgImVyZmMiKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
ZXJmY2wgKGxvbmcgZG91YmxlKSB0aHJvdyAoKSBfX2FzbV9fICgiIiAiX19lcmZjIik7CmV4dGVy
biBsb25nIGRvdWJsZSBsZ2FtbWFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCkgX19hc21fXyAoIiIg
ImxnYW1tYSIpOyBleHRlcm4gbG9uZyBkb3VibGUgX19sZ2FtbWFsIChsb25nIGRvdWJsZSkgdGhy
b3cgKCkgX19hc21fXyAoIiIgIl9fbGdhbW1hIik7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSB0
Z2FtbWFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCkgX19hc21fXyAoIiIgInRnYW1tYSIpOyBleHRl
cm4gbG9uZyBkb3VibGUgX190Z2FtbWFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCkgX19hc21fXyAo
IiIgIl9fdGdhbW1hIik7CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGdhbW1hbCAobG9uZyBkb3Vi
bGUpIHRocm93ICgpIF9fYXNtX18gKCIiICJnYW1tYSIpOyBleHRlcm4gbG9uZyBkb3VibGUgX19n
YW1tYWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKSBfX2FzbV9fICgiIiAiX19nYW1tYSIpOwoKCgoK
CgpleHRlcm4gbG9uZyBkb3VibGUgbGdhbW1hbF9yIChsb25nIGRvdWJsZSwgaW50ICpfX3NpZ25n
YW1wKSB0aHJvdyAoKSBfX2FzbV9fICgiIiAibGdhbW1hX3IiKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fbGdhbW1hbF9yIChsb25nIGRvdWJsZSwgaW50ICpfX3NpZ25nYW1wKSB0aHJvdyAoKSBfX2Fz
bV9fICgiIiAiX19sZ2FtbWFfciIpOwoKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJpbnRsIChs
b25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXNtX18gKCIiICJyaW50Iik7IGV4dGVybiBsb25n
IGRvdWJsZSBfX3JpbnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXNtX18gKCIiICJf
X3JpbnQiKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbmV4dGFmdGVybCAobG9uZyBkb3VibGUgX194
LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXNtX18gKCIiICJuZXh0YWZ0ZXIiKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX25leHRhZnRlcmwg
KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2FzbV9fICgiIiAi
X19uZXh0YWZ0ZXIiKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgpleHRlcm4gbG9uZyBk
b3VibGUgbmV4dHRvd2FyZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJv
dyAoKSBfX2FzbV9fICgiIiAibmV4dHRvd2FyZCIpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbmV4dHRvd2FyZGwgKGxvbmcgZG91YmxlIF9feCwgbG9u
ZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2FzbV9fICgiIiAiX19uZXh0dG93YXJkIikgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmVtYWluZGVybCAo
bG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXNtX18gKCIiICJy
ZW1haW5kZXIiKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcmVtYWluZGVybCAobG9uZyBkb3VibGUg
X194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXNtX18gKCIiICJfX3JlbWFpbmRlciIp
OwoKCgpleHRlcm4gbG9uZyBkb3VibGUgc2NhbGJubCAobG9uZyBkb3VibGUgX194LCBpbnQgX19u
KSB0aHJvdyAoKSBfX2FzbV9fICgiIiAic2NhbGJuIik7IGV4dGVybiBsb25nIGRvdWJsZSBfX3Nj
YWxibmwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fbikgdGhyb3cgKCkgX19hc21fXyAoIiIgIl9f
c2NhbGJuIik7CgoKCmV4dGVybiBpbnQgaWxvZ2JsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
IF9fYXNtX18gKCIiICJpbG9nYiIpOyBleHRlcm4gaW50IF9faWxvZ2JsIChsb25nIGRvdWJsZSBf
X3gpIHRocm93ICgpIF9fYXNtX18gKCIiICJfX2lsb2diIik7CgoKCgpleHRlcm4gbG9uZyBkb3Vi
bGUgc2NhbGJsbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKSBfX2Fz
bV9fICgiIiAic2NhbGJsbiIpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zY2FsYmxubCAobG9uZyBk
b3VibGUgX194LCBsb25nIGludCBfX24pIHRocm93ICgpIF9fYXNtX18gKCIiICJfX3NjYWxibG4i
KTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5lYXJieWludGwgKGxvbmcgZG91YmxlIF9feCkgdGhy
b3cgKCkgX19hc21fXyAoIiIgIm5lYXJieWludCIpOyBleHRlcm4gbG9uZyBkb3VibGUgX19uZWFy
YnlpbnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXNtX18gKCIiICJfX25lYXJieWlu
dCIpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgcm91bmRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93
ICgpIF9fYXNtX18gKCIiICJyb3VuZCIpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fcm91bmRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXNt
X18gKCIiICJfX3JvdW5kIikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4g
bG9uZyBkb3VibGUgdHJ1bmNsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXNtX18gKCIi
ICJ0cnVuYyIpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fdHJ1bmNsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXNtX18gKCIiICJfX3RydW5j
IikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJl
bXF1b2wgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195LCBpbnQgKl9fcXVvKSB0aHJv
dyAoKSBfX2FzbV9fICgiIiAicmVtcXVvIik7IGV4dGVybiBsb25nIGRvdWJsZSBfX3JlbXF1b2wg
KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195LCBpbnQgKl9fcXVvKSB0aHJvdyAoKSBf
X2FzbV9fICgiIiAiX19yZW1xdW8iKTsKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IGxyaW50bCAobG9u
ZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2FzbV9fICgiIiAibHJpbnQiKTsgZXh0ZXJuIGxvbmcg
aW50IF9fbHJpbnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXNtX18gKCIiICJfX2xy
aW50Iik7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscmludGwgKGxvbmcgZG91YmxlIF9feCkgdGhy
b3cgKCkgX19hc21fXyAoIiIgImxscmludCIpOyBleHRlcm4gbG9uZyBsb25nIGludCBfX2xscmlu
dGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hc21fXyAoIiIgIl9fbGxyaW50Iik7CgoK
CmV4dGVybiBsb25nIGludCBscm91bmRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXNt
X18gKCIiICJscm91bmQiKTsgZXh0ZXJuIGxvbmcgaW50IF9fbHJvdW5kbCAobG9uZyBkb3VibGUg
X194KSB0aHJvdyAoKSBfX2FzbV9fICgiIiAiX19scm91bmQiKTsKZXh0ZXJuIGxvbmcgbG9uZyBp
bnQgbGxyb3VuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hc21fXyAoIiIgImxscm91
bmQiKTsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJvdW5kbCAobG9uZyBkb3VibGUgX194KSB0
aHJvdyAoKSBfX2FzbV9fICgiIiAiX19sbHJvdW5kIik7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBm
ZGltbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXNtX18g
KCIiICJmZGltIik7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZkaW1sIChsb25nIGRvdWJsZSBfX3gs
IGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hc21fXyAoIiIgIl9fZmRpbSIpOwoKCmV4dGVy
biBsb25nIGRvdWJsZSBmbWF4bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRo
cm93ICgpIF9fYXNtX18gKCIiICJmbWF4Iik7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZtYXhsIChs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hc21fXyAoIiIgIl9f
Zm1heCIpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbWlubCAobG9uZyBkb3VibGUgX194LCBsb25n
IGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXNtX18gKCIiICJmbWluIik7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2ZtaW5sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkg
X19hc21fXyAoIiIgIl9fZm1pbiIpOwoKCgpleHRlcm4gaW50IF9fZnBjbGFzc2lmeWwgKGxvbmcg
ZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXNtX18gKCIiICJfX2ZwY2xhc3NpZnkiKQogICAg
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fc2lnbmJpdGwgKGxv
bmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXNtX18gKCIiICJfX3NpZ25iaXQiKQogICAg
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZtYWwg
KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3opIHRocm93
ICgpIF9fYXNtX18gKCIiICJmbWEiKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZm1hbCAobG9uZyBk
b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feikgdGhyb3cgKCkgX19h
c21fXyAoIiIgIl9fZm1hIik7CgoKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNjYWxibCAobG9u
ZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX24pIHRocm93ICgpIF9fYXNtX18gKCIiICJzY2Fs
YiIpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zY2FsYmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBk
b3VibGUgX19uKSB0aHJvdyAoKSBfX2FzbV9fICgiIiAiX19zY2FsYiIpOwojIDE0NyAiL21udC9z
dG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9tYXRoLmgiIDIg
MyA0CiMgMTYyICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9p
bmNsdWRlL21hdGguaCIgMyA0CmV4dGVybiBpbnQgc2lnbmdhbTsKIyAyMDMgIi9tbnQvc3RvcmUv
Y2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvbWF0aC5oIiAzIDQKZW51
bQogIHsKICAgIEZQX05BTiwKCiAgICBGUF9JTkZJTklURSwKCiAgICBGUF9aRVJPLAoKICAgIEZQ
X1NVQk5PUk1BTCwKCiAgICBGUF9OT1JNQUwKCiAgfTsKIyAyOTYgIi9tbnQvc3RvcmUvY2hyb290
cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvbWF0aC5oIiAzIDQKdHlwZWRlZiBl
bnVtCnsKICBfSUVFRV8gPSAtMSwKICBfU1ZJRF8sCiAgX1hPUEVOXywKICBfUE9TSVhfLAogIF9J
U09DXwp9IF9MSUJfVkVSU0lPTl9UWVBFOwoKCgoKZXh0ZXJuIF9MSUJfVkVSU0lPTl9UWVBFIF9M
SUJfVkVSU0lPTjsKIyAzMTkgIi9tbnQvc3RvcmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJN
SEYvdXNyL2luY2x1ZGUvbWF0aC5oIiAzIDQKc3RydWN0IF9fZXhjZXB0aW9uCgoKCiAgewogICAg
aW50IHR5cGU7CiAgICBjaGFyICpuYW1lOwogICAgZG91YmxlIGFyZzE7CiAgICBkb3VibGUgYXJn
MjsKICAgIGRvdWJsZSByZXR2YWw7CiAgfTsKCgpleHRlcm4gaW50IG1hdGhlcnIgKHN0cnVjdCBf
X2V4Y2VwdGlvbiAqX19leGMpIHRocm93ICgpOwojIDQyMSAiL21udC9zdG9yZS9jaHJvb3RzL3Vi
dW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9tYXRoLmgiIDMgNAojIDEgIi9tbnQvc3Rv
cmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvYXJtLWxpbnV4LWdu
dWVhYmloZi9iaXRzL21hdGhpbmxpbmUuaCIgMSAzIDQKIyA0MjIgIi9tbnQvc3RvcmUvY2hyb290
cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMgNAojIDQ4MyAi
L21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9tYXRo
LmgiIDMgNAp9CiMgNDUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjguMS9jbWF0aCIgMiAzCiMgNzUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9jbWF0aCIgMwpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChf
X3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgoKICBpbmxpbmUgY29uc3RleHByIGRvdWJs
ZQogIGFicyhkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzKF9feCk7IH0KCgoK
ICBpbmxpbmUgY29uc3RleHByIGZsb2F0CiAgYWJzKGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1
aWx0aW5fZmFic2YoX194KTsgfQoKICBpbmxpbmUgY29uc3RleHByIGxvbmcgZG91YmxlCiAgYWJz
KGxvbmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fZmFic2woX194KTsgfQoKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGNvbnN0ZXhwcgogICAgdHlwZW5hbWUg
X19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlPjo6X190eXBlCiAgICBhYnMoX1Rw
IF9feCkKICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzKF9feCk7IH0KCiAgdXNpbmcgOjphY29z
OwoKCiAgaW5saW5lIGNvbnN0ZXhwciBmbG9hdAogIGFjb3MoZmxvYXQgX194KQogIHsgcmV0dXJu
IF9fYnVpbHRpbl9hY29zZihfX3gpOyB9CgogIGlubGluZSBjb25zdGV4cHIgbG9uZyBkb3VibGUK
ICBhY29zKGxvbmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fYWNvc2woX194KTsg
fQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGNvbnN0ZXhwcgogICAgdHlw
ZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlPjo6X190eXBlCiAgICBh
Y29zKF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1aWx0aW5fYWNvcyhfX3gpOyB9CgogIHVzaW5n
IDo6YXNpbjsKCgogIGlubGluZSBjb25zdGV4cHIgZmxvYXQKICBhc2luKGZsb2F0IF9feCkKICB7
IHJldHVybiBfX2J1aWx0aW5fYXNpbmYoX194KTsgfQoKICBpbmxpbmUgY29uc3RleHByIGxvbmcg
ZG91YmxlCiAgYXNpbihsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2FzaW5s
KF9feCk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBjb25zdGV4cHIK
ICAgIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9f
dmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZT46Ol9fdHlw
ZQogICAgYXNpbihfVHAgX194KQogICAgeyByZXR1cm4gX19idWlsdGluX2FzaW4oX194KTsgfQoK
ICB1c2luZyA6OmF0YW47CgoKICBpbmxpbmUgY29uc3RleHByIGZsb2F0CiAgYXRhbihmbG9hdCBf
X3gpCiAgeyByZXR1cm4gX19idWlsdGluX2F0YW5mKF9feCk7IH0KCiAgaW5saW5lIGNvbnN0ZXhw
ciBsb25nIGRvdWJsZQogIGF0YW4obG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRp
bl9hdGFubChfX3gpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgY29u
c3RleHByCiAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfaW50ZWdlcjxf
VHA+OjpfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGU+
OjpfX3R5cGUKICAgIGF0YW4oX1RwIF9feCkKICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9hdGFuKF9f
eCk7IH0KCiAgdXNpbmcgOjphdGFuMjsKCgogIGlubGluZSBjb25zdGV4cHIgZmxvYXQKICBhdGFu
MihmbG9hdCBfX3ksIGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fYXRhbjJmKF9feSwg
X194KTsgfQoKICBpbmxpbmUgY29uc3RleHByIGxvbmcgZG91YmxlCiAgYXRhbjIobG9uZyBkb3Vi
bGUgX195LCBsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2F0YW4ybChfX3ks
IF9feCk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1VwPgogICAgaW5s
aW5lIGNvbnN0ZXhwcgogICAgdHlwZW5hbWUgX19nbnVfY3h4OjpfX3Byb21vdGVfMjxfVHAsIF9V
cD46Ol9fdHlwZQogICAgYXRhbjIoX1RwIF9feSwgX1VwIF9feCkKICAgIHsKICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fcHJvbW90ZV8yPF9UcCwgX1VwPjo6X190eXBlIF9fdHlw
ZTsKICAgICAgcmV0dXJuIGF0YW4yKF9fdHlwZShfX3kpLCBfX3R5cGUoX194KSk7CiAgICB9Cgog
IHVzaW5nIDo6Y2VpbDsKCgogIGlubGluZSBjb25zdGV4cHIgZmxvYXQKICBjZWlsKGZsb2F0IF9f
eCkKICB7IHJldHVybiBfX2J1aWx0aW5fY2VpbGYoX194KTsgfQoKICBpbmxpbmUgY29uc3RleHBy
IGxvbmcgZG91YmxlCiAgY2VpbChsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGlu
X2NlaWxsKF9feCk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBjb25z
dGV4cHIKICAgIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9U
cD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZT46
Ol9fdHlwZQogICAgY2VpbChfVHAgX194KQogICAgeyByZXR1cm4gX19idWlsdGluX2NlaWwoX194
KTsgfQoKICB1c2luZyA6OmNvczsKCgogIGlubGluZSBjb25zdGV4cHIgZmxvYXQKICBjb3MoZmxv
YXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9jb3NmKF9feCk7IH0KCiAgaW5saW5lIGNvbnN0
ZXhwciBsb25nIGRvdWJsZQogIGNvcyhsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWls
dGluX2Nvc2woX194KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGNv
bnN0ZXhwcgogICAgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8
X1RwPjo6X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91Ymxl
Pjo6X190eXBlCiAgICBjb3MoX1RwIF9feCkKICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9jb3MoX194
KTsgfQoKICB1c2luZyA6OmNvc2g7CgoKICBpbmxpbmUgY29uc3RleHByIGZsb2F0CiAgY29zaChm
bG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2Nvc2hmKF9feCk7IH0KCiAgaW5saW5lIGNv
bnN0ZXhwciBsb25nIGRvdWJsZQogIGNvc2gobG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9f
YnVpbHRpbl9jb3NobChfX3gpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxp
bmUgY29uc3RleHByCiAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfaW50
ZWdlcjxfVHA+OjpfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b3VibGU+OjpfX3R5cGUKICAgIGNvc2goX1RwIF9feCkKICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9j
b3NoKF9feCk7IH0KCiAgdXNpbmcgOjpleHA7CgoKICBpbmxpbmUgY29uc3RleHByIGZsb2F0CiAg
ZXhwKGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fZXhwZihfX3gpOyB9CgogIGlubGlu
ZSBjb25zdGV4cHIgbG9uZyBkb3VibGUKICBleHAobG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJu
IF9fYnVpbHRpbl9leHBsKF9feCk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlu
bGluZSBjb25zdGV4cHIKICAgIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19p
bnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRvdWJsZT46Ol9fdHlwZQogICAgZXhwKF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1aWx0aW5f
ZXhwKF9feCk7IH0KCiAgdXNpbmcgOjpmYWJzOwoKCiAgaW5saW5lIGNvbnN0ZXhwciBmbG9hdAog
IGZhYnMoZmxvYXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzZihfX3gpOyB9CgogIGlu
bGluZSBjb25zdGV4cHIgbG9uZyBkb3VibGUKICBmYWJzKGxvbmcgZG91YmxlIF9feCkKICB7IHJl
dHVybiBfX2J1aWx0aW5fZmFic2woX194KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
ICAgaW5saW5lIGNvbnN0ZXhwcgogICAgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxf
X2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZG91YmxlPjo6X190eXBlCiAgICBmYWJzKF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1
aWx0aW5fZmFicyhfX3gpOyB9CgogIHVzaW5nIDo6Zmxvb3I7CgoKICBpbmxpbmUgY29uc3RleHBy
IGZsb2F0CiAgZmxvb3IoZmxvYXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9mbG9vcmYoX194
KTsgfQoKICBpbmxpbmUgY29uc3RleHByIGxvbmcgZG91YmxlCiAgZmxvb3IobG9uZyBkb3VibGUg
X194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9mbG9vcmwoX194KTsgfQoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwPgogICAgaW5saW5lIGNvbnN0ZXhwcgogICAgdHlwZW5hbWUgX19nbnVfY3h4Ojpf
X2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG91YmxlPjo6X190eXBlCiAgICBmbG9vcihfVHAgX194KQogICAg
eyByZXR1cm4gX19idWlsdGluX2Zsb29yKF9feCk7IH0KCiAgdXNpbmcgOjpmbW9kOwoKCiAgaW5s
aW5lIGNvbnN0ZXhwciBmbG9hdAogIGZtb2QoZmxvYXQgX194LCBmbG9hdCBfX3kpCiAgeyByZXR1
cm4gX19idWlsdGluX2Ztb2RmKF9feCwgX195KTsgfQoKICBpbmxpbmUgY29uc3RleHByIGxvbmcg
ZG91YmxlCiAgZm1vZChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkKICB7IHJldHVy
biBfX2J1aWx0aW5fZm1vZGwoX194LCBfX3kpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAs
IHR5cGVuYW1lIF9VcD4KICAgIGlubGluZSBjb25zdGV4cHIKICAgIHR5cGVuYW1lIF9fZ251X2N4
eDo6X19wcm9tb3RlXzI8X1RwLCBfVXA+OjpfX3R5cGUKICAgIGZtb2QoX1RwIF9feCwgX1VwIF9f
eSkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fcHJvbW90ZV8yPF9U
cCwgX1VwPjo6X190eXBlIF9fdHlwZTsKICAgICAgcmV0dXJuIGZtb2QoX190eXBlKF9feCksIF9f
dHlwZShfX3kpKTsKICAgIH0KCiAgdXNpbmcgOjpmcmV4cDsKCgogIGlubGluZSBmbG9hdAogIGZy
ZXhwKGZsb2F0IF9feCwgaW50KiBfX2V4cCkKICB7IHJldHVybiBfX2J1aWx0aW5fZnJleHBmKF9f
eCwgX19leHApOyB9CgogIGlubGluZSBsb25nIGRvdWJsZQogIGZyZXhwKGxvbmcgZG91YmxlIF9f
eCwgaW50KiBfX2V4cCkKICB7IHJldHVybiBfX2J1aWx0aW5fZnJleHBsKF9feCwgX19leHApOyB9
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgY29uc3RleHByCiAgICB0eXBl
bmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfaW50ZWdlcjxfVHA+OjpfX3ZhbHVlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAgIGZy
ZXhwKF9UcCBfX3gsIGludCogX19leHApCiAgICB7IHJldHVybiBfX2J1aWx0aW5fZnJleHAoX194
LCBfX2V4cCk7IH0KCiAgdXNpbmcgOjpsZGV4cDsKCgogIGlubGluZSBjb25zdGV4cHIgZmxvYXQK
ICBsZGV4cChmbG9hdCBfX3gsIGludCBfX2V4cCkKICB7IHJldHVybiBfX2J1aWx0aW5fbGRleHBm
KF9feCwgX19leHApOyB9CgogIGlubGluZSBjb25zdGV4cHIgbG9uZyBkb3VibGUKICBsZGV4cChs
b25nIGRvdWJsZSBfX3gsIGludCBfX2V4cCkKICB7IHJldHVybiBfX2J1aWx0aW5fbGRleHBsKF9f
eCwgX19leHApOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgY29uc3Rl
eHByCiAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfaW50ZWdlcjxfVHA+
OjpfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGU+Ojpf
X3R5cGUKICAgIGxkZXhwKF9UcCBfX3gsIGludCBfX2V4cCkKICAgIHsgcmV0dXJuIF9fYnVpbHRp
bl9sZGV4cChfX3gsIF9fZXhwKTsgfQoKICB1c2luZyA6OmxvZzsKCgogIGlubGluZSBjb25zdGV4
cHIgZmxvYXQKICBsb2coZmxvYXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9sb2dmKF9feCk7
IH0KCiAgaW5saW5lIGNvbnN0ZXhwciBsb25nIGRvdWJsZQogIGxvZyhsb25nIGRvdWJsZSBfX3gp
CiAgeyByZXR1cm4gX19idWlsdGluX2xvZ2woX194KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgaW5saW5lIGNvbnN0ZXhwcgogICAgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJs
ZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG91YmxlPjo6X190eXBlCiAgICBsb2coX1RwIF9feCkKICAgIHsgcmV0dXJu
IF9fYnVpbHRpbl9sb2coX194KTsgfQoKICB1c2luZyA6OmxvZzEwOwoKCiAgaW5saW5lIGNvbnN0
ZXhwciBmbG9hdAogIGxvZzEwKGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fbG9nMTBm
KF9feCk7IH0KCiAgaW5saW5lIGNvbnN0ZXhwciBsb25nIGRvdWJsZQogIGxvZzEwKGxvbmcgZG91
YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fbG9nMTBsKF9feCk7IH0KCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBjb25zdGV4cHIKICAgIHR5cGVuYW1lIF9fZ251X2N4
eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZT46Ol9fdHlwZQogICAgbG9nMTAoX1RwIF9feCkK
ICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9sb2cxMChfX3gpOyB9CgogIHVzaW5nIDo6bW9kZjsKCgog
IGlubGluZSBmbG9hdAogIG1vZGYoZmxvYXQgX194LCBmbG9hdCogX19pcHRyKQogIHsgcmV0dXJu
IF9fYnVpbHRpbl9tb2RmZihfX3gsIF9faXB0cik7IH0KCiAgaW5saW5lIGxvbmcgZG91YmxlCiAg
bW9kZihsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlKiBfX2lwdHIpCiAgeyByZXR1cm4gX19i
dWlsdGluX21vZGZsKF9feCwgX19pcHRyKTsgfQoKCiAgdXNpbmcgOjpwb3c7CgoKICBpbmxpbmUg
Y29uc3RleHByIGZsb2F0CiAgcG93KGZsb2F0IF9feCwgZmxvYXQgX195KQogIHsgcmV0dXJuIF9f
YnVpbHRpbl9wb3dmKF9feCwgX195KTsgfQoKICBpbmxpbmUgY29uc3RleHByIGxvbmcgZG91Ymxl
CiAgcG93KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KQogIHsgcmV0dXJuIF9fYnVp
bHRpbl9wb3dsKF9feCwgX195KTsgfQojIDQzMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOC4xL2NtYXRoIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0
eXBlbmFtZSBfVXA+CiAgICBpbmxpbmUgY29uc3RleHByCiAgICB0eXBlbmFtZSBfX2dudV9jeHg6
Ol9fcHJvbW90ZV8yPF9UcCwgX1VwPjo6X190eXBlCiAgICBwb3coX1RwIF9feCwgX1VwIF9feSkK
ICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fcHJvbW90ZV8yPF9UcCwg
X1VwPjo6X190eXBlIF9fdHlwZTsKICAgICAgcmV0dXJuIHBvdyhfX3R5cGUoX194KSwgX190eXBl
KF9feSkpOwogICAgfQoKICB1c2luZyA6OnNpbjsKCgogIGlubGluZSBjb25zdGV4cHIgZmxvYXQK
ICBzaW4oZmxvYXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9zaW5mKF9feCk7IH0KCiAgaW5s
aW5lIGNvbnN0ZXhwciBsb25nIGRvdWJsZQogIHNpbihsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1
cm4gX19idWlsdGluX3NpbmwoX194KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAg
aW5saW5lIGNvbnN0ZXhwcgogICAgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lz
X2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZG91YmxlPjo6X190eXBlCiAgICBzaW4oX1RwIF9feCkKICAgIHsgcmV0dXJuIF9fYnVpbHRp
bl9zaW4oX194KTsgfQoKICB1c2luZyA6OnNpbmg7CgoKICBpbmxpbmUgY29uc3RleHByIGZsb2F0
CiAgc2luaChmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX3NpbmhmKF9feCk7IH0KCiAg
aW5saW5lIGNvbnN0ZXhwciBsb25nIGRvdWJsZQogIHNpbmgobG9uZyBkb3VibGUgX194KQogIHsg
cmV0dXJuIF9fYnVpbHRpbl9zaW5obChfX3gpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
CiAgICBpbmxpbmUgY29uc3RleHByCiAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lm
PF9faXNfaW50ZWdlcjxfVHA+OjpfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAgIHNpbmgoX1RwIF9feCkKICAgIHsgcmV0dXJuIF9f
YnVpbHRpbl9zaW5oKF9feCk7IH0KCiAgdXNpbmcgOjpzcXJ0OwoKCiAgaW5saW5lIGNvbnN0ZXhw
ciBmbG9hdAogIHNxcnQoZmxvYXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9zcXJ0ZihfX3gp
OyB9CgogIGlubGluZSBjb25zdGV4cHIgbG9uZyBkb3VibGUKICBzcXJ0KGxvbmcgZG91YmxlIF9f
eCkKICB7IHJldHVybiBfX2J1aWx0aW5fc3FydGwoX194KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogICAgaW5saW5lIGNvbnN0ZXhwcgogICAgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2Vu
YWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZG91YmxlPjo6X190eXBlCiAgICBzcXJ0KF9UcCBfX3gpCiAgICB7IHJl
dHVybiBfX2J1aWx0aW5fc3FydChfX3gpOyB9CgogIHVzaW5nIDo6dGFuOwoKCiAgaW5saW5lIGNv
bnN0ZXhwciBmbG9hdAogIHRhbihmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX3RhbmYo
X194KTsgfQoKICBpbmxpbmUgY29uc3RleHByIGxvbmcgZG91YmxlCiAgdGFuKGxvbmcgZG91Ymxl
IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fdGFubChfX3gpOyB9CgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICBpbmxpbmUgY29uc3RleHByCiAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9f
ZW5hYmxlX2lmPF9faXNfaW50ZWdlcjxfVHA+OjpfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAgIHRhbihfVHAgX194KQogICAgeyBy
ZXR1cm4gX19idWlsdGluX3RhbihfX3gpOyB9CgogIHVzaW5nIDo6dGFuaDsKCgogIGlubGluZSBj
b25zdGV4cHIgZmxvYXQKICB0YW5oKGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fdGFu
aGYoX194KTsgfQoKICBpbmxpbmUgY29uc3RleHByIGxvbmcgZG91YmxlCiAgdGFuaChsb25nIGRv
dWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX3RhbmhsKF9feCk7IH0KCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBjb25zdGV4cHIKICAgIHR5cGVuYW1lIF9fZ251X2N4
eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZT46Ol9fdHlwZQogICAgdGFuaChfVHAgX194KQog
ICAgeyByZXR1cm4gX19idWlsdGluX3RhbmgoX194KTsgfQoKCn0KIyA1NTUgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9jbWF0aCIgMwpuYW1lc3BhY2Ug
c3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgoKICBj
b25zdGV4cHIgaW50CiAgZnBjbGFzc2lmeShmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGlu
X2ZwY2xhc3NpZnkoRlBfTkFOLCBGUF9JTkZJTklURSwgRlBfTk9STUFMLAogICAgRlBfU1VCTk9S
TUFMLCBGUF9aRVJPLCBfX3gpOyB9CgogIGNvbnN0ZXhwciBpbnQKICBmcGNsYXNzaWZ5KGRvdWJs
ZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2ZwY2xhc3NpZnkoRlBfTkFOLCBGUF9JTkZJTklU
RSwgRlBfTk9STUFMLAogICAgRlBfU1VCTk9STUFMLCBGUF9aRVJPLCBfX3gpOyB9CgogIGNvbnN0
ZXhwciBpbnQKICBmcGNsYXNzaWZ5KGxvbmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0
aW5fZnBjbGFzc2lmeShGUF9OQU4sIEZQX0lORklOSVRFLCBGUF9OT1JNQUwsCiAgICBGUF9TVUJO
T1JNQUwsIEZQX1pFUk8sIF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY29u
c3RleHByIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46
Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQ+OjpfX3R5cGUKICAgIGZwY2xhc3NpZnkoX1RwIF9feCkKICAgIHsgcmV0dXJuIF9feCAhPSAw
ID8gRlBfTk9STUFMIDogRlBfWkVSTzsgfQoKICBjb25zdGV4cHIgYm9vbAogIGlzZmluaXRlKGZs
b2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5faXNmaW5pdGUoX194KTsgfQoKICBjb25zdGV4
cHIgYm9vbAogIGlzZmluaXRlKGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2lzZmlu
aXRlKF9feCk7IH0KCiAgY29uc3RleHByIGJvb2wKICBpc2Zpbml0ZShsb25nIGRvdWJsZSBfX3gp
CiAgeyByZXR1cm4gX19idWlsdGluX2lzZmluaXRlKF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19p
c19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sPjo6X190eXBlCiAgICBpc2Zpbml0ZShfVHAgX194KQogICAgeyBy
ZXR1cm4gdHJ1ZTsgfQoKICBjb25zdGV4cHIgYm9vbAogIGlzaW5mKGZsb2F0IF9feCkKICB7IHJl
dHVybiBfX2J1aWx0aW5faXNpbmYoX194KTsgfQoKICBjb25zdGV4cHIgYm9vbAogIGlzaW5mKGRv
dWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2lzaW5mKF9feCk7IH0KCiAgY29uc3RleHBy
IGJvb2wKICBpc2luZihsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2lzaW5m
KF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY29uc3RleHByIHR5cGVuYW1l
IF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sPjo6X190eXBlCiAg
ICBpc2luZihfVHAgX194KQogICAgeyByZXR1cm4gZmFsc2U7IH0KCiAgY29uc3RleHByIGJvb2wK
ICBpc25hbihmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2lzbmFuKF9feCk7IH0KCiAg
Y29uc3RleHByIGJvb2wKICBpc25hbihkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9p
c25hbihfX3gpOyB9CgogIGNvbnN0ZXhwciBib29sCiAgaXNuYW4obG9uZyBkb3VibGUgX194KQog
IHsgcmV0dXJuIF9fYnVpbHRpbl9pc25hbihfX3gpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4KICAgIGNvbnN0ZXhwciB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfaW50
ZWdlcjxfVHA+OjpfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbD46Ol9fdHlwZQogICAgaXNuYW4oX1RwIF9feCkKICAgIHsgcmV0dXJuIGZh
bHNlOyB9CgogIGNvbnN0ZXhwciBib29sCiAgaXNub3JtYWwoZmxvYXQgX194KQogIHsgcmV0dXJu
IF9fYnVpbHRpbl9pc25vcm1hbChfX3gpOyB9CgogIGNvbnN0ZXhwciBib29sCiAgaXNub3JtYWwo
ZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5faXNub3JtYWwoX194KTsgfQoKICBjb25z
dGV4cHIgYm9vbAogIGlzbm9ybWFsKGxvbmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0
aW5faXNub3JtYWwoX194KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjb25zdGV4
cHIgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192
YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2w+
OjpfX3R5cGUKICAgIGlzbm9ybWFsKF9UcCBfX3gpCiAgICB7IHJldHVybiBfX3ggIT0gMCA/IHRy
dWUgOiBmYWxzZTsgfQoKICBjb25zdGV4cHIgYm9vbAogIHNpZ25iaXQoZmxvYXQgX194KQogIHsg
cmV0dXJuIF9fYnVpbHRpbl9zaWduYml0KF9feCk7IH0KCiAgY29uc3RleHByIGJvb2wKICBzaWdu
Yml0KGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX3NpZ25iaXQoX194KTsgfQoKICBj
b25zdGV4cHIgYm9vbAogIHNpZ25iaXQobG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVp
bHRpbl9zaWduYml0KF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY29uc3Rl
eHByIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9f
dmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
Pjo6X190eXBlCiAgICBzaWduYml0KF9UcCBfX3gpCiAgICB7IHJldHVybiBfX3ggPCAwID8gdHJ1
ZSA6IGZhbHNlOyB9CgogIGNvbnN0ZXhwciBib29sCiAgaXNncmVhdGVyKGZsb2F0IF9feCwgZmxv
YXQgX195KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9pc2dyZWF0ZXIoX194LCBfX3kpOyB9CgogIGNv
bnN0ZXhwciBib29sCiAgaXNncmVhdGVyKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpCiAgeyByZXR1
cm4gX19idWlsdGluX2lzZ3JlYXRlcihfX3gsIF9feSk7IH0KCiAgY29uc3RleHByIGJvb2wKICBp
c2dyZWF0ZXIobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpCiAgeyByZXR1cm4gX19i
dWlsdGluX2lzZ3JlYXRlcihfX3gsIF9feSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0
eXBlbmFtZSBfVXA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUKICAgIF9fZ251X2N4eDo6X19lbmFi
bGVfaWY8KF9faXNfYXJpdGhtZXRpYzxfVHA+OjpfX3ZhbHVlCiAgICAgICAmJiBfX2lzX2FyaXRo
bWV0aWM8X1VwPjo6X192YWx1ZSksIGJvb2w+OjpfX3R5cGUKICAgIGlzZ3JlYXRlcihfVHAgX194
LCBfVXAgX195KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fZ251X2N4eDo6X19wcm9t
b3RlXzI8X1RwLCBfVXA+OjpfX3R5cGUgX190eXBlOwogICAgICByZXR1cm4gX19idWlsdGluX2lz
Z3JlYXRlcihfX3R5cGUoX194KSwgX190eXBlKF9feSkpOwogICAgfQoKICBjb25zdGV4cHIgYm9v
bAogIGlzZ3JlYXRlcmVxdWFsKGZsb2F0IF9feCwgZmxvYXQgX195KQogIHsgcmV0dXJuIF9fYnVp
bHRpbl9pc2dyZWF0ZXJlcXVhbChfX3gsIF9feSk7IH0KCiAgY29uc3RleHByIGJvb2wKICBpc2dy
ZWF0ZXJlcXVhbChkb3VibGUgX194LCBkb3VibGUgX195KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9p
c2dyZWF0ZXJlcXVhbChfX3gsIF9feSk7IH0KCiAgY29uc3RleHByIGJvb2wKICBpc2dyZWF0ZXJl
cXVhbChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkKICB7IHJldHVybiBfX2J1aWx0
aW5faXNncmVhdGVyZXF1YWwoX194LCBfX3kpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwg
dHlwZW5hbWUgX1VwPgogICAgY29uc3RleHByIHR5cGVuYW1lCiAgICBfX2dudV9jeHg6Ol9fZW5h
YmxlX2lmPChfX2lzX2FyaXRobWV0aWM8X1RwPjo6X192YWx1ZQogICAgICAgJiYgX19pc19hcml0
aG1ldGljPF9VcD46Ol9fdmFsdWUpLCBib29sPjo6X190eXBlCiAgICBpc2dyZWF0ZXJlcXVhbChf
VHAgX194LCBfVXAgX195KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fZ251X2N4eDo6
X19wcm9tb3RlXzI8X1RwLCBfVXA+OjpfX3R5cGUgX190eXBlOwogICAgICByZXR1cm4gX19idWls
dGluX2lzZ3JlYXRlcmVxdWFsKF9fdHlwZShfX3gpLCBfX3R5cGUoX195KSk7CiAgICB9CgogIGNv
bnN0ZXhwciBib29sCiAgaXNsZXNzKGZsb2F0IF9feCwgZmxvYXQgX195KQogIHsgcmV0dXJuIF9f
YnVpbHRpbl9pc2xlc3MoX194LCBfX3kpOyB9CgogIGNvbnN0ZXhwciBib29sCiAgaXNsZXNzKGRv
dWJsZSBfX3gsIGRvdWJsZSBfX3kpCiAgeyByZXR1cm4gX19idWlsdGluX2lzbGVzcyhfX3gsIF9f
eSk7IH0KCiAgY29uc3RleHByIGJvb2wKICBpc2xlc3MobG9uZyBkb3VibGUgX194LCBsb25nIGRv
dWJsZSBfX3kpCiAgeyByZXR1cm4gX19idWlsdGluX2lzbGVzcyhfX3gsIF9feSk7IH0KCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUK
ICAgIF9fZ251X2N4eDo6X19lbmFibGVfaWY8KF9faXNfYXJpdGhtZXRpYzxfVHA+OjpfX3ZhbHVl
CiAgICAgICAmJiBfX2lzX2FyaXRobWV0aWM8X1VwPjo6X192YWx1ZSksIGJvb2w+OjpfX3R5cGUK
ICAgIGlzbGVzcyhfVHAgX194LCBfVXAgX195KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1l
IF9fZ251X2N4eDo6X19wcm9tb3RlXzI8X1RwLCBfVXA+OjpfX3R5cGUgX190eXBlOwogICAgICBy
ZXR1cm4gX19idWlsdGluX2lzbGVzcyhfX3R5cGUoX194KSwgX190eXBlKF9feSkpOwogICAgfQoK
ICBjb25zdGV4cHIgYm9vbAogIGlzbGVzc2VxdWFsKGZsb2F0IF9feCwgZmxvYXQgX195KQogIHsg
cmV0dXJuIF9fYnVpbHRpbl9pc2xlc3NlcXVhbChfX3gsIF9feSk7IH0KCiAgY29uc3RleHByIGJv
b2wKICBpc2xlc3NlcXVhbChkb3VibGUgX194LCBkb3VibGUgX195KQogIHsgcmV0dXJuIF9fYnVp
bHRpbl9pc2xlc3NlcXVhbChfX3gsIF9feSk7IH0KCiAgY29uc3RleHByIGJvb2wKICBpc2xlc3Nl
cXVhbChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkKICB7IHJldHVybiBfX2J1aWx0
aW5faXNsZXNzZXF1YWwoX194LCBfX3kpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlw
ZW5hbWUgX1VwPgogICAgY29uc3RleHByIHR5cGVuYW1lCiAgICBfX2dudV9jeHg6Ol9fZW5hYmxl
X2lmPChfX2lzX2FyaXRobWV0aWM8X1RwPjo6X192YWx1ZQogICAgICAgJiYgX19pc19hcml0aG1l
dGljPF9VcD46Ol9fdmFsdWUpLCBib29sPjo6X190eXBlCiAgICBpc2xlc3NlcXVhbChfVHAgX194
LCBfVXAgX195KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fZ251X2N4eDo6X19wcm9t
b3RlXzI8X1RwLCBfVXA+OjpfX3R5cGUgX190eXBlOwogICAgICByZXR1cm4gX19idWlsdGluX2lz
bGVzc2VxdWFsKF9fdHlwZShfX3gpLCBfX3R5cGUoX195KSk7CiAgICB9CgogIGNvbnN0ZXhwciBi
b29sCiAgaXNsZXNzZ3JlYXRlcihmbG9hdCBfX3gsIGZsb2F0IF9feSkKICB7IHJldHVybiBfX2J1
aWx0aW5faXNsZXNzZ3JlYXRlcihfX3gsIF9feSk7IH0KCiAgY29uc3RleHByIGJvb2wKICBpc2xl
c3NncmVhdGVyKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpCiAgeyByZXR1cm4gX19idWlsdGluX2lz
bGVzc2dyZWF0ZXIoX194LCBfX3kpOyB9CgogIGNvbnN0ZXhwciBib29sCiAgaXNsZXNzZ3JlYXRl
cihsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkKICB7IHJldHVybiBfX2J1aWx0aW5f
aXNsZXNzZ3JlYXRlcihfX3gsIF9feSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBl
bmFtZSBfVXA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUKICAgIF9fZ251X2N4eDo6X19lbmFibGVf
aWY8KF9faXNfYXJpdGhtZXRpYzxfVHA+OjpfX3ZhbHVlCiAgICAgICAmJiBfX2lzX2FyaXRobWV0
aWM8X1VwPjo6X192YWx1ZSksIGJvb2w+OjpfX3R5cGUKICAgIGlzbGVzc2dyZWF0ZXIoX1RwIF9f
eCwgX1VwIF9feSkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fcHJv
bW90ZV8yPF9UcCwgX1VwPjo6X190eXBlIF9fdHlwZTsKICAgICAgcmV0dXJuIF9fYnVpbHRpbl9p
c2xlc3NncmVhdGVyKF9fdHlwZShfX3gpLCBfX3R5cGUoX195KSk7CiAgICB9CgogIGNvbnN0ZXhw
ciBib29sCiAgaXN1bm9yZGVyZWQoZmxvYXQgX194LCBmbG9hdCBfX3kpCiAgeyByZXR1cm4gX19i
dWlsdGluX2lzdW5vcmRlcmVkKF9feCwgX195KTsgfQoKICBjb25zdGV4cHIgYm9vbAogIGlzdW5v
cmRlcmVkKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpCiAgeyByZXR1cm4gX19idWlsdGluX2lzdW5v
cmRlcmVkKF9feCwgX195KTsgfQoKICBjb25zdGV4cHIgYm9vbAogIGlzdW5vcmRlcmVkKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9pc3Vub3Jk
ZXJlZChfX3gsIF9feSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXA+
CiAgICBjb25zdGV4cHIgdHlwZW5hbWUKICAgIF9fZ251X2N4eDo6X19lbmFibGVfaWY8KF9faXNf
YXJpdGhtZXRpYzxfVHA+OjpfX3ZhbHVlCiAgICAgICAmJiBfX2lzX2FyaXRobWV0aWM8X1VwPjo6
X192YWx1ZSksIGJvb2w+OjpfX3R5cGUKICAgIGlzdW5vcmRlcmVkKF9UcCBfX3gsIF9VcCBfX3kp
CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19nbnVfY3h4OjpfX3Byb21vdGVfMjxfVHAs
IF9VcD46Ol9fdHlwZSBfX3R5cGU7CiAgICAgIHJldHVybiBfX2J1aWx0aW5faXN1bm9yZGVyZWQo
X190eXBlKF9feCksIF9fdHlwZShfX3kpKTsKICAgIH0KIyA5MTYgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9jbWF0aCIgMwoKfQojIDEwMzIgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4x
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9jbWF0aCIgMwpuYW1l
c3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsK
CgoKICB1c2luZyA6OmRvdWJsZV90OwogIHVzaW5nIDo6ZmxvYXRfdDsKCgogIHVzaW5nIDo6YWNv
c2g7CiAgdXNpbmcgOjphY29zaGY7CiAgdXNpbmcgOjphY29zaGw7CgogIHVzaW5nIDo6YXNpbmg7
CiAgdXNpbmcgOjphc2luaGY7CiAgdXNpbmcgOjphc2luaGw7CgogIHVzaW5nIDo6YXRhbmg7CiAg
dXNpbmcgOjphdGFuaGY7CiAgdXNpbmcgOjphdGFuaGw7CgogIHVzaW5nIDo6Y2JydDsKICB1c2lu
ZyA6OmNicnRmOwogIHVzaW5nIDo6Y2JydGw7CgogIHVzaW5nIDo6Y29weXNpZ247CiAgdXNpbmcg
Ojpjb3B5c2lnbmY7CiAgdXNpbmcgOjpjb3B5c2lnbmw7CgogIHVzaW5nIDo6ZXJmOwogIHVzaW5n
IDo6ZXJmZjsKICB1c2luZyA6OmVyZmw7CgogIHVzaW5nIDo6ZXJmYzsKICB1c2luZyA6OmVyZmNm
OwogIHVzaW5nIDo6ZXJmY2w7CgogIHVzaW5nIDo6ZXhwMjsKICB1c2luZyA6OmV4cDJmOwogIHVz
aW5nIDo6ZXhwMmw7CgogIHVzaW5nIDo6ZXhwbTE7CiAgdXNpbmcgOjpleHBtMWY7CiAgdXNpbmcg
OjpleHBtMWw7CgogIHVzaW5nIDo6ZmRpbTsKICB1c2luZyA6OmZkaW1mOwogIHVzaW5nIDo6ZmRp
bWw7CgogIHVzaW5nIDo6Zm1hOwogIHVzaW5nIDo6Zm1hZjsKICB1c2luZyA6OmZtYWw7CgogIHVz
aW5nIDo6Zm1heDsKICB1c2luZyA6OmZtYXhmOwogIHVzaW5nIDo6Zm1heGw7CgogIHVzaW5nIDo6
Zm1pbjsKICB1c2luZyA6OmZtaW5mOwogIHVzaW5nIDo6Zm1pbmw7CgogIHVzaW5nIDo6aHlwb3Q7
CiAgdXNpbmcgOjpoeXBvdGY7CiAgdXNpbmcgOjpoeXBvdGw7CgogIHVzaW5nIDo6aWxvZ2I7CiAg
dXNpbmcgOjppbG9nYmY7CiAgdXNpbmcgOjppbG9nYmw7CgogIHVzaW5nIDo6bGdhbW1hOwogIHVz
aW5nIDo6bGdhbW1hZjsKICB1c2luZyA6OmxnYW1tYWw7CgogIHVzaW5nIDo6bGxyaW50OwogIHVz
aW5nIDo6bGxyaW50ZjsKICB1c2luZyA6OmxscmludGw7CgogIHVzaW5nIDo6bGxyb3VuZDsKICB1
c2luZyA6Omxscm91bmRmOwogIHVzaW5nIDo6bGxyb3VuZGw7CgogIHVzaW5nIDo6bG9nMXA7CiAg
dXNpbmcgOjpsb2cxcGY7CiAgdXNpbmcgOjpsb2cxcGw7CgogIHVzaW5nIDo6bG9nMjsKICB1c2lu
ZyA6OmxvZzJmOwogIHVzaW5nIDo6bG9nMmw7CgogIHVzaW5nIDo6bG9nYjsKICB1c2luZyA6Omxv
Z2JmOwogIHVzaW5nIDo6bG9nYmw7CgogIHVzaW5nIDo6bHJpbnQ7CiAgdXNpbmcgOjpscmludGY7
CiAgdXNpbmcgOjpscmludGw7CgogIHVzaW5nIDo6bHJvdW5kOwogIHVzaW5nIDo6bHJvdW5kZjsK
ICB1c2luZyA6Omxyb3VuZGw7CgogIHVzaW5nIDo6bmFuOwogIHVzaW5nIDo6bmFuZjsKICB1c2lu
ZyA6Om5hbmw7CgogIHVzaW5nIDo6bmVhcmJ5aW50OwogIHVzaW5nIDo6bmVhcmJ5aW50ZjsKICB1
c2luZyA6Om5lYXJieWludGw7CgogIHVzaW5nIDo6bmV4dGFmdGVyOwogIHVzaW5nIDo6bmV4dGFm
dGVyZjsKICB1c2luZyA6Om5leHRhZnRlcmw7CgogIHVzaW5nIDo6bmV4dHRvd2FyZDsKICB1c2lu
ZyA6Om5leHR0b3dhcmRmOwogIHVzaW5nIDo6bmV4dHRvd2FyZGw7CgogIHVzaW5nIDo6cmVtYWlu
ZGVyOwogIHVzaW5nIDo6cmVtYWluZGVyZjsKICB1c2luZyA6OnJlbWFpbmRlcmw7CgogIHVzaW5n
IDo6cmVtcXVvOwogIHVzaW5nIDo6cmVtcXVvZjsKICB1c2luZyA6OnJlbXF1b2w7CgogIHVzaW5n
IDo6cmludDsKICB1c2luZyA6OnJpbnRmOwogIHVzaW5nIDo6cmludGw7CgogIHVzaW5nIDo6cm91
bmQ7CiAgdXNpbmcgOjpyb3VuZGY7CiAgdXNpbmcgOjpyb3VuZGw7CgogIHVzaW5nIDo6c2NhbGJs
bjsKICB1c2luZyA6OnNjYWxibG5mOwogIHVzaW5nIDo6c2NhbGJsbmw7CgogIHVzaW5nIDo6c2Nh
bGJuOwogIHVzaW5nIDo6c2NhbGJuZjsKICB1c2luZyA6OnNjYWxibmw7CgogIHVzaW5nIDo6dGdh
bW1hOwogIHVzaW5nIDo6dGdhbW1hZjsKICB1c2luZyA6OnRnYW1tYWw7CgogIHVzaW5nIDo6dHJ1
bmM7CiAgdXNpbmcgOjp0cnVuY2Y7CiAgdXNpbmcgOjp0cnVuY2w7CgoKICBjb25zdGV4cHIgZmxv
YXQKICBhY29zaChmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2Fjb3NoZihfX3gpOyB9
CgogIGNvbnN0ZXhwciBsb25nIGRvdWJsZQogIGFjb3NoKGxvbmcgZG91YmxlIF9feCkKICB7IHJl
dHVybiBfX2J1aWx0aW5fYWNvc2hsKF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
ICAgY29uc3RleHByIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2Vy
PF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb3VibGU+OjpfX3R5cGUKICAgIGFjb3NoKF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1
aWx0aW5fYWNvc2goX194KTsgfQoKICBjb25zdGV4cHIgZmxvYXQKICBhc2luaChmbG9hdCBfX3gp
CiAgeyByZXR1cm4gX19idWlsdGluX2FzaW5oZihfX3gpOyB9CgogIGNvbnN0ZXhwciBsb25nIGRv
dWJsZQogIGFzaW5oKGxvbmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fYXNpbmhs
KF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY29uc3RleHByIHR5cGVuYW1l
IF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUK
ICAgIGFzaW5oKF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1aWx0aW5fYXNpbmgoX194KTsgfQoK
ICBjb25zdGV4cHIgZmxvYXQKICBhdGFuaChmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGlu
X2F0YW5oZihfX3gpOyB9CgogIGNvbnN0ZXhwciBsb25nIGRvdWJsZQogIGF0YW5oKGxvbmcgZG91
YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fYXRhbmhsKF9feCk7IH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVf
aWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAgIGF0YW5oKF9UcCBfX3gpCiAg
ICB7IHJldHVybiBfX2J1aWx0aW5fYXRhbmgoX194KTsgfQoKICBjb25zdGV4cHIgZmxvYXQKICBj
YnJ0KGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fY2JydGYoX194KTsgfQoKICBjb25z
dGV4cHIgbG9uZyBkb3VibGUKICBjYnJ0KGxvbmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1
aWx0aW5fY2JydGwoX194KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjb25zdGV4
cHIgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192
YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJs
ZT46Ol9fdHlwZQogICAgY2JydChfVHAgX194KQogICAgeyByZXR1cm4gX19idWlsdGluX2NicnQo
X194KTsgfQoKICBjb25zdGV4cHIgZmxvYXQKICBjb3B5c2lnbihmbG9hdCBfX3gsIGZsb2F0IF9f
eSkKICB7IHJldHVybiBfX2J1aWx0aW5fY29weXNpZ25mKF9feCwgX195KTsgfQoKICBjb25zdGV4
cHIgbG9uZyBkb3VibGUKICBjb3B5c2lnbihsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9f
eSkKICB7IHJldHVybiBfX2J1aWx0aW5fY29weXNpZ25sKF9feCwgX195KTsgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9VcD4KICAgIGNvbnN0ZXhwciB0eXBlbmFtZSBfX2du
dV9jeHg6Ol9fcHJvbW90ZV8yPF9UcCwgX1VwPjo6X190eXBlCiAgICBjb3B5c2lnbihfVHAgX194
LCBfVXAgX195KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fZ251X2N4eDo6X19wcm9t
b3RlXzI8X1RwLCBfVXA+OjpfX3R5cGUgX190eXBlOwogICAgICByZXR1cm4gY29weXNpZ24oX190
eXBlKF9feCksIF9fdHlwZShfX3kpKTsKICAgIH0KCiAgY29uc3RleHByIGZsb2F0CiAgZXJmKGZs
b2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fZXJmZihfX3gpOyB9CgogIGNvbnN0ZXhwciBs
b25nIGRvdWJsZQogIGVyZihsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2Vy
ZmwoX194KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjb25zdGV4cHIgdHlwZW5h
bWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZT46Ol9fdHlw
ZQogICAgZXJmKF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1aWx0aW5fZXJmKF9feCk7IH0KCiAg
Y29uc3RleHByIGZsb2F0CiAgZXJmYyhmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2Vy
ZmNmKF9feCk7IH0KCiAgY29uc3RleHByIGxvbmcgZG91YmxlCiAgZXJmYyhsb25nIGRvdWJsZSBf
X3gpCiAgeyByZXR1cm4gX19idWlsdGluX2VyZmNsKF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19p
c19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAgIGVyZmMoX1RwIF9feCkKICAgIHsgcmV0
dXJuIF9fYnVpbHRpbl9lcmZjKF9feCk7IH0KCiAgY29uc3RleHByIGZsb2F0CiAgZXhwMihmbG9h
dCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2V4cDJmKF9feCk7IH0KCiAgY29uc3RleHByIGxv
bmcgZG91YmxlCiAgZXhwMihsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2V4
cDJsKF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY29uc3RleHByIHR5cGVu
YW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5
cGUKICAgIGV4cDIoX1RwIF9feCkKICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9leHAyKF9feCk7IH0K
CiAgY29uc3RleHByIGZsb2F0CiAgZXhwbTEoZmxvYXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRp
bl9leHBtMWYoX194KTsgfQoKICBjb25zdGV4cHIgbG9uZyBkb3VibGUKICBleHBtMShsb25nIGRv
dWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2V4cG0xbChfX3gpOyB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4KICAgIGNvbnN0ZXhwciB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxl
X2lmPF9faXNfaW50ZWdlcjxfVHA+OjpfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZG91YmxlPjo6X190eXBlCiAgICBleHBtMShfVHAgX194KQog
ICAgeyByZXR1cm4gX19idWlsdGluX2V4cG0xKF9feCk7IH0KCiAgY29uc3RleHByIGZsb2F0CiAg
ZmRpbShmbG9hdCBfX3gsIGZsb2F0IF9feSkKICB7IHJldHVybiBfX2J1aWx0aW5fZmRpbWYoX194
LCBfX3kpOyB9CgogIGNvbnN0ZXhwciBsb25nIGRvdWJsZQogIGZkaW0obG9uZyBkb3VibGUgX194
LCBsb25nIGRvdWJsZSBfX3kpCiAgeyByZXR1cm4gX19idWlsdGluX2ZkaW1sKF9feCwgX195KTsg
fQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9VcD4KICAgIGNvbnN0ZXhwciB0
eXBlbmFtZSBfX2dudV9jeHg6Ol9fcHJvbW90ZV8yPF9UcCwgX1VwPjo6X190eXBlCiAgICBmZGlt
KF9UcCBfX3gsIF9VcCBfX3kpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19nbnVfY3h4
OjpfX3Byb21vdGVfMjxfVHAsIF9VcD46Ol9fdHlwZSBfX3R5cGU7CiAgICAgIHJldHVybiBmZGlt
KF9fdHlwZShfX3gpLCBfX3R5cGUoX195KSk7CiAgICB9CgogIGNvbnN0ZXhwciBmbG9hdAogIGZt
YShmbG9hdCBfX3gsIGZsb2F0IF9feSwgZmxvYXQgX196KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9m
bWFmKF9feCwgX195LCBfX3opOyB9CgogIGNvbnN0ZXhwciBsb25nIGRvdWJsZQogIGZtYShsb25n
IGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX196KQogIHsgcmV0dXJu
IF9fYnVpbHRpbl9mbWFsKF9feCwgX195LCBfX3opOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cCwgdHlwZW5hbWUgX1VwLCB0eXBlbmFtZSBfVnA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUgX19n
bnVfY3h4OjpfX3Byb21vdGVfMzxfVHAsIF9VcCwgX1ZwPjo6X190eXBlCiAgICBmbWEoX1RwIF9f
eCwgX1VwIF9feSwgX1ZwIF9feikKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2dudV9j
eHg6Ol9fcHJvbW90ZV8zPF9UcCwgX1VwLCBfVnA+OjpfX3R5cGUgX190eXBlOwogICAgICByZXR1
cm4gZm1hKF9fdHlwZShfX3gpLCBfX3R5cGUoX195KSwgX190eXBlKF9feikpOwogICAgfQoKICBj
b25zdGV4cHIgZmxvYXQKICBmbWF4KGZsb2F0IF9feCwgZmxvYXQgX195KQogIHsgcmV0dXJuIF9f
YnVpbHRpbl9mbWF4ZihfX3gsIF9feSk7IH0KCiAgY29uc3RleHByIGxvbmcgZG91YmxlCiAgZm1h
eChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkKICB7IHJldHVybiBfX2J1aWx0aW5f
Zm1heGwoX194LCBfX3kpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1Vw
PgogICAgY29uc3RleHByIHR5cGVuYW1lIF9fZ251X2N4eDo6X19wcm9tb3RlXzI8X1RwLCBfVXA+
OjpfX3R5cGUKICAgIGZtYXgoX1RwIF9feCwgX1VwIF9feSkKICAgIHsKICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBfX2dudV9jeHg6Ol9fcHJvbW90ZV8yPF9UcCwgX1VwPjo6X190eXBlIF9fdHlwZTsK
ICAgICAgcmV0dXJuIGZtYXgoX190eXBlKF9feCksIF9fdHlwZShfX3kpKTsKICAgIH0KCiAgY29u
c3RleHByIGZsb2F0CiAgZm1pbihmbG9hdCBfX3gsIGZsb2F0IF9feSkKICB7IHJldHVybiBfX2J1
aWx0aW5fZm1pbmYoX194LCBfX3kpOyB9CgogIGNvbnN0ZXhwciBsb25nIGRvdWJsZQogIGZtaW4o
bG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpCiAgeyByZXR1cm4gX19idWlsdGluX2Zt
aW5sKF9feCwgX195KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9VcD4K
ICAgIGNvbnN0ZXhwciB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fcHJvbW90ZV8yPF9UcCwgX1VwPjo6
X190eXBlCiAgICBmbWluKF9UcCBfX3gsIF9VcCBfX3kpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgX19nbnVfY3h4OjpfX3Byb21vdGVfMjxfVHAsIF9VcD46Ol9fdHlwZSBfX3R5cGU7CiAg
ICAgIHJldHVybiBmbWluKF9fdHlwZShfX3gpLCBfX3R5cGUoX195KSk7CiAgICB9CgogIGNvbnN0
ZXhwciBmbG9hdAogIGh5cG90KGZsb2F0IF9feCwgZmxvYXQgX195KQogIHsgcmV0dXJuIF9fYnVp
bHRpbl9oeXBvdGYoX194LCBfX3kpOyB9CgogIGNvbnN0ZXhwciBsb25nIGRvdWJsZQogIGh5cG90
KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9o
eXBvdGwoX194LCBfX3kpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1Vw
PgogICAgY29uc3RleHByIHR5cGVuYW1lIF9fZ251X2N4eDo6X19wcm9tb3RlXzI8X1RwLCBfVXA+
OjpfX3R5cGUKICAgIGh5cG90KF9UcCBfX3gsIF9VcCBfX3kpCiAgICB7CiAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgX19nbnVfY3h4OjpfX3Byb21vdGVfMjxfVHAsIF9VcD46Ol9fdHlwZSBfX3R5cGU7
CiAgICAgIHJldHVybiBoeXBvdChfX3R5cGUoX194KSwgX190eXBlKF9feSkpOwogICAgfQoKICBj
b25zdGV4cHIgaW50CiAgaWxvZ2IoZmxvYXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9pbG9n
YmYoX194KTsgfQoKICBjb25zdGV4cHIgaW50CiAgaWxvZ2IobG9uZyBkb3VibGUgX194KQogIHsg
cmV0dXJuIF9fYnVpbHRpbl9pbG9nYmwoX194KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
CiAgICBjb25zdGV4cHIKICAgIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19p
bnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludD46Ol9fdHlwZQogICAgaWxvZ2IoX1RwIF9feCkKICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9p
bG9nYihfX3gpOyB9CgogIGNvbnN0ZXhwciBmbG9hdAogIGxnYW1tYShmbG9hdCBfX3gpCiAgeyBy
ZXR1cm4gX19idWlsdGluX2xnYW1tYWYoX194KTsgfQoKICBjb25zdGV4cHIgbG9uZyBkb3VibGUK
ICBsZ2FtbWEobG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9sZ2FtbWFsKF9f
eCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9f
Z251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAg
IGxnYW1tYShfVHAgX194KQogICAgeyByZXR1cm4gX19idWlsdGluX2xnYW1tYShfX3gpOyB9Cgog
IGNvbnN0ZXhwciBsb25nIGxvbmcKICBsbHJpbnQoZmxvYXQgX194KQogIHsgcmV0dXJuIF9fYnVp
bHRpbl9sbHJpbnRmKF9feCk7IH0KCiAgY29uc3RleHByIGxvbmcgbG9uZwogIGxscmludChsb25n
IGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2xscmludGwoX194KTsgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2Vu
YWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZz46Ol9fdHlwZQogICAgbGxyaW50KF9U
cCBfX3gpCiAgICB7IHJldHVybiBfX2J1aWx0aW5fbGxyaW50KF9feCk7IH0KCiAgY29uc3RleHBy
IGxvbmcgbG9uZwogIGxscm91bmQoZmxvYXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9sbHJv
dW5kZihfX3gpOyB9CgogIGNvbnN0ZXhwciBsb25nIGxvbmcKICBsbHJvdW5kKGxvbmcgZG91Ymxl
IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fbGxyb3VuZGwoX194KTsgfQoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9p
ZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZz46Ol9fdHlwZQogICAgbGxyb3VuZChfVHAgX194
KQogICAgeyByZXR1cm4gX19idWlsdGluX2xscm91bmQoX194KTsgfQoKICBjb25zdGV4cHIgZmxv
YXQKICBsb2cxcChmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2xvZzFwZihfX3gpOyB9
CgogIGNvbnN0ZXhwciBsb25nIGRvdWJsZQogIGxvZzFwKGxvbmcgZG91YmxlIF9feCkKICB7IHJl
dHVybiBfX2J1aWx0aW5fbG9nMXBsKF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
ICAgY29uc3RleHByIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2Vy
PF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb3VibGU+OjpfX3R5cGUKICAgIGxvZzFwKF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1
aWx0aW5fbG9nMXAoX194KTsgfQoKCiAgY29uc3RleHByIGZsb2F0CiAgbG9nMihmbG9hdCBfX3gp
CiAgeyByZXR1cm4gX19idWlsdGluX2xvZzJmKF9feCk7IH0KCiAgY29uc3RleHByIGxvbmcgZG91
YmxlCiAgbG9nMihsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2xvZzJsKF9f
eCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9f
Z251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAg
IGxvZzIoX1RwIF9feCkKICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9sb2cyKF9feCk7IH0KCiAgY29u
c3RleHByIGZsb2F0CiAgbG9nYihmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2xvZ2Jm
KF9feCk7IH0KCiAgY29uc3RleHByIGxvbmcgZG91YmxlCiAgbG9nYihsb25nIGRvdWJsZSBfX3gp
CiAgeyByZXR1cm4gX19idWlsdGluX2xvZ2JsKF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgY29uc3RleHByIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19p
bnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAgIGxvZ2IoX1RwIF9feCkKICAgIHsgcmV0dXJu
IF9fYnVpbHRpbl9sb2diKF9feCk7IH0KCiAgY29uc3RleHByIGxvbmcKICBscmludChmbG9hdCBf
X3gpCiAgeyByZXR1cm4gX19idWlsdGluX2xyaW50ZihfX3gpOyB9CgogIGNvbnN0ZXhwciBsb25n
CiAgbHJpbnQobG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9scmludGwoX194
KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUgX19n
bnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmc+OjpfX3R5cGUKICAgIGxy
aW50KF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1aWx0aW5fbHJpbnQoX194KTsgfQoKICBjb25z
dGV4cHIgbG9uZwogIGxyb3VuZChmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2xyb3Vu
ZGYoX194KTsgfQoKICBjb25zdGV4cHIgbG9uZwogIGxyb3VuZChsb25nIGRvdWJsZSBfX3gpCiAg
eyByZXR1cm4gX19idWlsdGluX2xyb3VuZGwoX194KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2lu
dGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvbmc+OjpfX3R5cGUKICAgIGxyb3VuZChfVHAgX194KQogICAgeyByZXR1cm4g
X19idWlsdGluX2xyb3VuZChfX3gpOyB9CgogIGNvbnN0ZXhwciBmbG9hdAogIG5lYXJieWludChm
bG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX25lYXJieWludGYoX194KTsgfQoKICBjb25z
dGV4cHIgbG9uZyBkb3VibGUKICBuZWFyYnlpbnQobG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJu
IF9fYnVpbHRpbl9uZWFyYnlpbnRsKF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
ICAgY29uc3RleHByIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2Vy
PF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb3VibGU+OjpfX3R5cGUKICAgIG5lYXJieWludChfVHAgX194KQogICAgeyByZXR1cm4g
X19idWlsdGluX25lYXJieWludChfX3gpOyB9CgogIGNvbnN0ZXhwciBmbG9hdAogIG5leHRhZnRl
cihmbG9hdCBfX3gsIGZsb2F0IF9feSkKICB7IHJldHVybiBfX2J1aWx0aW5fbmV4dGFmdGVyZihf
X3gsIF9feSk7IH0KCiAgY29uc3RleHByIGxvbmcgZG91YmxlCiAgbmV4dGFmdGVyKGxvbmcgZG91
YmxlIF9feCwgbG9uZyBkb3VibGUgX195KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9uZXh0YWZ0ZXJs
KF9feCwgX195KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9VcD4KICAg
IGNvbnN0ZXhwciB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fcHJvbW90ZV8yPF9UcCwgX1VwPjo6X190
eXBlCiAgICBuZXh0YWZ0ZXIoX1RwIF9feCwgX1VwIF9feSkKICAgIHsKICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBfX2dudV9jeHg6Ol9fcHJvbW90ZV8yPF9UcCwgX1VwPjo6X190eXBlIF9fdHlwZTsK
ICAgICAgcmV0dXJuIG5leHRhZnRlcihfX3R5cGUoX194KSwgX190eXBlKF9feSkpOwogICAgfQoK
ICBjb25zdGV4cHIgZmxvYXQKICBuZXh0dG93YXJkKGZsb2F0IF9feCwgbG9uZyBkb3VibGUgX195
KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9uZXh0dG93YXJkZihfX3gsIF9feSk7IH0KCiAgY29uc3Rl
eHByIGxvbmcgZG91YmxlCiAgbmV4dHRvd2FyZChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91Ymxl
IF9feSkKICB7IHJldHVybiBfX2J1aWx0aW5fbmV4dHRvd2FyZGwoX194LCBfX3kpOyB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGNvbnN0ZXhwciB0eXBlbmFtZSBfX2dudV9jeHg6Ol9f
ZW5hYmxlX2lmPF9faXNfaW50ZWdlcjxfVHA+OjpfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlPjo6X190eXBlCiAgICBuZXh0dG93YXJk
KF9UcCBfX3gsIGxvbmcgZG91YmxlIF9feSkKICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9uZXh0dG93
YXJkKF9feCwgX195KTsgfQoKICBjb25zdGV4cHIgZmxvYXQKICByZW1haW5kZXIoZmxvYXQgX194
LCBmbG9hdCBfX3kpCiAgeyByZXR1cm4gX19idWlsdGluX3JlbWFpbmRlcmYoX194LCBfX3kpOyB9
CgogIGNvbnN0ZXhwciBsb25nIGRvdWJsZQogIHJlbWFpbmRlcihsb25nIGRvdWJsZSBfX3gsIGxv
bmcgZG91YmxlIF9feSkKICB7IHJldHVybiBfX2J1aWx0aW5fcmVtYWluZGVybChfX3gsIF9feSk7
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXA+CiAgICBjb25zdGV4cHIg
dHlwZW5hbWUgX19nbnVfY3h4OjpfX3Byb21vdGVfMjxfVHAsIF9VcD46Ol9fdHlwZQogICAgcmVt
YWluZGVyKF9UcCBfX3gsIF9VcCBfX3kpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19n
bnVfY3h4OjpfX3Byb21vdGVfMjxfVHAsIF9VcD46Ol9fdHlwZSBfX3R5cGU7CiAgICAgIHJldHVy
biByZW1haW5kZXIoX190eXBlKF9feCksIF9fdHlwZShfX3kpKTsKICAgIH0KCiAgaW5saW5lIGZs
b2F0CiAgcmVtcXVvKGZsb2F0IF9feCwgZmxvYXQgX195LCBpbnQqIF9fcHF1bykKICB7IHJldHVy
biBfX2J1aWx0aW5fcmVtcXVvZihfX3gsIF9feSwgX19wcXVvKTsgfQoKICBpbmxpbmUgbG9uZyBk
b3VibGUKICByZW1xdW8obG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3ksIGludCogX19w
cXVvKQogIHsgcmV0dXJuIF9fYnVpbHRpbl9yZW1xdW9sKF9feCwgX195LCBfX3BxdW8pOyB9Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1VwPgogICAgaW5saW5lIHR5cGVuYW1l
IF9fZ251X2N4eDo6X19wcm9tb3RlXzI8X1RwLCBfVXA+OjpfX3R5cGUKICAgIHJlbXF1byhfVHAg
X194LCBfVXAgX195LCBpbnQqIF9fcHF1bykKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBf
X2dudV9jeHg6Ol9fcHJvbW90ZV8yPF9UcCwgX1VwPjo6X190eXBlIF9fdHlwZTsKICAgICAgcmV0
dXJuIHJlbXF1byhfX3R5cGUoX194KSwgX190eXBlKF9feSksIF9fcHF1byk7CiAgICB9CgogIGNv
bnN0ZXhwciBmbG9hdAogIHJpbnQoZmxvYXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9yaW50
ZihfX3gpOyB9CgogIGNvbnN0ZXhwciBsb25nIGRvdWJsZQogIHJpbnQobG9uZyBkb3VibGUgX194
KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9yaW50bChfX3gpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcD4KICAgIGNvbnN0ZXhwciB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNf
aW50ZWdlcjxfVHA+OjpfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG91YmxlPjo6X190eXBlCiAgICByaW50KF9UcCBfX3gpCiAgICB7IHJldHVy
biBfX2J1aWx0aW5fcmludChfX3gpOyB9CgogIGNvbnN0ZXhwciBmbG9hdAogIHJvdW5kKGZsb2F0
IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fcm91bmRmKF9feCk7IH0KCiAgY29uc3RleHByIGxv
bmcgZG91YmxlCiAgcm91bmQobG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9y
b3VuZGwoX194KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjb25zdGV4cHIgdHlw
ZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZT46Ol9f
dHlwZQogICAgcm91bmQoX1RwIF9feCkKICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9yb3VuZChfX3gp
OyB9CgogIGNvbnN0ZXhwciBmbG9hdAogIHNjYWxibG4oZmxvYXQgX194LCBsb25nIF9fZXgpCiAg
eyByZXR1cm4gX19idWlsdGluX3NjYWxibG5mKF9feCwgX19leCk7IH0KCiAgY29uc3RleHByIGxv
bmcgZG91YmxlCiAgc2NhbGJsbihsb25nIGRvdWJsZSBfX3gsIGxvbmcgX19leCkKICB7IHJldHVy
biBfX2J1aWx0aW5fc2NhbGJsbmwoX194LCBfX2V4KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2lu
dGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvdWJsZT46Ol9fdHlwZQogICAgc2NhbGJsbihfVHAgX194LCBsb25nIF9fZXgp
CiAgICB7IHJldHVybiBfX2J1aWx0aW5fc2NhbGJsbihfX3gsIF9fZXgpOyB9CgogIGNvbnN0ZXhw
ciBmbG9hdAogIHNjYWxibihmbG9hdCBfX3gsIGludCBfX2V4KQogIHsgcmV0dXJuIF9fYnVpbHRp
bl9zY2FsYm5mKF9feCwgX19leCk7IH0KCiAgY29uc3RleHByIGxvbmcgZG91YmxlCiAgc2NhbGJu
KGxvbmcgZG91YmxlIF9feCwgaW50IF9fZXgpCiAgeyByZXR1cm4gX19idWlsdGluX3NjYWxibmwo
X194LCBfX2V4KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjb25zdGV4cHIgdHlw
ZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZT46Ol9f
dHlwZQogICAgc2NhbGJuKF9UcCBfX3gsIGludCBfX2V4KQogICAgeyByZXR1cm4gX19idWlsdGlu
X3NjYWxibihfX3gsIF9fZXgpOyB9CgogIGNvbnN0ZXhwciBmbG9hdAogIHRnYW1tYShmbG9hdCBf
X3gpCiAgeyByZXR1cm4gX19idWlsdGluX3RnYW1tYWYoX194KTsgfQoKICBjb25zdGV4cHIgbG9u
ZyBkb3VibGUKICB0Z2FtbWEobG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl90
Z2FtbWFsKF9feCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY29uc3RleHByIHR5
cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGU+Ojpf
X3R5cGUKICAgIHRnYW1tYShfVHAgX194KQogICAgeyByZXR1cm4gX19idWlsdGluX3RnYW1tYShf
X3gpOyB9CgogIGNvbnN0ZXhwciBmbG9hdAogIHRydW5jKGZsb2F0IF9feCkKICB7IHJldHVybiBf
X2J1aWx0aW5fdHJ1bmNmKF9feCk7IH0KCiAgY29uc3RleHByIGxvbmcgZG91YmxlCiAgdHJ1bmMo
bG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl90cnVuY2woX194KTsgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjb25zdGV4cHIgdHlwZW5hbWUgX19nbnVfY3h4Ojpf
X2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZT46Ol9fdHlwZQogICAgdHJ1bmMoX1Rw
IF9feCkKICAgIHsgcmV0dXJuIF9fYnVpbHRpbl90cnVuYyhfX3gpOyB9CgoKfQojIDM5ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljgu
MS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvcmFuZG9tIiAyIDMK
IyAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvY3N0
ZGlvIiAxIDMKIyAzOSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOC4xL2NzdGRpbyIgMwogICAgICAgCiMgNDAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9jc3RkaW8iIDMKIyA0MCAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL3JhbmRvbSIgMiAzCiMgMSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2NzdGRsaWIiIDEgMwojIDM5
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvY3N0ZGxp
YiIgMwogICAgICAgCiMgNDAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjguMS9jc3RkbGliIiAzCiMgNDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9yYW5kb20iIDIgMwojIDUwICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvcmFuZG9tIiAzCiMgMSAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvcmFuZG9tLmgiIDEgMwoj
IDM0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0
cy9yYW5kb20uaCIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjguMS92ZWN0b3IiIDEgMwojIDU4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC44LjEvdmVjdG9yIiAzCiAgICAgICAKIyA1OSAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL3ZlY3RvciIgMwoKCgoKCiMgMSAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3Rs
X3ZlY3Rvci5oIiAxIDMKIyA2NiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOC4xL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1
dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9jPgogICAgc3RydWN0IF9WZWN0b3JfYmFzZQogICAgewog
ICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fZ251X2N4eDo6X19hbGxvY190cmFpdHM8X0FsbG9jPjo6
dGVtcGxhdGUKICAgICAgICByZWJpbmQ8X1RwPjo6b3RoZXIgX1RwX2FsbG9jX3R5cGU7CiAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2FsbG9jX3RyYWl0czxfVHBfYWxsb2NfdHlw
ZT46OnBvaW50ZXIKICAgICAgICBwb2ludGVyOwoKICAgICAgc3RydWN0IF9WZWN0b3JfaW1wbAog
ICAgICA6IHB1YmxpYyBfVHBfYWxsb2NfdHlwZQogICAgICB7CiBwb2ludGVyIF9NX3N0YXJ0Owog
cG9pbnRlciBfTV9maW5pc2g7CiBwb2ludGVyIF9NX2VuZF9vZl9zdG9yYWdlOwoKIF9WZWN0b3Jf
aW1wbCgpCiA6IF9UcF9hbGxvY190eXBlKCksIF9NX3N0YXJ0KDApLCBfTV9maW5pc2goMCksIF9N
X2VuZF9vZl9zdG9yYWdlKDApCiB7IH0KCiBfVmVjdG9yX2ltcGwoX1RwX2FsbG9jX3R5cGUgY29u
c3QmIF9fYSkKIDogX1RwX2FsbG9jX3R5cGUoX19hKSwgX01fc3RhcnQoMCksIF9NX2ZpbmlzaCgw
KSwgX01fZW5kX29mX3N0b3JhZ2UoMCkKIHsgfQoKCiBfVmVjdG9yX2ltcGwoX1RwX2FsbG9jX3R5
cGUmJiBfX2EpCiA6IF9UcF9hbGxvY190eXBlKHN0ZDo6bW92ZShfX2EpKSwKICAgX01fc3RhcnQo
MCksIF9NX2ZpbmlzaCgwKSwgX01fZW5kX29mX3N0b3JhZ2UoMCkKIHsgfQoKCiB2b2lkIF9NX3N3
YXBfZGF0YShfVmVjdG9yX2ltcGwmIF9feCkKIHsKICAgc3RkOjpzd2FwKF9NX3N0YXJ0LCBfX3gu
X01fc3RhcnQpOwogICBzdGQ6OnN3YXAoX01fZmluaXNoLCBfX3guX01fZmluaXNoKTsKICAgc3Rk
Ojpzd2FwKF9NX2VuZF9vZl9zdG9yYWdlLCBfX3guX01fZW5kX29mX3N0b3JhZ2UpOwogfQogICAg
ICB9OwoKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBfQWxsb2MgYWxsb2NhdG9yX3R5cGU7Cgog
ICAgICBfVHBfYWxsb2NfdHlwZSYKICAgICAgX01fZ2V0X1RwX2FsbG9jYXRvcigpIG5vZXhjZXB0
CiAgICAgIHsgcmV0dXJuICpzdGF0aWNfY2FzdDxfVHBfYWxsb2NfdHlwZSo+KCZ0aGlzLT5fTV9p
bXBsKTsgfQoKICAgICAgY29uc3QgX1RwX2FsbG9jX3R5cGUmCiAgICAgIF9NX2dldF9UcF9hbGxv
Y2F0b3IoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiAqc3RhdGljX2Nhc3Q8Y29uc3Qg
X1RwX2FsbG9jX3R5cGUqPigmdGhpcy0+X01faW1wbCk7IH0KCiAgICAgIGFsbG9jYXRvcl90eXBl
CiAgICAgIGdldF9hbGxvY2F0b3IoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBhbGxv
Y2F0b3JfdHlwZShfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOyB9CgogICAgICBfVmVjdG9yX2Jhc2Uo
KQogICAgICA6IF9NX2ltcGwoKSB7IH0KCiAgICAgIF9WZWN0b3JfYmFzZShjb25zdCBhbGxvY2F0
b3JfdHlwZSYgX19hKQogICAgICA6IF9NX2ltcGwoX19hKSB7IH0KCiAgICAgIF9WZWN0b3JfYmFz
ZShzaXplX3QgX19uKQogICAgICA6IF9NX2ltcGwoKQogICAgICB7IF9NX2NyZWF0ZV9zdG9yYWdl
KF9fbik7IH0KCiAgICAgIF9WZWN0b3JfYmFzZShzaXplX3QgX19uLCBjb25zdCBhbGxvY2F0b3Jf
dHlwZSYgX19hKQogICAgICA6IF9NX2ltcGwoX19hKQogICAgICB7IF9NX2NyZWF0ZV9zdG9yYWdl
KF9fbik7IH0KCgogICAgICBfVmVjdG9yX2Jhc2UoX1RwX2FsbG9jX3R5cGUmJiBfX2EpCiAgICAg
IDogX01faW1wbChzdGQ6Om1vdmUoX19hKSkgeyB9CgogICAgICBfVmVjdG9yX2Jhc2UoX1ZlY3Rv
cl9iYXNlJiYgX194KQogICAgICA6IF9NX2ltcGwoc3RkOjptb3ZlKF9feC5fTV9nZXRfVHBfYWxs
b2NhdG9yKCkpKQogICAgICB7IHRoaXMtPl9NX2ltcGwuX01fc3dhcF9kYXRhKF9feC5fTV9pbXBs
KTsgfQoKICAgICAgX1ZlY3Rvcl9iYXNlKF9WZWN0b3JfYmFzZSYmIF9feCwgY29uc3QgYWxsb2Nh
dG9yX3R5cGUmIF9fYSkKICAgICAgOiBfTV9pbXBsKF9fYSkKICAgICAgewogaWYgKF9feC5nZXRf
YWxsb2NhdG9yKCkgPT0gX19hKQogICB0aGlzLT5fTV9pbXBsLl9NX3N3YXBfZGF0YShfX3guX01f
aW1wbCk7CiBlbHNlCiAgIHsKICAgICBzaXplX3QgX19uID0gX194Ll9NX2ltcGwuX01fZmluaXNo
IC0gX194Ll9NX2ltcGwuX01fc3RhcnQ7CiAgICAgX01fY3JlYXRlX3N0b3JhZ2UoX19uKTsKICAg
fQogICAgICB9CgoKICAgICAgfl9WZWN0b3JfYmFzZSgpCiAgICAgIHsgX01fZGVhbGxvY2F0ZSh0
aGlzLT5fTV9pbXBsLl9NX3N0YXJ0LCB0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlCiAg
ICAgICAgLSB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0KTsgfQoKICAgIHB1YmxpYzoKICAgICAgX1Zl
Y3Rvcl9pbXBsIF9NX2ltcGw7CgogICAgICBwb2ludGVyCiAgICAgIF9NX2FsbG9jYXRlKHNpemVf
dCBfX24pCiAgICAgIHsgcmV0dXJuIF9fbiAhPSAwID8gX01faW1wbC5hbGxvY2F0ZShfX24pIDog
MDsgfQoKICAgICAgdm9pZAogICAgICBfTV9kZWFsbG9jYXRlKHBvaW50ZXIgX19wLCBzaXplX3Qg
X19uKQogICAgICB7CiBpZiAoX19wKQogICBfTV9pbXBsLmRlYWxsb2NhdGUoX19wLCBfX24pOwog
ICAgICB9CgogICAgcHJpdmF0ZToKICAgICAgdm9pZAogICAgICBfTV9jcmVhdGVfc3RvcmFnZShz
aXplX3QgX19uKQogICAgICB7CiB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0ID0gdGhpcy0+X01fYWxs
b2NhdGUoX19uKTsKIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoID0gdGhpcy0+X01faW1wbC5fTV9z
dGFydDsKIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UgPSB0aGlzLT5fTV9pbXBsLl9N
X3N0YXJ0ICsgX19uOwogICAgICB9CiAgICB9OwojIDIwOSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQWxsb2MgPSBzdGQ6OmFsbG9jYXRvcjxfVHA+ID4K
ICAgIGNsYXNzIHZlY3RvciA6IHByb3RlY3RlZCBfVmVjdG9yX2Jhc2U8X1RwLCBfQWxsb2M+CiAg
ICB7CgogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9BbGxvYzo6dmFsdWVfdHlwZSBfQWxsb2NfdmFs
dWVfdHlwZTsKICAgICAKICAgICAKCiAgICAgIHR5cGVkZWYgX1ZlY3Rvcl9iYXNlPF9UcCwgX0Fs
bG9jPiBfQmFzZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQmFzZTo6X1RwX2FsbG9jX3R5cGUg
X1RwX2FsbG9jX3R5cGU7CiAgICAgIHR5cGVkZWYgX19nbnVfY3h4OjpfX2FsbG9jX3RyYWl0czxf
VHBfYWxsb2NfdHlwZT4gX0FsbG9jX3RyYWl0czsKCiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYg
X1RwIHZhbHVlX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0Jhc2U6OnBvaW50ZXIgcG9p
bnRlcjsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQWxsb2NfdHJhaXRzOjpjb25zdF9wb2ludGVy
IGNvbnN0X3BvaW50ZXI7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jX3RyYWl0czo6cmVm
ZXJlbmNlIHJlZmVyZW5jZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQWxsb2NfdHJhaXRzOjpj
b25zdF9yZWZlcmVuY2UgY29uc3RfcmVmZXJlbmNlOwogICAgICB0eXBlZGVmIF9fZ251X2N4eDo6
X19ub3JtYWxfaXRlcmF0b3I8cG9pbnRlciwgdmVjdG9yPiBpdGVyYXRvcjsKICAgICAgdHlwZWRl
ZiBfX2dudV9jeHg6Ol9fbm9ybWFsX2l0ZXJhdG9yPGNvbnN0X3BvaW50ZXIsIHZlY3Rvcj4KICAg
ICAgY29uc3RfaXRlcmF0b3I7CiAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGNv
bnN0X2l0ZXJhdG9yPiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwogICAgICB0eXBlZGVmIHN0ZDo6
cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj4gcmV2ZXJzZV9pdGVyYXRvcjsKICAgICAgdHlwZWRl
ZiBzaXplX3Qgc2l6ZV90eXBlOwogICAgICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5
cGU7CiAgICAgIHR5cGVkZWYgX0FsbG9jIGFsbG9jYXRvcl90eXBlOwoKICAgIHByb3RlY3RlZDoK
ICAgICAgdXNpbmcgX0Jhc2U6Ol9NX2FsbG9jYXRlOwogICAgICB1c2luZyBfQmFzZTo6X01fZGVh
bGxvY2F0ZTsKICAgICAgdXNpbmcgX0Jhc2U6Ol9NX2ltcGw7CiAgICAgIHVzaW5nIF9CYXNlOjpf
TV9nZXRfVHBfYWxsb2NhdG9yOwoKICAgIHB1YmxpYzoKCgoKCgogICAgICB2ZWN0b3IoKQogICAg
ICA6IF9CYXNlKCkgeyB9CgoKCgoKICAgICAgZXhwbGljaXQKICAgICAgdmVjdG9yKGNvbnN0IGFs
bG9jYXRvcl90eXBlJiBfX2EpCiAgICAgIDogX0Jhc2UoX19hKSB7IH0KIyAyNjggIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF92ZWN0b3Iu
aCIgMwogICAgICBleHBsaWNpdAogICAgICB2ZWN0b3Ioc2l6ZV90eXBlIF9fbiwgY29uc3QgYWxs
b2NhdG9yX3R5cGUmIF9fYSA9IGFsbG9jYXRvcl90eXBlKCkpCiAgICAgIDogX0Jhc2UoX19uLCBf
X2EpCiAgICAgIHsgX01fZGVmYXVsdF9pbml0aWFsaXplKF9fbik7IH0KIyAyODEgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF92ZWN0b3Iu
aCIgMwogICAgICB2ZWN0b3Ioc2l6ZV90eXBlIF9fbiwgY29uc3QgdmFsdWVfdHlwZSYgX192YWx1
ZSwKICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9fYSA9IGFsbG9jYXRvcl90eXBlKCkpCiAg
ICAgIDogX0Jhc2UoX19uLCBfX2EpCiAgICAgIHsgX01fZmlsbF9pbml0aWFsaXplKF9fbiwgX192
YWx1ZSk7IH0KIyAzMTAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjguMS9iaXRzL3N0bF92ZWN0b3IuaCIgMwogICAgICB2ZWN0b3IoY29uc3QgdmVjdG9yJiBf
X3gpCiAgICAgIDogX0Jhc2UoX194LnNpemUoKSwKICAgICAgICBfQWxsb2NfdHJhaXRzOjpfU19z
ZWxlY3Rfb25fY29weShfX3guX01fZ2V0X1RwX2FsbG9jYXRvcigpKSkKICAgICAgeyB0aGlzLT5f
TV9pbXBsLl9NX2ZpbmlzaCA9CiAgIHN0ZDo6X191bmluaXRpYWxpemVkX2NvcHlfYShfX3guYmVn
aW4oKSwgX194LmVuZCgpLAogICAgICAgICAgdGhpcy0+X01faW1wbC5fTV9zdGFydCwKICAgICAg
ICAgIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiAgICAgIH0KIyAzMjcgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF92ZWN0b3IuaCIgMwog
ICAgICB2ZWN0b3IodmVjdG9yJiYgX194KSBub2V4Y2VwdAogICAgICA6IF9CYXNlKHN0ZDo6bW92
ZShfX3gpKSB7IH0KCgogICAgICB2ZWN0b3IoY29uc3QgdmVjdG9yJiBfX3gsIGNvbnN0IGFsbG9j
YXRvcl90eXBlJiBfX2EpCiAgICAgIDogX0Jhc2UoX194LnNpemUoKSwgX19hKQogICAgICB7IHRo
aXMtPl9NX2ltcGwuX01fZmluaXNoID0KICAgc3RkOjpfX3VuaW5pdGlhbGl6ZWRfY29weV9hKF9f
eC5iZWdpbigpLCBfX3guZW5kKCksCiAgICAgICAgICB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0LAog
ICAgICAgICAgX01fZ2V0X1RwX2FsbG9jYXRvcigpKTsKICAgICAgfQoKCiAgICAgIHZlY3Rvcih2
ZWN0b3ImJiBfX3J2LCBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19tKQogICAgICA6IF9CYXNlKHN0
ZDo6bW92ZShfX3J2KSwgX19tKQogICAgICB7CiBpZiAoX19ydi5nZXRfYWxsb2NhdG9yKCkgIT0g
X19tKQogICB7CiAgICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2ggPQogICAgICAgc3RkOjpfX3Vu
aW5pdGlhbGl6ZWRfbW92ZV9hKF9fcnYuYmVnaW4oKSwgX19ydi5lbmQoKSwKICAgICAgIHRoaXMt
Pl9NX2ltcGwuX01fc3RhcnQsCiAgICAgICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICAgIF9f
cnYuY2xlYXIoKTsKICAgfQogICAgICB9CiMgMzY0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfdmVjdG9yLmgiIDMKICAgICAgdmVjdG9y
KGluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gX19sLAogICAgICBjb25zdCBhbGxvY2F0b3Jf
dHlwZSYgX19hID0gYWxsb2NhdG9yX3R5cGUoKSkKICAgICAgOiBfQmFzZShfX2EpCiAgICAgIHsK
IF9NX3JhbmdlX2luaXRpYWxpemUoX19sLmJlZ2luKCksIF9fbC5lbmQoKSwKICAgICAgIHJhbmRv
bV9hY2Nlc3NfaXRlcmF0b3JfdGFnKCkpOwogICAgICB9CiMgMzkwICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfdmVjdG9yLmgiIDMKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsCiAgICAgICAgdHlwZW5hbWUgPSBz
dGQ6Ol9SZXF1aXJlSW5wdXRJdGVyPF9JbnB1dEl0ZXJhdG9yPj4KICAgICAgICB2ZWN0b3IoX0lu
cHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgICAgIGNvbnN0
IGFsbG9jYXRvcl90eXBlJiBfX2EgPSBhbGxvY2F0b3JfdHlwZSgpKQogOiBfQmFzZShfX2EpCiAg
ICAgICAgeyBfTV9pbml0aWFsaXplX2Rpc3BhdGNoKF9fZmlyc3QsIF9fbGFzdCwgX19mYWxzZV90
eXBlKCkpOyB9CiMgNDE0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC44LjEvYml0cy9zdGxfdmVjdG9yLmgiIDMKICAgICAgfnZlY3RvcigpIG5vZXhjZXB0CiAg
ICAgIHsgc3RkOjpfRGVzdHJveSh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0LCB0aGlzLT5fTV9pbXBs
Ll9NX2ZpbmlzaCwKICAgICAgICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOyB9CiMgNDI2ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljgu
MS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfdmVj
dG9yLmgiIDMKICAgICAgdmVjdG9yJgogICAgICBvcGVyYXRvcj0oY29uc3QgdmVjdG9yJiBfX3gp
OwojIDQzOCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4x
L2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgICAgIHZlY3RvciYKICAgICAgb3BlcmF0b3I9KHZlY3Rv
ciYmIF9feCkgbm9leGNlcHQoX0FsbG9jX3RyYWl0czo6X1Nfbm90aHJvd19tb3ZlKCkpCiAgICAg
IHsKICAgICAgICBjb25zdGV4cHIgYm9vbCBfX21vdmVfc3RvcmFnZSA9CiAgICAgICAgICBfQWxs
b2NfdHJhaXRzOjpfU19wcm9wYWdhdGVfb25fbW92ZV9hc3NpZ24oKQogICAgICAgICAgfHwgX0Fs
bG9jX3RyYWl0czo6X1NfYWx3YXlzX2VxdWFsKCk7CiAgICAgICAgX01fbW92ZV9hc3NpZ24oc3Rk
Ojptb3ZlKF9feCksCiAgICAgICAgICAgICAgICAgICAgICAgaW50ZWdyYWxfY29uc3RhbnQ8Ym9v
bCwgX19tb3ZlX3N0b3JhZ2U+KCkpOwogcmV0dXJuICp0aGlzOwogICAgICB9CiMgNDYwICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljgu
MS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfdmVj
dG9yLmgiIDMKICAgICAgdmVjdG9yJgogICAgICBvcGVyYXRvcj0oaW5pdGlhbGl6ZXJfbGlzdDx2
YWx1ZV90eXBlPiBfX2wpCiAgICAgIHsKIHRoaXMtPmFzc2lnbihfX2wuYmVnaW4oKSwgX19sLmVu
ZCgpKTsKIHJldHVybiAqdGhpczsKICAgICAgfQojIDQ3OCAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgICAgIHZv
aWQKICAgICAgYXNzaWduKHNpemVfdHlwZSBfX24sIGNvbnN0IHZhbHVlX3R5cGUmIF9fdmFsKQog
ICAgICB7IF9NX2ZpbGxfYXNzaWduKF9fbiwgX192YWwpOyB9CiMgNDk1ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfdmVjdG9yLmgiIDMK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsCiAgICAgICAgdHlwZW5hbWUg
PSBzdGQ6Ol9SZXF1aXJlSW5wdXRJdGVyPF9JbnB1dEl0ZXJhdG9yPj4KICAgICAgICB2b2lkCiAg
ICAgICAgYXNzaWduKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFz
dCkKICAgICAgICB7IF9NX2Fzc2lnbl9kaXNwYXRjaChfX2ZpcnN0LCBfX2xhc3QsIF9fZmFsc2Vf
dHlwZSgpKTsgfQojIDUyMyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOC4xL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgICAgIHZvaWQKICAgICAgYXNzaWduKGlu
aXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gX19sKQogICAgICB7IHRoaXMtPmFzc2lnbihfX2wu
YmVnaW4oKSwgX19sLmVuZCgpKTsgfQoKCgogICAgICB1c2luZyBfQmFzZTo6Z2V0X2FsbG9jYXRv
cjsKCgoKCgoKCiAgICAgIGl0ZXJhdG9yCiAgICAgIGJlZ2luKCkgbm9leGNlcHQKICAgICAgeyBy
ZXR1cm4gaXRlcmF0b3IodGhpcy0+X01faW1wbC5fTV9zdGFydCk7IH0KCgoKCgoKICAgICAgY29u
c3RfaXRlcmF0b3IKICAgICAgYmVnaW4oKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBj
b25zdF9pdGVyYXRvcih0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0KTsgfQoKCgoKCgogICAgICBpdGVy
YXRvcgogICAgICBlbmQoKSBub2V4Y2VwdAogICAgICB7IHJldHVybiBpdGVyYXRvcih0aGlzLT5f
TV9pbXBsLl9NX2ZpbmlzaCk7IH0KCgoKCgoKICAgICAgY29uc3RfaXRlcmF0b3IKICAgICAgZW5k
KCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IodGhpcy0+X01f
aW1wbC5fTV9maW5pc2gpOyB9CgoKCgoKCiAgICAgIHJldmVyc2VfaXRlcmF0b3IKICAgICAgcmJl
Z2luKCkgbm9leGNlcHQKICAgICAgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0K
CgoKCgoKICAgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvcgogICAgICByYmVnaW4oKSBjb25zdCBu
b2V4Y2VwdAogICAgICB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQoK
CgoKCgogICAgICByZXZlcnNlX2l0ZXJhdG9yCiAgICAgIHJlbmQoKSBub2V4Y2VwdAogICAgICB7
IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9CgoKCgoKCiAgICAgIGNvbnN0X3Jl
dmVyc2VfaXRlcmF0b3IKICAgICAgcmVuZCgpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJu
IGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KCgoKCgoKCiAgICAgIGNvbnN0X2l0
ZXJhdG9yCiAgICAgIGNiZWdpbigpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIGNvbnN0
X2l0ZXJhdG9yKHRoaXMtPl9NX2ltcGwuX01fc3RhcnQpOyB9CgoKCgoKCiAgICAgIGNvbnN0X2l0
ZXJhdG9yCiAgICAgIGNlbmQoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBjb25zdF9p
dGVyYXRvcih0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCk7IH0KCgoKCgoKICAgICAgY29uc3RfcmV2
ZXJzZV9pdGVyYXRvcgogICAgICBjcmJlZ2luKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1
cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KCgoKCgoKICAgICAgY29uc3RfcmV2
ZXJzZV9pdGVyYXRvcgogICAgICBjcmVuZCgpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJu
IGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KCgoKCiAgICAgIHNpemVfdHlwZQog
ICAgICBzaXplKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gc2l6ZV90eXBlKHRoaXMt
Pl9NX2ltcGwuX01fZmluaXNoIC0gdGhpcy0+X01faW1wbC5fTV9zdGFydCk7IH0KCgogICAgICBz
aXplX3R5cGUKICAgICAgbWF4X3NpemUoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiBf
QWxsb2NfdHJhaXRzOjptYXhfc2l6ZShfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOyB9CiMgNjYzICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxf
dmVjdG9yLmgiIDMKICAgICAgdm9pZAogICAgICByZXNpemUoc2l6ZV90eXBlIF9fbmV3X3NpemUp
CiAgICAgIHsKIGlmIChfX25ld19zaXplID4gc2l6ZSgpKQogICBfTV9kZWZhdWx0X2FwcGVuZChf
X25ld19zaXplIC0gc2l6ZSgpKTsKIGVsc2UgaWYgKF9fbmV3X3NpemUgPCBzaXplKCkpCiAgIF9N
X2VyYXNlX2F0X2VuZCh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0ICsgX19uZXdfc2l6ZSk7CiAgICAg
IH0KIyA2ODMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljgu
MS9iaXRzL3N0bF92ZWN0b3IuaCIgMwogICAgICB2b2lkCiAgICAgIHJlc2l6ZShzaXplX3R5cGUg
X19uZXdfc2l6ZSwgY29uc3QgdmFsdWVfdHlwZSYgX194KQogICAgICB7CiBpZiAoX19uZXdfc2l6
ZSA+IHNpemUoKSkKICAgaW5zZXJ0KGVuZCgpLCBfX25ld19zaXplIC0gc2l6ZSgpLCBfX3gpOwog
ZWxzZSBpZiAoX19uZXdfc2l6ZSA8IHNpemUoKSkKICAgX01fZXJhc2VfYXRfZW5kKHRoaXMtPl9N
X2ltcGwuX01fc3RhcnQgKyBfX25ld19zaXplKTsKICAgICAgfQojIDcxNSAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX3ZlY3Rvci5oIiAz
CiAgICAgIHZvaWQKICAgICAgc2hyaW5rX3RvX2ZpdCgpCiAgICAgIHsgX01fc2hyaW5rX3RvX2Zp
dCgpOyB9CgoKCgoKCiAgICAgIHNpemVfdHlwZQogICAgICBjYXBhY2l0eSgpIGNvbnN0IG5vZXhj
ZXB0CiAgICAgIHsgcmV0dXJuIHNpemVfdHlwZSh0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9y
YWdlCiAgICAtIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQpOyB9CgoKCgoKICAgICAgYm9vbAogICAg
ICBlbXB0eSgpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIGJlZ2luKCkgPT0gZW5kKCk7
IH0KIyA3NTQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljgu
MS9iaXRzL3N0bF92ZWN0b3IuaCIgMwogICAgICB2b2lkCiAgICAgIHJlc2VydmUoc2l6ZV90eXBl
IF9fbik7CiMgNzY5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC44LjEvYml0cy9zdGxfdmVjdG9yLmgiIDMKICAgICAgcmVmZXJlbmNlCiAgICAgIG9wZXJhdG9y
W10oc2l6ZV90eXBlIF9fbikKICAgICAgeyByZXR1cm4gKih0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0
ICsgX19uKTsgfQojIDc4NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOC4xL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgICAgIGNvbnN0X3JlZmVyZW5jZQogICAg
ICBvcGVyYXRvcltdKHNpemVfdHlwZSBfX24pIGNvbnN0CiAgICAgIHsgcmV0dXJuICoodGhpcy0+
X01faW1wbC5fTV9zdGFydCArIF9fbik7IH0KCiAgICBwcm90ZWN0ZWQ6CgogICAgICB2b2lkCiAg
ICAgIF9NX3JhbmdlX2NoZWNrKHNpemVfdHlwZSBfX24pIGNvbnN0CiAgICAgIHsKIGlmIChfX24g
Pj0gdGhpcy0+c2l6ZSgpKQogICBfX3Rocm93X291dF9vZl9yYW5nZSgoInZlY3Rvcjo6X01fcmFu
Z2VfY2hlY2siKSk7CiAgICAgIH0KCiAgICBwdWJsaWM6CiMgODA5ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfdmVjdG9yLmgiIDMKICAg
ICAgcmVmZXJlbmNlCiAgICAgIGF0KHNpemVfdHlwZSBfX24pCiAgICAgIHsKIF9NX3JhbmdlX2No
ZWNrKF9fbik7CiByZXR1cm4gKCp0aGlzKVtfX25dOwogICAgICB9CiMgODI3ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfdmVjdG9yLmgi
IDMKICAgICAgY29uc3RfcmVmZXJlbmNlCiAgICAgIGF0KHNpemVfdHlwZSBfX24pIGNvbnN0CiAg
ICAgIHsKIF9NX3JhbmdlX2NoZWNrKF9fbik7CiByZXR1cm4gKCp0aGlzKVtfX25dOwogICAgICB9
CgoKCgoKICAgICAgcmVmZXJlbmNlCiAgICAgIGZyb250KCkKICAgICAgeyByZXR1cm4gKmJlZ2lu
KCk7IH0KCgoKCgogICAgICBjb25zdF9yZWZlcmVuY2UKICAgICAgZnJvbnQoKSBjb25zdAogICAg
ICB7IHJldHVybiAqYmVnaW4oKTsgfQoKCgoKCiAgICAgIHJlZmVyZW5jZQogICAgICBiYWNrKCkK
ICAgICAgeyByZXR1cm4gKihlbmQoKSAtIDEpOyB9CgoKCgoKICAgICAgY29uc3RfcmVmZXJlbmNl
CiAgICAgIGJhY2soKSBjb25zdAogICAgICB7IHJldHVybiAqKGVuZCgpIC0gMSk7IH0KIyA4NzQg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0
bF92ZWN0b3IuaCIgMwogICAgICBfVHAqCgoKCiAgICAgIGRhdGEoKSBub2V4Y2VwdAogICAgICB7
IHJldHVybiBzdGQ6Ol9fYWRkcmVzc29mKGZyb250KCkpOyB9CgoKICAgICAgY29uc3QgX1RwKgoK
CgogICAgICBkYXRhKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4gc3RkOjpfX2FkZHJl
c3NvZihmcm9udCgpKTsgfQojIDkwMCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgICAgIHZvaWQKICAgICAgcHVz
aF9iYWNrKGNvbnN0IHZhbHVlX3R5cGUmIF9feCkKICAgICAgewogaWYgKHRoaXMtPl9NX2ltcGwu
X01fZmluaXNoICE9IHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UpCiAgIHsKICAgICBf
QWxsb2NfdHJhaXRzOjpjb25zdHJ1Y3QodGhpcy0+X01faW1wbCwgdGhpcy0+X01faW1wbC5fTV9m
aW5pc2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9feCk7CiAgICAgKyt0aGlzLT5f
TV9pbXBsLl9NX2ZpbmlzaDsKICAgfQogZWxzZQoKICAgX01fZW1wbGFjZV9iYWNrX2F1eChfX3gp
OwoKCgogICAgICB9CgoKICAgICAgdm9pZAogICAgICBwdXNoX2JhY2sodmFsdWVfdHlwZSYmIF9f
eCkKICAgICAgeyBlbXBsYWNlX2JhY2soc3RkOjptb3ZlKF9feCkpOyB9CgogICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBfQXJncz4KICAgICAgICB2b2lkCiAgICAgICAgZW1wbGFjZV9iYWNrKF9B
cmdzJiYuLi4gX19hcmdzKTsKIyA5MzYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF92ZWN0b3IuaCIgMwogICAgICB2b2lkCiAgICAgIHBv
cF9iYWNrKCkKICAgICAgewogLS10aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaDsKIF9BbGxvY190cmFp
dHM6OmRlc3Ryb3kodGhpcy0+X01faW1wbCwgdGhpcy0+X01faW1wbC5fTV9maW5pc2gpOwogICAg
ICB9CiMgOTU2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44
LjEvYml0cy9zdGxfdmVjdG9yLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3M+
CiAgICAgICAgaXRlcmF0b3IKICAgICAgICBlbXBsYWNlKGl0ZXJhdG9yIF9fcG9zaXRpb24sIF9B
cmdzJiYuLi4gX19hcmdzKTsKIyA5NzIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF92ZWN0b3IuaCIgMwogICAgICBpdGVyYXRvcgogICAg
ICBpbnNlcnQoaXRlcmF0b3IgX19wb3NpdGlvbiwgY29uc3QgdmFsdWVfdHlwZSYgX194KTsKIyA5
ODcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRz
L3N0bF92ZWN0b3IuaCIgMwogICAgICBpdGVyYXRvcgogICAgICBpbnNlcnQoaXRlcmF0b3IgX19w
b3NpdGlvbiwgdmFsdWVfdHlwZSYmIF9feCkKICAgICAgeyByZXR1cm4gZW1wbGFjZShfX3Bvc2l0
aW9uLCBzdGQ6Om1vdmUoX194KSk7IH0KIyAxMDA0ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfdmVjdG9yLmgiIDMKICAgICAgdm9pZAog
ICAgICBpbnNlcnQoaXRlcmF0b3IgX19wb3NpdGlvbiwgaW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90
eXBlPiBfX2wpCiAgICAgIHsgdGhpcy0+aW5zZXJ0KF9fcG9zaXRpb24sIF9fbC5iZWdpbigpLCBf
X2wuZW5kKCkpOyB9CiMgMTAyMiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOC4xL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgICAgIHZvaWQKICAgICAgaW5zZXJ0
KGl0ZXJhdG9yIF9fcG9zaXRpb24sIHNpemVfdHlwZSBfX24sIGNvbnN0IHZhbHVlX3R5cGUmIF9f
eCkKICAgICAgeyBfTV9maWxsX2luc2VydChfX3Bvc2l0aW9uLCBfX24sIF9feCk7IH0KIyAxMDQx
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9z
dGxfdmVjdG9yLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsCiAg
ICAgICAgdHlwZW5hbWUgPSBzdGQ6Ol9SZXF1aXJlSW5wdXRJdGVyPF9JbnB1dEl0ZXJhdG9yPj4K
ICAgICAgICB2b2lkCiAgICAgICAgaW5zZXJ0KGl0ZXJhdG9yIF9fcG9zaXRpb24sIF9JbnB1dEl0
ZXJhdG9yIF9fZmlyc3QsCiAgICAgICAgX0lucHV0SXRlcmF0b3IgX19sYXN0KQogICAgICAgIHsg
X01faW5zZXJ0X2Rpc3BhdGNoKF9fcG9zaXRpb24sIF9fZmlyc3QsIF9fbGFzdCwgX19mYWxzZV90
eXBlKCkpOyB9CiMgMTA3NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOC4xL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgICAgIGl0ZXJhdG9yCiAgICAgIGVyYXNl
KGl0ZXJhdG9yIF9fcG9zaXRpb24pOwojIDEwOTUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF92ZWN0b3IuaCIgMwogICAgICBpdGVyYXRv
cgogICAgICBlcmFzZShpdGVyYXRvciBfX2ZpcnN0LCBpdGVyYXRvciBfX2xhc3QpOwojIDExMDcg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0
bF92ZWN0b3IuaCIgMwogICAgICB2b2lkCiAgICAgIHN3YXAodmVjdG9yJiBfX3gpCgogICBub2V4
Y2VwdChfQWxsb2NfdHJhaXRzOjpfU19ub3Rocm93X3N3YXAoKSkKCiAgICAgIHsKIHRoaXMtPl9N
X2ltcGwuX01fc3dhcF9kYXRhKF9feC5fTV9pbXBsKTsKIF9BbGxvY190cmFpdHM6Ol9TX29uX3N3
YXAoX01fZ2V0X1RwX2FsbG9jYXRvcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX3gu
X01fZ2V0X1RwX2FsbG9jYXRvcigpKTsKICAgICAgfQoKCgoKCgoKICAgICAgdm9pZAogICAgICBj
bGVhcigpIG5vZXhjZXB0CiAgICAgIHsgX01fZXJhc2VfYXRfZW5kKHRoaXMtPl9NX2ltcGwuX01f
c3RhcnQpOyB9CgogICAgcHJvdGVjdGVkOgoKCgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zv
cndhcmRJdGVyYXRvcj4KICAgICAgICBwb2ludGVyCiAgICAgICAgX01fYWxsb2NhdGVfYW5kX2Nv
cHkoc2l6ZV90eXBlIF9fbiwKICAgICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3
YXJkSXRlcmF0b3IgX19sYXN0KQogICAgICAgIHsKICAgcG9pbnRlciBfX3Jlc3VsdCA9IHRoaXMt
Pl9NX2FsbG9jYXRlKF9fbik7CiAgIGlmICh0cnVlKQogICAgIHsKICAgICAgIHN0ZDo6X191bmlu
aXRpYWxpemVkX2NvcHlfYShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0LAogICAgICAgX01fZ2V0
X1RwX2FsbG9jYXRvcigpKTsKICAgICAgIHJldHVybiBfX3Jlc3VsdDsKICAgICB9CiAgIGlmIChm
YWxzZSkKICAgICB7CiAgICAgICBfTV9kZWFsbG9jYXRlKF9fcmVzdWx0LCBfX24pOwogICAgICAg
OwogICAgIH0KIH0KIyAxMTU5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC44LjEvYml0cy9zdGxfdmVjdG9yLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
X0ludGVnZXI+CiAgICAgICAgdm9pZAogICAgICAgIF9NX2luaXRpYWxpemVfZGlzcGF0Y2goX0lu
dGVnZXIgX19uLCBfSW50ZWdlciBfX3ZhbHVlLCBfX3RydWVfdHlwZSkKICAgICAgICB7CiAgIHRo
aXMtPl9NX2ltcGwuX01fc3RhcnQgPSBfTV9hbGxvY2F0ZShzdGF0aWNfY2FzdDxzaXplX3R5cGU+
KF9fbikpOwogICB0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlID0KICAgICB0aGlzLT5f
TV9pbXBsLl9NX3N0YXJ0ICsgc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfX24pOwogICBfTV9maWxs
X2luaXRpYWxpemUoc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfX24pLCBfX3ZhbHVlKTsKIH0KCgog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcj4KICAgICAgICB2b2lkCiAgICAg
ICAgX01faW5pdGlhbGl6ZV9kaXNwYXRjaChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJ
dGVyYXRvciBfX2xhc3QsCiAgICAgICAgICBfX2ZhbHNlX3R5cGUpCiAgICAgICAgewogICB0eXBl
ZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6CiAgICAg
aXRlcmF0b3JfY2F0ZWdvcnkgX0l0ZXJDYXRlZ29yeTsKICAgX01fcmFuZ2VfaW5pdGlhbGl6ZShf
X2ZpcnN0LCBfX2xhc3QsIF9JdGVyQ2F0ZWdvcnkoKSk7CiB9CgoKICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0lucHV0SXRlcmF0b3I+CiAgICAgICAgdm9pZAogICAgICAgIF9NX3JhbmdlX2luaXRp
YWxpemUoX0lucHV0SXRlcmF0b3IgX19maXJzdCwKICAgICAgIF9JbnB1dEl0ZXJhdG9yIF9fbGFz
dCwgc3RkOjppbnB1dF9pdGVyYXRvcl90YWcpCiAgICAgICAgewogICBmb3IgKDsgX19maXJzdCAh
PSBfX2xhc3Q7ICsrX19maXJzdCkKCiAgICAgZW1wbGFjZV9iYWNrKCpfX2ZpcnN0KTsKCgoKIH0K
CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yPgogICAgICAgIHZvaWQK
ICAgICAgICBfTV9yYW5nZV9pbml0aWFsaXplKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwKICAg
ICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LCBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnKQog
ICAgICAgIHsKICAgY29uc3Qgc2l6ZV90eXBlIF9fbiA9IHN0ZDo6ZGlzdGFuY2UoX19maXJzdCwg
X19sYXN0KTsKICAgdGhpcy0+X01faW1wbC5fTV9zdGFydCA9IHRoaXMtPl9NX2FsbG9jYXRlKF9f
bik7CiAgIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UgPSB0aGlzLT5fTV9pbXBsLl9N
X3N0YXJ0ICsgX19uOwogICB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCA9CiAgICAgc3RkOjpfX3Vu
aW5pdGlhbGl6ZWRfY29weV9hKF9fZmlyc3QsIF9fbGFzdCwKICAgICB0aGlzLT5fTV9pbXBsLl9N
X3N0YXJ0LAogICAgIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiB9CgoKCiAgICAgIHZvaWQKICAg
ICAgX01fZmlsbF9pbml0aWFsaXplKHNpemVfdHlwZSBfX24sIGNvbnN0IHZhbHVlX3R5cGUmIF9f
dmFsdWUpCiAgICAgIHsKIHN0ZDo6X191bmluaXRpYWxpemVkX2ZpbGxfbl9hKHRoaXMtPl9NX2lt
cGwuX01fc3RhcnQsIF9fbiwgX192YWx1ZSwKICAgICAgICAgIF9NX2dldF9UcF9hbGxvY2F0b3Io
KSk7CiB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCA9IHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0
b3JhZ2U7CiAgICAgIH0KCgoKICAgICAgdm9pZAogICAgICBfTV9kZWZhdWx0X2luaXRpYWxpemUo
c2l6ZV90eXBlIF9fbikKICAgICAgewogc3RkOjpfX3VuaW5pdGlhbGl6ZWRfZGVmYXVsdF9uX2Eo
dGhpcy0+X01faW1wbC5fTV9zdGFydCwgX19uLAogICAgICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkp
OwogdGhpcy0+X01faW1wbC5fTV9maW5pc2ggPSB0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9y
YWdlOwogICAgICB9CiMgMTIzNyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOC4xL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IF9JbnRlZ2VyPgogICAgICAgIHZvaWQKICAgICAgICBfTV9hc3NpZ25fZGlzcGF0Y2goX0ludGVn
ZXIgX19uLCBfSW50ZWdlciBfX3ZhbCwgX190cnVlX3R5cGUpCiAgICAgICAgeyBfTV9maWxsX2Fz
c2lnbihfX24sIF9fdmFsKTsgfQoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJh
dG9yPgogICAgICAgIHZvaWQKICAgICAgICBfTV9hc3NpZ25fZGlzcGF0Y2goX0lucHV0SXRlcmF0
b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgICBfX2ZhbHNlX3R5cGUpCiAg
ICAgICAgewogICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0
ZXJhdG9yPjo6CiAgICAgaXRlcmF0b3JfY2F0ZWdvcnkgX0l0ZXJDYXRlZ29yeTsKICAgX01fYXNz
aWduX2F1eChfX2ZpcnN0LCBfX2xhc3QsIF9JdGVyQ2F0ZWdvcnkoKSk7CiB9CgoKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3I+CiAgICAgICAgdm9pZAogICAgICAgIF9NX2Fz
c2lnbl9hdXgoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAog
ICAgICAgIHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFnKTsKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRm9yd2FyZEl0ZXJhdG9yPgogICAgICAgIHZvaWQKICAgICAgICBfTV9hc3NpZ25fYXV4KF9G
b3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAg
c3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZyk7CgoKCiAgICAgIHZvaWQKICAgICAgX01fZmlsbF9h
c3NpZ24oc2l6ZV90eXBlIF9fbiwgY29uc3QgdmFsdWVfdHlwZSYgX192YWwpOwojIDEyNzcgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF92
ZWN0b3IuaCIgMwogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50ZWdlcj4KICAgICAgICB2b2lk
CiAgICAgICAgX01faW5zZXJ0X2Rpc3BhdGNoKGl0ZXJhdG9yIF9fcG9zLCBfSW50ZWdlciBfX24s
IF9JbnRlZ2VyIF9fdmFsLAogICAgICBfX3RydWVfdHlwZSkKICAgICAgICB7IF9NX2ZpbGxfaW5z
ZXJ0KF9fcG9zLCBfX24sIF9fdmFsKTsgfQoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1
dEl0ZXJhdG9yPgogICAgICAgIHZvaWQKICAgICAgICBfTV9pbnNlcnRfZGlzcGF0Y2goaXRlcmF0
b3IgX19wb3MsIF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAgIF9JbnB1dEl0ZXJhdG9yIF9f
bGFzdCwgX19mYWxzZV90eXBlKQogICAgICAgIHsKICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0
ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46OgogICAgIGl0ZXJhdG9yX2NhdGVnb3J5IF9J
dGVyQ2F0ZWdvcnk7CiAgIF9NX3JhbmdlX2luc2VydChfX3BvcywgX19maXJzdCwgX19sYXN0LCBf
SXRlckNhdGVnb3J5KCkpOwogfQoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJh
dG9yPgogICAgICAgIHZvaWQKICAgICAgICBfTV9yYW5nZV9pbnNlcnQoaXRlcmF0b3IgX19wb3Ms
IF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsCiAgIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwgc3RkOjpp
bnB1dF9pdGVyYXRvcl90YWcpOwoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRl
cmF0b3I+CiAgICAgICAgdm9pZAogICAgICAgIF9NX3JhbmdlX2luc2VydChpdGVyYXRvciBfX3Bv
cywgX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LAogICBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwg
c3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZyk7CgoKCiAgICAgIHZvaWQKICAgICAgX01fZmlsbF9p
bnNlcnQoaXRlcmF0b3IgX19wb3MsIHNpemVfdHlwZSBfX24sIGNvbnN0IHZhbHVlX3R5cGUmIF9f
eCk7CgoKCiAgICAgIHZvaWQKICAgICAgX01fZGVmYXVsdF9hcHBlbmQoc2l6ZV90eXBlIF9fbik7
CgogICAgICBib29sCiAgICAgIF9NX3Nocmlua190b19maXQoKTsKCgoKCgoKCiAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lLi4uIF9BcmdzPgogICAgICAgIHZvaWQKICAgICAgICBfTV9pbnNlcnRfYXV4
KGl0ZXJhdG9yIF9fcG9zaXRpb24sIF9BcmdzJiYuLi4gX19hcmdzKTsKCiAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIF9BcmdzPgogICAgICAgIHZvaWQKICAgICAgICBfTV9lbXBsYWNlX2JhY2tf
YXV4KF9BcmdzJiYuLi4gX19hcmdzKTsKCgoKICAgICAgc2l6ZV90eXBlCiAgICAgIF9NX2NoZWNr
X2xlbihzaXplX3R5cGUgX19uLCBjb25zdCBjaGFyKiBfX3MpIGNvbnN0CiAgICAgIHsKIGlmICht
YXhfc2l6ZSgpIC0gc2l6ZSgpIDwgX19uKQogICBfX3Rocm93X2xlbmd0aF9lcnJvcigoX19zKSk7
CgogY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0gc2l6ZSgpICsgc3RkOjptYXgoc2l6ZSgpLCBfX24p
OwogcmV0dXJuIChfX2xlbiA8IHNpemUoKSB8fCBfX2xlbiA+IG1heF9zaXplKCkpID8gbWF4X3Np
emUoKSA6IF9fbGVuOwogICAgICB9CgoKCgoKICAgICAgdm9pZAogICAgICBfTV9lcmFzZV9hdF9l
bmQocG9pbnRlciBfX3BvcykKICAgICAgewogc3RkOjpfRGVzdHJveShfX3BvcywgdGhpcy0+X01f
aW1wbC5fTV9maW5pc2gsIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiB0aGlzLT5fTV9pbXBsLl9N
X2ZpbmlzaCA9IF9fcG9zOwogICAgICB9CgoKICAgIHByaXZhdGU6CgoKCiAgICAgIHZvaWQKICAg
ICAgX01fbW92ZV9hc3NpZ24odmVjdG9yJiYgX194LCBzdGQ6OnRydWVfdHlwZSkgbm9leGNlcHQK
ICAgICAgewogY29uc3QgdmVjdG9yIF9fdG1wKHN0ZDo6bW92ZSgqdGhpcykpOwogdGhpcy0+X01f
aW1wbC5fTV9zd2FwX2RhdGEoX194Ll9NX2ltcGwpOwogaWYgKF9BbGxvY190cmFpdHM6Ol9TX3By
b3BhZ2F0ZV9vbl9tb3ZlX2Fzc2lnbigpKQogICBzdGQ6Ol9fYWxsb2Nfb25fbW92ZShfTV9nZXRf
VHBfYWxsb2NhdG9yKCksCiAgICAgICAgICBfX3guX01fZ2V0X1RwX2FsbG9jYXRvcigpKTsKICAg
ICAgfQoKCgogICAgICB2b2lkCiAgICAgIF9NX21vdmVfYXNzaWduKHZlY3RvciYmIF9feCwgc3Rk
OjpmYWxzZV90eXBlKQogICAgICB7CiBpZiAoX194Ll9NX2dldF9UcF9hbGxvY2F0b3IoKSA9PSB0
aGlzLT5fTV9nZXRfVHBfYWxsb2NhdG9yKCkpCiAgIF9NX21vdmVfYXNzaWduKHN0ZDo6bW92ZShf
X3gpLCBzdGQ6OnRydWVfdHlwZSgpKTsKIGVsc2UKICAgewoKCiAgICAgdGhpcy0+YXNzaWduKHN0
ZDo6X19tYWtlX21vdmVfaWZfbm9leGNlcHRfaXRlcmF0b3IoX194LmJlZ2luKCkpLAogICAgc3Rk
OjpfX21ha2VfbW92ZV9pZl9ub2V4Y2VwdF9pdGVyYXRvcihfX3guZW5kKCkpKTsKICAgICBfX3gu
Y2xlYXIoKTsKICAgfQogICAgICB9CgogICAgfTsKIyAxNDAxICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfdmVjdG9yLmgiIDMKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBv
cGVyYXRvcj09KGNvbnN0IHZlY3RvcjxfVHAsIF9BbGxvYz4mIF9feCwgY29uc3QgdmVjdG9yPF9U
cCwgX0FsbG9jPiYgX195KQogICAgeyByZXR1cm4gKF9feC5zaXplKCkgPT0gX195LnNpemUoKQog
ICAgICAgJiYgc3RkOjplcXVhbChfX3guYmVnaW4oKSwgX194LmVuZCgpLCBfX3kuYmVnaW4oKSkp
OyB9CiMgMTQxOCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OC4xL2JpdHMvc3RsX3ZlY3Rvci5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFt
ZSBfQWxsb2M+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IHZlY3RvcjxfVHAs
IF9BbGxvYz4mIF9feCwgY29uc3QgdmVjdG9yPF9UcCwgX0FsbG9jPiYgX195KQogICAgeyByZXR1
cm4gc3RkOjpsZXhpY29ncmFwaGljYWxfY29tcGFyZShfX3guYmVnaW4oKSwgX194LmVuZCgpLAog
ICAgICAgX195LmJlZ2luKCksIF9feS5lbmQoKSk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cCwgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3Qg
dmVjdG9yPF9UcCwgX0FsbG9jPiYgX194LCBjb25zdCB2ZWN0b3I8X1RwLCBfQWxsb2M+JiBfX3kp
CiAgICB7IHJldHVybiAhKF9feCA9PSBfX3kpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAs
IHR5cGVuYW1lIF9BbGxvYz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj4oY29uc3QgdmVj
dG9yPF9UcCwgX0FsbG9jPiYgX194LCBjb25zdCB2ZWN0b3I8X1RwLCBfQWxsb2M+JiBfX3kpCiAg
ICB7IHJldHVybiBfX3kgPCBfX3g7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5h
bWUgX0FsbG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPD0oY29uc3QgdmVjdG9yPF9U
cCwgX0FsbG9jPiYgX194LCBjb25zdCB2ZWN0b3I8X1RwLCBfQWxsb2M+JiBfX3kpCiAgICB7IHJl
dHVybiAhKF9feSA8IF9feCk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUg
X0FsbG9jPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPj0oY29uc3QgdmVjdG9yPF9UcCwg
X0FsbG9jPiYgX194LCBjb25zdCB2ZWN0b3I8X1RwLCBfQWxsb2M+JiBfX3kpCiAgICB7IHJldHVy
biAhKF9feCA8IF9feSk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0Fs
bG9jPgogICAgaW5saW5lIHZvaWQKICAgIHN3YXAodmVjdG9yPF9UcCwgX0FsbG9jPiYgX194LCB2
ZWN0b3I8X1RwLCBfQWxsb2M+JiBfX3kpCiAgICB7IF9feC5zd2FwKF9feSk7IH0KCgp9CiMgNjUg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS92ZWN0b3Ii
IDIgMwojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljgu
MS9iaXRzL3N0bF9idmVjdG9yLmgiIDEgMwojIDYzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfYnZlY3Rvci5oIiAzCm5hbWVzcGFjZSBz
dGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCiAgdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIF9CaXRfdHlwZTsKICBlbnVtIHsgX1Nfd29yZF9iaXQgPSBpbnQo
OCAqIHNpemVvZihfQml0X3R5cGUpKSB9OwoKICBzdHJ1Y3QgX0JpdF9yZWZlcmVuY2UKICB7CiAg
ICBfQml0X3R5cGUgKiBfTV9wOwogICAgX0JpdF90eXBlIF9NX21hc2s7CgogICAgX0JpdF9yZWZl
cmVuY2UoX0JpdF90eXBlICogX194LCBfQml0X3R5cGUgX195KQogICAgOiBfTV9wKF9feCksIF9N
X21hc2soX195KSB7IH0KCiAgICBfQml0X3JlZmVyZW5jZSgpIG5vZXhjZXB0IDogX01fcCgwKSwg
X01fbWFzaygwKSB7IH0KCiAgICBvcGVyYXRvciBib29sKCkgY29uc3Qgbm9leGNlcHQKICAgIHsg
cmV0dXJuICEhKCpfTV9wICYgX01fbWFzayk7IH0KCiAgICBfQml0X3JlZmVyZW5jZSYKICAgIG9w
ZXJhdG9yPShib29sIF9feCkgbm9leGNlcHQKICAgIHsKICAgICAgaWYgKF9feCkKICpfTV9wIHw9
IF9NX21hc2s7CiAgICAgIGVsc2UKICpfTV9wICY9IH5fTV9tYXNrOwogICAgICByZXR1cm4gKnRo
aXM7CiAgICB9CgogICAgX0JpdF9yZWZlcmVuY2UmCiAgICBvcGVyYXRvcj0oY29uc3QgX0JpdF9y
ZWZlcmVuY2UmIF9feCkgbm9leGNlcHQKICAgIHsgcmV0dXJuICp0aGlzID0gYm9vbChfX3gpOyB9
CgogICAgYm9vbAogICAgb3BlcmF0b3I9PShjb25zdCBfQml0X3JlZmVyZW5jZSYgX194KSBjb25z
dAogICAgeyByZXR1cm4gYm9vbCgqdGhpcykgPT0gYm9vbChfX3gpOyB9CgogICAgYm9vbAogICAg
b3BlcmF0b3I8KGNvbnN0IF9CaXRfcmVmZXJlbmNlJiBfX3gpIGNvbnN0CiAgICB7IHJldHVybiAh
Ym9vbCgqdGhpcykgJiYgYm9vbChfX3gpOyB9CgogICAgdm9pZAogICAgZmxpcCgpIG5vZXhjZXB0
CiAgICB7ICpfTV9wIF49IF9NX21hc2s7IH0KICB9OwoKCiAgaW5saW5lIHZvaWQKICBzd2FwKF9C
aXRfcmVmZXJlbmNlIF9feCwgX0JpdF9yZWZlcmVuY2UgX195KSBub2V4Y2VwdAogIHsKICAgIGJv
b2wgX190bXAgPSBfX3g7CiAgICBfX3ggPSBfX3k7CiAgICBfX3kgPSBfX3RtcDsKICB9CgogIGlu
bGluZSB2b2lkCiAgc3dhcChfQml0X3JlZmVyZW5jZSBfX3gsIGJvb2wmIF9feSkgbm9leGNlcHQK
ICB7CiAgICBib29sIF9fdG1wID0gX194OwogICAgX194ID0gX195OwogICAgX195ID0gX190bXA7
CiAgfQoKICBpbmxpbmUgdm9pZAogIHN3YXAoYm9vbCYgX194LCBfQml0X3JlZmVyZW5jZSBfX3kp
IG5vZXhjZXB0CiAgewogICAgYm9vbCBfX3RtcCA9IF9feDsKICAgIF9feCA9IF9feTsKICAgIF9f
eSA9IF9fdG1wOwogIH0KCgogIHN0cnVjdCBfQml0X2l0ZXJhdG9yX2Jhc2UKICA6IHB1YmxpYyBz
dGQ6Oml0ZXJhdG9yPHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcsIGJvb2w+CiAgewog
ICAgX0JpdF90eXBlICogX01fcDsKICAgIHVuc2lnbmVkIGludCBfTV9vZmZzZXQ7CgogICAgX0Jp
dF9pdGVyYXRvcl9iYXNlKF9CaXRfdHlwZSAqIF9feCwgdW5zaWduZWQgaW50IF9feSkKICAgIDog
X01fcChfX3gpLCBfTV9vZmZzZXQoX195KSB7IH0KCiAgICB2b2lkCiAgICBfTV9idW1wX3VwKCkK
ICAgIHsKICAgICAgaWYgKF9NX29mZnNldCsrID09IGludChfU193b3JkX2JpdCkgLSAxKQogewog
ICBfTV9vZmZzZXQgPSAwOwogICArK19NX3A7CiB9CiAgICB9CgogICAgdm9pZAogICAgX01fYnVt
cF9kb3duKCkKICAgIHsKICAgICAgaWYgKF9NX29mZnNldC0tID09IDApCiB7CiAgIF9NX29mZnNl
dCA9IGludChfU193b3JkX2JpdCkgLSAxOwogICAtLV9NX3A7CiB9CiAgICB9CgogICAgdm9pZAog
ICAgX01faW5jcihwdHJkaWZmX3QgX19pKQogICAgewogICAgICBkaWZmZXJlbmNlX3R5cGUgX19u
ID0gX19pICsgX01fb2Zmc2V0OwogICAgICBfTV9wICs9IF9fbiAvIGludChfU193b3JkX2JpdCk7
CiAgICAgIF9fbiA9IF9fbiAlIGludChfU193b3JkX2JpdCk7CiAgICAgIGlmIChfX24gPCAwKQog
ewogICBfX24gKz0gaW50KF9TX3dvcmRfYml0KTsKICAgLS1fTV9wOwogfQogICAgICBfTV9vZmZz
ZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KF9fbik7CiAgICB9CgogICAgYm9vbAogICAg
b3BlcmF0b3I9PShjb25zdCBfQml0X2l0ZXJhdG9yX2Jhc2UmIF9faSkgY29uc3QKICAgIHsgcmV0
dXJuIF9NX3AgPT0gX19pLl9NX3AgJiYgX01fb2Zmc2V0ID09IF9faS5fTV9vZmZzZXQ7IH0KCiAg
ICBib29sCiAgICBvcGVyYXRvcjwoY29uc3QgX0JpdF9pdGVyYXRvcl9iYXNlJiBfX2kpIGNvbnN0
CiAgICB7CiAgICAgIHJldHVybiBfTV9wIDwgX19pLl9NX3AKICAgICAgfHwgKF9NX3AgPT0gX19p
Ll9NX3AgJiYgX01fb2Zmc2V0IDwgX19pLl9NX29mZnNldCk7CiAgICB9CgogICAgYm9vbAogICAg
b3BlcmF0b3IhPShjb25zdCBfQml0X2l0ZXJhdG9yX2Jhc2UmIF9faSkgY29uc3QKICAgIHsgcmV0
dXJuICEoKnRoaXMgPT0gX19pKTsgfQoKICAgIGJvb2wKICAgIG9wZXJhdG9yPihjb25zdCBfQml0
X2l0ZXJhdG9yX2Jhc2UmIF9faSkgY29uc3QKICAgIHsgcmV0dXJuIF9faSA8ICp0aGlzOyB9Cgog
ICAgYm9vbAogICAgb3BlcmF0b3I8PShjb25zdCBfQml0X2l0ZXJhdG9yX2Jhc2UmIF9faSkgY29u
c3QKICAgIHsgcmV0dXJuICEoX19pIDwgKnRoaXMpOyB9CgogICAgYm9vbAogICAgb3BlcmF0b3I+
PShjb25zdCBfQml0X2l0ZXJhdG9yX2Jhc2UmIF9faSkgY29uc3QKICAgIHsgcmV0dXJuICEoKnRo
aXMgPCBfX2kpOyB9CiAgfTsKCiAgaW5saW5lIHB0cmRpZmZfdAogIG9wZXJhdG9yLShjb25zdCBf
Qml0X2l0ZXJhdG9yX2Jhc2UmIF9feCwgY29uc3QgX0JpdF9pdGVyYXRvcl9iYXNlJiBfX3kpCiAg
ewogICAgcmV0dXJuIChpbnQoX1Nfd29yZF9iaXQpICogKF9feC5fTV9wIC0gX195Ll9NX3ApCiAg
ICAgKyBfX3guX01fb2Zmc2V0IC0gX195Ll9NX29mZnNldCk7CiAgfQoKICBzdHJ1Y3QgX0JpdF9p
dGVyYXRvciA6IHB1YmxpYyBfQml0X2l0ZXJhdG9yX2Jhc2UKICB7CiAgICB0eXBlZGVmIF9CaXRf
cmVmZXJlbmNlIHJlZmVyZW5jZTsKICAgIHR5cGVkZWYgX0JpdF9yZWZlcmVuY2UqIHBvaW50ZXI7
CiAgICB0eXBlZGVmIF9CaXRfaXRlcmF0b3IgaXRlcmF0b3I7CgogICAgX0JpdF9pdGVyYXRvcigp
IDogX0JpdF9pdGVyYXRvcl9iYXNlKDAsIDApIHsgfQoKICAgIF9CaXRfaXRlcmF0b3IoX0JpdF90
eXBlICogX194LCB1bnNpZ25lZCBpbnQgX195KQogICAgOiBfQml0X2l0ZXJhdG9yX2Jhc2UoX194
LCBfX3kpIHsgfQoKICAgIHJlZmVyZW5jZQogICAgb3BlcmF0b3IqKCkgY29uc3QKICAgIHsgcmV0
dXJuIHJlZmVyZW5jZShfTV9wLCAxVUwgPDwgX01fb2Zmc2V0KTsgfQoKICAgIGl0ZXJhdG9yJgog
ICAgb3BlcmF0b3IrKygpCiAgICB7CiAgICAgIF9NX2J1bXBfdXAoKTsKICAgICAgcmV0dXJuICp0
aGlzOwogICAgfQoKICAgIGl0ZXJhdG9yCiAgICBvcGVyYXRvcisrKGludCkKICAgIHsKICAgICAg
aXRlcmF0b3IgX190bXAgPSAqdGhpczsKICAgICAgX01fYnVtcF91cCgpOwogICAgICByZXR1cm4g
X190bXA7CiAgICB9CgogICAgaXRlcmF0b3ImCiAgICBvcGVyYXRvci0tKCkKICAgIHsKICAgICAg
X01fYnVtcF9kb3duKCk7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICBpdGVyYXRvcgog
ICAgb3BlcmF0b3ItLShpbnQpCiAgICB7CiAgICAgIGl0ZXJhdG9yIF9fdG1wID0gKnRoaXM7CiAg
ICAgIF9NX2J1bXBfZG93bigpOwogICAgICByZXR1cm4gX190bXA7CiAgICB9CgogICAgaXRlcmF0
b3ImCiAgICBvcGVyYXRvcis9KGRpZmZlcmVuY2VfdHlwZSBfX2kpCiAgICB7CiAgICAgIF9NX2lu
Y3IoX19pKTsKICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIGl0ZXJhdG9yJgogICAgb3Bl
cmF0b3ItPShkaWZmZXJlbmNlX3R5cGUgX19pKQogICAgewogICAgICAqdGhpcyArPSAtX19pOwog
ICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAgaXRlcmF0b3IKICAgIG9wZXJhdG9yKyhkaWZm
ZXJlbmNlX3R5cGUgX19pKSBjb25zdAogICAgewogICAgICBpdGVyYXRvciBfX3RtcCA9ICp0aGlz
OwogICAgICByZXR1cm4gX190bXAgKz0gX19pOwogICAgfQoKICAgIGl0ZXJhdG9yCiAgICBvcGVy
YXRvci0oZGlmZmVyZW5jZV90eXBlIF9faSkgY29uc3QKICAgIHsKICAgICAgaXRlcmF0b3IgX190
bXAgPSAqdGhpczsKICAgICAgcmV0dXJuIF9fdG1wIC09IF9faTsKICAgIH0KCiAgICByZWZlcmVu
Y2UKICAgIG9wZXJhdG9yW10oZGlmZmVyZW5jZV90eXBlIF9faSkgY29uc3QKICAgIHsgcmV0dXJu
ICooKnRoaXMgKyBfX2kpOyB9CiAgfTsKCiAgaW5saW5lIF9CaXRfaXRlcmF0b3IKICBvcGVyYXRv
cisocHRyZGlmZl90IF9fbiwgY29uc3QgX0JpdF9pdGVyYXRvciYgX194KQogIHsgcmV0dXJuIF9f
eCArIF9fbjsgfQoKICBzdHJ1Y3QgX0JpdF9jb25zdF9pdGVyYXRvciA6IHB1YmxpYyBfQml0X2l0
ZXJhdG9yX2Jhc2UKICB7CiAgICB0eXBlZGVmIGJvb2wgcmVmZXJlbmNlOwogICAgdHlwZWRlZiBi
b29sIGNvbnN0X3JlZmVyZW5jZTsKICAgIHR5cGVkZWYgY29uc3QgYm9vbCogcG9pbnRlcjsKICAg
IHR5cGVkZWYgX0JpdF9jb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKCiAgICBfQml0X2Nv
bnN0X2l0ZXJhdG9yKCkgOiBfQml0X2l0ZXJhdG9yX2Jhc2UoMCwgMCkgeyB9CgogICAgX0JpdF9j
b25zdF9pdGVyYXRvcihfQml0X3R5cGUgKiBfX3gsIHVuc2lnbmVkIGludCBfX3kpCiAgICA6IF9C
aXRfaXRlcmF0b3JfYmFzZShfX3gsIF9feSkgeyB9CgogICAgX0JpdF9jb25zdF9pdGVyYXRvcihj
b25zdCBfQml0X2l0ZXJhdG9yJiBfX3gpCiAgICA6IF9CaXRfaXRlcmF0b3JfYmFzZShfX3guX01f
cCwgX194Ll9NX29mZnNldCkgeyB9CgogICAgY29uc3RfcmVmZXJlbmNlCiAgICBvcGVyYXRvcioo
KSBjb25zdAogICAgeyByZXR1cm4gX0JpdF9yZWZlcmVuY2UoX01fcCwgMVVMIDw8IF9NX29mZnNl
dCk7IH0KCiAgICBjb25zdF9pdGVyYXRvciYKICAgIG9wZXJhdG9yKysoKQogICAgewogICAgICBf
TV9idW1wX3VwKCk7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICBjb25zdF9pdGVyYXRv
cgogICAgb3BlcmF0b3IrKyhpbnQpCiAgICB7CiAgICAgIGNvbnN0X2l0ZXJhdG9yIF9fdG1wID0g
KnRoaXM7CiAgICAgIF9NX2J1bXBfdXAoKTsKICAgICAgcmV0dXJuIF9fdG1wOwogICAgfQoKICAg
IGNvbnN0X2l0ZXJhdG9yJgogICAgb3BlcmF0b3ItLSgpCiAgICB7CiAgICAgIF9NX2J1bXBfZG93
bigpOwogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAgY29uc3RfaXRlcmF0b3IKICAgIG9w
ZXJhdG9yLS0oaW50KQogICAgewogICAgICBjb25zdF9pdGVyYXRvciBfX3RtcCA9ICp0aGlzOwog
ICAgICBfTV9idW1wX2Rvd24oKTsKICAgICAgcmV0dXJuIF9fdG1wOwogICAgfQoKICAgIGNvbnN0
X2l0ZXJhdG9yJgogICAgb3BlcmF0b3IrPShkaWZmZXJlbmNlX3R5cGUgX19pKQogICAgewogICAg
ICBfTV9pbmNyKF9faSk7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICBjb25zdF9pdGVy
YXRvciYKICAgIG9wZXJhdG9yLT0oZGlmZmVyZW5jZV90eXBlIF9faSkKICAgIHsKICAgICAgKnRo
aXMgKz0gLV9faTsKICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIGNvbnN0X2l0ZXJhdG9y
CiAgICBvcGVyYXRvcisoZGlmZmVyZW5jZV90eXBlIF9faSkgY29uc3QKICAgIHsKICAgICAgY29u
c3RfaXRlcmF0b3IgX190bXAgPSAqdGhpczsKICAgICAgcmV0dXJuIF9fdG1wICs9IF9faTsKICAg
IH0KCiAgICBjb25zdF9pdGVyYXRvcgogICAgb3BlcmF0b3ItKGRpZmZlcmVuY2VfdHlwZSBfX2kp
IGNvbnN0CiAgICB7CiAgICAgIGNvbnN0X2l0ZXJhdG9yIF9fdG1wID0gKnRoaXM7CiAgICAgIHJl
dHVybiBfX3RtcCAtPSBfX2k7CiAgICB9CgogICAgY29uc3RfcmVmZXJlbmNlCiAgICBvcGVyYXRv
cltdKGRpZmZlcmVuY2VfdHlwZSBfX2kpIGNvbnN0CiAgICB7IHJldHVybiAqKCp0aGlzICsgX19p
KTsgfQogIH07CgogIGlubGluZSBfQml0X2NvbnN0X2l0ZXJhdG9yCiAgb3BlcmF0b3IrKHB0cmRp
ZmZfdCBfX24sIGNvbnN0IF9CaXRfY29uc3RfaXRlcmF0b3ImIF9feCkKICB7IHJldHVybiBfX3gg
KyBfX247IH0KCiAgaW5saW5lIHZvaWQKICBfX2ZpbGxfYnZlY3RvcihfQml0X2l0ZXJhdG9yIF9f
Zmlyc3QsIF9CaXRfaXRlcmF0b3IgX19sYXN0LCBib29sIF9feCkKICB7CiAgICBmb3IgKDsgX19m
aXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICAgICAgKl9fZmlyc3QgPSBfX3g7CiAgfQoKICBp
bmxpbmUgdm9pZAogIGZpbGwoX0JpdF9pdGVyYXRvciBfX2ZpcnN0LCBfQml0X2l0ZXJhdG9yIF9f
bGFzdCwgY29uc3QgYm9vbCYgX194KQogIHsKICAgIGlmIChfX2ZpcnN0Ll9NX3AgIT0gX19sYXN0
Ll9NX3ApCiAgICAgIHsKIHN0ZDo6ZmlsbChfX2ZpcnN0Ll9NX3AgKyAxLCBfX2xhc3QuX01fcCwg
X194ID8gfjAgOiAwKTsKIF9fZmlsbF9idmVjdG9yKF9fZmlyc3QsIF9CaXRfaXRlcmF0b3IoX19m
aXJzdC5fTV9wICsgMSwgMCksIF9feCk7CiBfX2ZpbGxfYnZlY3RvcihfQml0X2l0ZXJhdG9yKF9f
bGFzdC5fTV9wLCAwKSwgX19sYXN0LCBfX3gpOwogICAgICB9CiAgICBlbHNlCiAgICAgIF9fZmls
bF9idmVjdG9yKF9fZmlyc3QsIF9fbGFzdCwgX194KTsKICB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9BbGxvYz4KICAgIHN0cnVjdCBfQnZlY3Rvcl9iYXNlCiAgICB7CiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgX0FsbG9jOjp0ZW1wbGF0ZSByZWJpbmQ8X0JpdF90eXBlPjo6b3RoZXIKICAgICAgICBf
Qml0X2FsbG9jX3R5cGU7CgogICAgICBzdHJ1Y3QgX0J2ZWN0b3JfaW1wbAogICAgICA6IHB1Ymxp
YyBfQml0X2FsbG9jX3R5cGUKICAgICAgewogX0JpdF9pdGVyYXRvciBfTV9zdGFydDsKIF9CaXRf
aXRlcmF0b3IgX01fZmluaXNoOwogX0JpdF90eXBlKiBfTV9lbmRfb2Zfc3RvcmFnZTsKCiBfQnZl
Y3Rvcl9pbXBsKCkKIDogX0JpdF9hbGxvY190eXBlKCksIF9NX3N0YXJ0KCksIF9NX2ZpbmlzaCgp
LCBfTV9lbmRfb2Zfc3RvcmFnZSgwKQogeyB9CgogX0J2ZWN0b3JfaW1wbChjb25zdCBfQml0X2Fs
bG9jX3R5cGUmIF9fYSkKIDogX0JpdF9hbGxvY190eXBlKF9fYSksIF9NX3N0YXJ0KCksIF9NX2Zp
bmlzaCgpLCBfTV9lbmRfb2Zfc3RvcmFnZSgwKQogeyB9CgoKIF9CdmVjdG9yX2ltcGwoX0JpdF9h
bGxvY190eXBlJiYgX19hKQogOiBfQml0X2FsbG9jX3R5cGUoc3RkOjptb3ZlKF9fYSkpLCBfTV9z
dGFydCgpLCBfTV9maW5pc2goKSwKICAgX01fZW5kX29mX3N0b3JhZ2UoMCkKIHsgfQoKICAgICAg
fTsKCiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgX0FsbG9jIGFsbG9jYXRvcl90eXBlOwoKICAg
ICAgX0JpdF9hbGxvY190eXBlJgogICAgICBfTV9nZXRfQml0X2FsbG9jYXRvcigpIG5vZXhjZXB0
CiAgICAgIHsgcmV0dXJuICpzdGF0aWNfY2FzdDxfQml0X2FsbG9jX3R5cGUqPigmdGhpcy0+X01f
aW1wbCk7IH0KCiAgICAgIGNvbnN0IF9CaXRfYWxsb2NfdHlwZSYKICAgICAgX01fZ2V0X0JpdF9h
bGxvY2F0b3IoKSBjb25zdCBub2V4Y2VwdAogICAgICB7IHJldHVybiAqc3RhdGljX2Nhc3Q8Y29u
c3QgX0JpdF9hbGxvY190eXBlKj4oJnRoaXMtPl9NX2ltcGwpOyB9CgogICAgICBhbGxvY2F0b3Jf
dHlwZQogICAgICBnZXRfYWxsb2NhdG9yKCkgY29uc3Qgbm9leGNlcHQKICAgICAgeyByZXR1cm4g
YWxsb2NhdG9yX3R5cGUoX01fZ2V0X0JpdF9hbGxvY2F0b3IoKSk7IH0KCiAgICAgIF9CdmVjdG9y
X2Jhc2UoKQogICAgICA6IF9NX2ltcGwoKSB7IH0KCiAgICAgIF9CdmVjdG9yX2Jhc2UoY29uc3Qg
YWxsb2NhdG9yX3R5cGUmIF9fYSkKICAgICAgOiBfTV9pbXBsKF9fYSkgeyB9CgoKICAgICAgX0J2
ZWN0b3JfYmFzZShfQnZlY3Rvcl9iYXNlJiYgX194KSBub2V4Y2VwdAogICAgICA6IF9NX2ltcGwo
c3RkOjptb3ZlKF9feC5fTV9nZXRfQml0X2FsbG9jYXRvcigpKSkKICAgICAgewogdGhpcy0+X01f
aW1wbC5fTV9zdGFydCA9IF9feC5fTV9pbXBsLl9NX3N0YXJ0OwogdGhpcy0+X01faW1wbC5fTV9m
aW5pc2ggPSBfX3guX01faW1wbC5fTV9maW5pc2g7CiB0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9z
dG9yYWdlID0gX194Ll9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2U7CiBfX3guX01faW1wbC5fTV9z
dGFydCA9IF9CaXRfaXRlcmF0b3IoKTsKIF9feC5fTV9pbXBsLl9NX2ZpbmlzaCA9IF9CaXRfaXRl
cmF0b3IoKTsKIF9feC5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlID0gMDsKICAgICAgfQoKCiAg
ICAgIH5fQnZlY3Rvcl9iYXNlKCkKICAgICAgeyB0aGlzLT5fTV9kZWFsbG9jYXRlKCk7IH0KCiAg
ICBwcm90ZWN0ZWQ6CiAgICAgIF9CdmVjdG9yX2ltcGwgX01faW1wbDsKCiAgICAgIF9CaXRfdHlw
ZSoKICAgICAgX01fYWxsb2NhdGUoc2l6ZV90IF9fbikKICAgICAgeyByZXR1cm4gX01faW1wbC5h
bGxvY2F0ZShfU19ud29yZChfX24pKTsgfQoKICAgICAgdm9pZAogICAgICBfTV9kZWFsbG9jYXRl
KCkKICAgICAgewogaWYgKF9NX2ltcGwuX01fc3RhcnQuX01fcCkKICAgX01faW1wbC5kZWFsbG9j
YXRlKF9NX2ltcGwuX01fc3RhcnQuX01fcCwKICAgICAgICBfTV9pbXBsLl9NX2VuZF9vZl9zdG9y
YWdlIC0gX01faW1wbC5fTV9zdGFydC5fTV9wKTsKICAgICAgfQoKICAgICAgc3RhdGljIHNpemVf
dAogICAgICBfU19ud29yZChzaXplX3QgX19uKQogICAgICB7IHJldHVybiAoX19uICsgaW50KF9T
X3dvcmRfYml0KSAtIDEpIC8gaW50KF9TX3dvcmRfYml0KTsgfQogICAgfTsKCgp9CgoKCgpuYW1l
c3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsK
CiMgNTE3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEv
Yml0cy9zdGxfYnZlY3Rvci5oIiAzCnRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYz4KICBjbGFzcyB2
ZWN0b3I8Ym9vbCwgX0FsbG9jPiA6IHByb3RlY3RlZCBfQnZlY3Rvcl9iYXNlPF9BbGxvYz4KICB7
CiAgICB0eXBlZGVmIF9CdmVjdG9yX2Jhc2U8X0FsbG9jPiBfQmFzZTsKCgogICAgdGVtcGxhdGU8
dHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBoYXNoOwoKCiAgcHVibGljOgogICAgdHlwZWRlZiBib29s
IHZhbHVlX3R5cGU7CiAgICB0eXBlZGVmIHNpemVfdCBzaXplX3R5cGU7CiAgICB0eXBlZGVmIHB0
cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7CiAgICB0eXBlZGVmIF9CaXRfcmVmZXJlbmNlIHJlZmVy
ZW5jZTsKICAgIHR5cGVkZWYgYm9vbCBjb25zdF9yZWZlcmVuY2U7CiAgICB0eXBlZGVmIF9CaXRf
cmVmZXJlbmNlKiBwb2ludGVyOwogICAgdHlwZWRlZiBjb25zdCBib29sKiBjb25zdF9wb2ludGVy
OwogICAgdHlwZWRlZiBfQml0X2l0ZXJhdG9yIGl0ZXJhdG9yOwogICAgdHlwZWRlZiBfQml0X2Nv
bnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRl
cmF0b3I8Y29uc3RfaXRlcmF0b3I+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7CiAgICB0eXBlZGVm
IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj4gcmV2ZXJzZV9pdGVyYXRvcjsKICAgIHR5
cGVkZWYgX0FsbG9jIGFsbG9jYXRvcl90eXBlOwoKICAgIGFsbG9jYXRvcl90eXBlIGdldF9hbGxv
Y2F0b3IoKSBjb25zdAogICAgeyByZXR1cm4gX0Jhc2U6OmdldF9hbGxvY2F0b3IoKTsgfQoKICBw
cm90ZWN0ZWQ6CiAgICB1c2luZyBfQmFzZTo6X01fYWxsb2NhdGU7CiAgICB1c2luZyBfQmFzZTo6
X01fZGVhbGxvY2F0ZTsKICAgIHVzaW5nIF9CYXNlOjpfU19ud29yZDsKICAgIHVzaW5nIF9CYXNl
OjpfTV9nZXRfQml0X2FsbG9jYXRvcjsKCiAgcHVibGljOgogICAgdmVjdG9yKCkKICAgIDogX0Jh
c2UoKSB7IH0KCiAgICBleHBsaWNpdAogICAgdmVjdG9yKGNvbnN0IGFsbG9jYXRvcl90eXBlJiBf
X2EpCiAgICA6IF9CYXNlKF9fYSkgeyB9CgoKICAgIGV4cGxpY2l0CiAgICB2ZWN0b3Ioc2l6ZV90
eXBlIF9fbiwgY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9fYSA9IGFsbG9jYXRvcl90eXBlKCkpCiAg
ICA6IHZlY3RvcihfX24sIGZhbHNlLCBfX2EpCiAgICB7IH0KCiAgICB2ZWN0b3Ioc2l6ZV90eXBl
IF9fbiwgY29uc3QgYm9vbCYgX192YWx1ZSwKICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2Eg
PSBhbGxvY2F0b3JfdHlwZSgpKQogICAgOiBfQmFzZShfX2EpCiAgICB7CiAgICAgIF9NX2luaXRp
YWxpemUoX19uKTsKICAgICAgc3RkOjpmaWxsKHRoaXMtPl9NX2ltcGwuX01fc3RhcnQuX01fcCwg
dGhpcy0+X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFnZSwKICBfX3ZhbHVlID8gfjAgOiAwKTsKICAg
IH0KIyA1ODMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljgu
MS9iaXRzL3N0bF9idmVjdG9yLmgiIDMKICAgIHZlY3Rvcihjb25zdCB2ZWN0b3ImIF9feCkKICAg
IDogX0Jhc2UoX194Ll9NX2dldF9CaXRfYWxsb2NhdG9yKCkpCiAgICB7CiAgICAgIF9NX2luaXRp
YWxpemUoX194LnNpemUoKSk7CiAgICAgIF9NX2NvcHlfYWxpZ25lZChfX3guYmVnaW4oKSwgX194
LmVuZCgpLCB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0KTsKICAgIH0KCgogICAgdmVjdG9yKHZlY3Rv
ciYmIF9feCkgbm9leGNlcHQKICAgIDogX0Jhc2Uoc3RkOjptb3ZlKF9feCkpIHsgfQoKICAgIHZl
Y3Rvcihpbml0aWFsaXplcl9saXN0PGJvb2w+IF9fbCwKICAgIGNvbnN0IGFsbG9jYXRvcl90eXBl
JiBfX2EgPSBhbGxvY2F0b3JfdHlwZSgpKQogICAgOiBfQmFzZShfX2EpCiAgICB7CiAgICAgIF9N
X2luaXRpYWxpemVfcmFuZ2UoX19sLmJlZ2luKCksIF9fbC5lbmQoKSwKICAgICByYW5kb21fYWNj
ZXNzX2l0ZXJhdG9yX3RhZygpKTsKICAgIH0KCgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1
dEl0ZXJhdG9yLAogICAgICB0eXBlbmFtZSA9IHN0ZDo6X1JlcXVpcmVJbnB1dEl0ZXI8X0lucHV0
SXRlcmF0b3I+PgogICAgICB2ZWN0b3IoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRl
cmF0b3IgX19sYXN0LAogICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hID0gYWxsb2NhdG9y
X3R5cGUoKSkKICAgICAgOiBfQmFzZShfX2EpCiAgICAgIHsgX01faW5pdGlhbGl6ZV9kaXNwYXRj
aChfX2ZpcnN0LCBfX2xhc3QsIF9fZmFsc2VfdHlwZSgpKTsgfQojIDYyMSAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2J2ZWN0b3IuaCIg
MwogICAgfnZlY3RvcigpIG5vZXhjZXB0IHsgfQoKICAgIHZlY3RvciYKICAgIG9wZXJhdG9yPShj
b25zdCB2ZWN0b3ImIF9feCkKICAgIHsKICAgICAgaWYgKCZfX3ggPT0gdGhpcykKIHJldHVybiAq
dGhpczsKICAgICAgaWYgKF9feC5zaXplKCkgPiBjYXBhY2l0eSgpKQogewogICB0aGlzLT5fTV9k
ZWFsbG9jYXRlKCk7CiAgIF9NX2luaXRpYWxpemUoX194LnNpemUoKSk7CiB9CiAgICAgIHRoaXMt
Pl9NX2ltcGwuX01fZmluaXNoID0gX01fY29weV9hbGlnbmVkKF9feC5iZWdpbigpLCBfX3guZW5k
KCksCiAgICAgIGJlZ2luKCkpOwogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgoKICAgIHZlY3Rv
ciYKICAgIG9wZXJhdG9yPSh2ZWN0b3ImJiBfX3gpCiAgICB7CgoKICAgICAgdGhpcy0+Y2xlYXIo
KTsKICAgICAgdGhpcy0+c3dhcChfX3gpOwogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAg
dmVjdG9yJgogICAgb3BlcmF0b3I9KGluaXRpYWxpemVyX2xpc3Q8Ym9vbD4gX19sKQogICAgewog
ICAgICB0aGlzLT5hc3NpZ24gKF9fbC5iZWdpbigpLCBfX2wuZW5kKCkpOwogICAgICByZXR1cm4g
KnRoaXM7CiAgICB9CgoKCgoKCiAgICB2b2lkCiAgICBhc3NpZ24oc2l6ZV90eXBlIF9fbiwgY29u
c3QgYm9vbCYgX194KQogICAgeyBfTV9maWxsX2Fzc2lnbihfX24sIF9feCk7IH0KCgogICAgdGVt
cGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsCiAgICAgIHR5cGVuYW1lID0gc3RkOjpfUmVx
dWlyZUlucHV0SXRlcjxfSW5wdXRJdGVyYXRvcj4+CiAgICAgIHZvaWQKICAgICAgYXNzaWduKF9J
bnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCkKICAgICAgeyBfTV9h
c3NpZ25fZGlzcGF0Y2goX19maXJzdCwgX19sYXN0LCBfX2ZhbHNlX3R5cGUoKSk7IH0KIyA2ODIg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0
bF9idmVjdG9yLmgiIDMKICAgIHZvaWQKICAgIGFzc2lnbihpbml0aWFsaXplcl9saXN0PGJvb2w+
IF9fbCkKICAgIHsgdGhpcy0+YXNzaWduKF9fbC5iZWdpbigpLCBfX2wuZW5kKCkpOyB9CgoKICAg
IGl0ZXJhdG9yCiAgICBiZWdpbigpIG5vZXhjZXB0CiAgICB7IHJldHVybiB0aGlzLT5fTV9pbXBs
Ll9NX3N0YXJ0OyB9CgogICAgY29uc3RfaXRlcmF0b3IKICAgIGJlZ2luKCkgY29uc3Qgbm9leGNl
cHQKICAgIHsgcmV0dXJuIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQ7IH0KCiAgICBpdGVyYXRvcgog
ICAgZW5kKCkgbm9leGNlcHQKICAgIHsgcmV0dXJuIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoOyB9
CgogICAgY29uc3RfaXRlcmF0b3IKICAgIGVuZCgpIGNvbnN0IG5vZXhjZXB0CiAgICB7IHJldHVy
biB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaDsgfQoKICAgIHJldmVyc2VfaXRlcmF0b3IKICAgIHJi
ZWdpbigpIG5vZXhjZXB0CiAgICB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQoK
ICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IKICAgIHJiZWdpbigpIGNvbnN0IG5vZXhjZXB0CiAg
ICB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQoKICAgIHJldmVyc2Vf
aXRlcmF0b3IKICAgIHJlbmQoKSBub2V4Y2VwdAogICAgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRv
cihiZWdpbigpKTsgfQoKICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IKICAgIHJlbmQoKSBjb25z
dCBub2V4Y2VwdAogICAgeyByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsg
fQoKCiAgICBjb25zdF9pdGVyYXRvcgogICAgY2JlZ2luKCkgY29uc3Qgbm9leGNlcHQKICAgIHsg
cmV0dXJuIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQ7IH0KCiAgICBjb25zdF9pdGVyYXRvcgogICAg
Y2VuZCgpIGNvbnN0IG5vZXhjZXB0CiAgICB7IHJldHVybiB0aGlzLT5fTV9pbXBsLl9NX2Zpbmlz
aDsgfQoKICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IKICAgIGNyYmVnaW4oKSBjb25zdCBub2V4
Y2VwdAogICAgeyByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KCiAgICBj
b25zdF9yZXZlcnNlX2l0ZXJhdG9yCiAgICBjcmVuZCgpIGNvbnN0IG5vZXhjZXB0CiAgICB7IHJl
dHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9CgoKICAgIHNpemVfdHlwZQog
ICAgc2l6ZSgpIGNvbnN0IG5vZXhjZXB0CiAgICB7IHJldHVybiBzaXplX3R5cGUoZW5kKCkgLSBi
ZWdpbigpKTsgfQoKICAgIHNpemVfdHlwZQogICAgbWF4X3NpemUoKSBjb25zdCBub2V4Y2VwdAog
ICAgewogICAgICBjb25zdCBzaXplX3R5cGUgX19pc2l6ZSA9CiBfX2dudV9jeHg6Ol9fbnVtZXJp
Y190cmFpdHM8ZGlmZmVyZW5jZV90eXBlPjo6X19tYXgKIC0gaW50KF9TX3dvcmRfYml0KSArIDE7
CiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX2FzaXplID0gX01fZ2V0X0JpdF9hbGxvY2F0b3IoKS5t
YXhfc2l6ZSgpOwogICAgICByZXR1cm4gKF9fYXNpemUgPD0gX19pc2l6ZSAvIGludChfU193b3Jk
X2JpdCkKICAgICAgID8gX19hc2l6ZSAqIGludChfU193b3JkX2JpdCkgOiBfX2lzaXplKTsKICAg
IH0KCiAgICBzaXplX3R5cGUKICAgIGNhcGFjaXR5KCkgY29uc3Qgbm9leGNlcHQKICAgIHsgcmV0
dXJuIHNpemVfdHlwZShjb25zdF9pdGVyYXRvcih0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9y
YWdlLCAwKQogICAgICAgICAtIGJlZ2luKCkpOyB9CgogICAgYm9vbAogICAgZW1wdHkoKSBjb25z
dCBub2V4Y2VwdAogICAgeyByZXR1cm4gYmVnaW4oKSA9PSBlbmQoKTsgfQoKICAgIHJlZmVyZW5j
ZQogICAgb3BlcmF0b3JbXShzaXplX3R5cGUgX19uKQogICAgewogICAgICByZXR1cm4gKml0ZXJh
dG9yKHRoaXMtPl9NX2ltcGwuX01fc3RhcnQuX01fcAogICAgICAgICArIF9fbiAvIGludChfU193
b3JkX2JpdCksIF9fbiAlIGludChfU193b3JkX2JpdCkpOwogICAgfQoKICAgIGNvbnN0X3JlZmVy
ZW5jZQogICAgb3BlcmF0b3JbXShzaXplX3R5cGUgX19uKSBjb25zdAogICAgewogICAgICByZXR1
cm4gKmNvbnN0X2l0ZXJhdG9yKHRoaXMtPl9NX2ltcGwuX01fc3RhcnQuX01fcAogICAgICAgICsg
X19uIC8gaW50KF9TX3dvcmRfYml0KSwgX19uICUgaW50KF9TX3dvcmRfYml0KSk7CiAgICB9Cgog
IHByb3RlY3RlZDoKICAgIHZvaWQKICAgIF9NX3JhbmdlX2NoZWNrKHNpemVfdHlwZSBfX24pIGNv
bnN0CiAgICB7CiAgICAgIGlmIChfX24gPj0gdGhpcy0+c2l6ZSgpKQogICAgICAgIF9fdGhyb3df
b3V0X29mX3JhbmdlKCgidmVjdG9yPGJvb2w+OjpfTV9yYW5nZV9jaGVjayIpKTsKICAgIH0KCiAg
cHVibGljOgogICAgcmVmZXJlbmNlCiAgICBhdChzaXplX3R5cGUgX19uKQogICAgeyBfTV9yYW5n
ZV9jaGVjayhfX24pOyByZXR1cm4gKCp0aGlzKVtfX25dOyB9CgogICAgY29uc3RfcmVmZXJlbmNl
CiAgICBhdChzaXplX3R5cGUgX19uKSBjb25zdAogICAgeyBfTV9yYW5nZV9jaGVjayhfX24pOyBy
ZXR1cm4gKCp0aGlzKVtfX25dOyB9CgogICAgdm9pZAogICAgcmVzZXJ2ZShzaXplX3R5cGUgX19u
KQogICAgewogICAgICBpZiAoX19uID4gbWF4X3NpemUoKSkKIF9fdGhyb3dfbGVuZ3RoX2Vycm9y
KCgidmVjdG9yOjpyZXNlcnZlIikpOwogICAgICBpZiAoY2FwYWNpdHkoKSA8IF9fbikKIF9NX3Jl
YWxsb2NhdGUoX19uKTsKICAgIH0KCiAgICByZWZlcmVuY2UKICAgIGZyb250KCkKICAgIHsgcmV0
dXJuICpiZWdpbigpOyB9CgogICAgY29uc3RfcmVmZXJlbmNlCiAgICBmcm9udCgpIGNvbnN0CiAg
ICB7IHJldHVybiAqYmVnaW4oKTsgfQoKICAgIHJlZmVyZW5jZQogICAgYmFjaygpCiAgICB7IHJl
dHVybiAqKGVuZCgpIC0gMSk7IH0KCiAgICBjb25zdF9yZWZlcmVuY2UKICAgIGJhY2soKSBjb25z
dAogICAgeyByZXR1cm4gKihlbmQoKSAtIDEpOyB9CgoKCgoKCiAgICB2b2lkCiAgICBkYXRhKCkg
bm9leGNlcHQgeyB9CgogICAgdm9pZAogICAgcHVzaF9iYWNrKGJvb2wgX194KQogICAgewogICAg
ICBpZiAodGhpcy0+X01faW1wbC5fTV9maW5pc2guX01fcCAhPSB0aGlzLT5fTV9pbXBsLl9NX2Vu
ZF9vZl9zdG9yYWdlKQogICAgICAgICp0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCsrID0gX194Owog
ICAgICBlbHNlCiAgICAgICAgX01faW5zZXJ0X2F1eChlbmQoKSwgX194KTsKICAgIH0KCiAgICB2
b2lkCiAgICBzd2FwKHZlY3RvciYgX194KQogICAgewogICAgICBzdGQ6OnN3YXAodGhpcy0+X01f
aW1wbC5fTV9zdGFydCwgX194Ll9NX2ltcGwuX01fc3RhcnQpOwogICAgICBzdGQ6OnN3YXAodGhp
cy0+X01faW1wbC5fTV9maW5pc2gsIF9feC5fTV9pbXBsLl9NX2ZpbmlzaCk7CiAgICAgIHN0ZDo6
c3dhcCh0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlLAogIF9feC5fTV9pbXBsLl9NX2Vu
ZF9vZl9zdG9yYWdlKTsKCgoKICAgICAgc3RkOjpfX2FsbG9jX3N3YXA8dHlwZW5hbWUgX0Jhc2U6
Ol9CaXRfYWxsb2NfdHlwZT46OgogX1NfZG9faXQoX01fZ2V0X0JpdF9hbGxvY2F0b3IoKSwgX194
Ll9NX2dldF9CaXRfYWxsb2NhdG9yKCkpOwogICAgfQoKCiAgICBzdGF0aWMgdm9pZAogICAgc3dh
cChyZWZlcmVuY2UgX194LCByZWZlcmVuY2UgX195KSBub2V4Y2VwdAogICAgewogICAgICBib29s
IF9fdG1wID0gX194OwogICAgICBfX3ggPSBfX3k7CiAgICAgIF9feSA9IF9fdG1wOwogICAgfQoK
ICAgIGl0ZXJhdG9yCiAgICBpbnNlcnQoaXRlcmF0b3IgX19wb3NpdGlvbiwgY29uc3QgYm9vbCYg
X194ID0gYm9vbCgpKQogICAgewogICAgICBjb25zdCBkaWZmZXJlbmNlX3R5cGUgX19uID0gX19w
b3NpdGlvbiAtIGJlZ2luKCk7CiAgICAgIGlmICh0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaC5fTV9w
ICE9IHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UKICAgJiYgX19wb3NpdGlvbiA9PSBl
bmQoKSkKICAgICAgICAqdGhpcy0+X01faW1wbC5fTV9maW5pc2grKyA9IF9feDsKICAgICAgZWxz
ZQogICAgICAgIF9NX2luc2VydF9hdXgoX19wb3NpdGlvbiwgX194KTsKICAgICAgcmV0dXJuIGJl
Z2luKCkgKyBfX247CiAgICB9CgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9y
LAogICAgICB0eXBlbmFtZSA9IHN0ZDo6X1JlcXVpcmVJbnB1dEl0ZXI8X0lucHV0SXRlcmF0b3I+
PgogICAgICB2b2lkCiAgICAgIGluc2VydChpdGVyYXRvciBfX3Bvc2l0aW9uLAogICAgICBfSW5w
dXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpCiAgICAgIHsgX01faW5z
ZXJ0X2Rpc3BhdGNoKF9fcG9zaXRpb24sIF9fZmlyc3QsIF9fbGFzdCwgX19mYWxzZV90eXBlKCkp
OyB9CiMgODg3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44
LjEvYml0cy9zdGxfYnZlY3Rvci5oIiAzCiAgICB2b2lkCiAgICBpbnNlcnQoaXRlcmF0b3IgX19w
b3NpdGlvbiwgc2l6ZV90eXBlIF9fbiwgY29uc3QgYm9vbCYgX194KQogICAgeyBfTV9maWxsX2lu
c2VydChfX3Bvc2l0aW9uLCBfX24sIF9feCk7IH0KCgogICAgdm9pZCBpbnNlcnQoaXRlcmF0b3Ig
X19wLCBpbml0aWFsaXplcl9saXN0PGJvb2w+IF9fbCkKICAgIHsgdGhpcy0+aW5zZXJ0KF9fcCwg
X19sLmJlZ2luKCksIF9fbC5lbmQoKSk7IH0KCgogICAgdm9pZAogICAgcG9wX2JhY2soKQogICAg
eyAtLXRoaXMtPl9NX2ltcGwuX01fZmluaXNoOyB9CgogICAgaXRlcmF0b3IKICAgIGVyYXNlKGl0
ZXJhdG9yIF9fcG9zaXRpb24pCiAgICB7CiAgICAgIGlmIChfX3Bvc2l0aW9uICsgMSAhPSBlbmQo
KSkKICAgICAgICBzdGQ6OmNvcHkoX19wb3NpdGlvbiArIDEsIGVuZCgpLCBfX3Bvc2l0aW9uKTsK
ICAgICAgLS10aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaDsKICAgICAgcmV0dXJuIF9fcG9zaXRpb247
CiAgICB9CgogICAgaXRlcmF0b3IKICAgIGVyYXNlKGl0ZXJhdG9yIF9fZmlyc3QsIGl0ZXJhdG9y
IF9fbGFzdCkKICAgIHsKICAgICAgaWYgKF9fZmlyc3QgIT0gX19sYXN0KQogX01fZXJhc2VfYXRf
ZW5kKHN0ZDo6Y29weShfX2xhc3QsIGVuZCgpLCBfX2ZpcnN0KSk7CiAgICAgIHJldHVybiBfX2Zp
cnN0OwogICAgfQoKICAgIHZvaWQKICAgIHJlc2l6ZShzaXplX3R5cGUgX19uZXdfc2l6ZSwgYm9v
bCBfX3ggPSBib29sKCkpCiAgICB7CiAgICAgIGlmIChfX25ld19zaXplIDwgc2l6ZSgpKQogICAg
ICAgIF9NX2VyYXNlX2F0X2VuZChiZWdpbigpICsgZGlmZmVyZW5jZV90eXBlKF9fbmV3X3NpemUp
KTsKICAgICAgZWxzZQogICAgICAgIGluc2VydChlbmQoKSwgX19uZXdfc2l6ZSAtIHNpemUoKSwg
X194KTsKICAgIH0KCgogICAgdm9pZAogICAgc2hyaW5rX3RvX2ZpdCgpCiAgICB7IF9NX3Nocmlu
a190b19maXQoKTsgfQoKCiAgICB2b2lkCiAgICBmbGlwKCkgbm9leGNlcHQKICAgIHsKICAgICAg
Zm9yIChfQml0X3R5cGUgKiBfX3AgPSB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0Ll9NX3A7CiAgICBf
X3AgIT0gdGhpcy0+X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFnZTsgKytfX3ApCiAgICAgICAgKl9f
cCA9IH4qX19wOwogICAgfQoKICAgIHZvaWQKICAgIGNsZWFyKCkgbm9leGNlcHQKICAgIHsgX01f
ZXJhc2VfYXRfZW5kKGJlZ2luKCkpOyB9CgoKICBwcm90ZWN0ZWQ6CgogICAgaXRlcmF0b3IKICAg
IF9NX2NvcHlfYWxpZ25lZChjb25zdF9pdGVyYXRvciBfX2ZpcnN0LCBjb25zdF9pdGVyYXRvciBf
X2xhc3QsCiAgICAgIGl0ZXJhdG9yIF9fcmVzdWx0KQogICAgewogICAgICBfQml0X3R5cGUqIF9f
cSA9IHN0ZDo6Y29weShfX2ZpcnN0Ll9NX3AsIF9fbGFzdC5fTV9wLCBfX3Jlc3VsdC5fTV9wKTsK
ICAgICAgcmV0dXJuIHN0ZDo6Y29weShjb25zdF9pdGVyYXRvcihfX2xhc3QuX01fcCwgMCksIF9f
bGFzdCwKICAgICAgICAgaXRlcmF0b3IoX19xLCAwKSk7CiAgICB9CgogICAgdm9pZAogICAgX01f
aW5pdGlhbGl6ZShzaXplX3R5cGUgX19uKQogICAgewogICAgICBfQml0X3R5cGUqIF9fcSA9IHRo
aXMtPl9NX2FsbG9jYXRlKF9fbik7CiAgICAgIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3Jh
Z2UgPSBfX3EgKyBfU19ud29yZChfX24pOwogICAgICB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0ID0g
aXRlcmF0b3IoX19xLCAwKTsKICAgICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2ggPSB0aGlzLT5f
TV9pbXBsLl9NX3N0YXJ0ICsgZGlmZmVyZW5jZV90eXBlKF9fbik7CiAgICB9CgogICAgdm9pZAog
ICAgX01fcmVhbGxvY2F0ZShzaXplX3R5cGUgX19uKTsKCgogICAgYm9vbAogICAgX01fc2hyaW5r
X3RvX2ZpdCgpOwoKCgoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludGVnZXI+CiAgICAgIHZv
aWQKICAgICAgX01faW5pdGlhbGl6ZV9kaXNwYXRjaChfSW50ZWdlciBfX24sIF9JbnRlZ2VyIF9f
eCwgX190cnVlX3R5cGUpCiAgICAgIHsKIF9NX2luaXRpYWxpemUoc3RhdGljX2Nhc3Q8c2l6ZV90
eXBlPihfX24pKTsKIHN0ZDo6ZmlsbCh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0Ll9NX3AsCiAgICB0
aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlLCBfX3ggPyB+MCA6IDApOwogICAgICB9Cgog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3I+CiAgICAgIHZvaWQKICAgICAgX01f
aW5pdGlhbGl6ZV9kaXNwYXRjaChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRv
ciBfX2xhc3QsCiAgICAgICAgX19mYWxzZV90eXBlKQogICAgICB7IF9NX2luaXRpYWxpemVfcmFu
Z2UoX19maXJzdCwgX19sYXN0LAogICAgICAgc3RkOjpfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmly
c3QpKTsgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yPgogICAgICB2b2lk
CiAgICAgIF9NX2luaXRpYWxpemVfcmFuZ2UoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0
SXRlcmF0b3IgX19sYXN0LAogICAgIHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFnKQogICAgICB7CiBm
b3IgKDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICAgcHVzaF9iYWNrKCpfX2ZpcnN0
KTsKICAgICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICAg
IHZvaWQKICAgICAgX01faW5pdGlhbGl6ZV9yYW5nZShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3Qs
IF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcp
CiAgICAgIHsKIGNvbnN0IHNpemVfdHlwZSBfX24gPSBzdGQ6OmRpc3RhbmNlKF9fZmlyc3QsIF9f
bGFzdCk7CiBfTV9pbml0aWFsaXplKF9fbik7CiBzdGQ6OmNvcHkoX19maXJzdCwgX19sYXN0LCB0
aGlzLT5fTV9pbXBsLl9NX3N0YXJ0KTsKICAgICAgfQoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUg
X0ludGVnZXI+CiAgICAgIHZvaWQKICAgICAgX01fYXNzaWduX2Rpc3BhdGNoKF9JbnRlZ2VyIF9f
biwgX0ludGVnZXIgX192YWwsIF9fdHJ1ZV90eXBlKQogICAgICB7IF9NX2ZpbGxfYXNzaWduKF9f
biwgX192YWwpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiAgICAgIHZv
aWQKICAgICAgX01fYXNzaWduX2Rpc3BhdGNoKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1
dEl0ZXJhdG9yIF9fbGFzdCwKICAgIF9fZmFsc2VfdHlwZSkKICAgICAgeyBfTV9hc3NpZ25fYXV4
KF9fZmlyc3QsIF9fbGFzdCwgc3RkOjpfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsgfQoK
ICAgIHZvaWQKICAgIF9NX2ZpbGxfYXNzaWduKHNpemVfdCBfX24sIGJvb2wgX194KQogICAgewog
ICAgICBpZiAoX19uID4gc2l6ZSgpKQogewogICBzdGQ6OmZpbGwodGhpcy0+X01faW1wbC5fTV9z
dGFydC5fTV9wLAogICAgICB0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlLCBfX3ggPyB+
MCA6IDApOwogICBpbnNlcnQoZW5kKCksIF9fbiAtIHNpemUoKSwgX194KTsKIH0KICAgICAgZWxz
ZQogewogICBfTV9lcmFzZV9hdF9lbmQoYmVnaW4oKSArIF9fbik7CiAgIHN0ZDo6ZmlsbCh0aGlz
LT5fTV9pbXBsLl9NX3N0YXJ0Ll9NX3AsCiAgICAgIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0
b3JhZ2UsIF9feCA/IH4wIDogMCk7CiB9CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lu
cHV0SXRlcmF0b3I+CiAgICAgIHZvaWQKICAgICAgX01fYXNzaWduX2F1eChfSW5wdXRJdGVyYXRv
ciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgIHN0ZDo6aW5wdXRfaXRlcmF0
b3JfdGFnKQogICAgICB7CiBpdGVyYXRvciBfX2N1ciA9IGJlZ2luKCk7CiBmb3IgKDsgX19maXJz
dCAhPSBfX2xhc3QgJiYgX19jdXIgIT0gZW5kKCk7ICsrX19jdXIsICsrX19maXJzdCkKICAgKl9f
Y3VyID0gKl9fZmlyc3Q7CiBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiAgIF9NX2VyYXNlX2F0X2Vu
ZChfX2N1cik7CiBlbHNlCiAgIGluc2VydChlbmQoKSwgX19maXJzdCwgX19sYXN0KTsKICAgICAg
fQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICAgIHZvaWQKICAg
ICAgX01fYXNzaWduX2F1eChfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0
b3IgX19sYXN0LAogICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnKQogICAgICB7CiBjb25z
dCBzaXplX3R5cGUgX19sZW4gPSBzdGQ6OmRpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCk7CiBpZiAo
X19sZW4gPCBzaXplKCkpCiAgIF9NX2VyYXNlX2F0X2VuZChzdGQ6OmNvcHkoX19maXJzdCwgX19s
YXN0LCBiZWdpbigpKSk7CiBlbHNlCiAgIHsKICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fbWlkID0g
X19maXJzdDsKICAgICBzdGQ6OmFkdmFuY2UoX19taWQsIHNpemUoKSk7CiAgICAgc3RkOjpjb3B5
KF9fZmlyc3QsIF9fbWlkLCBiZWdpbigpKTsKICAgICBpbnNlcnQoZW5kKCksIF9fbWlkLCBfX2xh
c3QpOwogICB9CiAgICAgIH0KCgoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludGVnZXI+CiAg
ICAgIHZvaWQKICAgICAgX01faW5zZXJ0X2Rpc3BhdGNoKGl0ZXJhdG9yIF9fcG9zLCBfSW50ZWdl
ciBfX24sIF9JbnRlZ2VyIF9feCwKICAgIF9fdHJ1ZV90eXBlKQogICAgICB7IF9NX2ZpbGxfaW5z
ZXJ0KF9fcG9zLCBfX24sIF9feCk7IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVy
YXRvcj4KICAgICAgdm9pZAogICAgICBfTV9pbnNlcnRfZGlzcGF0Y2goaXRlcmF0b3IgX19wb3Ms
CiAgICBfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICBf
X2ZhbHNlX3R5cGUpCiAgICAgIHsgX01faW5zZXJ0X3JhbmdlKF9fcG9zLCBfX2ZpcnN0LCBfX2xh
c3QsCiAgIHN0ZDo6X19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0KSk7IH0KCiAgICB2b2lkCiAg
ICBfTV9maWxsX2luc2VydChpdGVyYXRvciBfX3Bvc2l0aW9uLCBzaXplX3R5cGUgX19uLCBib29s
IF9feCk7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3I+CiAgICAgIHZvaWQK
ICAgICAgX01faW5zZXJ0X3JhbmdlKGl0ZXJhdG9yIF9fcG9zLCBfSW5wdXRJdGVyYXRvciBfX2Zp
cnN0LAogICAgICAgIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwgc3RkOjppbnB1dF9pdGVyYXRvcl90
YWcpCiAgICAgIHsKIGZvciAoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICB7CiAg
ICAgX19wb3MgPSBpbnNlcnQoX19wb3MsICpfX2ZpcnN0KTsKICAgICArK19fcG9zOwogICB9CiAg
ICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yPgogICAgICB2b2lk
CiAgICAgIF9NX2luc2VydF9yYW5nZShpdGVyYXRvciBfX3Bvc2l0aW9uLCBfRm9yd2FyZEl0ZXJh
dG9yIF9fZmlyc3QsCiAgICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsIHN0ZDo6Zm9yd2Fy
ZF9pdGVyYXRvcl90YWcpOwoKICAgIHZvaWQKICAgIF9NX2luc2VydF9hdXgoaXRlcmF0b3IgX19w
b3NpdGlvbiwgYm9vbCBfX3gpOwoKICAgIHNpemVfdHlwZQogICAgX01fY2hlY2tfbGVuKHNpemVf
dHlwZSBfX24sIGNvbnN0IGNoYXIqIF9fcykgY29uc3QKICAgIHsKICAgICAgaWYgKG1heF9zaXpl
KCkgLSBzaXplKCkgPCBfX24pCiBfX3Rocm93X2xlbmd0aF9lcnJvcigoX19zKSk7CgogICAgICBj
b25zdCBzaXplX3R5cGUgX19sZW4gPSBzaXplKCkgKyBzdGQ6Om1heChzaXplKCksIF9fbik7CiAg
ICAgIHJldHVybiAoX19sZW4gPCBzaXplKCkgfHwgX19sZW4gPiBtYXhfc2l6ZSgpKSA/IG1heF9z
aXplKCkgOiBfX2xlbjsKICAgIH0KCiAgICB2b2lkCiAgICBfTV9lcmFzZV9hdF9lbmQoaXRlcmF0
b3IgX19wb3MpCiAgICB7IHRoaXMtPl9NX2ltcGwuX01fZmluaXNoID0gX19wb3M7IH0KICB9OwoK
Cn0KCgoKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRl
ZmF1bHQiKSkpCnsKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jPgogICAgc3RydWN0IGhh
c2g8c3RkOjp2ZWN0b3I8Ym9vbCwgX0FsbG9jPj4KICAgIDogcHVibGljIF9faGFzaF9iYXNlPHNp
emVfdCwgc3RkOjp2ZWN0b3I8Ym9vbCwgX0FsbG9jPj4KICAgIHsKICAgICAgc2l6ZV90CiAgICAg
IG9wZXJhdG9yKCkoY29uc3Qgc3RkOjp2ZWN0b3I8Ym9vbCwgX0FsbG9jPiYpIGNvbnN0IG5vZXhj
ZXB0OwogICAgfTsKCgp9CiMgNjYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjguMS92ZWN0b3IiIDIgMwoKCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3ZlY3Rvci50Y2MiIDEgMwojIDU5ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljgu
MS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy92ZWN0b3Iu
dGNjIiAzCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVm
YXVsdCIpKSkKewoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQWxsb2M+CiAg
ICB2b2lkCiAgICB2ZWN0b3I8X1RwLCBfQWxsb2M+OjoKICAgIHJlc2VydmUoc2l6ZV90eXBlIF9f
bikKICAgIHsKICAgICAgaWYgKF9fbiA+IHRoaXMtPm1heF9zaXplKCkpCiBfX3Rocm93X2xlbmd0
aF9lcnJvcigoInZlY3Rvcjo6cmVzZXJ2ZSIpKTsKICAgICAgaWYgKHRoaXMtPmNhcGFjaXR5KCkg
PCBfX24pCiB7CiAgIGNvbnN0IHNpemVfdHlwZSBfX29sZF9zaXplID0gc2l6ZSgpOwogICBwb2lu
dGVyIF9fdG1wID0gX01fYWxsb2NhdGVfYW5kX2NvcHkoX19uLAogICAgIHN0ZDo6X19tYWtlX21v
dmVfaWZfbm9leGNlcHRfaXRlcmF0b3IodGhpcy0+X01faW1wbC5fTV9zdGFydCksCiAgICAgc3Rk
OjpfX21ha2VfbW92ZV9pZl9ub2V4Y2VwdF9pdGVyYXRvcih0aGlzLT5fTV9pbXBsLl9NX2Zpbmlz
aCkpOwogICBzdGQ6Ol9EZXN0cm95KHRoaXMtPl9NX2ltcGwuX01fc3RhcnQsIHRoaXMtPl9NX2lt
cGwuX01fZmluaXNoLAogICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICBfTV9kZWFsbG9jYXRl
KHRoaXMtPl9NX2ltcGwuX01fc3RhcnQsCiAgIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3Jh
Z2UKICAgLSB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0KTsKICAgdGhpcy0+X01faW1wbC5fTV9zdGFy
dCA9IF9fdG1wOwogICB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCA9IF9fdG1wICsgX19vbGRfc2l6
ZTsKICAgdGhpcy0+X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFnZSA9IHRoaXMtPl9NX2ltcGwuX01f
c3RhcnQgKyBfX247CiB9CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1l
IF9BbGxvYz4KICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIF9BcmdzPgogICAgICB2b2lkCiAgICAg
IHZlY3RvcjxfVHAsIF9BbGxvYz46OgogICAgICBlbXBsYWNlX2JhY2soX0FyZ3MmJi4uLiBfX2Fy
Z3MpCiAgICAgIHsKIGlmICh0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCAhPSB0aGlzLT5fTV9pbXBs
Ll9NX2VuZF9vZl9zdG9yYWdlKQogICB7CiAgICAgX0FsbG9jX3RyYWl0czo6Y29uc3RydWN0KHRo
aXMtPl9NX2ltcGwsIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoLAogICAgICAgICBzdGQ6OmZvcndh
cmQ8X0FyZ3M+KF9fYXJncykuLi4pOwogICAgICsrdGhpcy0+X01faW1wbC5fTV9maW5pc2g7CiAg
IH0KIGVsc2UKICAgX01fZW1wbGFjZV9iYWNrX2F1eChzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJn
cykuLi4pOwogICAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxv
Yz4KICAgIHR5cGVuYW1lIHZlY3RvcjxfVHAsIF9BbGxvYz46Oml0ZXJhdG9yCiAgICB2ZWN0b3I8
X1RwLCBfQWxsb2M+OjoKICAgIGluc2VydChpdGVyYXRvciBfX3Bvc2l0aW9uLCBjb25zdCB2YWx1
ZV90eXBlJiBfX3gpCiAgICB7CiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX24gPSBfX3Bvc2l0aW9u
IC0gYmVnaW4oKTsKICAgICAgaWYgKHRoaXMtPl9NX2ltcGwuX01fZmluaXNoICE9IHRoaXMtPl9N
X2ltcGwuX01fZW5kX29mX3N0b3JhZ2UKICAgJiYgX19wb3NpdGlvbiA9PSBlbmQoKSkKIHsKICAg
X0FsbG9jX3RyYWl0czo6Y29uc3RydWN0KHRoaXMtPl9NX2ltcGwsIHRoaXMtPl9NX2ltcGwuX01f
ZmluaXNoLCBfX3gpOwogICArK3RoaXMtPl9NX2ltcGwuX01fZmluaXNoOwogfQogICAgICBlbHNl
CiB7CgogICBpZiAodGhpcy0+X01faW1wbC5fTV9maW5pc2ggIT0gdGhpcy0+X01faW1wbC5fTV9l
bmRfb2Zfc3RvcmFnZSkKICAgICB7CiAgICAgICBfVHAgX194X2NvcHkgPSBfX3g7CiAgICAgICBf
TV9pbnNlcnRfYXV4KF9fcG9zaXRpb24sIHN0ZDo6bW92ZShfX3hfY29weSkpOwogICAgIH0KICAg
ZWxzZQoKICAgICBfTV9pbnNlcnRfYXV4KF9fcG9zaXRpb24sIF9feCk7CiB9CiAgICAgIHJldHVy
biBpdGVyYXRvcih0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0ICsgX19uKTsKICAgIH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB0eXBlbmFtZSB2ZWN0b3I8X1Rw
LCBfQWxsb2M+OjppdGVyYXRvcgogICAgdmVjdG9yPF9UcCwgX0FsbG9jPjo6CiAgICBlcmFzZShp
dGVyYXRvciBfX3Bvc2l0aW9uKQogICAgewogICAgICBpZiAoX19wb3NpdGlvbiArIDEgIT0gZW5k
KCkpCiBzdGQ6Om1vdmUoX19wb3NpdGlvbiArIDEsIGVuZCgpLCBfX3Bvc2l0aW9uKTsKICAgICAg
LS10aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaDsKICAgICAgX0FsbG9jX3RyYWl0czo6ZGVzdHJveSh0
aGlzLT5fTV9pbXBsLCB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCk7CiAgICAgIHJldHVybiBfX3Bv
c2l0aW9uOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4K
ICAgIHR5cGVuYW1lIHZlY3RvcjxfVHAsIF9BbGxvYz46Oml0ZXJhdG9yCiAgICB2ZWN0b3I8X1Rw
LCBfQWxsb2M+OjoKICAgIGVyYXNlKGl0ZXJhdG9yIF9fZmlyc3QsIGl0ZXJhdG9yIF9fbGFzdCkK
ICAgIHsKICAgICAgaWYgKF9fZmlyc3QgIT0gX19sYXN0KQogewogICBpZiAoX19sYXN0ICE9IGVu
ZCgpKQogICAgIHN0ZDo6bW92ZShfX2xhc3QsIGVuZCgpLCBfX2ZpcnN0KTsKICAgX01fZXJhc2Vf
YXRfZW5kKF9fZmlyc3QuYmFzZSgpICsgKGVuZCgpIC0gX19sYXN0KSk7CiB9CiAgICAgIHJldHVy
biBfX2ZpcnN0OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxv
Yz4KICAgIHZlY3RvcjxfVHAsIF9BbGxvYz4mCiAgICB2ZWN0b3I8X1RwLCBfQWxsb2M+OjoKICAg
IG9wZXJhdG9yPShjb25zdCB2ZWN0b3I8X1RwLCBfQWxsb2M+JiBfX3gpCiAgICB7CiAgICAgIGlm
ICgmX194ICE9IHRoaXMpCiB7CgogICBpZiAoX0FsbG9jX3RyYWl0czo6X1NfcHJvcGFnYXRlX29u
X2NvcHlfYXNzaWduKCkpCiAgICAgewogICAgICAgaWYgKCFfQWxsb2NfdHJhaXRzOjpfU19hbHdh
eXNfZXF1YWwoKQogICAgICAgICAgICYmIF9NX2dldF9UcF9hbGxvY2F0b3IoKSAhPSBfX3guX01f
Z2V0X1RwX2FsbG9jYXRvcigpKQogICAgICAgICB7CgogICAgdGhpcy0+Y2xlYXIoKTsKICAgIF9N
X2RlYWxsb2NhdGUodGhpcy0+X01faW1wbC5fTV9zdGFydCwKICAgIHRoaXMtPl9NX2ltcGwuX01f
ZW5kX29mX3N0b3JhZ2UKICAgIC0gdGhpcy0+X01faW1wbC5fTV9zdGFydCk7CiAgICB0aGlzLT5f
TV9pbXBsLl9NX3N0YXJ0ID0gbnVsbHB0cjsKICAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoID0g
bnVsbHB0cjsKICAgIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UgPSBudWxscHRyOwog
IH0KICAgICAgIHN0ZDo6X19hbGxvY19vbl9jb3B5KF9NX2dldF9UcF9hbGxvY2F0b3IoKSwKICAg
ICAgIF9feC5fTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICAgIH0KCiAgIGNvbnN0IHNpemVfdHlw
ZSBfX3hsZW4gPSBfX3guc2l6ZSgpOwogICBpZiAoX194bGVuID4gY2FwYWNpdHkoKSkKICAgICB7
CiAgICAgICBwb2ludGVyIF9fdG1wID0gX01fYWxsb2NhdGVfYW5kX2NvcHkoX194bGVuLCBfX3gu
YmVnaW4oKSwKICAgICAgICAgX194LmVuZCgpKTsKICAgICAgIHN0ZDo6X0Rlc3Ryb3kodGhpcy0+
X01faW1wbC5fTV9zdGFydCwgdGhpcy0+X01faW1wbC5fTV9maW5pc2gsCiAgICAgICBfTV9nZXRf
VHBfYWxsb2NhdG9yKCkpOwogICAgICAgX01fZGVhbGxvY2F0ZSh0aGlzLT5fTV9pbXBsLl9NX3N0
YXJ0LAogICAgICAgdGhpcy0+X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFnZQogICAgICAgLSB0aGlz
LT5fTV9pbXBsLl9NX3N0YXJ0KTsKICAgICAgIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQgPSBfX3Rt
cDsKICAgICAgIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UgPSB0aGlzLT5fTV9pbXBs
Ll9NX3N0YXJ0ICsgX194bGVuOwogICAgIH0KICAgZWxzZSBpZiAoc2l6ZSgpID49IF9feGxlbikK
ICAgICB7CiAgICAgICBzdGQ6Ol9EZXN0cm95KHN0ZDo6Y29weShfX3guYmVnaW4oKSwgX194LmVu
ZCgpLCBiZWdpbigpKSwKICAgICAgIGVuZCgpLCBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICAg
IH0KICAgZWxzZQogICAgIHsKICAgICAgIHN0ZDo6Y29weShfX3guX01faW1wbC5fTV9zdGFydCwg
X194Ll9NX2ltcGwuX01fc3RhcnQgKyBzaXplKCksCiAgIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQp
OwogICAgICAgc3RkOjpfX3VuaW5pdGlhbGl6ZWRfY29weV9hKF9feC5fTV9pbXBsLl9NX3N0YXJ0
ICsgc2l6ZSgpLAogICAgICAgX194Ll9NX2ltcGwuX01fZmluaXNoLAogICAgICAgdGhpcy0+X01f
aW1wbC5fTV9maW5pc2gsCiAgICAgICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICAgIH0KICAg
dGhpcy0+X01faW1wbC5fTV9maW5pc2ggPSB0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0ICsgX194bGVu
OwogfQogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwg
dHlwZW5hbWUgX0FsbG9jPgogICAgdm9pZAogICAgdmVjdG9yPF9UcCwgX0FsbG9jPjo6CiAgICBf
TV9maWxsX2Fzc2lnbihzaXplX3QgX19uLCBjb25zdCB2YWx1ZV90eXBlJiBfX3ZhbCkKICAgIHsK
ICAgICAgaWYgKF9fbiA+IGNhcGFjaXR5KCkpCiB7CiAgIHZlY3RvciBfX3RtcChfX24sIF9fdmFs
LCBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICBfX3RtcC5zd2FwKCp0aGlzKTsKIH0KICAgICAg
ZWxzZSBpZiAoX19uID4gc2l6ZSgpKQogewogICBzdGQ6OmZpbGwoYmVnaW4oKSwgZW5kKCksIF9f
dmFsKTsKICAgc3RkOjpfX3VuaW5pdGlhbGl6ZWRfZmlsbF9uX2EodGhpcy0+X01faW1wbC5fTV9m
aW5pc2gsCiAgICAgX19uIC0gc2l6ZSgpLCBfX3ZhbCwKICAgICBfTV9nZXRfVHBfYWxsb2NhdG9y
KCkpOwogICB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCArPSBfX24gLSBzaXplKCk7CiB9CiAgICAg
IGVsc2UKICAgICAgICBfTV9lcmFzZV9hdF9lbmQoc3RkOjpmaWxsX24odGhpcy0+X01faW1wbC5f
TV9zdGFydCwgX19uLCBfX3ZhbCkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5
cGVuYW1lIF9BbGxvYz4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yPgogICAg
ICB2b2lkCiAgICAgIHZlY3RvcjxfVHAsIF9BbGxvYz46OgogICAgICBfTV9hc3NpZ25fYXV4KF9J
bnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgc3RkOjpp
bnB1dF9pdGVyYXRvcl90YWcpCiAgICAgIHsKIHBvaW50ZXIgX19jdXIodGhpcy0+X01faW1wbC5f
TV9zdGFydCk7CiBmb3IgKDsgX19maXJzdCAhPSBfX2xhc3QgJiYgX19jdXIgIT0gdGhpcy0+X01f
aW1wbC5fTV9maW5pc2g7CiAgICAgICsrX19jdXIsICsrX19maXJzdCkKICAgKl9fY3VyID0gKl9f
Zmlyc3Q7CiBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiAgIF9NX2VyYXNlX2F0X2VuZChfX2N1cik7
CiBlbHNlCiAgIGluc2VydChlbmQoKSwgX19maXJzdCwgX19sYXN0KTsKICAgICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHRlbXBsYXRlPHR5cGVuYW1l
IF9Gb3J3YXJkSXRlcmF0b3I+CiAgICAgIHZvaWQKICAgICAgdmVjdG9yPF9UcCwgX0FsbG9jPjo6
CiAgICAgIF9NX2Fzc2lnbl9hdXgoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0
ZXJhdG9yIF9fbGFzdCwKICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZykKICAgICAgewog
Y29uc3Qgc2l6ZV90eXBlIF9fbGVuID0gc3RkOjpkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QpOwoK
IGlmIChfX2xlbiA+IGNhcGFjaXR5KCkpCiAgIHsKICAgICBwb2ludGVyIF9fdG1wKF9NX2FsbG9j
YXRlX2FuZF9jb3B5KF9fbGVuLCBfX2ZpcnN0LCBfX2xhc3QpKTsKICAgICBzdGQ6Ol9EZXN0cm95
KHRoaXMtPl9NX2ltcGwuX01fc3RhcnQsIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoLAogICAgIF9N
X2dldF9UcF9hbGxvY2F0b3IoKSk7CiAgICAgX01fZGVhbGxvY2F0ZSh0aGlzLT5fTV9pbXBsLl9N
X3N0YXJ0LAogICAgIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UKICAgICAtIHRoaXMt
Pl9NX2ltcGwuX01fc3RhcnQpOwogICAgIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQgPSBfX3RtcDsK
ICAgICB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCA9IHRoaXMtPl9NX2ltcGwuX01fc3RhcnQgKyBf
X2xlbjsKICAgICB0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlID0gdGhpcy0+X01faW1w
bC5fTV9maW5pc2g7CiAgIH0KIGVsc2UgaWYgKHNpemUoKSA+PSBfX2xlbikKICAgX01fZXJhc2Vf
YXRfZW5kKHN0ZDo6Y29weShfX2ZpcnN0LCBfX2xhc3QsIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQp
KTsKIGVsc2UKICAgewogICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19taWQgPSBfX2ZpcnN0OwogICAg
IHN0ZDo6YWR2YW5jZShfX21pZCwgc2l6ZSgpKTsKICAgICBzdGQ6OmNvcHkoX19maXJzdCwgX19t
aWQsIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQpOwogICAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNo
ID0KICAgICAgIHN0ZDo6X191bmluaXRpYWxpemVkX2NvcHlfYShfX21pZCwgX19sYXN0LAogICAg
ICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2gsCiAgICAgICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkp
OwogICB9CiAgICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0FsbG9j
PgogICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gX0FyZ3M+CiAgICAgIHR5cGVuYW1lIHZlY3Rvcjxf
VHAsIF9BbGxvYz46Oml0ZXJhdG9yCiAgICAgIHZlY3RvcjxfVHAsIF9BbGxvYz46OgogICAgICBl
bXBsYWNlKGl0ZXJhdG9yIF9fcG9zaXRpb24sIF9BcmdzJiYuLi4gX19hcmdzKQogICAgICB7CiBj
b25zdCBzaXplX3R5cGUgX19uID0gX19wb3NpdGlvbiAtIGJlZ2luKCk7CiBpZiAodGhpcy0+X01f
aW1wbC5fTV9maW5pc2ggIT0gdGhpcy0+X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFnZQogICAgICYm
IF9fcG9zaXRpb24gPT0gZW5kKCkpCiAgIHsKICAgICBfQWxsb2NfdHJhaXRzOjpjb25zdHJ1Y3Qo
dGhpcy0+X01faW1wbCwgdGhpcy0+X01faW1wbC5fTV9maW5pc2gsCiAgICAgICAgIHN0ZDo6Zm9y
d2FyZDxfQXJncz4oX19hcmdzKS4uLik7CiAgICAgKyt0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaDsK
ICAgfQogZWxzZQogICBfTV9pbnNlcnRfYXV4KF9fcG9zaXRpb24sIHN0ZDo6Zm9yd2FyZDxfQXJn
cz4oX19hcmdzKS4uLik7CiByZXR1cm4gaXRlcmF0b3IodGhpcy0+X01faW1wbC5fTV9zdGFydCAr
IF9fbik7CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQWxsb2M+
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfQXJncz4KICAgICAgdm9pZAogICAgICB2ZWN0b3I8
X1RwLCBfQWxsb2M+OjoKICAgICAgX01faW5zZXJ0X2F1eChpdGVyYXRvciBfX3Bvc2l0aW9uLCBf
QXJncyYmLi4uIF9fYXJncykKCgoKCgoKICAgIHsKICAgICAgaWYgKHRoaXMtPl9NX2ltcGwuX01f
ZmluaXNoICE9IHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UpCiB7CiAgIF9BbGxvY190
cmFpdHM6OmNvbnN0cnVjdCh0aGlzLT5fTV9pbXBsLCB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCwK
ICAgICAgICAgICAgICBzdGQ6Om1vdmUoKih0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCAtIDEpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgKyt0aGlzLT5fTV9pbXBsLl9NX2Zpbmlz
aDsKCgoKICAgc3RkOjptb3ZlX2JhY2t3YXJkKF9fcG9zaXRpb24uYmFzZSgpLCB0aGlzLT5fTV9p
bXBsLl9NX2ZpbmlzaCAtIDIsIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoIC0gMSkKCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKCiAgICpfX3Bvc2l0aW9uID0gX1RwKHN0ZDo6
Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLik7CgogfQogICAgICBlbHNlCiB7CiAgIGNvbnN0IHNp
emVfdHlwZSBfX2xlbiA9CiAgICAgX01fY2hlY2tfbGVuKHNpemVfdHlwZSgxKSwgInZlY3Rvcjo6
X01faW5zZXJ0X2F1eCIpOwogICBjb25zdCBzaXplX3R5cGUgX19lbGVtc19iZWZvcmUgPSBfX3Bv
c2l0aW9uIC0gYmVnaW4oKTsKICAgcG9pbnRlciBfX25ld19zdGFydCh0aGlzLT5fTV9hbGxvY2F0
ZShfX2xlbikpOwogICBwb2ludGVyIF9fbmV3X2ZpbmlzaChfX25ld19zdGFydCk7CiAgIGlmICh0
cnVlKQogICAgIHsKCgoKCiAgICAgICBfQWxsb2NfdHJhaXRzOjpjb25zdHJ1Y3QodGhpcy0+X01f
aW1wbCwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fbmV3X3N0YXJ0ICsgX19lbGVtc19iZWZv
cmUsCgogICAgICAgICAgIHN0ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLik7CgoKCiAgICAg
ICBfX25ld19maW5pc2ggPSAwOwoKICAgICAgIF9fbmV3X2ZpbmlzaAogID0gc3RkOjpfX3VuaW5p
dGlhbGl6ZWRfbW92ZV9pZl9ub2V4Y2VwdF9hCiAgKHRoaXMtPl9NX2ltcGwuX01fc3RhcnQsIF9f
cG9zaXRpb24uYmFzZSgpLAogICBfX25ld19zdGFydCwgX01fZ2V0X1RwX2FsbG9jYXRvcigpKTsK
CiAgICAgICArK19fbmV3X2ZpbmlzaDsKCiAgICAgICBfX25ld19maW5pc2gKICA9IHN0ZDo6X191
bmluaXRpYWxpemVkX21vdmVfaWZfbm9leGNlcHRfYQogIChfX3Bvc2l0aW9uLmJhc2UoKSwgdGhp
cy0+X01faW1wbC5fTV9maW5pc2gsCiAgIF9fbmV3X2ZpbmlzaCwgX01fZ2V0X1RwX2FsbG9jYXRv
cigpKTsKICAgICB9CiAgICAgICAgICBpZiAoZmFsc2UpCiAgICAgewogICAgICAgaWYgKCFfX25l
d19maW5pc2gpCiAgX0FsbG9jX3RyYWl0czo6ZGVzdHJveSh0aGlzLT5fTV9pbXBsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgX19uZXdfc3RhcnQgKyBfX2VsZW1zX2JlZm9yZSk7CiAgICAgICBl
bHNlCiAgc3RkOjpfRGVzdHJveShfX25ld19zdGFydCwgX19uZXdfZmluaXNoLCBfTV9nZXRfVHBf
YWxsb2NhdG9yKCkpOwogICAgICAgX01fZGVhbGxvY2F0ZShfX25ld19zdGFydCwgX19sZW4pOwog
ICAgICAgOwogICAgIH0KICAgc3RkOjpfRGVzdHJveSh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0LCB0
aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCwKICAgX01fZ2V0X1RwX2FsbG9jYXRvcigpKTsKICAgX01f
ZGVhbGxvY2F0ZSh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0LAogICB0aGlzLT5fTV9pbXBsLl9NX2Vu
ZF9vZl9zdG9yYWdlCiAgIC0gdGhpcy0+X01faW1wbC5fTV9zdGFydCk7CiAgIHRoaXMtPl9NX2lt
cGwuX01fc3RhcnQgPSBfX25ld19zdGFydDsKICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2ggPSBf
X25ld19maW5pc2g7CiAgIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UgPSBfX25ld19z
dGFydCArIF9fbGVuOwogfQogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFt
ZSBfQWxsb2M+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBfQXJncz4KICAgICAgdm9pZAogICAg
ICB2ZWN0b3I8X1RwLCBfQWxsb2M+OjoKICAgICAgX01fZW1wbGFjZV9iYWNrX2F1eChfQXJncyYm
Li4uIF9fYXJncykKICAgICAgewogY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0KICAgX01fY2hlY2tf
bGVuKHNpemVfdHlwZSgxKSwgInZlY3Rvcjo6X01fZW1wbGFjZV9iYWNrX2F1eCIpOwogcG9pbnRl
ciBfX25ld19zdGFydCh0aGlzLT5fTV9hbGxvY2F0ZShfX2xlbikpOwogcG9pbnRlciBfX25ld19m
aW5pc2goX19uZXdfc3RhcnQpOwogaWYgKHRydWUpCiAgIHsKICAgICBfQWxsb2NfdHJhaXRzOjpj
b25zdHJ1Y3QodGhpcy0+X01faW1wbCwgX19uZXdfc3RhcnQgKyBzaXplKCksCiAgICAgICAgIHN0
ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLik7CiAgICAgX19uZXdfZmluaXNoID0gMDsKCiAg
ICAgX19uZXdfZmluaXNoCiAgICAgICA9IHN0ZDo6X191bmluaXRpYWxpemVkX21vdmVfaWZfbm9l
eGNlcHRfYQogICAgICAgKHRoaXMtPl9NX2ltcGwuX01fc3RhcnQsIHRoaXMtPl9NX2ltcGwuX01f
ZmluaXNoLAogICAgICAgIF9fbmV3X3N0YXJ0LCBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwoKICAg
ICArK19fbmV3X2ZpbmlzaDsKICAgfQogaWYgKGZhbHNlKQogICB7CiAgICAgaWYgKCFfX25ld19m
aW5pc2gpCiAgICAgICBfQWxsb2NfdHJhaXRzOjpkZXN0cm95KHRoaXMtPl9NX2ltcGwsIF9fbmV3
X3N0YXJ0ICsgc2l6ZSgpKTsKICAgICBlbHNlCiAgICAgICBzdGQ6Ol9EZXN0cm95KF9fbmV3X3N0
YXJ0LCBfX25ld19maW5pc2gsIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiAgICAgX01fZGVhbGxv
Y2F0ZShfX25ld19zdGFydCwgX19sZW4pOwogICAgIDsKICAgfQogc3RkOjpfRGVzdHJveSh0aGlz
LT5fTV9pbXBsLl9NX3N0YXJ0LCB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCwKICAgICAgICBfTV9n
ZXRfVHBfYWxsb2NhdG9yKCkpOwogX01fZGVhbGxvY2F0ZSh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0
LAogICAgICAgIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UKICAgICAgICAtIHRoaXMt
Pl9NX2ltcGwuX01fc3RhcnQpOwogdGhpcy0+X01faW1wbC5fTV9zdGFydCA9IF9fbmV3X3N0YXJ0
OwogdGhpcy0+X01faW1wbC5fTV9maW5pc2ggPSBfX25ld19maW5pc2g7CiB0aGlzLT5fTV9pbXBs
Ll9NX2VuZF9vZl9zdG9yYWdlID0gX19uZXdfc3RhcnQgKyBfX2xlbjsKICAgICAgfQoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB2b2lkCiAgICB2ZWN0b3I8
X1RwLCBfQWxsb2M+OjoKICAgIF9NX2ZpbGxfaW5zZXJ0KGl0ZXJhdG9yIF9fcG9zaXRpb24sIHNp
emVfdHlwZSBfX24sIGNvbnN0IHZhbHVlX3R5cGUmIF9feCkKICAgIHsKICAgICAgaWYgKF9fbiAh
PSAwKQogewogICBpZiAoc2l6ZV90eXBlKHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UK
ICAgLSB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCkgPj0gX19uKQogICAgIHsKICAgICAgIHZhbHVl
X3R5cGUgX194X2NvcHkgPSBfX3g7CiAgICAgICBjb25zdCBzaXplX3R5cGUgX19lbGVtc19hZnRl
ciA9IGVuZCgpIC0gX19wb3NpdGlvbjsKICAgICAgIHBvaW50ZXIgX19vbGRfZmluaXNoKHRoaXMt
Pl9NX2ltcGwuX01fZmluaXNoKTsKICAgICAgIGlmIChfX2VsZW1zX2FmdGVyID4gX19uKQogIHsK
ICAgIHN0ZDo6X191bmluaXRpYWxpemVkX21vdmVfYSh0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCAt
IF9fbiwKICAgICAgICAgICB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCwKICAgICAgICAgICB0aGlz
LT5fTV9pbXBsLl9NX2ZpbmlzaCwKICAgICAgICAgICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwog
ICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2ggKz0gX19uOwogICAgc3RkOjptb3ZlX2JhY2t3YXJk
KF9fcG9zaXRpb24uYmFzZSgpLCBfX29sZF9maW5pc2ggLSBfX24sIF9fb2xkX2ZpbmlzaCkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgIHN0ZDo6ZmlsbChfX3Bv
c2l0aW9uLmJhc2UoKSwgX19wb3NpdGlvbi5iYXNlKCkgKyBfX24sCiAgICAgICBfX3hfY29weSk7
CiAgfQogICAgICAgZWxzZQogIHsKICAgIHN0ZDo6X191bmluaXRpYWxpemVkX2ZpbGxfbl9hKHRo
aXMtPl9NX2ltcGwuX01fZmluaXNoLAogICAgICBfX24gLSBfX2VsZW1zX2FmdGVyLAogICAgICBf
X3hfY29weSwKICAgICAgX01fZ2V0X1RwX2FsbG9jYXRvcigpKTsKICAgIHRoaXMtPl9NX2ltcGwu
X01fZmluaXNoICs9IF9fbiAtIF9fZWxlbXNfYWZ0ZXI7CiAgICBzdGQ6Ol9fdW5pbml0aWFsaXpl
ZF9tb3ZlX2EoX19wb3NpdGlvbi5iYXNlKCksIF9fb2xkX2ZpbmlzaCwKICAgICAgICAgICB0aGlz
LT5fTV9pbXBsLl9NX2ZpbmlzaCwKICAgICAgICAgICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwog
ICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2ggKz0gX19lbGVtc19hZnRlcjsKICAgIHN0ZDo6Zmls
bChfX3Bvc2l0aW9uLmJhc2UoKSwgX19vbGRfZmluaXNoLCBfX3hfY29weSk7CiAgfQogICAgIH0K
ICAgZWxzZQogICAgIHsKICAgICAgIGNvbnN0IHNpemVfdHlwZSBfX2xlbiA9CiAgX01fY2hlY2tf
bGVuKF9fbiwgInZlY3Rvcjo6X01fZmlsbF9pbnNlcnQiKTsKICAgICAgIGNvbnN0IHNpemVfdHlw
ZSBfX2VsZW1zX2JlZm9yZSA9IF9fcG9zaXRpb24gLSBiZWdpbigpOwogICAgICAgcG9pbnRlciBf
X25ld19zdGFydCh0aGlzLT5fTV9hbGxvY2F0ZShfX2xlbikpOwogICAgICAgcG9pbnRlciBfX25l
d19maW5pc2goX19uZXdfc3RhcnQpOwogICAgICAgaWYgKHRydWUpCiAgewoKICAgIHN0ZDo6X191
bmluaXRpYWxpemVkX2ZpbGxfbl9hKF9fbmV3X3N0YXJ0ICsgX19lbGVtc19iZWZvcmUsCiAgICAg
IF9fbiwgX194LAogICAgICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICAgX19uZXdfZmluaXNo
ID0gMDsKCiAgICBfX25ld19maW5pc2gKICAgICAgPSBzdGQ6Ol9fdW5pbml0aWFsaXplZF9tb3Zl
X2lmX25vZXhjZXB0X2EKICAgICAgKHRoaXMtPl9NX2ltcGwuX01fc3RhcnQsIF9fcG9zaXRpb24u
YmFzZSgpLAogICAgICAgX19uZXdfc3RhcnQsIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CgogICAg
X19uZXdfZmluaXNoICs9IF9fbjsKCiAgICBfX25ld19maW5pc2gKICAgICAgPSBzdGQ6Ol9fdW5p
bml0aWFsaXplZF9tb3ZlX2lmX25vZXhjZXB0X2EKICAgICAgKF9fcG9zaXRpb24uYmFzZSgpLCB0
aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCwKICAgICAgIF9fbmV3X2ZpbmlzaCwgX01fZ2V0X1RwX2Fs
bG9jYXRvcigpKTsKICB9CiAgICAgICBpZiAoZmFsc2UpCiAgewogICAgaWYgKCFfX25ld19maW5p
c2gpCiAgICAgIHN0ZDo6X0Rlc3Ryb3koX19uZXdfc3RhcnQgKyBfX2VsZW1zX2JlZm9yZSwKICAg
ICAgX19uZXdfc3RhcnQgKyBfX2VsZW1zX2JlZm9yZSArIF9fbiwKICAgICAgX01fZ2V0X1RwX2Fs
bG9jYXRvcigpKTsKICAgIGVsc2UKICAgICAgc3RkOjpfRGVzdHJveShfX25ld19zdGFydCwgX19u
ZXdfZmluaXNoLAogICAgICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICAgX01fZGVhbGxvY2F0
ZShfX25ld19zdGFydCwgX19sZW4pOwogICAgOwogIH0KICAgICAgIHN0ZDo6X0Rlc3Ryb3kodGhp
cy0+X01faW1wbC5fTV9zdGFydCwgdGhpcy0+X01faW1wbC5fTV9maW5pc2gsCiAgICAgICBfTV9n
ZXRfVHBfYWxsb2NhdG9yKCkpOwogICAgICAgX01fZGVhbGxvY2F0ZSh0aGlzLT5fTV9pbXBsLl9N
X3N0YXJ0LAogICAgICAgdGhpcy0+X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFnZQogICAgICAgLSB0
aGlzLT5fTV9pbXBsLl9NX3N0YXJ0KTsKICAgICAgIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQgPSBf
X25ld19zdGFydDsKICAgICAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoID0gX19uZXdfZmluaXNo
OwogICAgICAgdGhpcy0+X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFnZSA9IF9fbmV3X3N0YXJ0ICsg
X19sZW47CiAgICAgfQogfQogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFt
ZSBfQWxsb2M+CiAgICB2b2lkCiAgICB2ZWN0b3I8X1RwLCBfQWxsb2M+OjoKICAgIF9NX2RlZmF1
bHRfYXBwZW5kKHNpemVfdHlwZSBfX24pCiAgICB7CiAgICAgIGlmIChfX24gIT0gMCkKIHsKICAg
aWYgKHNpemVfdHlwZSh0aGlzLT5fTV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlCiAgIC0gdGhpcy0+
X01faW1wbC5fTV9maW5pc2gpID49IF9fbikKICAgICB7CiAgICAgICBzdGQ6Ol9fdW5pbml0aWFs
aXplZF9kZWZhdWx0X25fYSh0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCwKICAgICAgICAgICAgX19u
LCBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICAgICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2gg
Kz0gX19uOwogICAgIH0KICAgZWxzZQogICAgIHsKICAgICAgIGNvbnN0IHNpemVfdHlwZSBfX2xl
biA9CiAgX01fY2hlY2tfbGVuKF9fbiwgInZlY3Rvcjo6X01fZGVmYXVsdF9hcHBlbmQiKTsKICAg
ICAgIGNvbnN0IHNpemVfdHlwZSBfX29sZF9zaXplID0gdGhpcy0+c2l6ZSgpOwogICAgICAgcG9p
bnRlciBfX25ld19zdGFydCh0aGlzLT5fTV9hbGxvY2F0ZShfX2xlbikpOwogICAgICAgcG9pbnRl
ciBfX25ld19maW5pc2goX19uZXdfc3RhcnQpOwogICAgICAgaWYgKHRydWUpCiAgewogICAgX19u
ZXdfZmluaXNoCiAgICAgID0gc3RkOjpfX3VuaW5pdGlhbGl6ZWRfbW92ZV9pZl9ub2V4Y2VwdF9h
CiAgICAgICh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0LCB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCwK
ICAgICAgIF9fbmV3X3N0YXJ0LCBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICAgc3RkOjpfX3Vu
aW5pdGlhbGl6ZWRfZGVmYXVsdF9uX2EoX19uZXdfZmluaXNoLCBfX24sCiAgICAgICAgIF9NX2dl
dF9UcF9hbGxvY2F0b3IoKSk7CiAgICBfX25ld19maW5pc2ggKz0gX19uOwogIH0KICAgICAgIGlm
IChmYWxzZSkKICB7CiAgICBzdGQ6Ol9EZXN0cm95KF9fbmV3X3N0YXJ0LCBfX25ld19maW5pc2gs
CiAgICBfTV9nZXRfVHBfYWxsb2NhdG9yKCkpOwogICAgX01fZGVhbGxvY2F0ZShfX25ld19zdGFy
dCwgX19sZW4pOwogICAgOwogIH0KICAgICAgIHN0ZDo6X0Rlc3Ryb3kodGhpcy0+X01faW1wbC5f
TV9zdGFydCwgdGhpcy0+X01faW1wbC5fTV9maW5pc2gsCiAgICAgICBfTV9nZXRfVHBfYWxsb2Nh
dG9yKCkpOwogICAgICAgX01fZGVhbGxvY2F0ZSh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0LAogICAg
ICAgdGhpcy0+X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFnZQogICAgICAgLSB0aGlzLT5fTV9pbXBs
Ll9NX3N0YXJ0KTsKICAgICAgIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQgPSBfX25ld19zdGFydDsK
ICAgICAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoID0gX19uZXdfZmluaXNoOwogICAgICAgdGhp
cy0+X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFnZSA9IF9fbmV3X3N0YXJ0ICsgX19sZW47CiAgICAg
fQogfQogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAg
IGJvb2wKICAgIHZlY3RvcjxfVHAsIF9BbGxvYz46OgogICAgX01fc2hyaW5rX3RvX2ZpdCgpCiAg
ICB7CiAgICAgIGlmIChjYXBhY2l0eSgpID09IHNpemUoKSkKIHJldHVybiBmYWxzZTsKICAgICAg
cmV0dXJuIHN0ZDo6X19zaHJpbmtfdG9fZml0X2F1eDx2ZWN0b3I+OjpfU19kb19pdCgqdGhpcyk7
CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9BbGxvYz4KICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yPgogICAgICB2b2lkCiAgICAgIHZlY3Rvcjxf
VHAsIF9BbGxvYz46OgogICAgICBfTV9yYW5nZV9pbnNlcnQoaXRlcmF0b3IgX19wb3MsIF9JbnB1
dEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICAgX0lucHV0SXRlcmF0b3IgX19sYXN0LCBzdGQ6Omlu
cHV0X2l0ZXJhdG9yX3RhZykKICAgICAgewogZm9yICg7IF9fZmlyc3QgIT0gX19sYXN0OyArK19f
Zmlyc3QpCiAgIHsKICAgICBfX3BvcyA9IGluc2VydChfX3BvcywgKl9fZmlyc3QpOwogICAgICsr
X19wb3M7CiAgIH0KICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9B
bGxvYz4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICAgIHZvaWQK
ICAgICAgdmVjdG9yPF9UcCwgX0FsbG9jPjo6CiAgICAgIF9NX3JhbmdlX2luc2VydChpdGVyYXRv
ciBfX3Bvc2l0aW9uLCBfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICAgX0ZvcndhcmRJ
dGVyYXRvciBfX2xhc3QsIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcpCiAgICAgIHsKIGlmIChf
X2ZpcnN0ICE9IF9fbGFzdCkKICAgewogICAgIGNvbnN0IHNpemVfdHlwZSBfX24gPSBzdGQ6OmRp
c3RhbmNlKF9fZmlyc3QsIF9fbGFzdCk7CiAgICAgaWYgKHNpemVfdHlwZSh0aGlzLT5fTV9pbXBs
Ll9NX2VuZF9vZl9zdG9yYWdlCiAgICAgLSB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCkgPj0gX19u
KQogICAgICAgewogIGNvbnN0IHNpemVfdHlwZSBfX2VsZW1zX2FmdGVyID0gZW5kKCkgLSBfX3Bv
c2l0aW9uOwogIHBvaW50ZXIgX19vbGRfZmluaXNoKHRoaXMtPl9NX2ltcGwuX01fZmluaXNoKTsK
ICBpZiAoX19lbGVtc19hZnRlciA+IF9fbikKICAgIHsKICAgICAgc3RkOjpfX3VuaW5pdGlhbGl6
ZWRfbW92ZV9hKHRoaXMtPl9NX2ltcGwuX01fZmluaXNoIC0gX19uLAogICAgICB0aGlzLT5fTV9p
bXBsLl9NX2ZpbmlzaCwKICAgICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2gsCiAgICAgIF9NX2dl
dF9UcF9hbGxvY2F0b3IoKSk7CiAgICAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoICs9IF9fbjsK
ICAgICAgc3RkOjptb3ZlX2JhY2t3YXJkKF9fcG9zaXRpb24uYmFzZSgpLCBfX29sZF9maW5pc2gg
LSBfX24sIF9fb2xkX2ZpbmlzaCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOwogICAgICBzdGQ6OmNvcHkoX19maXJzdCwgX19sYXN0LCBfX3Bvc2l0aW9uKTsKICAg
IH0KICBlbHNlCiAgICB7CiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19taWQgPSBfX2ZpcnN0Owog
ICAgICBzdGQ6OmFkdmFuY2UoX19taWQsIF9fZWxlbXNfYWZ0ZXIpOwogICAgICBzdGQ6Ol9fdW5p
bml0aWFsaXplZF9jb3B5X2EoX19taWQsIF9fbGFzdCwKICAgICAgdGhpcy0+X01faW1wbC5fTV9m
aW5pc2gsCiAgICAgIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiAgICAgIHRoaXMtPl9NX2ltcGwu
X01fZmluaXNoICs9IF9fbiAtIF9fZWxlbXNfYWZ0ZXI7CiAgICAgIHN0ZDo6X191bmluaXRpYWxp
emVkX21vdmVfYShfX3Bvc2l0aW9uLmJhc2UoKSwKICAgICAgX19vbGRfZmluaXNoLAogICAgICB0
aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCwKICAgICAgX01fZ2V0X1RwX2FsbG9jYXRvcigpKTsKICAg
ICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2ggKz0gX19lbGVtc19hZnRlcjsKICAgICAgc3RkOjpj
b3B5KF9fZmlyc3QsIF9fbWlkLCBfX3Bvc2l0aW9uKTsKICAgIH0KICAgICAgIH0KICAgICBlbHNl
CiAgICAgICB7CiAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0KICAgIF9NX2NoZWNrX2xlbihfX24s
ICJ2ZWN0b3I6Ol9NX3JhbmdlX2luc2VydCIpOwogIHBvaW50ZXIgX19uZXdfc3RhcnQodGhpcy0+
X01fYWxsb2NhdGUoX19sZW4pKTsKICBwb2ludGVyIF9fbmV3X2ZpbmlzaChfX25ld19zdGFydCk7
CiAgaWYgKHRydWUpCiAgICB7CiAgICAgIF9fbmV3X2ZpbmlzaAogICAgICAgID0gc3RkOjpfX3Vu
aW5pdGlhbGl6ZWRfbW92ZV9pZl9ub2V4Y2VwdF9hCiAgICAgICAgKHRoaXMtPl9NX2ltcGwuX01f
c3RhcnQsIF9fcG9zaXRpb24uYmFzZSgpLAogICAgICAgICBfX25ld19zdGFydCwgX01fZ2V0X1Rw
X2FsbG9jYXRvcigpKTsKICAgICAgX19uZXdfZmluaXNoCiAgICAgICAgPSBzdGQ6Ol9fdW5pbml0
aWFsaXplZF9jb3B5X2EoX19maXJzdCwgX19sYXN0LAogICAgICAgICAgX19uZXdfZmluaXNoLAog
ICAgICAgICAgX01fZ2V0X1RwX2FsbG9jYXRvcigpKTsKICAgICAgX19uZXdfZmluaXNoCiAgICAg
ICAgPSBzdGQ6Ol9fdW5pbml0aWFsaXplZF9tb3ZlX2lmX25vZXhjZXB0X2EKICAgICAgICAoX19w
b3NpdGlvbi5iYXNlKCksIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoLAogICAgICAgICBfX25ld19m
aW5pc2gsIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7CiAgICB9CiAgaWYgKGZhbHNlKQogICAgewog
ICAgICBzdGQ6Ol9EZXN0cm95KF9fbmV3X3N0YXJ0LCBfX25ld19maW5pc2gsCiAgICAgIF9NX2dl
dF9UcF9hbGxvY2F0b3IoKSk7CiAgICAgIF9NX2RlYWxsb2NhdGUoX19uZXdfc3RhcnQsIF9fbGVu
KTsKICAgICAgOwogICAgfQogIHN0ZDo6X0Rlc3Ryb3kodGhpcy0+X01faW1wbC5fTV9zdGFydCwg
dGhpcy0+X01faW1wbC5fTV9maW5pc2gsCiAgICAgICAgIF9NX2dldF9UcF9hbGxvY2F0b3IoKSk7
CiAgX01fZGVhbGxvY2F0ZSh0aGlzLT5fTV9pbXBsLl9NX3N0YXJ0LAogICAgICAgICB0aGlzLT5f
TV9pbXBsLl9NX2VuZF9vZl9zdG9yYWdlCiAgICAgICAgIC0gdGhpcy0+X01faW1wbC5fTV9zdGFy
dCk7CiAgdGhpcy0+X01faW1wbC5fTV9zdGFydCA9IF9fbmV3X3N0YXJ0OwogIHRoaXMtPl9NX2lt
cGwuX01fZmluaXNoID0gX19uZXdfZmluaXNoOwogIHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0
b3JhZ2UgPSBfX25ld19zdGFydCArIF9fbGVuOwogICAgICAgfQogICB9CiAgICAgIH0KCgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiAgICB2b2lkCiAgICB2ZWN0b3I8Ym9vbCwgX0FsbG9j
Pjo6CiAgICBfTV9yZWFsbG9jYXRlKHNpemVfdHlwZSBfX24pCiAgICB7CiAgICAgIF9CaXRfdHlw
ZSogX19xID0gdGhpcy0+X01fYWxsb2NhdGUoX19uKTsKICAgICAgdGhpcy0+X01faW1wbC5fTV9m
aW5pc2ggPSBfTV9jb3B5X2FsaWduZWQoYmVnaW4oKSwgZW5kKCksCiAgICAgIGl0ZXJhdG9yKF9f
cSwgMCkpOwogICAgICB0aGlzLT5fTV9kZWFsbG9jYXRlKCk7CiAgICAgIHRoaXMtPl9NX2ltcGwu
X01fc3RhcnQgPSBpdGVyYXRvcihfX3EsIDApOwogICAgICB0aGlzLT5fTV9pbXBsLl9NX2VuZF9v
Zl9zdG9yYWdlID0gX19xICsgX1NfbndvcmQoX19uKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0FsbG9jPgogICAgdm9pZAogICAgdmVjdG9yPGJvb2wsIF9BbGxvYz46OgogICAgX01fZmls
bF9pbnNlcnQoaXRlcmF0b3IgX19wb3NpdGlvbiwgc2l6ZV90eXBlIF9fbiwgYm9vbCBfX3gpCiAg
ICB7CiAgICAgIGlmIChfX24gPT0gMCkKIHJldHVybjsKICAgICAgaWYgKGNhcGFjaXR5KCkgLSBz
aXplKCkgPj0gX19uKQogewogICBzdGQ6OmNvcHlfYmFja3dhcmQoX19wb3NpdGlvbiwgZW5kKCks
CiAgICAgICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2ggKyBkaWZmZXJlbmNlX3R5cGUoX19uKSk7
CiAgIHN0ZDo6ZmlsbChfX3Bvc2l0aW9uLCBfX3Bvc2l0aW9uICsgZGlmZmVyZW5jZV90eXBlKF9f
biksIF9feCk7CiAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoICs9IGRpZmZlcmVuY2VfdHlwZShf
X24pOwogfQogICAgICBlbHNlCiB7CiAgIGNvbnN0IHNpemVfdHlwZSBfX2xlbiA9CiAgICAgX01f
Y2hlY2tfbGVuKF9fbiwgInZlY3Rvcjxib29sPjo6X01fZmlsbF9pbnNlcnQiKTsKICAgX0JpdF90
eXBlICogX19xID0gdGhpcy0+X01fYWxsb2NhdGUoX19sZW4pOwogICBpdGVyYXRvciBfX2kgPSBf
TV9jb3B5X2FsaWduZWQoYmVnaW4oKSwgX19wb3NpdGlvbiwKICAgICAgaXRlcmF0b3IoX19xLCAw
KSk7CiAgIHN0ZDo6ZmlsbChfX2ksIF9faSArIGRpZmZlcmVuY2VfdHlwZShfX24pLCBfX3gpOwog
ICB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaCA9IHN0ZDo6Y29weShfX3Bvc2l0aW9uLCBlbmQoKSwK
ICAgICAgICAgICBfX2kgKyBkaWZmZXJlbmNlX3R5cGUoX19uKSk7CiAgIHRoaXMtPl9NX2RlYWxs
b2NhdGUoKTsKICAgdGhpcy0+X01faW1wbC5fTV9lbmRfb2Zfc3RvcmFnZSA9IF9fcSArIF9TX253
b3JkKF9fbGVuKTsKICAgdGhpcy0+X01faW1wbC5fTV9zdGFydCA9IGl0ZXJhdG9yKF9fcSwgMCk7
CiB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9BbGxvYz4KICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICAgIHZvaWQKICAgICAgdmVjdG9yPGJvb2wsIF9BbGxv
Yz46OgogICAgICBfTV9pbnNlcnRfcmFuZ2UoaXRlcmF0b3IgX19wb3NpdGlvbiwgX0ZvcndhcmRJ
dGVyYXRvciBfX2ZpcnN0LAogICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LCBzdGQ6OmZv
cndhcmRfaXRlcmF0b3JfdGFnKQogICAgICB7CiBpZiAoX19maXJzdCAhPSBfX2xhc3QpCiAgIHsK
ICAgICBzaXplX3R5cGUgX19uID0gc3RkOjpkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QpOwogICAg
IGlmIChjYXBhY2l0eSgpIC0gc2l6ZSgpID49IF9fbikKICAgICAgIHsKICBzdGQ6OmNvcHlfYmFj
a3dhcmQoX19wb3NpdGlvbiwgZW5kKCksCiAgICAgICB0aGlzLT5fTV9pbXBsLl9NX2ZpbmlzaAog
ICAgICAgKyBkaWZmZXJlbmNlX3R5cGUoX19uKSk7CiAgc3RkOjpjb3B5KF9fZmlyc3QsIF9fbGFz
dCwgX19wb3NpdGlvbik7CiAgdGhpcy0+X01faW1wbC5fTV9maW5pc2ggKz0gZGlmZmVyZW5jZV90
eXBlKF9fbik7CiAgICAgICB9CiAgICAgZWxzZQogICAgICAgewogIGNvbnN0IHNpemVfdHlwZSBf
X2xlbiA9CiAgICBfTV9jaGVja19sZW4oX19uLCAidmVjdG9yPGJvb2w+OjpfTV9pbnNlcnRfcmFu
Z2UiKTsKICBfQml0X3R5cGUgKiBfX3EgPSB0aGlzLT5fTV9hbGxvY2F0ZShfX2xlbik7CiAgaXRl
cmF0b3IgX19pID0gX01fY29weV9hbGlnbmVkKGJlZ2luKCksIF9fcG9zaXRpb24sCiAgICAgICAg
ICAgIGl0ZXJhdG9yKF9fcSwgMCkpOwogIF9faSA9IHN0ZDo6Y29weShfX2ZpcnN0LCBfX2xhc3Qs
IF9faSk7CiAgdGhpcy0+X01faW1wbC5fTV9maW5pc2ggPSBzdGQ6OmNvcHkoX19wb3NpdGlvbiwg
ZW5kKCksIF9faSk7CiAgdGhpcy0+X01fZGVhbGxvY2F0ZSgpOwogIHRoaXMtPl9NX2ltcGwuX01f
ZW5kX29mX3N0b3JhZ2UgPSBfX3EgKyBfU19ud29yZChfX2xlbik7CiAgdGhpcy0+X01faW1wbC5f
TV9zdGFydCA9IGl0ZXJhdG9yKF9fcSwgMCk7CiAgICAgICB9CiAgIH0KICAgICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiAgICB2b2lkCiAgICB2ZWN0b3I8Ym9vbCwgX0FsbG9jPjo6
CiAgICBfTV9pbnNlcnRfYXV4KGl0ZXJhdG9yIF9fcG9zaXRpb24sIGJvb2wgX194KQogICAgewog
ICAgICBpZiAodGhpcy0+X01faW1wbC5fTV9maW5pc2guX01fcCAhPSB0aGlzLT5fTV9pbXBsLl9N
X2VuZF9vZl9zdG9yYWdlKQogewogICBzdGQ6OmNvcHlfYmFja3dhcmQoX19wb3NpdGlvbiwgdGhp
cy0+X01faW1wbC5fTV9maW5pc2gsCiAgICAgICAgdGhpcy0+X01faW1wbC5fTV9maW5pc2ggKyAx
KTsKICAgKl9fcG9zaXRpb24gPSBfX3g7CiAgICsrdGhpcy0+X01faW1wbC5fTV9maW5pc2g7CiB9
CiAgICAgIGVsc2UKIHsKICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0KICAgICBfTV9jaGVja19s
ZW4oc2l6ZV90eXBlKDEpLCAidmVjdG9yPGJvb2w+OjpfTV9pbnNlcnRfYXV4Iik7CiAgIF9CaXRf
dHlwZSAqIF9fcSA9IHRoaXMtPl9NX2FsbG9jYXRlKF9fbGVuKTsKICAgaXRlcmF0b3IgX19pID0g
X01fY29weV9hbGlnbmVkKGJlZ2luKCksIF9fcG9zaXRpb24sCiAgICAgIGl0ZXJhdG9yKF9fcSwg
MCkpOwogICAqX19pKysgPSBfX3g7CiAgIHRoaXMtPl9NX2ltcGwuX01fZmluaXNoID0gc3RkOjpj
b3B5KF9fcG9zaXRpb24sIGVuZCgpLCBfX2kpOwogICB0aGlzLT5fTV9kZWFsbG9jYXRlKCk7CiAg
IHRoaXMtPl9NX2ltcGwuX01fZW5kX29mX3N0b3JhZ2UgPSBfX3EgKyBfU19ud29yZChfX2xlbik7
CiAgIHRoaXMtPl9NX2ltcGwuX01fc3RhcnQgPSBpdGVyYXRvcihfX3EsIDApOwogfQogICAgfQoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jPgogICAgYm9vbAogICAgdmVjdG9yPGJvb2wsIF9B
bGxvYz46OgogICAgX01fc2hyaW5rX3RvX2ZpdCgpCiAgICB7CiAgICAgIGlmIChjYXBhY2l0eSgp
IC0gc2l6ZSgpIDwgaW50KF9TX3dvcmRfYml0KSkKIHJldHVybiBmYWxzZTsKICAgICAgaWYgKHRy
dWUpCiB7CiAgIF9NX3JlYWxsb2NhdGUoc2l6ZSgpKTsKICAgcmV0dXJuIHRydWU7CiB9CiAgICAg
IGlmIChmYWxzZSkKIHsgcmV0dXJuIGZhbHNlOyB9CiAgICB9CgoKCn0KCgoKbmFtZXNwYWNlIHN0
ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiAgICBzaXplX3QKICAgIGhhc2g8c3RkOjp2ZWN0b3I8Ym9v
bCwgX0FsbG9jPj46OgogICAgb3BlcmF0b3IoKShjb25zdCBzdGQ6OnZlY3Rvcjxib29sLCBfQWxs
b2M+JiBfX2IpIGNvbnN0IG5vZXhjZXB0CiAgICB7CiAgICAgIHNpemVfdCBfX2hhc2ggPSAwOwog
ICAgICB1c2luZyBzdGQ6Ol9TX3dvcmRfYml0OwogICAgICB1c2luZyBzdGQ6Ol9CaXRfdHlwZTsK
CiAgICAgIGNvbnN0IHNpemVfdCBfX3dvcmRzID0gX19iLnNpemUoKSAvIF9TX3dvcmRfYml0Owog
ICAgICBpZiAoX193b3JkcykKIHsKICAgY29uc3Qgc2l6ZV90IF9fY2xlbmd0aCA9IF9fd29yZHMg
KiBzaXplb2YoX0JpdF90eXBlKTsKICAgX19oYXNoID0gc3RkOjpfSGFzaF9pbXBsOjpoYXNoKF9f
Yi5fTV9pbXBsLl9NX3N0YXJ0Ll9NX3AsIF9fY2xlbmd0aCk7CiB9CgogICAgICBjb25zdCBzaXpl
X3QgX19leHRyYWJpdHMgPSBfX2Iuc2l6ZSgpICUgX1Nfd29yZF9iaXQ7CiAgICAgIGlmIChfX2V4
dHJhYml0cykKIHsKICAgX0JpdF90eXBlIF9faGl3b3JkID0gKl9fYi5fTV9pbXBsLl9NX2Zpbmlz
aC5fTV9wOwogICBfX2hpd29yZCAmPSB+KCh+c3RhdGljX2Nhc3Q8X0JpdF90eXBlPigwKSkgPDwg
X19leHRyYWJpdHMpOwoKICAgY29uc3Qgc2l6ZV90IF9fY2xlbmd0aAogICAgID0gKF9fZXh0cmFi
aXRzICsgOCAtIDEpIC8gODsKICAgaWYgKF9fd29yZHMpCiAgICAgX19oYXNoID0gc3RkOjpfSGFz
aF9pbXBsOjpoYXNoKCZfX2hpd29yZCwgX19jbGVuZ3RoLCBfX2hhc2gpOwogICBlbHNlCiAgICAg
X19oYXNoID0gc3RkOjpfSGFzaF9pbXBsOjpoYXNoKCZfX2hpd29yZCwgX19jbGVuZ3RoKTsKIH0K
CiAgICAgIHJldHVybiBfX2hhc2g7CiAgICB9CgoKfQojIDcwICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvdmVjdG9yIiAyIDMKIyAzNSAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvcmFuZG9tLmgiIDIg
MwoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0
IikpKQp7CgojIDU1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC44LjEvYml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSwgc2l6
ZV90IF9fYml0cywKICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgog
ICAgX1JlYWxUeXBlCiAgICBnZW5lcmF0ZV9jYW5vbmljYWwoX1VuaWZvcm1SYW5kb21OdW1iZXJH
ZW5lcmF0b3ImIF9fZyk7CgoKCgoKCiAgbmFtZXNwYWNlIF9fZGV0YWlsCiAgewogCgogICAgdGVt
cGxhdGU8dHlwZW5hbWUgX1VJbnRUeXBlLCBzaXplX3QgX193LAogICAgICBib29sID0gX193IDwg
c3RhdGljX2Nhc3Q8c2l6ZV90PgogICAgIChzdGQ6Om51bWVyaWNfbGltaXRzPF9VSW50VHlwZT46
OmRpZ2l0cyk+CiAgICAgIHN0cnVjdCBfU2hpZnQKICAgICAgeyBzdGF0aWMgY29uc3QgX1VJbnRU
eXBlIF9fdmFsdWUgPSAwOyB9OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlwZSwgc2l6
ZV90IF9fdz4KICAgICAgc3RydWN0IF9TaGlmdDxfVUludFR5cGUsIF9fdywgdHJ1ZT4KICAgICAg
eyBzdGF0aWMgY29uc3QgX1VJbnRUeXBlIF9fdmFsdWUgPSBfVUludFR5cGUoMSkgPDwgX193OyB9
OwoKICAgIHRlbXBsYXRlPGludCBfX3MsCiAgICAgIGludCBfX3doaWNoID0gKChfX3MgPD0gOCAq
IHNpemVvZiAoaW50KSkKICAgICAgICsgKF9fcyA8PSA4ICogc2l6ZW9mIChsb25nKSkKICAgICAg
ICsgKF9fcyA8PSA4ICogc2l6ZW9mIChsb25nIGxvbmcpKQoKICAgICAgICsgKF9fcyA8PSAxMjgp
KT4KICAgICAgc3RydWN0IF9TZWxlY3RfdWludF9sZWFzdF90CiAgICAgIHsKIHN0YXRpY19hc3Nl
cnQoX193aGljaCA8IDAsCiAgICAgICAgInNvcnJ5LCB3b3VsZCBiZSB0b28gbXVjaCB0cm91Ymxl
IGZvciBhIHNsb3cgcmVzdWx0Iik7CiAgICAgIH07CgogICAgdGVtcGxhdGU8aW50IF9fcz4KICAg
ICAgc3RydWN0IF9TZWxlY3RfdWludF9sZWFzdF90PF9fcywgND4KICAgICAgeyB0eXBlZGVmIHVu
c2lnbmVkIGludCB0eXBlOyB9OwoKICAgIHRlbXBsYXRlPGludCBfX3M+CiAgICAgIHN0cnVjdCBf
U2VsZWN0X3VpbnRfbGVhc3RfdDxfX3MsIDM+CiAgICAgIHsgdHlwZWRlZiB1bnNpZ25lZCBsb25n
IHR5cGU7IH07CgogICAgdGVtcGxhdGU8aW50IF9fcz4KICAgICAgc3RydWN0IF9TZWxlY3RfdWlu
dF9sZWFzdF90PF9fcywgMj4KICAgICAgeyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB0eXBl
OyB9OwojIDExMCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OC4xL2JpdHMvcmFuZG9tLmgiIDMKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgX1RwIF9fbSwg
X1RwIF9fYSwgX1RwIF9fYywKICAgICAgYm9vbCBfX2JpZ19lbm91Z2ggPSAoIShfX20gJiAoX19t
IC0gMSkpCiAgICAgIHx8IChfVHAoLTEpIC0gX19jKSAvIF9fYSA+PSBfX20gLSAxKSwKICAgICAg
ICAgICAgIGJvb2wgX19zY2hyYWdlX29rID0gX19tICUgX19hIDwgX19tIC8gX19hPgogICAgICBz
dHJ1Y3QgX01vZAogICAgICB7CiB0eXBlZGVmIHR5cGVuYW1lIF9TZWxlY3RfdWludF9sZWFzdF90
PHN0ZDo6X19sZyhfX2EpCiAgICAgICAgICAgKyBzdGQ6Ol9fbGcoX19tKSArIDI+Ojp0eXBlIF9U
cDI7CiBzdGF0aWMgX1RwCiBfX2NhbGMoX1RwIF9feCkKIHsgcmV0dXJuIHN0YXRpY19jYXN0PF9U
cD4oKF9UcDIoX19hKSAqIF9feCArIF9fYykgJSBfX20pOyB9CiAgICAgIH07CgoKICAgIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcCwgX1RwIF9fbSwgX1RwIF9fYSwgX1RwIF9fYz4KICAgICAgc3RydWN0
IF9Nb2Q8X1RwLCBfX20sIF9fYSwgX19jLCBmYWxzZSwgdHJ1ZT4KICAgICAgewogc3RhdGljIF9U
cAogX19jYWxjKF9UcCBfX3gpOwogICAgICB9OwoKCgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cCwgX1RwIF9fbSwgX1RwIF9fYSwgX1RwIF9fYywgYm9vbCBfX3M+CiAgICAgIHN0cnVjdCBfTW9k
PF9UcCwgX19tLCBfX2EsIF9fYywgdHJ1ZSwgX19zPgogICAgICB7CiBzdGF0aWMgX1RwCiBfX2Nh
bGMoX1RwIF9feCkKIHsKICAgX1RwIF9fcmVzID0gX19hICogX194ICsgX19jOwogICBpZiAoX19t
KQogICAgIF9fcmVzICU9IF9fbTsKICAgcmV0dXJuIF9fcmVzOwogfQogICAgICB9OwoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcCwgX1RwIF9fbSwgX1RwIF9fYSA9IDEsIF9UcCBfX2MgPSAwPgog
ICAgICBpbmxpbmUgX1RwCiAgICAgIF9fbW9kKF9UcCBfX3gpCiAgICAgIHsgcmV0dXJuIF9Nb2Q8
X1RwLCBfX20sIF9fYSwgX19jPjo6X19jYWxjKF9feCk7IH0KCgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogICAgICBpbmxpbmUgYm9vbAogICAgICBfUG93ZXJfb2ZfMihfVHAgX194KQogICAg
ICB7CiByZXR1cm4gKChfX3ggLSAxKSAmIF9feCkgPT0gMDsKICAgICAgfTsKCgoKCgogICAgdGVt
cGxhdGU8dHlwZW5hbWUgX0VuZ2luZSwgdHlwZW5hbWUgX0RJbnB1dFR5cGU+CiAgICAgIHN0cnVj
dCBfQWRhcHRvcgogICAgICB7CgogICAgICBwdWJsaWM6CiBfQWRhcHRvcihfRW5naW5lJiBfX2cp
CiA6IF9NX2coX19nKSB7IH0KCiBfRElucHV0VHlwZQogbWluKCkgY29uc3QKIHsgcmV0dXJuIF9E
SW5wdXRUeXBlKDApOyB9CgogX0RJbnB1dFR5cGUKIG1heCgpIGNvbnN0CiB7IHJldHVybiBfRElu
cHV0VHlwZSgxKTsgfQoKCgoKCgogX0RJbnB1dFR5cGUKIG9wZXJhdG9yKCkoKQogewogICByZXR1
cm4gc3RkOjpnZW5lcmF0ZV9jYW5vbmljYWw8X0RJbnB1dFR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxfRElucHV0VHlwZT46OmRpZ2l0cywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfRW5naW5lPihfTV9nKTsKIH0KCiAgICAgIHByaXZh
dGU6CiBfRW5naW5lJiBfTV9nOwogICAgICB9OwoKIAogIH0KCgojIDI0MCAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvcmFuZG9tLmgiIDMKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVUludFR5cGUsIF9VSW50VHlwZSBfX2EsIF9VSW50VHlwZSBfX2Ms
IF9VSW50VHlwZSBfX20+CiAgICBjbGFzcyBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZQogICAg
ewogICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdW5zaWduZWQ8X1VJbnRUeXBlPjo6dmFsdWUs
ICJ0ZW1wbGF0ZSBhcmd1bWVudCAiCiAgICAgICJzdWJzdGl0dXRpbmcgX1VJbnRUeXBlIG5vdCBh
biB1bnNpZ25lZCBpbnRlZ3JhbCB0eXBlIik7CiAgICAgIHN0YXRpY19hc3NlcnQoX19tID09IDB1
IHx8IChfX2EgPCBfX20gJiYgX19jIDwgX19tKSwKICAgICAgInRlbXBsYXRlIGFyZ3VtZW50IHN1
YnN0aXR1dGluZyBfX20gb3V0IG9mIGJvdW5kcyIpOwoKICAgIHB1YmxpYzoKCiAgICAgIHR5cGVk
ZWYgX1VJbnRUeXBlIHJlc3VsdF90eXBlOwoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0
X3R5cGUgbXVsdGlwbGllciA9IF9fYTsKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5
cGUgaW5jcmVtZW50ID0gX19jOwoKICAgICAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZSBt
b2R1bHVzID0gX19tOwogICAgICBzdGF0aWMgY29uc3RleHByIHJlc3VsdF90eXBlIGRlZmF1bHRf
c2VlZCA9IDF1OwojIDI2NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOC4xL2JpdHMvcmFuZG9tLmgiIDMKICAgICAgZXhwbGljaXQKICAgICAgbGluZWFyX2Nv
bmdydWVudGlhbF9lbmdpbmUocmVzdWx0X3R5cGUgX19zID0gZGVmYXVsdF9zZWVkKQogICAgICB7
IHNlZWQoX19zKTsgfQoKCgoKCgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1NzZXEsIHR5cGVu
YW1lID0gdHlwZW5hbWUKIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX3NhbWU8X1NzZXEsIGxpbmVh
cl9jb25ncnVlbnRpYWxfZW5naW5lPjo6dmFsdWU+CiAgICAgICAgOjp0eXBlPgogICAgICAgIGV4
cGxpY2l0CiAgICAgICAgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUoX1NzZXEmIF9fcSkKICAg
ICAgICB7IHNlZWQoX19xKTsgfQoKCgoKCgoKICAgICAgdm9pZAogICAgICBzZWVkKHJlc3VsdF90
eXBlIF9fcyA9IGRlZmF1bHRfc2VlZCk7CiMgMzAwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9yYW5kb20uaCIgMwogICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfU3NlcT4KICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Ns
YXNzPF9Tc2VxPjo6dmFsdWU+Ojp0eXBlCiAgICAgICAgc2VlZChfU3NlcSYgX19xKTsKCgoKCgoK
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUKICAgICAgbWluKCkKICAgICAgeyBy
ZXR1cm4gX19jID09IDB1ID8gMXUgOiAwdTsgfQoKCgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBy
ZXN1bHRfdHlwZQogICAgICBtYXgoKQogICAgICB7IHJldHVybiBfX20gLSAxdTsgfQoKCgoKICAg
ICAgdm9pZAogICAgICBkaXNjYXJkKHVuc2lnbmVkIGxvbmcgbG9uZyBfX3opCiAgICAgIHsKIGZv
ciAoOyBfX3ogIT0gMFVMTDsgLS1fX3opCiAgICgqdGhpcykoKTsKICAgICAgfQoKCgoKICAgICAg
cmVzdWx0X3R5cGUKICAgICAgb3BlcmF0b3IoKSgpCiAgICAgIHsKIF9NX3ggPSBfX2RldGFpbDo6
X19tb2Q8X1VJbnRUeXBlLCBfX20sIF9fYSwgX19jPihfTV94KTsKIHJldHVybiBfTV94OwogICAg
ICB9CiMgMzUyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44
LjEvYml0cy9yYW5kb20uaCIgMwogICAgICBmcmllbmQgYm9vbAogICAgICBvcGVyYXRvcj09KGNv
bnN0IGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lJiBfX2xocywKICAgY29uc3QgbGluZWFyX2Nv
bmdydWVudGlhbF9lbmdpbmUmIF9fcmhzKQogICAgICB7IHJldHVybiBfX2xocy5fTV94ID09IF9f
cmhzLl9NX3g7IH0KIyAzNjUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjguMS9iaXRzL3JhbmRvbS5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50
VHlwZTEsIF9VSW50VHlwZTEgX19hMSwgX1VJbnRUeXBlMSBfX2MxLAogICAgICAgIF9VSW50VHlw
ZTEgX19tMSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogZnJpZW5kIHN0ZDo6
YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jgogb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29z
dHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vcywKICAgICBjb25zdCBzdGQ6OmxpbmVhcl9jb25n
cnVlbnRpYWxfZW5naW5lPF9VSW50VHlwZTEsCiAgICAgX19hMSwgX19jMSwgX19tMT4mIF9fbGNy
KTsKIyAzODUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljgu
MS9iaXRzL3JhbmRvbS5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlwZTEsIF9V
SW50VHlwZTEgX19hMSwgX1VJbnRUeXBlMSBfX2MxLAogICAgICAgIF9VSW50VHlwZTEgX19tMSwg
dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogZnJpZW5kIHN0ZDo6YmFzaWNfaXN0
cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jgogb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08X0No
YXJULCBfVHJhaXRzPiYgX19pcywKICAgICBzdGQ6OmxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5l
PF9VSW50VHlwZTEsIF9fYTEsCiAgICAgX19jMSwgX19tMT4mIF9fbGNyKTsKCiAgICBwcml2YXRl
OgogICAgICBfVUludFR5cGUgX01feDsKICAgIH07CiMgNDA3ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRl
PHR5cGVuYW1lIF9VSW50VHlwZSwgX1VJbnRUeXBlIF9fYSwgX1VJbnRUeXBlIF9fYywgX1VJbnRU
eXBlIF9fbT4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IHN0ZDo6bGluZWFy
X2NvbmdydWVudGlhbF9lbmdpbmU8X1VJbnRUeXBlLCBfX2EsCiAgICAgICAgX19jLCBfX20+JiBf
X2xocywKICAgICAgICBjb25zdCBzdGQ6OmxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPF9VSW50
VHlwZSwgX19hLAogICAgICAgIF9fYywgX19tPiYgX19yaHMpCiAgICB7IHJldHVybiAhKF9fbGhz
ID09IF9fcmhzKTsgfQojIDQ0NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOC4xL2JpdHMvcmFuZG9tLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVUludFR5
cGUsIHNpemVfdCBfX3csCiAgICBzaXplX3QgX19uLCBzaXplX3QgX19tLCBzaXplX3QgX19yLAog
ICAgX1VJbnRUeXBlIF9fYSwgc2l6ZV90IF9fdSwgX1VJbnRUeXBlIF9fZCwgc2l6ZV90IF9fcywK
ICAgIF9VSW50VHlwZSBfX2IsIHNpemVfdCBfX3QsCiAgICBfVUludFR5cGUgX19jLCBzaXplX3Qg
X19sLCBfVUludFR5cGUgX19mPgogICAgY2xhc3MgbWVyc2VubmVfdHdpc3Rlcl9lbmdpbmUKICAg
IHsKICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Vuc2lnbmVkPF9VSW50VHlwZT46OnZhbHVl
LCAidGVtcGxhdGUgYXJndW1lbnQgIgogICAgICAic3Vic3RpdHV0aW5nIF9VSW50VHlwZSBub3Qg
YW4gdW5zaWduZWQgaW50ZWdyYWwgdHlwZSIpOwogICAgICBzdGF0aWNfYXNzZXJ0KDF1IDw9IF9f
bSAmJiBfX20gPD0gX19uLAogICAgICAidGVtcGxhdGUgYXJndW1lbnQgc3Vic3RpdHV0aW5nIF9f
bSBvdXQgb2YgYm91bmRzIik7CiAgICAgIHN0YXRpY19hc3NlcnQoX19yIDw9IF9fdywgInRlbXBs
YXRlIGFyZ3VtZW50IHN1YnN0aXR1dGluZyAiCiAgICAgICJfX3Igb3V0IG9mIGJvdW5kIik7CiAg
ICAgIHN0YXRpY19hc3NlcnQoX191IDw9IF9fdywgInRlbXBsYXRlIGFyZ3VtZW50IHN1YnN0aXR1
dGluZyAiCiAgICAgICJfX3Ugb3V0IG9mIGJvdW5kIik7CiAgICAgIHN0YXRpY19hc3NlcnQoX19z
IDw9IF9fdywgInRlbXBsYXRlIGFyZ3VtZW50IHN1YnN0aXR1dGluZyAiCiAgICAgICJfX3Mgb3V0
IG9mIGJvdW5kIik7CiAgICAgIHN0YXRpY19hc3NlcnQoX190IDw9IF9fdywgInRlbXBsYXRlIGFy
Z3VtZW50IHN1YnN0aXR1dGluZyAiCiAgICAgICJfX3Qgb3V0IG9mIGJvdW5kIik7CiAgICAgIHN0
YXRpY19hc3NlcnQoX19sIDw9IF9fdywgInRlbXBsYXRlIGFyZ3VtZW50IHN1YnN0aXR1dGluZyAi
CiAgICAgICJfX2wgb3V0IG9mIGJvdW5kIik7CiAgICAgIHN0YXRpY19hc3NlcnQoX193IDw9IHN0
ZDo6bnVtZXJpY19saW1pdHM8X1VJbnRUeXBlPjo6ZGlnaXRzLAogICAgICAidGVtcGxhdGUgYXJn
dW1lbnQgc3Vic3RpdHV0aW5nIF9fdyBvdXQgb2YgYm91bmQiKTsKICAgICAgc3RhdGljX2Fzc2Vy
dChfX2EgPD0gKF9fZGV0YWlsOjpfU2hpZnQ8X1VJbnRUeXBlLCBfX3c+OjpfX3ZhbHVlIC0gMSks
CiAgICAgICJ0ZW1wbGF0ZSBhcmd1bWVudCBzdWJzdGl0dXRpbmcgX19hIG91dCBvZiBib3VuZCIp
OwogICAgICBzdGF0aWNfYXNzZXJ0KF9fYiA8PSAoX19kZXRhaWw6Ol9TaGlmdDxfVUludFR5cGUs
IF9fdz46Ol9fdmFsdWUgLSAxKSwKICAgICAgInRlbXBsYXRlIGFyZ3VtZW50IHN1YnN0aXR1dGlu
ZyBfX2Igb3V0IG9mIGJvdW5kIik7CiAgICAgIHN0YXRpY19hc3NlcnQoX19jIDw9IChfX2RldGFp
bDo6X1NoaWZ0PF9VSW50VHlwZSwgX193Pjo6X192YWx1ZSAtIDEpLAogICAgICAidGVtcGxhdGUg
YXJndW1lbnQgc3Vic3RpdHV0aW5nIF9fYyBvdXQgb2YgYm91bmQiKTsKICAgICAgc3RhdGljX2Fz
c2VydChfX2QgPD0gKF9fZGV0YWlsOjpfU2hpZnQ8X1VJbnRUeXBlLCBfX3c+OjpfX3ZhbHVlIC0g
MSksCiAgICAgICJ0ZW1wbGF0ZSBhcmd1bWVudCBzdWJzdGl0dXRpbmcgX19kIG91dCBvZiBib3Vu
ZCIpOwogICAgICBzdGF0aWNfYXNzZXJ0KF9fZiA8PSAoX19kZXRhaWw6Ol9TaGlmdDxfVUludFR5
cGUsIF9fdz46Ol9fdmFsdWUgLSAxKSwKICAgICAgInRlbXBsYXRlIGFyZ3VtZW50IHN1YnN0aXR1
dGluZyBfX2Ygb3V0IG9mIGJvdW5kIik7CgogICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBfVUlu
dFR5cGUgcmVzdWx0X3R5cGU7CgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgd29yZF9z
aXplID0gX193OwogICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzdGF0ZV9zaXplID0gX19u
OwogICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaGlmdF9zaXplID0gX19tOwogICAgICBz
dGF0aWMgY29uc3RleHByIHNpemVfdCBtYXNrX2JpdHMgPSBfX3I7CiAgICAgIHN0YXRpYyBjb25z
dGV4cHIgcmVzdWx0X3R5cGUgeG9yX21hc2sgPSBfX2E7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IHRlbXBlcmluZ191ID0gX191OwogICAgICBzdGF0aWMgY29uc3RleHByIHJlc3VsdF90
eXBlIHRlbXBlcmluZ19kID0gX19kOwogICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCB0ZW1w
ZXJpbmdfcyA9IF9fczsKICAgICAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZSB0ZW1wZXJp
bmdfYiA9IF9fYjsKICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgdGVtcGVyaW5nX3QgPSBf
X3Q7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUgdGVtcGVyaW5nX2MgPSBfX2M7
CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHRlbXBlcmluZ19sID0gX19sOwogICAgICBz
dGF0aWMgY29uc3RleHByIHJlc3VsdF90eXBlIGluaXRpYWxpemF0aW9uX211bHRpcGxpZXIgPSBf
X2Y7CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUgZGVmYXVsdF9zZWVkID0gNTQ4
OXU7CgoKICAgICAgZXhwbGljaXQKICAgICAgbWVyc2VubmVfdHdpc3Rlcl9lbmdpbmUocmVzdWx0
X3R5cGUgX19zZCA9IGRlZmF1bHRfc2VlZCkKICAgICAgeyBzZWVkKF9fc2QpOyB9CgoKCgoKCgog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU3NlcSwgdHlwZW5hbWUgPSB0eXBlbmFtZQogICAgICAg
IHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX3NhbWU8X1NzZXEsIG1lcnNlbm5lX3R3aXN0ZXJfZW5n
aW5lPjo6dmFsdWU+CiAgICAgICAgOjp0eXBlPgogICAgICAgIGV4cGxpY2l0CiAgICAgICAgbWVy
c2VubmVfdHdpc3Rlcl9lbmdpbmUoX1NzZXEmIF9fcSkKICAgICAgICB7IHNlZWQoX19xKTsgfQoK
ICAgICAgdm9pZAogICAgICBzZWVkKHJlc3VsdF90eXBlIF9fc2QgPSBkZWZhdWx0X3NlZWQpOwoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1NzZXE+CiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX2NsYXNzPF9Tc2VxPjo6dmFsdWU+Ojp0eXBlCiAgICAgICAgc2VlZChfU3NlcSYgX19x
KTsKCgoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUKICAgICAgbWluKCkKICAg
ICAgeyByZXR1cm4gMDsgfTsKCgoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUK
ICAgICAgbWF4KCkKICAgICAgeyByZXR1cm4gX19kZXRhaWw6Ol9TaGlmdDxfVUludFR5cGUsIF9f
dz46Ol9fdmFsdWUgLSAxOyB9CgoKCgogICAgICB2b2lkCiAgICAgIGRpc2NhcmQodW5zaWduZWQg
bG9uZyBsb25nIF9feik7CgogICAgICByZXN1bHRfdHlwZQogICAgICBvcGVyYXRvcigpKCk7CiMg
NTU4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0
cy9yYW5kb20uaCIgMwogICAgICBmcmllbmQgYm9vbAogICAgICBvcGVyYXRvcj09KGNvbnN0IG1l
cnNlbm5lX3R3aXN0ZXJfZW5naW5lJiBfX2xocywKICAgY29uc3QgbWVyc2VubmVfdHdpc3Rlcl9l
bmdpbmUmIF9fcmhzKQogICAgICB7IHJldHVybiAoc3RkOjplcXVhbChfX2xocy5fTV94LCBfX2xo
cy5fTV94ICsgc3RhdGVfc2l6ZSwgX19yaHMuX01feCkKICAmJiBfX2xocy5fTV9wID09IF9fcmhz
Ll9NX3ApOyB9CiMgNTc2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC44LjEvYml0cy9yYW5kb20uaCIgMwogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVUludFR5
cGUxLAogICAgICAgIHNpemVfdCBfX3cxLCBzaXplX3QgX19uMSwKICAgICAgICBzaXplX3QgX19t
MSwgc2l6ZV90IF9fcjEsCiAgICAgICAgX1VJbnRUeXBlMSBfX2ExLCBzaXplX3QgX191MSwKICAg
ICAgICBfVUludFR5cGUxIF9fZDEsIHNpemVfdCBfX3MxLAogICAgICAgIF9VSW50VHlwZTEgX19i
MSwgc2l6ZV90IF9fdDEsCiAgICAgICAgX1VJbnRUeXBlMSBfX2MxLCBzaXplX3QgX19sMSwgX1VJ
bnRUeXBlMSBfX2YxLAogICAgICAgIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4K
IGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKIG9wZXJhdG9yPDwo
c3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9fb3MsCiAgICAgY29uc3Qgc3Rk
OjptZXJzZW5uZV90d2lzdGVyX2VuZ2luZTxfVUludFR5cGUxLCBfX3cxLCBfX24xLAogICAgIF9f
bTEsIF9fcjEsIF9fYTEsIF9fdTEsIF9fZDEsIF9fczEsIF9fYjEsIF9fdDEsIF9fYzEsCiAgICAg
X19sMSwgX19mMT4mIF9feCk7CiMgNjAyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC44LjEvYml0cy9yYW5kb20uaCIgMwogICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVUludFR5cGUxLAogICAgICAgIHNpemVfdCBfX3cxLCBzaXplX3QgX19uMSwKICAgICAgICBz
aXplX3QgX19tMSwgc2l6ZV90IF9fcjEsCiAgICAgICAgX1VJbnRUeXBlMSBfX2ExLCBzaXplX3Qg
X191MSwKICAgICAgICBfVUludFR5cGUxIF9fZDEsIHNpemVfdCBfX3MxLAogICAgICAgIF9VSW50
VHlwZTEgX19iMSwgc2l6ZV90IF9fdDEsCiAgICAgICAgX1VJbnRUeXBlMSBfX2MxLCBzaXplX3Qg
X19sMSwgX1VJbnRUeXBlMSBfX2YxLAogICAgICAgIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg
X1RyYWl0cz4KIGZyaWVuZCBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKIG9w
ZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAgICAg
c3RkOjptZXJzZW5uZV90d2lzdGVyX2VuZ2luZTxfVUludFR5cGUxLCBfX3cxLCBfX24xLCBfX20x
LAogICAgIF9fcjEsIF9fYTEsIF9fdTEsIF9fZDEsIF9fczEsIF9fYjEsIF9fdDEsIF9fYzEsCiAg
ICAgX19sMSwgX19mMT4mIF9feCk7CgogICAgcHJpdmF0ZToKICAgICAgdm9pZCBfTV9nZW5fcmFu
ZCgpOwoKICAgICAgX1VJbnRUeXBlIF9NX3hbc3RhdGVfc2l6ZV07CiAgICAgIHNpemVfdCBfTV9w
OwogICAgfTsKIyA2MzUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjguMS9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1VJbnRUeXBlLCBz
aXplX3QgX193LAogICAgc2l6ZV90IF9fbiwgc2l6ZV90IF9fbSwgc2l6ZV90IF9fciwKICAgIF9V
SW50VHlwZSBfX2EsIHNpemVfdCBfX3UsIF9VSW50VHlwZSBfX2QsIHNpemVfdCBfX3MsCiAgICBf
VUludFR5cGUgX19iLCBzaXplX3QgX190LAogICAgX1VJbnRUeXBlIF9fYywgc2l6ZV90IF9fbCwg
X1VJbnRUeXBlIF9fZj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IHN0ZDo6
bWVyc2VubmVfdHdpc3Rlcl9lbmdpbmU8X1VJbnRUeXBlLCBfX3csIF9fbiwgX19tLAogICAgICAg
IF9fciwgX19hLCBfX3UsIF9fZCwgX19zLCBfX2IsIF9fdCwgX19jLCBfX2wsIF9fZj4mIF9fbGhz
LAogICAgICAgIGNvbnN0IHN0ZDo6bWVyc2VubmVfdHdpc3Rlcl9lbmdpbmU8X1VJbnRUeXBlLCBf
X3csIF9fbiwgX19tLAogICAgICAgIF9fciwgX19hLCBfX3UsIF9fZCwgX19zLCBfX2IsIF9fdCwg
X19jLCBfX2wsIF9fZj4mIF9fcmhzKQogICAgeyByZXR1cm4gIShfX2xocyA9PSBfX3Jocyk7IH0K
IyA2NjcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9i
aXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1VJbnRUeXBlLCBzaXplX3QgX193
LCBzaXplX3QgX19zLCBzaXplX3QgX19yPgogICAgY2xhc3Mgc3VidHJhY3Rfd2l0aF9jYXJyeV9l
bmdpbmUKICAgIHsKICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Vuc2lnbmVkPF9VSW50VHlw
ZT46OnZhbHVlLCAidGVtcGxhdGUgYXJndW1lbnQgIgogICAgICAic3Vic3RpdHV0aW5nIF9VSW50
VHlwZSBub3QgYW4gdW5zaWduZWQgaW50ZWdyYWwgdHlwZSIpOwogICAgICBzdGF0aWNfYXNzZXJ0
KDB1IDwgX19zICYmIF9fcyA8IF9fciwKICAgICAgInRlbXBsYXRlIGFyZ3VtZW50IHN1YnN0aXR1
dGluZyBfX3Mgb3V0IG9mIGJvdW5kcyIpOwogICAgICBzdGF0aWNfYXNzZXJ0KDB1IDwgX193ICYm
IF9fdyA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPF9VSW50VHlwZT46OmRpZ2l0cywKICAgICAgInRl
bXBsYXRlIGFyZ3VtZW50IHN1YnN0aXR1dGluZyBfX3cgb3V0IG9mIGJvdW5kcyIpOwoKICAgIHB1
YmxpYzoKCiAgICAgIHR5cGVkZWYgX1VJbnRUeXBlIHJlc3VsdF90eXBlOwoKCiAgICAgIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IHdvcmRfc2l6ZSA9IF9fdzsKICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBzaXplX3Qgc2hvcnRfbGFnID0gX19zOwogICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBs
b25nX2xhZyA9IF9fcjsKICAgICAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZSBkZWZhdWx0
X3NlZWQgPSAxOTc4MDUwM3U7CgoKCgoKICAgICAgZXhwbGljaXQKICAgICAgc3VidHJhY3Rfd2l0
aF9jYXJyeV9lbmdpbmUocmVzdWx0X3R5cGUgX19zZCA9IGRlZmF1bHRfc2VlZCkKICAgICAgeyBz
ZWVkKF9fc2QpOyB9CgoKCgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU3NlcSwgdHlwZW5h
bWUgPSB0eXBlbmFtZQogICAgICAgIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX3NhbWU8X1NzZXEs
IHN1YnRyYWN0X3dpdGhfY2FycnlfZW5naW5lPjo6dmFsdWU+CiAgICAgICAgOjp0eXBlPgogICAg
ICAgIGV4cGxpY2l0CiAgICAgICAgc3VidHJhY3Rfd2l0aF9jYXJyeV9lbmdpbmUoX1NzZXEmIF9f
cSkKICAgICAgICB7IHNlZWQoX19xKTsgfQojIDcyMCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvcmFuZG9tLmgiIDMKICAgICAgdm9pZAogICAg
ICBzZWVkKHJlc3VsdF90eXBlIF9fc2QgPSBkZWZhdWx0X3NlZWQpOwoKCgoKCiAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIF9Tc2VxPgogdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19jbGFz
czxfU3NlcT46OnZhbHVlPjo6dHlwZQogICAgICAgIHNlZWQoX1NzZXEmIF9fcSk7CgoKCgoKICAg
ICAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZQogICAgICBtaW4oKQogICAgICB7IHJldHVy
biAwOyB9CgoKCgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZQogICAgICBtYXgo
KQogICAgICB7IHJldHVybiBfX2RldGFpbDo6X1NoaWZ0PF9VSW50VHlwZSwgX193Pjo6X192YWx1
ZSAtIDE7IH0KCgoKCiAgICAgIHZvaWQKICAgICAgZGlzY2FyZCh1bnNpZ25lZCBsb25nIGxvbmcg
X196KQogICAgICB7CiBmb3IgKDsgX196ICE9IDBVTEw7IC0tX196KQogICAoKnRoaXMpKCk7CiAg
ICAgIH0KCgoKCiAgICAgIHJlc3VsdF90eXBlCiAgICAgIG9wZXJhdG9yKCkoKTsKIyA3NzUgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3JhbmRv
bS5oIiAzCiAgICAgIGZyaWVuZCBib29sCiAgICAgIG9wZXJhdG9yPT0oY29uc3Qgc3VidHJhY3Rf
d2l0aF9jYXJyeV9lbmdpbmUmIF9fbGhzLAogICBjb25zdCBzdWJ0cmFjdF93aXRoX2NhcnJ5X2Vu
Z2luZSYgX19yaHMpCiAgICAgIHsgcmV0dXJuIChzdGQ6OmVxdWFsKF9fbGhzLl9NX3gsIF9fbGhz
Ll9NX3ggKyBsb25nX2xhZywgX19yaHMuX01feCkKICAmJiBfX2xocy5fTV9jYXJyeSA9PSBfX3Jo
cy5fTV9jYXJyeQogICYmIF9fbGhzLl9NX3AgPT0gX19yaHMuX01fcCk7IH0KIyA3OTQgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4x
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3JhbmRvbS5o
IiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlwZTEsIHNpemVfdCBfX3cxLCBzaXpl
X3QgX19zMSwgc2l6ZV90IF9fcjEsCiAgICAgICAgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzPgogZnJpZW5kIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jgogb3Bl
cmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYsCiAgICAgY29uc3Qg
c3RkOjpzdWJ0cmFjdF93aXRoX2NhcnJ5X2VuZ2luZTxfVUludFR5cGUxLCBfX3cxLAogICAgIF9f
czEsIF9fcjE+Jik7CiMgODEzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC44LjEvYml0cy9yYW5kb20uaCIgMwogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVUlu
dFR5cGUxLCBzaXplX3QgX193MSwgc2l6ZV90IF9fczEsIHNpemVfdCBfX3IxLAogICAgICAgIHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KIGZyaWVuZCBzdGQ6OmJhc2ljX2lzdHJl
YW08X0NoYXJULCBfVHJhaXRzPiYKIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFy
VCwgX1RyYWl0cz4mLAogICAgIHN0ZDo6c3VidHJhY3Rfd2l0aF9jYXJyeV9lbmdpbmU8X1VJbnRU
eXBlMSwgX193MSwKICAgICBfX3MxLCBfX3IxPiYpOwoKICAgIHByaXZhdGU6CiAgICAgIF9VSW50
VHlwZSBfTV94W2xvbmdfbGFnXTsKICAgICAgX1VJbnRUeXBlIF9NX2NhcnJ5OwogICAgICBzaXpl
X3QgX01fcDsKICAgIH07CiMgODM4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC44LjEvYml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50
VHlwZSwgc2l6ZV90IF9fdywgc2l6ZV90IF9fcywgc2l6ZV90IF9fcj4KICAgIGlubGluZSBib29s
CiAgICBvcGVyYXRvciE9KGNvbnN0IHN0ZDo6c3VidHJhY3Rfd2l0aF9jYXJyeV9lbmdpbmU8X1VJ
bnRUeXBlLCBfX3csCiAgICAgICAgX19zLCBfX3I+JiBfX2xocywKICAgICAgICBjb25zdCBzdGQ6
OnN1YnRyYWN0X3dpdGhfY2FycnlfZW5naW5lPF9VSW50VHlwZSwgX193LAogICAgICAgIF9fcywg
X19yPiYgX19yaHMpCiAgICB7IHJldHVybiAhKF9fbGhzID09IF9fcmhzKTsgfQojIDg1MyAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44
LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvcmFuZG9t
LmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tTnVtYmVyRW5naW5lLCBzaXplX3QgX19w
LCBzaXplX3QgX19yPgogICAgY2xhc3MgZGlzY2FyZF9ibG9ja19lbmdpbmUKICAgIHsKICAgICAg
c3RhdGljX2Fzc2VydCgxIDw9IF9fciAmJiBfX3IgPD0gX19wLAogICAgICAidGVtcGxhdGUgYXJn
dW1lbnQgc3Vic3RpdHV0aW5nIF9fciBvdXQgb2YgYm91bmRzIik7CgogICAgcHVibGljOgoKICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBfUmFuZG9tTnVtYmVyRW5naW5lOjpyZXN1bHRfdHlwZSByZXN1
bHRfdHlwZTsKCgogICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBibG9ja19zaXplID0gX19w
OwogICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCB1c2VkX2Jsb2NrID0gX19yOwoKCgoKCgog
ICAgICBkaXNjYXJkX2Jsb2NrX2VuZ2luZSgpCiAgICAgIDogX01fYigpLCBfTV9uKDApIHsgfQoK
CgoKCgoKICAgICAgZXhwbGljaXQKICAgICAgZGlzY2FyZF9ibG9ja19lbmdpbmUoY29uc3QgX1Jh
bmRvbU51bWJlckVuZ2luZSYgX19ybmcpCiAgICAgIDogX01fYihfX3JuZyksIF9NX24oMCkgeyB9
CgoKCgoKCgogICAgICBleHBsaWNpdAogICAgICBkaXNjYXJkX2Jsb2NrX2VuZ2luZShfUmFuZG9t
TnVtYmVyRW5naW5lJiYgX19ybmcpCiAgICAgIDogX01fYihzdGQ6Om1vdmUoX19ybmcpKSwgX01f
bigwKSB7IH0KCgoKCgoKCiAgICAgIGV4cGxpY2l0CiAgICAgIGRpc2NhcmRfYmxvY2tfZW5naW5l
KHJlc3VsdF90eXBlIF9fcykKICAgICAgOiBfTV9iKF9fcyksIF9NX24oMCkgeyB9CgoKCgoKCiAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Tc2VxLCB0eXBlbmFtZSA9IHR5cGVuYW1lCiBzdGQ6OmVu
YWJsZV9pZjwhc3RkOjppc19zYW1lPF9Tc2VxLCBkaXNjYXJkX2Jsb2NrX2VuZ2luZT46OnZhbHVl
CiAgICAgICAgICYmICFzdGQ6OmlzX3NhbWU8X1NzZXEsIF9SYW5kb21OdW1iZXJFbmdpbmU+Ojp2
YWx1ZT4KICAgICAgICA6OnR5cGU+CiAgICAgICAgZXhwbGljaXQKICAgICAgICBkaXNjYXJkX2Js
b2NrX2VuZ2luZShfU3NlcSYgX19xKQogOiBfTV9iKF9fcSksIF9NX24oMCkKICAgICAgICB7IH0K
CgoKCgogICAgICB2b2lkCiAgICAgIHNlZWQoKQogICAgICB7CiBfTV9iLnNlZWQoKTsKIF9NX24g
PSAwOwogICAgICB9CgoKCgoKICAgICAgdm9pZAogICAgICBzZWVkKHJlc3VsdF90eXBlIF9fcykK
ICAgICAgewogX01fYi5zZWVkKF9fcyk7CiBfTV9uID0gMDsKICAgICAgfQoKCgoKCgogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfU3NlcT4KICAgICAgICB2b2lkCiAgICAgICAgc2VlZChfU3NlcSYg
X19xKQogICAgICAgIHsKICAgX01fYi5zZWVkKF9fcSk7CiAgIF9NX24gPSAwOwogfQoKCgoKCiAg
ICAgIGNvbnN0IF9SYW5kb21OdW1iZXJFbmdpbmUmCiAgICAgIGJhc2UoKSBjb25zdCBub2V4Y2Vw
dAogICAgICB7IHJldHVybiBfTV9iOyB9CgoKCgogICAgICBzdGF0aWMgY29uc3RleHByIHJlc3Vs
dF90eXBlCiAgICAgIG1pbigpCiAgICAgIHsgcmV0dXJuIF9SYW5kb21OdW1iZXJFbmdpbmU6Om1p
bigpOyB9CgoKCgogICAgICBzdGF0aWMgY29uc3RleHByIHJlc3VsdF90eXBlCiAgICAgIG1heCgp
CiAgICAgIHsgcmV0dXJuIF9SYW5kb21OdW1iZXJFbmdpbmU6Om1heCgpOyB9CgoKCgogICAgICB2
b2lkCiAgICAgIGRpc2NhcmQodW5zaWduZWQgbG9uZyBsb25nIF9feikKICAgICAgewogZm9yICg7
IF9feiAhPSAwVUxMOyAtLV9feikKICAgKCp0aGlzKSgpOwogICAgICB9CgoKCgogICAgICByZXN1
bHRfdHlwZQogICAgICBvcGVyYXRvcigpKCk7CiMgMTAwMyAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvcmFuZG9tLmgiIDMKICAgICAgZnJpZW5k
IGJvb2wKICAgICAgb3BlcmF0b3I9PShjb25zdCBkaXNjYXJkX2Jsb2NrX2VuZ2luZSYgX19saHMs
CiAgIGNvbnN0IGRpc2NhcmRfYmxvY2tfZW5naW5lJiBfX3JocykKICAgICAgeyByZXR1cm4gX19s
aHMuX01fYiA9PSBfX3Jocy5fTV9iICYmIF9fbGhzLl9NX24gPT0gX19yaHMuX01fbjsgfQojIDEw
MTkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRz
L3JhbmRvbS5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21OdW1iZXJFbmdpbmUx
LCBzaXplX3QgX19wMSwgc2l6ZV90IF9fcjEsCiAgICAgICAgdHlwZW5hbWUgX0NoYXJULCB0eXBl
bmFtZSBfVHJhaXRzPgogZnJpZW5kIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+
Jgogb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vcywK
ICAgICBjb25zdCBzdGQ6OmRpc2NhcmRfYmxvY2tfZW5naW5lPF9SYW5kb21OdW1iZXJFbmdpbmUx
LAogICAgIF9fcDEsIF9fcjE+JiBfX3gpOwojIDEwMzcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3JhbmRvbS5oIiAzCiAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIF9SYW5kb21OdW1iZXJFbmdpbmUxLCBzaXplX3QgX19wMSwgc2l6ZV90IF9fcjEs
CiAgICAgICAgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogZnJpZW5kIHN0ZDo6
YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jgogb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lz
dHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywKICAgICBzdGQ6OmRpc2NhcmRfYmxvY2tfZW5n
aW5lPF9SYW5kb21OdW1iZXJFbmdpbmUxLAogICAgIF9fcDEsIF9fcjE+JiBfX3gpOwoKICAgIHBy
aXZhdGU6CiAgICAgIF9SYW5kb21OdW1iZXJFbmdpbmUgX01fYjsKICAgICAgc2l6ZV90IF9NX247
CiAgICB9OwojIDEwNjAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjguMS9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbU51bWJl
ckVuZ2luZSwgc2l6ZV90IF9fcCwgc2l6ZV90IF9fcj4KICAgIGlubGluZSBib29sCiAgICBvcGVy
YXRvciE9KGNvbnN0IHN0ZDo6ZGlzY2FyZF9ibG9ja19lbmdpbmU8X1JhbmRvbU51bWJlckVuZ2lu
ZSwgX19wLAogICAgICAgIF9fcj4mIF9fbGhzLAogICAgICAgIGNvbnN0IHN0ZDo6ZGlzY2FyZF9i
bG9ja19lbmdpbmU8X1JhbmRvbU51bWJlckVuZ2luZSwgX19wLAogICAgICAgIF9fcj4mIF9fcmhz
KQogICAgeyByZXR1cm4gIShfX2xocyA9PSBfX3Jocyk7IH0KCgoKCgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUmFuZG9tTnVtYmVyRW5naW5lLCBzaXplX3QgX193LCB0eXBlbmFtZSBfVUludFR5cGU+
CiAgICBjbGFzcyBpbmRlcGVuZGVudF9iaXRzX2VuZ2luZQogICAgewogICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfdW5zaWduZWQ8X1VJbnRUeXBlPjo6dmFsdWUsICJ0ZW1wbGF0ZSBhcmd1bWVu
dCAiCiAgICAgICJzdWJzdGl0dXRpbmcgX1VJbnRUeXBlIG5vdCBhbiB1bnNpZ25lZCBpbnRlZ3Jh
bCB0eXBlIik7CiAgICAgIHN0YXRpY19hc3NlcnQoMHUgPCBfX3cgJiYgX193IDw9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8X1VJbnRUeXBlPjo6ZGlnaXRzLAogICAgICAidGVtcGxhdGUgYXJndW1lbnQg
c3Vic3RpdHV0aW5nIF9fdyBvdXQgb2YgYm91bmRzIik7CgogICAgcHVibGljOgoKICAgICAgdHlw
ZWRlZiBfVUludFR5cGUgcmVzdWx0X3R5cGU7CgoKCgoKCiAgICAgIGluZGVwZW5kZW50X2JpdHNf
ZW5naW5lKCkKICAgICAgOiBfTV9iKCkgeyB9CgoKCgoKCgogICAgICBleHBsaWNpdAogICAgICBp
bmRlcGVuZGVudF9iaXRzX2VuZ2luZShjb25zdCBfUmFuZG9tTnVtYmVyRW5naW5lJiBfX3JuZykK
ICAgICAgOiBfTV9iKF9fcm5nKSB7IH0KCgoKCgoKCiAgICAgIGV4cGxpY2l0CiAgICAgIGluZGVw
ZW5kZW50X2JpdHNfZW5naW5lKF9SYW5kb21OdW1iZXJFbmdpbmUmJiBfX3JuZykKICAgICAgOiBf
TV9iKHN0ZDo6bW92ZShfX3JuZykpIHsgfQoKCgoKCgoKICAgICAgZXhwbGljaXQKICAgICAgaW5k
ZXBlbmRlbnRfYml0c19lbmdpbmUocmVzdWx0X3R5cGUgX19zKQogICAgICA6IF9NX2IoX19zKSB7
IH0KCgoKCgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1NzZXEsIHR5cGVuYW1lID0gdHlwZW5h
bWUKIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX3NhbWU8X1NzZXEsIGluZGVwZW5kZW50X2JpdHNf
ZW5naW5lPjo6dmFsdWUKICAgICAgICAgJiYgIXN0ZDo6aXNfc2FtZTxfU3NlcSwgX1JhbmRvbU51
bWJlckVuZ2luZT46OnZhbHVlPgogICAgICAgICAgICAgICA6OnR5cGU+CiAgICAgICAgZXhwbGlj
aXQKICAgICAgICBpbmRlcGVuZGVudF9iaXRzX2VuZ2luZShfU3NlcSYgX19xKQogICAgICAgIDog
X01fYihfX3EpCiAgICAgICAgeyB9CgoKCgoKICAgICAgdm9pZAogICAgICBzZWVkKCkKICAgICAg
eyBfTV9iLnNlZWQoKTsgfQoKCgoKCiAgICAgIHZvaWQKICAgICAgc2VlZChyZXN1bHRfdHlwZSBf
X3MpCiAgICAgIHsgX01fYi5zZWVkKF9fcyk7IH0KCgoKCgoKICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgX1NzZXE+CiAgICAgICAgdm9pZAogICAgICAgIHNlZWQoX1NzZXEmIF9fcSkKICAgICAgICB7
IF9NX2Iuc2VlZChfX3EpOyB9CgoKCgoKICAgICAgY29uc3QgX1JhbmRvbU51bWJlckVuZ2luZSYK
ICAgICAgYmFzZSgpIGNvbnN0IG5vZXhjZXB0CiAgICAgIHsgcmV0dXJuIF9NX2I7IH0KCgoKCiAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUKICAgICAgbWluKCkKICAgICAgeyByZXR1
cm4gMFU7IH0KCgoKCiAgICAgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUKICAgICAgbWF4
KCkKICAgICAgeyByZXR1cm4gX19kZXRhaWw6Ol9TaGlmdDxfVUludFR5cGUsIF9fdz46Ol9fdmFs
dWUgLSAxOyB9CgoKCgogICAgICB2b2lkCiAgICAgIGRpc2NhcmQodW5zaWduZWQgbG9uZyBsb25n
IF9feikKICAgICAgewogZm9yICg7IF9feiAhPSAwVUxMOyAtLV9feikKICAgKCp0aGlzKSgpOwog
ICAgICB9CgoKCgogICAgICByZXN1bHRfdHlwZQogICAgICBvcGVyYXRvcigpKCk7CiMgMTIxMyAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvcmFu
ZG9tLmgiIDMKICAgICAgZnJpZW5kIGJvb2wKICAgICAgb3BlcmF0b3I9PShjb25zdCBpbmRlcGVu
ZGVudF9iaXRzX2VuZ2luZSYgX19saHMsCiAgIGNvbnN0IGluZGVwZW5kZW50X2JpdHNfZW5naW5l
JiBfX3JocykKICAgICAgeyByZXR1cm4gX19saHMuX01fYiA9PSBfX3Jocy5fTV9iOyB9CiMgMTIz
MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMv
cmFuZG9tLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJh
aXRzPgogZnJpZW5kIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jgogb3BlcmF0
b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywKICAgICBzdGQ6
OmluZGVwZW5kZW50X2JpdHNfZW5naW5lPF9SYW5kb21OdW1iZXJFbmdpbmUsCiAgICAgX193LCBf
VUludFR5cGU+JiBfX3gpCiB7CiAgIF9faXMgPj4gX194Ll9NX2I7CiAgIHJldHVybiBfX2lzOwog
fQoKICAgIHByaXZhdGU6CiAgICAgIF9SYW5kb21OdW1iZXJFbmdpbmUgX01fYjsKICAgIH07CiMg
MTI1NiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2Jp
dHMvcmFuZG9tLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tTnVtYmVyRW5naW5lLCBz
aXplX3QgX193LCB0eXBlbmFtZSBfVUludFR5cGU+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0
b3IhPShjb25zdCBzdGQ6OmluZGVwZW5kZW50X2JpdHNfZW5naW5lPF9SYW5kb21OdW1iZXJFbmdp
bmUsIF9fdywKICAgICAgICBfVUludFR5cGU+JiBfX2xocywKICAgICAgICBjb25zdCBzdGQ6Omlu
ZGVwZW5kZW50X2JpdHNfZW5naW5lPF9SYW5kb21OdW1iZXJFbmdpbmUsIF9fdywKICAgICAgICBf
VUludFR5cGU+JiBfX3JocykKICAgIHsgcmV0dXJuICEoX19saHMgPT0gX19yaHMpOyB9CiMgMTI3
NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMv
cmFuZG9tLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tTnVtYmVyRW5naW5lLCBzaXpl
X3QgX193LCB0eXBlbmFtZSBfVUludFR5cGUsCiAgICB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9w
ZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9fb3MsCiAgICAg
ICAgY29uc3Qgc3RkOjppbmRlcGVuZGVudF9iaXRzX2VuZ2luZTxfUmFuZG9tTnVtYmVyRW5naW5l
LAogICAgICAgIF9fdywgX1VJbnRUeXBlPiYgX194KQogICAgewogICAgICBfX29zIDw8IF9feC5i
YXNlKCk7CiAgICAgIHJldHVybiBfX29zOwogICAgfQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfUmFuZG9tTnVtYmVyRW5naW5lLCBzaXplX3QgX19rPgogICAgY2xhc3Mgc2h1ZmZsZV9vcmRl
cl9lbmdpbmUKICAgIHsKICAgICAgc3RhdGljX2Fzc2VydCgxdSA8PSBfX2ssICJ0ZW1wbGF0ZSBh
cmd1bWVudCBzdWJzdGl0dXRpbmcgIgogICAgICAiX19rIG91dCBvZiBib3VuZCIpOwoKICAgIHB1
YmxpYzoKCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX1JhbmRvbU51bWJlckVuZ2luZTo6cmVzdWx0
X3R5cGUgcmVzdWx0X3R5cGU7CgogICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCB0YWJsZV9z
aXplID0gX19rOwoKCgoKCgogICAgICBzaHVmZmxlX29yZGVyX2VuZ2luZSgpCiAgICAgIDogX01f
YigpCiAgICAgIHsgX01faW5pdGlhbGl6ZSgpOyB9CgoKCgoKCgogICAgICBleHBsaWNpdAogICAg
ICBzaHVmZmxlX29yZGVyX2VuZ2luZShjb25zdCBfUmFuZG9tTnVtYmVyRW5naW5lJiBfX3JuZykK
ICAgICAgOiBfTV9iKF9fcm5nKQogICAgICB7IF9NX2luaXRpYWxpemUoKTsgfQoKCgoKCgoKICAg
ICAgZXhwbGljaXQKICAgICAgc2h1ZmZsZV9vcmRlcl9lbmdpbmUoX1JhbmRvbU51bWJlckVuZ2lu
ZSYmIF9fcm5nKQogICAgICA6IF9NX2Ioc3RkOjptb3ZlKF9fcm5nKSkKICAgICAgeyBfTV9pbml0
aWFsaXplKCk7IH0KCgoKCgoKCiAgICAgIGV4cGxpY2l0CiAgICAgIHNodWZmbGVfb3JkZXJfZW5n
aW5lKHJlc3VsdF90eXBlIF9fcykKICAgICAgOiBfTV9iKF9fcykKICAgICAgeyBfTV9pbml0aWFs
aXplKCk7IH0KCgoKCgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1NzZXEsIHR5cGVuYW1lID0g
dHlwZW5hbWUKIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX3NhbWU8X1NzZXEsIHNodWZmbGVfb3Jk
ZXJfZW5naW5lPjo6dmFsdWUKICAgICAgICAgJiYgIXN0ZDo6aXNfc2FtZTxfU3NlcSwgX1JhbmRv
bU51bWJlckVuZ2luZT46OnZhbHVlPgogICAgICAgIDo6dHlwZT4KICAgICAgICBleHBsaWNpdAog
ICAgICAgIHNodWZmbGVfb3JkZXJfZW5naW5lKF9Tc2VxJiBfX3EpCiAgICAgICAgOiBfTV9iKF9f
cSkKICAgICAgICB7IF9NX2luaXRpYWxpemUoKTsgfQoKCgoKCiAgICAgIHZvaWQKICAgICAgc2Vl
ZCgpCiAgICAgIHsKIF9NX2Iuc2VlZCgpOwogX01faW5pdGlhbGl6ZSgpOwogICAgICB9CgoKCgoK
ICAgICAgdm9pZAogICAgICBzZWVkKHJlc3VsdF90eXBlIF9fcykKICAgICAgewogX01fYi5zZWVk
KF9fcyk7CiBfTV9pbml0aWFsaXplKCk7CiAgICAgIH0KCgoKCgoKICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1NzZXE+CiAgICAgICAgdm9pZAogICAgICAgIHNlZWQoX1NzZXEmIF9fcSkKICAgICAg
ICB7CiAgIF9NX2Iuc2VlZChfX3EpOwogICBfTV9pbml0aWFsaXplKCk7CiB9CgoKCgogICAgICBj
b25zdCBfUmFuZG9tTnVtYmVyRW5naW5lJgogICAgICBiYXNlKCkgY29uc3Qgbm9leGNlcHQKICAg
ICAgeyByZXR1cm4gX01fYjsgfQoKCgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlw
ZQogICAgICBtaW4oKQogICAgICB7IHJldHVybiBfUmFuZG9tTnVtYmVyRW5naW5lOjptaW4oKTsg
fQoKCgoKICAgICAgc3RhdGljIGNvbnN0ZXhwciByZXN1bHRfdHlwZQogICAgICBtYXgoKQogICAg
ICB7IHJldHVybiBfUmFuZG9tTnVtYmVyRW5naW5lOjptYXgoKTsgfQoKCgoKICAgICAgdm9pZAog
ICAgICBkaXNjYXJkKHVuc2lnbmVkIGxvbmcgbG9uZyBfX3opCiAgICAgIHsKIGZvciAoOyBfX3og
IT0gMFVMTDsgLS1fX3opCiAgICgqdGhpcykoKTsKICAgICAgfQoKCgoKICAgICAgcmVzdWx0X3R5
cGUKICAgICAgb3BlcmF0b3IoKSgpOwojIDE0NDIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3JhbmRvbS5oIiAzCiAgICAgIGZyaWVuZCBib29s
CiAgICAgIG9wZXJhdG9yPT0oY29uc3Qgc2h1ZmZsZV9vcmRlcl9lbmdpbmUmIF9fbGhzLAogICBj
b25zdCBzaHVmZmxlX29yZGVyX2VuZ2luZSYgX19yaHMpCiAgICAgIHsgcmV0dXJuIChfX2xocy5f
TV9iID09IF9fcmhzLl9NX2IKICAmJiBzdGQ6OmVxdWFsKF9fbGhzLl9NX3YsIF9fbGhzLl9NX3Yg
KyBfX2ssIF9fcmhzLl9NX3YpCiAgJiYgX19saHMuX01feSA9PSBfX3Jocy5fTV95KTsgfQojIDE0
NjAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRz
L3JhbmRvbS5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21OdW1iZXJFbmdpbmUx
LCBzaXplX3QgX19rMSwKICAgICAgICB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+
CiBmcmllbmQgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiBvcGVyYXRvcjw8
KHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAgIGNvbnN0IHN0
ZDo6c2h1ZmZsZV9vcmRlcl9lbmdpbmU8X1JhbmRvbU51bWJlckVuZ2luZTEsCiAgICAgX19rMT4m
IF9feCk7CiMgMTQ3OCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOC4xL2JpdHMvcmFuZG9tLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbU51
bWJlckVuZ2luZTEsIHNpemVfdCBfX2sxLAogICAgICAgIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h
bWUgX1RyYWl0cz4KIGZyaWVuZCBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYK
IG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAg
ICAgc3RkOjpzaHVmZmxlX29yZGVyX2VuZ2luZTxfUmFuZG9tTnVtYmVyRW5naW5lMSwgX19rMT4m
IF9feCk7CgogICAgcHJpdmF0ZToKICAgICAgdm9pZCBfTV9pbml0aWFsaXplKCkKICAgICAgewog
Zm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgX19rOyArK19faSkKICAgX01fdltfX2ldID0gX01f
YigpOwogX01feSA9IF9NX2IoKTsKICAgICAgfQoKICAgICAgX1JhbmRvbU51bWJlckVuZ2luZSBf
TV9iOwogICAgICByZXN1bHRfdHlwZSBfTV92W19fa107CiAgICAgIHJlc3VsdF90eXBlIF9NX3k7
CiAgICB9OwojIDE1MDggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjguMS9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbU51bWJl
ckVuZ2luZSwgc2l6ZV90IF9faz4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0
IHN0ZDo6c2h1ZmZsZV9vcmRlcl9lbmdpbmU8X1JhbmRvbU51bWJlckVuZ2luZSwKICAgICAgICBf
X2s+JiBfX2xocywKICAgICAgICBjb25zdCBzdGQ6OnNodWZmbGVfb3JkZXJfZW5naW5lPF9SYW5k
b21OdW1iZXJFbmdpbmUsCiAgICAgICAgX19rPiYgX19yaHMpCiAgICB7IHJldHVybiAhKF9fbGhz
ID09IF9fcmhzKTsgfQoKCgoKCiAgdHlwZWRlZiBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZTx1
aW50X2Zhc3QzMl90LCAxNjgwN1VMLCAwVUwsIDIxNDc0ODM2NDdVTD4KICBtaW5zdGRfcmFuZDA7
CgoKCgogIHR5cGVkZWYgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmU8dWludF9mYXN0MzJfdCwg
NDgyNzFVTCwgMFVMLCAyMTQ3NDgzNjQ3VUw+CiAgbWluc3RkX3JhbmQ7CiMgMTUzNyAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvcmFuZG9tLmgi
IDMKICB0eXBlZGVmIG1lcnNlbm5lX3R3aXN0ZXJfZW5naW5lPAogICAgdWludF9mYXN0MzJfdCwK
ICAgIDMyLCA2MjQsIDM5NywgMzEsCiAgICAweDk5MDhiMGRmVUwsIDExLAogICAgMHhmZmZmZmZm
ZlVMLCA3LAogICAgMHg5ZDJjNTY4MFVMLCAxNSwKICAgIDB4ZWZjNjAwMDBVTCwgMTgsIDE4MTI0
MzMyNTNVTD4gbXQxOTkzNzsKCgoKCiAgdHlwZWRlZiBtZXJzZW5uZV90d2lzdGVyX2VuZ2luZTwK
ICAgIHVpbnRfZmFzdDY0X3QsCiAgICA2NCwgMzEyLCAxNTYsIDMxLAogICAgMHhiNTAyNmY1YWE5
NjYxOWU5VUxMLCAyOSwKICAgIDB4NTU1NTU1NTU1NTU1NTU1NVVMTCwgMTcsCiAgICAweDcxZDY3
ZmZmZWRhNjAwMDBVTEwsIDM3LAogICAgMHhmZmY3ZWVlMDAwMDAwMDAwVUxMLCA0MywKICAgIDYz
NjQxMzYyMjM4NDY3OTMwMDVVTEw+IG10MTk5MzdfNjQ7CgogIHR5cGVkZWYgc3VidHJhY3Rfd2l0
aF9jYXJyeV9lbmdpbmU8dWludF9mYXN0MzJfdCwgMjQsIDEwLCAyND4KICAgIHJhbmx1eDI0X2Jh
c2U7CgogIHR5cGVkZWYgc3VidHJhY3Rfd2l0aF9jYXJyeV9lbmdpbmU8dWludF9mYXN0NjRfdCwg
NDgsIDUsIDEyPgogICAgcmFubHV4NDhfYmFzZTsKCiAgdHlwZWRlZiBkaXNjYXJkX2Jsb2NrX2Vu
Z2luZTxyYW5sdXgyNF9iYXNlLCAyMjMsIDIzPiByYW5sdXgyNDsKCiAgdHlwZWRlZiBkaXNjYXJk
X2Jsb2NrX2VuZ2luZTxyYW5sdXg0OF9iYXNlLCAzODksIDExPiByYW5sdXg0ODsKCiAgdHlwZWRl
ZiBzaHVmZmxlX29yZGVyX2VuZ2luZTxtaW5zdGRfcmFuZDAsIDI1Nj4ga251dGhfYjsKCiAgdHlw
ZWRlZiBtaW5zdGRfcmFuZDAgZGVmYXVsdF9yYW5kb21fZW5naW5lOwoKCgoKCiAgY2xhc3MgcmFu
ZG9tX2RldmljZQogIHsKICBwdWJsaWM6CgogICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgcmVzdWx0
X3R5cGU7CgoKCgoKICAgIGV4cGxpY2l0CiAgICByYW5kb21fZGV2aWNlKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBfX3Rva2VuID0gImRlZmF1bHQiKQogICAgewogICAgICBfTV9pbml0KF9fdG9rZW4pOwog
ICAgfQoKICAgIH5yYW5kb21fZGV2aWNlKCkKICAgIHsgX01fZmluaSgpOyB9CiMgMTYwNCAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44
LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvcmFuZG9t
LmgiIDMKICAgIHN0YXRpYyBjb25zdGV4cHIgcmVzdWx0X3R5cGUKICAgIG1pbigpCiAgICB7IHJl
dHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWluKCk7IH0KCiAgICBzdGF0
aWMgY29uc3RleHByIHJlc3VsdF90eXBlCiAgICBtYXgoKQogICAgeyByZXR1cm4gc3RkOjpudW1l
cmljX2xpbWl0czxyZXN1bHRfdHlwZT46Om1heCgpOyB9CgogICAgZG91YmxlCiAgICBlbnRyb3B5
KCkgY29uc3Qgbm9leGNlcHQKICAgIHsgcmV0dXJuIDAuMDsgfQoKICAgIHJlc3VsdF90eXBlCiAg
ICBvcGVyYXRvcigpKCkKICAgIHsKCiAgICAgIHJldHVybiB0aGlzLT5fTV9nZXR2YWwoKTsKCgoK
ICAgIH0KCgogICAgcmFuZG9tX2RldmljZShjb25zdCByYW5kb21fZGV2aWNlJikgPSBkZWxldGU7
CiAgICB2b2lkIG9wZXJhdG9yPShjb25zdCByYW5kb21fZGV2aWNlJikgPSBkZWxldGU7CgogIHBy
aXZhdGU6CgogICAgdm9pZCBfTV9pbml0KGNvbnN0IHN0ZDo6c3RyaW5nJiBfX3Rva2VuKTsKICAg
IHZvaWQgX01faW5pdF9wcmV0cjEoY29uc3Qgc3RkOjpzdHJpbmcmIF9fdG9rZW4pOwogICAgdm9p
ZCBfTV9maW5pKCk7CgogICAgcmVzdWx0X3R5cGUgX01fZ2V0dmFsKCk7CiAgICByZXN1bHRfdHlw
ZSBfTV9nZXR2YWxfcHJldHIxKCk7CgogICAgdW5pb24KICAgIHsKICAgIEZJTEUqIF9NX2ZpbGU7
CiAgICBtdDE5OTM3IF9NX210OwogIH07CiAgfTsKIyAxNjY1ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRl
PHR5cGVuYW1lIF9JbnRUeXBlID0gaW50PgogICAgY2xhc3MgdW5pZm9ybV9pbnRfZGlzdHJpYnV0
aW9uCiAgICB7CiAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3JhbDxfSW50VHlwZT46
OnZhbHVlLAogICAgICAidGVtcGxhdGUgYXJndW1lbnQgbm90IGFuIGludGVncmFsIHR5cGUiKTsK
CiAgICBwdWJsaWM6CgogICAgICB0eXBlZGVmIF9JbnRUeXBlIHJlc3VsdF90eXBlOwoKICAgICAg
c3RydWN0IHBhcmFtX3R5cGUKICAgICAgewogdHlwZWRlZiB1bmlmb3JtX2ludF9kaXN0cmlidXRp
b248X0ludFR5cGU+IGRpc3RyaWJ1dGlvbl90eXBlOwoKIGV4cGxpY2l0CiBwYXJhbV90eXBlKF9J
bnRUeXBlIF9fYSA9IDAsCiAgICAgX0ludFR5cGUgX19iID0gc3RkOjpudW1lcmljX2xpbWl0czxf
SW50VHlwZT46Om1heCgpKQogOiBfTV9hKF9fYSksIF9NX2IoX19iKQogewogICA7CiB9CgogcmVz
dWx0X3R5cGUKIGEoKSBjb25zdAogeyByZXR1cm4gX01fYTsgfQoKIHJlc3VsdF90eXBlCiBiKCkg
Y29uc3QKIHsgcmV0dXJuIF9NX2I7IH0KCiBmcmllbmQgYm9vbAogb3BlcmF0b3I9PShjb25zdCBw
YXJhbV90eXBlJiBfX3AxLCBjb25zdCBwYXJhbV90eXBlJiBfX3AyKQogeyByZXR1cm4gX19wMS5f
TV9hID09IF9fcDIuX01fYSAmJiBfX3AxLl9NX2IgPT0gX19wMi5fTV9iOyB9CgogICAgICBwcml2
YXRlOgogX0ludFR5cGUgX01fYTsKIF9JbnRUeXBlIF9NX2I7CiAgICAgIH07CgogICAgcHVibGlj
OgoKCgogICAgICBleHBsaWNpdAogICAgICB1bmlmb3JtX2ludF9kaXN0cmlidXRpb24oX0ludFR5
cGUgX19hID0gMCwKICAgICAgX0ludFR5cGUgX19iID0gc3RkOjpudW1lcmljX2xpbWl0czxfSW50
VHlwZT46Om1heCgpKQogICAgICA6IF9NX3BhcmFtKF9fYSwgX19iKQogICAgICB7IH0KCiAgICAg
IGV4cGxpY2l0CiAgICAgIHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbihjb25zdCBwYXJhbV90eXBl
JiBfX3ApCiAgICAgIDogX01fcGFyYW0oX19wKQogICAgICB7IH0KCgoKCgoKICAgICAgdm9pZAog
ICAgICByZXNldCgpIHsgfQoKICAgICAgcmVzdWx0X3R5cGUKICAgICAgYSgpIGNvbnN0CiAgICAg
IHsgcmV0dXJuIF9NX3BhcmFtLmEoKTsgfQoKICAgICAgcmVzdWx0X3R5cGUKICAgICAgYigpIGNv
bnN0CiAgICAgIHsgcmV0dXJuIF9NX3BhcmFtLmIoKTsgfQoKCgoKICAgICAgcGFyYW1fdHlwZQog
ICAgICBwYXJhbSgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3BhcmFtOyB9CgoKCgoKICAgICAg
dm9pZAogICAgICBwYXJhbShjb25zdCBwYXJhbV90eXBlJiBfX3BhcmFtKQogICAgICB7IF9NX3Bh
cmFtID0gX19wYXJhbTsgfQoKCgoKICAgICAgcmVzdWx0X3R5cGUKICAgICAgbWluKCkgY29uc3QK
ICAgICAgeyByZXR1cm4gdGhpcy0+YSgpOyB9CgoKCgogICAgICByZXN1bHRfdHlwZQogICAgICBt
YXgoKSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5iKCk7IH0KCgoKCiAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogcmVzdWx0X3R5cGUKIG9w
ZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZykKICAgICAgICB7
IHJldHVybiB0aGlzLT5vcGVyYXRvcigpKF9fdXJuZywgX01fcGFyYW0pOyB9CgogICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHJlc3VsdF90eXBl
CiBvcGVyYXRvcigpKF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAg
Y29uc3QgcGFyYW1fdHlwZSYgX19wKTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJk
SXRlcmF0b3IsCiAgICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+
CiB2b2lkCiBfX2dlbmVyYXRlKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9y
IF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nKQogeyB0aGlz
LT5fX2dlbmVyYXRlKF9fZiwgX190LCBfX3VybmcsIF9NX3BhcmFtKTsgfQoKICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBlbmFtZSBfVW5pZm9ybVJh
bmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUoX0ZvcndhcmRJdGVyYXRvciBf
X2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJh
dG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKQogeyB0aGlzLT5fX2dlbmVy
YXRlX2ltcGwoX19mLCBfX3QsIF9fdXJuZywgX19wKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKHJlc3Vs
dF90eXBlKiBfX2YsIHJlc3VsdF90eXBlKiBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJH
ZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiB7IHRoaXMtPl9f
Z2VuZXJhdGVfaW1wbChfX2YsIF9fdCwgX191cm5nLCBfX3ApOyB9CgoKCgoKICAgICAgZnJpZW5k
IGJvb2wKICAgICAgb3BlcmF0b3I9PShjb25zdCB1bmlmb3JtX2ludF9kaXN0cmlidXRpb24mIF9f
ZDEsCiAgIGNvbnN0IHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbiYgX19kMikKICAgICAgeyByZXR1
cm4gX19kMS5fTV9wYXJhbSA9PSBfX2QyLl9NX3BhcmFtOyB9CgogICAgcHJpdmF0ZToKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBlbmFtZSBfVW5p
Zm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGVfaW1wbChfRm9yd2Fy
ZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgIF9Vbmlmb3JtUmFuZG9tTnVt
YmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCk7CgogICAgICBw
YXJhbV90eXBlIF9NX3BhcmFtOwogICAgfTsKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRU
eXBlPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3Qgc3RkOjp1bmlmb3JtX2lu
dF9kaXN0cmlidXRpb248X0ludFR5cGU+JiBfX2QxLAogICAgICAgIGNvbnN0IHN0ZDo6dW5pZm9y
bV9pbnRfZGlzdHJpYnV0aW9uPF9JbnRUeXBlPiYgX19kMikKICAgIHsgcmV0dXJuICEoX19kMSA9
PSBfX2QyKTsgfQojIDE4MzkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRl
L2MrKy80LjguMS9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGUs
IHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNfb3N0cmVh
bTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0No
YXJULCBfVHJhaXRzPiYsCiAgICAgICAgY29uc3Qgc3RkOjp1bmlmb3JtX2ludF9kaXN0cmlidXRp
b248X0ludFR5cGU+Jik7CiMgMTg1MyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOC4xL2JpdHMvcmFuZG9tLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50
VHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19p
c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVh
bTxfQ2hhclQsIF9UcmFpdHM+JiwKICAgICAgICBzdGQ6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlv
bjxfSW50VHlwZT4mKTsKIyAxODY2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC44LjEvYml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFs
VHlwZSA9IGRvdWJsZT4KICAgIGNsYXNzIHVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb24KICAgIHsK
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PF9SZWFsVHlwZT46OnZh
bHVlLAogICAgICAidGVtcGxhdGUgYXJndW1lbnQgbm90IGEgZmxvYXRpbmcgcG9pbnQgdHlwZSIp
OwoKICAgIHB1YmxpYzoKCiAgICAgIHR5cGVkZWYgX1JlYWxUeXBlIHJlc3VsdF90eXBlOwoKICAg
ICAgc3RydWN0IHBhcmFtX3R5cGUKICAgICAgewogdHlwZWRlZiB1bmlmb3JtX3JlYWxfZGlzdHJp
YnV0aW9uPF9SZWFsVHlwZT4gZGlzdHJpYnV0aW9uX3R5cGU7CgogZXhwbGljaXQKIHBhcmFtX3R5
cGUoX1JlYWxUeXBlIF9fYSA9IF9SZWFsVHlwZSgwKSwKICAgICBfUmVhbFR5cGUgX19iID0gX1Jl
YWxUeXBlKDEpKQogOiBfTV9hKF9fYSksIF9NX2IoX19iKQogewogICA7CiB9CgogcmVzdWx0X3R5
cGUKIGEoKSBjb25zdAogeyByZXR1cm4gX01fYTsgfQoKIHJlc3VsdF90eXBlCiBiKCkgY29uc3QK
IHsgcmV0dXJuIF9NX2I7IH0KCiBmcmllbmQgYm9vbAogb3BlcmF0b3I9PShjb25zdCBwYXJhbV90
eXBlJiBfX3AxLCBjb25zdCBwYXJhbV90eXBlJiBfX3AyKQogeyByZXR1cm4gX19wMS5fTV9hID09
IF9fcDIuX01fYSAmJiBfX3AxLl9NX2IgPT0gX19wMi5fTV9iOyB9CgogICAgICBwcml2YXRlOgog
X1JlYWxUeXBlIF9NX2E7CiBfUmVhbFR5cGUgX01fYjsKICAgICAgfTsKCiAgICBwdWJsaWM6CgoK
CgoKCiAgICAgIGV4cGxpY2l0CiAgICAgIHVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb24oX1JlYWxU
eXBlIF9fYSA9IF9SZWFsVHlwZSgwKSwKICAgIF9SZWFsVHlwZSBfX2IgPSBfUmVhbFR5cGUoMSkp
CiAgICAgIDogX01fcGFyYW0oX19hLCBfX2IpCiAgICAgIHsgfQoKICAgICAgZXhwbGljaXQKICAg
ICAgdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbihjb25zdCBwYXJhbV90eXBlJiBfX3ApCiAgICAg
IDogX01fcGFyYW0oX19wKQogICAgICB7IH0KCgoKCgoKICAgICAgdm9pZAogICAgICByZXNldCgp
IHsgfQoKICAgICAgcmVzdWx0X3R5cGUKICAgICAgYSgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9N
X3BhcmFtLmEoKTsgfQoKICAgICAgcmVzdWx0X3R5cGUKICAgICAgYigpIGNvbnN0CiAgICAgIHsg
cmV0dXJuIF9NX3BhcmFtLmIoKTsgfQoKCgoKICAgICAgcGFyYW1fdHlwZQogICAgICBwYXJhbSgp
IGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3BhcmFtOyB9CgoKCgoKICAgICAgdm9pZAogICAgICBw
YXJhbShjb25zdCBwYXJhbV90eXBlJiBfX3BhcmFtKQogICAgICB7IF9NX3BhcmFtID0gX19wYXJh
bTsgfQoKCgoKICAgICAgcmVzdWx0X3R5cGUKICAgICAgbWluKCkgY29uc3QKICAgICAgeyByZXR1
cm4gdGhpcy0+YSgpOyB9CgoKCgogICAgICByZXN1bHRfdHlwZQogICAgICBtYXgoKSBjb25zdAog
ICAgICB7IHJldHVybiB0aGlzLT5iKCk7IH0KCgoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9V
bmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1Vu
aWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZykKICAgICAgICB7IHJldHVybiB0aGlz
LT5vcGVyYXRvcigpKF9fdXJuZywgX01fcGFyYW0pOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHJlc3VsdF90eXBlCiBvcGVyYXRvcigp
KF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1f
dHlwZSYgX19wKQogewogICBfX2RldGFpbDo6X0FkYXB0b3I8X1VuaWZvcm1SYW5kb21OdW1iZXJH
ZW5lcmF0b3IsIHJlc3VsdF90eXBlPgogICAgIF9fYXVybmcoX191cm5nKTsKICAgcmV0dXJuIChf
X2F1cm5nKCkgKiAoX19wLmIoKSAtIF9fcC5hKCkpKSArIF9fcC5hKCk7CiB9CgogICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3Jt
UmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZShfRm9yd2FyZEl0ZXJhdG9y
IF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5l
cmF0b3ImIF9fdXJuZykKIHsgdGhpcy0+X19nZW5lcmF0ZShfX2YsIF9fdCwgX191cm5nLCBfTV9w
YXJhbSk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAg
ICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVy
YXRlKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgICBfVW5p
Zm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUm
IF9fcCkKIHsgdGhpcy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBfX3VybmcsIF9fcCk7IH0K
CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgog
dm9pZAogX19nZW5lcmF0ZShyZXN1bHRfdHlwZSogX19mLCByZXN1bHRfdHlwZSogX190LAogICAg
IF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1f
dHlwZSYgX19wKQogeyB0aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBfX3QsIF9fdXJuZywgX19w
KTsgfQoKCgoKCiAgICAgIGZyaWVuZCBib29sCiAgICAgIG9wZXJhdG9yPT0oY29uc3QgdW5pZm9y
bV9yZWFsX2Rpc3RyaWJ1dGlvbiYgX19kMSwKICAgY29uc3QgdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1
dGlvbiYgX19kMikKICAgICAgeyByZXR1cm4gX19kMS5fTV9wYXJhbSA9PSBfX2QyLl9NX3BhcmFt
OyB9CgogICAgcHJpdmF0ZToKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRv
ciwKICAgICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQK
IF9fZ2VuZXJhdGVfaW1wbChfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBf
X3QsCiAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgIGNvbnN0IHBh
cmFtX3R5cGUmIF9fcCk7CgogICAgICBwYXJhbV90eXBlIF9NX3BhcmFtOwogICAgfTsKCgoKCgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9y
IT0oY29uc3Qgc3RkOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPF9JbnRUeXBlPiYgX19kMSwK
ICAgICAgICBjb25zdCBzdGQ6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248X0ludFR5cGU+JiBf
X2QyKQogICAgeyByZXR1cm4gIShfX2QxID09IF9fZDIpOyB9CiMgMjA0OCAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvcmFuZG9tLmgiIDMKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1Ry
YWl0cz4KICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0
b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYsCiAgICAgICAgY29uc3Qg
c3RkOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mKTsKIyAyMDYyICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljgu
MS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9yYW5kb20u
aCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBl
bmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAg
ICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiwKICAgICAg
ICBzdGQ6OnVuaWZvcm1fcmVhbF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYpOwojIDIwODQgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3JhbmRv
bS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlID0gZG91YmxlPgogICAgY2xhc3Mg
bm9ybWFsX2Rpc3RyaWJ1dGlvbgogICAgewogICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmxv
YXRpbmdfcG9pbnQ8X1JlYWxUeXBlPjo6dmFsdWUsCiAgICAgICJ0ZW1wbGF0ZSBhcmd1bWVudCBu
b3QgYSBmbG9hdGluZyBwb2ludCB0eXBlIik7CgogICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBf
UmVhbFR5cGUgcmVzdWx0X3R5cGU7CgogICAgICBzdHJ1Y3QgcGFyYW1fdHlwZQogICAgICB7CiB0
eXBlZGVmIG5vcm1hbF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiBkaXN0cmlidXRpb25fdHlwZTsK
CiBleHBsaWNpdAogcGFyYW1fdHlwZShfUmVhbFR5cGUgX19tZWFuID0gX1JlYWxUeXBlKDApLAog
ICAgIF9SZWFsVHlwZSBfX3N0ZGRldiA9IF9SZWFsVHlwZSgxKSkKIDogX01fbWVhbihfX21lYW4p
LCBfTV9zdGRkZXYoX19zdGRkZXYpCiB7CiAgIDsKIH0KCiBfUmVhbFR5cGUKIG1lYW4oKSBjb25z
dAogeyByZXR1cm4gX01fbWVhbjsgfQoKIF9SZWFsVHlwZQogc3RkZGV2KCkgY29uc3QKIHsgcmV0
dXJuIF9NX3N0ZGRldjsgfQoKIGZyaWVuZCBib29sCiBvcGVyYXRvcj09KGNvbnN0IHBhcmFtX3R5
cGUmIF9fcDEsIGNvbnN0IHBhcmFtX3R5cGUmIF9fcDIpCiB7IHJldHVybiAoX19wMS5fTV9tZWFu
ID09IF9fcDIuX01fbWVhbgogICAgJiYgX19wMS5fTV9zdGRkZXYgPT0gX19wMi5fTV9zdGRkZXYp
OyB9CgogICAgICBwcml2YXRlOgogX1JlYWxUeXBlIF9NX21lYW47CiBfUmVhbFR5cGUgX01fc3Rk
ZGV2OwogICAgICB9OwoKICAgIHB1YmxpYzoKCgoKCiAgICAgIGV4cGxpY2l0CiAgICAgIG5vcm1h
bF9kaXN0cmlidXRpb24ocmVzdWx0X3R5cGUgX19tZWFuID0gcmVzdWx0X3R5cGUoMCksCiAgICAg
cmVzdWx0X3R5cGUgX19zdGRkZXYgPSByZXN1bHRfdHlwZSgxKSkKICAgICAgOiBfTV9wYXJhbShf
X21lYW4sIF9fc3RkZGV2KSwgX01fc2F2ZWRfYXZhaWxhYmxlKGZhbHNlKQogICAgICB7IH0KCiAg
ICAgIGV4cGxpY2l0CiAgICAgIG5vcm1hbF9kaXN0cmlidXRpb24oY29uc3QgcGFyYW1fdHlwZSYg
X19wKQogICAgICA6IF9NX3BhcmFtKF9fcCksIF9NX3NhdmVkX2F2YWlsYWJsZShmYWxzZSkKICAg
ICAgeyB9CgoKCgogICAgICB2b2lkCiAgICAgIHJlc2V0KCkKICAgICAgeyBfTV9zYXZlZF9hdmFp
bGFibGUgPSBmYWxzZTsgfQoKCgoKICAgICAgX1JlYWxUeXBlCiAgICAgIG1lYW4oKSBjb25zdAog
ICAgICB7IHJldHVybiBfTV9wYXJhbS5tZWFuKCk7IH0KCgoKCiAgICAgIF9SZWFsVHlwZQogICAg
ICBzdGRkZXYoKSBjb25zdAogICAgICB7IHJldHVybiBfTV9wYXJhbS5zdGRkZXYoKTsgfQoKCgoK
ICAgICAgcGFyYW1fdHlwZQogICAgICBwYXJhbSgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3Bh
cmFtOyB9CgoKCgoKICAgICAgdm9pZAogICAgICBwYXJhbShjb25zdCBwYXJhbV90eXBlJiBfX3Bh
cmFtKQogICAgICB7IF9NX3BhcmFtID0gX19wYXJhbTsgfQoKCgoKICAgICAgcmVzdWx0X3R5cGUK
ICAgICAgbWluKCkgY29uc3QKICAgICAgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxyZXN1
bHRfdHlwZT46Om1pbigpOyB9CgoKCgogICAgICByZXN1bHRfdHlwZQogICAgICBtYXgoKSBjb25z
dAogICAgICB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWF4KCk7
IH0KCgoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJh
dG9yPgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0
b3ImIF9fdXJuZykKIHsgcmV0dXJuIHRoaXMtPm9wZXJhdG9yKCkoX191cm5nLCBfTV9wYXJhbSk7
IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9y
PgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3Im
IF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApOwoKICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51
bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9G
b3J3YXJkSXRlcmF0b3IgX190LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBf
X3VybmcpCiB7IHRoaXMtPl9fZ2VuZXJhdGUoX19mLCBfX3QsIF9fdXJuZywgX01fcGFyYW0pOyB9
CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVu
YW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZShfRm9y
d2FyZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgICAgX1VuaWZvcm1SYW5k
b21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiB7
IHRoaXMtPl9fZ2VuZXJhdGVfaW1wbChfX2YsIF9fdCwgX191cm5nLCBfX3ApOyB9CgogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9f
Z2VuZXJhdGUocmVzdWx0X3R5cGUqIF9fZiwgcmVzdWx0X3R5cGUqIF9fdCwKICAgICBfVW5pZm9y
bVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9f
cCkKIHsgdGhpcy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBfX3VybmcsIF9fcCk7IH0KCgoK
CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlMT4KIGZyaWVuZCBib29sCiAgICAg
ICAgb3BlcmF0b3I9PShjb25zdCBzdGQ6Om5vcm1hbF9kaXN0cmlidXRpb248X1JlYWxUeXBlMT4m
IF9fZDEsCiAgICAgY29uc3Qgc3RkOjpub3JtYWxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZTE+JiBf
X2QyKTsKIyAyMjQ1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC44LjEvYml0cy9yYW5kb20uaCIgMwogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUx
LCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiBmcmllbmQgc3RkOjpiYXNpY19v
c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxf
Q2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAgIGNvbnN0IHN0ZDo6bm9ybWFsX2Rpc3RyaWJ1dGlv
bjxfUmVhbFR5cGUxPiYgX194KTsKIyAyMjYwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9yYW5kb20uaCIgMwogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUmVhbFR5cGUxLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiBmcmll
bmQgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiBvcGVyYXRvcj4+KHN0ZDo6
YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAogICAgIHN0ZDo6bm9ybWFsX2Rp
c3RyaWJ1dGlvbjxfUmVhbFR5cGUxPiYgX194KTsKCiAgICBwcml2YXRlOgogICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFu
ZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0
b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5l
cmF0b3ImIF9fdXJuZywKICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKTsKCiAgICAgIHBhcmFtX3R5
cGUgX01fcGFyYW07CiAgICAgIHJlc3VsdF90eXBlIF9NX3NhdmVkOwogICAgICBib29sIF9NX3Nh
dmVkX2F2YWlsYWJsZTsKICAgIH07CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZT4K
ICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IHN0ZDo6bm9ybWFsX2Rpc3RyaWJ1
dGlvbjxfUmVhbFR5cGU+JiBfX2QxLAogICAgICAgIGNvbnN0IHN0ZDo6bm9ybWFsX2Rpc3RyaWJ1
dGlvbjxfUmVhbFR5cGU+JiBfX2QyKQogICAgeyByZXR1cm4gIShfX2QxID09IF9fZDIpOyB9CiMg
MjI5NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2Jp
dHMvcmFuZG9tLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUgPSBkb3VibGU+CiAg
ICBjbGFzcyBsb2dub3JtYWxfZGlzdHJpYnV0aW9uCiAgICB7CiAgICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19mbG9hdGluZ19wb2ludDxfUmVhbFR5cGU+Ojp2YWx1ZSwKICAgICAgInRlbXBsYXRl
IGFyZ3VtZW50IG5vdCBhIGZsb2F0aW5nIHBvaW50IHR5cGUiKTsKCiAgICBwdWJsaWM6CgogICAg
ICB0eXBlZGVmIF9SZWFsVHlwZSByZXN1bHRfdHlwZTsKCiAgICAgIHN0cnVjdCBwYXJhbV90eXBl
CiAgICAgIHsKIHR5cGVkZWYgbG9nbm9ybWFsX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+IGRpc3Ry
aWJ1dGlvbl90eXBlOwoKIGV4cGxpY2l0CiBwYXJhbV90eXBlKF9SZWFsVHlwZSBfX20gPSBfUmVh
bFR5cGUoMCksCiAgICAgX1JlYWxUeXBlIF9fcyA9IF9SZWFsVHlwZSgxKSkKIDogX01fbShfX20p
LCBfTV9zKF9fcykKIHsgfQoKIF9SZWFsVHlwZQogbSgpIGNvbnN0CiB7IHJldHVybiBfTV9tOyB9
CgogX1JlYWxUeXBlCiBzKCkgY29uc3QKIHsgcmV0dXJuIF9NX3M7IH0KCiBmcmllbmQgYm9vbAog
b3BlcmF0b3I9PShjb25zdCBwYXJhbV90eXBlJiBfX3AxLCBjb25zdCBwYXJhbV90eXBlJiBfX3Ay
KQogeyByZXR1cm4gX19wMS5fTV9tID09IF9fcDIuX01fbSAmJiBfX3AxLl9NX3MgPT0gX19wMi5f
TV9zOyB9CgogICAgICBwcml2YXRlOgogX1JlYWxUeXBlIF9NX207CiBfUmVhbFR5cGUgX01fczsK
ICAgICAgfTsKCiAgICAgIGV4cGxpY2l0CiAgICAgIGxvZ25vcm1hbF9kaXN0cmlidXRpb24oX1Jl
YWxUeXBlIF9fbSA9IF9SZWFsVHlwZSgwKSwKICAgICAgICBfUmVhbFR5cGUgX19zID0gX1JlYWxU
eXBlKDEpKQogICAgICA6IF9NX3BhcmFtKF9fbSwgX19zKSwgX01fbmQoKQogICAgICB7IH0KCiAg
ICAgIGV4cGxpY2l0CiAgICAgIGxvZ25vcm1hbF9kaXN0cmlidXRpb24oY29uc3QgcGFyYW1fdHlw
ZSYgX19wKQogICAgICA6IF9NX3BhcmFtKF9fcCksIF9NX25kKCkKICAgICAgeyB9CgoKCgogICAg
ICB2b2lkCiAgICAgIHJlc2V0KCkKICAgICAgeyBfTV9uZC5yZXNldCgpOyB9CgoKCgogICAgICBf
UmVhbFR5cGUKICAgICAgbSgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3BhcmFtLm0oKTsgfQoK
ICAgICAgX1JlYWxUeXBlCiAgICAgIHMoKSBjb25zdAogICAgICB7IHJldHVybiBfTV9wYXJhbS5z
KCk7IH0KCgoKCiAgICAgIHBhcmFtX3R5cGUKICAgICAgcGFyYW0oKSBjb25zdAogICAgICB7IHJl
dHVybiBfTV9wYXJhbTsgfQoKCgoKCiAgICAgIHZvaWQKICAgICAgcGFyYW0oY29uc3QgcGFyYW1f
dHlwZSYgX19wYXJhbSkKICAgICAgeyBfTV9wYXJhbSA9IF9fcGFyYW07IH0KCgoKCiAgICAgIHJl
c3VsdF90eXBlCiAgICAgIG1pbigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHJlc3VsdF90eXBlKDAp
OyB9CgoKCgogICAgICByZXN1bHRfdHlwZQogICAgICBtYXgoKSBjb25zdAogICAgICB7IHJldHVy
biBzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWF4KCk7IH0KCgoKCiAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogcmVzdWx0X3R5
cGUKIG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZykKICAg
ICAgICB7IHJldHVybiB0aGlzLT5vcGVyYXRvcigpKF9fdXJuZywgX01fcGFyYW0pOyB9CgogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHJlc3Vs
dF90eXBlCiBvcGVyYXRvcigpKF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3Vybmcs
CiAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKQogICAgICAgIHsgcmV0dXJuIHN0ZDo6ZXhwKF9f
cC5zKCkgKiBfTV9uZChfX3VybmcpICsgX19wLm0oKSk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1i
ZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9y
d2FyZEl0ZXJhdG9yIF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191
cm5nKQogeyB0aGlzLT5fX2dlbmVyYXRlKF9fZiwgX190LCBfX3VybmcsIF9NX3BhcmFtKTsgfQoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBlbmFt
ZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUoX0Zvcndh
cmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgIF9Vbmlmb3JtUmFuZG9t
TnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKQogeyB0
aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBfX3QsIF9fdXJuZywgX19wKTsgfQoKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dl
bmVyYXRlKHJlc3VsdF90eXBlKiBfX2YsIHJlc3VsdF90eXBlKiBfX3QsCiAgICAgX1VuaWZvcm1S
YW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3Ap
CiB7IHRoaXMtPl9fZ2VuZXJhdGVfaW1wbChfX2YsIF9fdCwgX191cm5nLCBfX3ApOyB9CgoKCgoK
CiAgICAgIGZyaWVuZCBib29sCiAgICAgIG9wZXJhdG9yPT0oY29uc3QgbG9nbm9ybWFsX2Rpc3Ry
aWJ1dGlvbiYgX19kMSwKICAgY29uc3QgbG9nbm9ybWFsX2Rpc3RyaWJ1dGlvbiYgX19kMikKICAg
ICAgeyByZXR1cm4gKF9fZDEuX01fcGFyYW0gPT0gX19kMi5fTV9wYXJhbQogICYmIF9fZDEuX01f
bmQgPT0gX19kMi5fTV9uZCk7IH0KIyAyNDQ5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9yYW5kb20uaCIgMwogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUmVhbFR5cGUxLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiBmcmll
bmQgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiBvcGVyYXRvcjw8KHN0ZDo6
YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAgIGNvbnN0IHN0ZDo6bG9n
bm9ybWFsX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGUxPiYgX194KTsKIyAyNDY0ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9yYW5kb20uaCIgMwog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUxLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVu
YW1lIF9UcmFpdHM+CiBmcmllbmQgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m
CiBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAog
ICAgIHN0ZDo6bG9nbm9ybWFsX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGUxPiYgX194KTsKCiAgICBw
cml2YXRlOgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAg
IHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0
ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgX1Vu
aWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgY29uc3QgcGFyYW1fdHlwZSYg
X19wKTsKCiAgICAgIHBhcmFtX3R5cGUgX01fcGFyYW07CgogICAgICBzdGQ6Om5vcm1hbF9kaXN0
cmlidXRpb248cmVzdWx0X3R5cGU+IF9NX25kOwogICAgfTsKCgoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1JlYWxUeXBlPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3Qgc3RkOjps
b2dub3JtYWxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9fZDEsCiAgICAgICAgY29uc3Qgc3Rk
Ojpsb2dub3JtYWxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9fZDIpCiAgICB7IHJldHVybiAh
KF9fZDEgPT0gX19kMik7IH0KIyAyNTAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC44LjEvYml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9S
ZWFsVHlwZSA9IGRvdWJsZT4KICAgIGNsYXNzIGdhbW1hX2Rpc3RyaWJ1dGlvbgogICAgewogICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8X1JlYWxUeXBlPjo6dmFsdWUs
CiAgICAgICJ0ZW1wbGF0ZSBhcmd1bWVudCBub3QgYSBmbG9hdGluZyBwb2ludCB0eXBlIik7Cgog
ICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBfUmVhbFR5cGUgcmVzdWx0X3R5cGU7CgogICAgICBz
dHJ1Y3QgcGFyYW1fdHlwZQogICAgICB7CiB0eXBlZGVmIGdhbW1hX2Rpc3RyaWJ1dGlvbjxfUmVh
bFR5cGU+IGRpc3RyaWJ1dGlvbl90eXBlOwogZnJpZW5kIGNsYXNzIGdhbW1hX2Rpc3RyaWJ1dGlv
bjxfUmVhbFR5cGU+OwoKIGV4cGxpY2l0CiBwYXJhbV90eXBlKF9SZWFsVHlwZSBfX2FscGhhX3Zh
bCA9IF9SZWFsVHlwZSgxKSwKICAgICBfUmVhbFR5cGUgX19iZXRhX3ZhbCA9IF9SZWFsVHlwZSgx
KSkKIDogX01fYWxwaGEoX19hbHBoYV92YWwpLCBfTV9iZXRhKF9fYmV0YV92YWwpCiB7CiAgIDsK
ICAgX01faW5pdGlhbGl6ZSgpOwogfQoKIF9SZWFsVHlwZQogYWxwaGEoKSBjb25zdAogeyByZXR1
cm4gX01fYWxwaGE7IH0KCiBfUmVhbFR5cGUKIGJldGEoKSBjb25zdAogeyByZXR1cm4gX01fYmV0
YTsgfQoKIGZyaWVuZCBib29sCiBvcGVyYXRvcj09KGNvbnN0IHBhcmFtX3R5cGUmIF9fcDEsIGNv
bnN0IHBhcmFtX3R5cGUmIF9fcDIpCiB7IHJldHVybiAoX19wMS5fTV9hbHBoYSA9PSBfX3AyLl9N
X2FscGhhCiAgICAmJiBfX3AxLl9NX2JldGEgPT0gX19wMi5fTV9iZXRhKTsgfQoKICAgICAgcHJp
dmF0ZToKIHZvaWQKIF9NX2luaXRpYWxpemUoKTsKCiBfUmVhbFR5cGUgX01fYWxwaGE7CiBfUmVh
bFR5cGUgX01fYmV0YTsKCiBfUmVhbFR5cGUgX01fbWFscGhhLCBfTV9hMjsKICAgICAgfTsKCiAg
ICBwdWJsaWM6CgoKCgogICAgICBleHBsaWNpdAogICAgICBnYW1tYV9kaXN0cmlidXRpb24oX1Jl
YWxUeXBlIF9fYWxwaGFfdmFsID0gX1JlYWxUeXBlKDEpLAogICAgX1JlYWxUeXBlIF9fYmV0YV92
YWwgPSBfUmVhbFR5cGUoMSkpCiAgICAgIDogX01fcGFyYW0oX19hbHBoYV92YWwsIF9fYmV0YV92
YWwpLCBfTV9uZCgpCiAgICAgIHsgfQoKICAgICAgZXhwbGljaXQKICAgICAgZ2FtbWFfZGlzdHJp
YnV0aW9uKGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKICAgICAgOiBfTV9wYXJhbShfX3ApLCBfTV9u
ZCgpCiAgICAgIHsgfQoKCgoKICAgICAgdm9pZAogICAgICByZXNldCgpCiAgICAgIHsgX01fbmQu
cmVzZXQoKTsgfQoKCgoKICAgICAgX1JlYWxUeXBlCiAgICAgIGFscGhhKCkgY29uc3QKICAgICAg
eyByZXR1cm4gX01fcGFyYW0uYWxwaGEoKTsgfQoKCgoKICAgICAgX1JlYWxUeXBlCiAgICAgIGJl
dGEoKSBjb25zdAogICAgICB7IHJldHVybiBfTV9wYXJhbS5iZXRhKCk7IH0KCgoKCiAgICAgIHBh
cmFtX3R5cGUKICAgICAgcGFyYW0oKSBjb25zdAogICAgICB7IHJldHVybiBfTV9wYXJhbTsgfQoK
CgoKCiAgICAgIHZvaWQKICAgICAgcGFyYW0oY29uc3QgcGFyYW1fdHlwZSYgX19wYXJhbSkKICAg
ICAgeyBfTV9wYXJhbSA9IF9fcGFyYW07IH0KCgoKCiAgICAgIHJlc3VsdF90eXBlCiAgICAgIG1p
bigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHJlc3VsdF90eXBlKDApOyB9CgoKCgogICAgICByZXN1
bHRfdHlwZQogICAgICBtYXgoKSBjb25zdAogICAgICB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHJlc3VsdF90eXBlPjo6bWF4KCk7IH0KCgoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9V
bmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1Vu
aWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZykKIHsgcmV0dXJuIHRoaXMtPm9wZXJh
dG9yKCkoX191cm5nLCBfTV9wYXJhbSk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlm
b3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1VuaWZv
cm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBf
X3ApOwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0
eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUo
X0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgIF9Vbmlmb3Jt
UmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcpCiB7IHRoaXMtPl9fZ2VuZXJhdGUoX19mLCBf
X3QsIF9fdXJuZywgX01fcGFyYW0pOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2Fy
ZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9y
Pgogdm9pZAogX19nZW5lcmF0ZShfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRv
ciBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBj
b25zdCBwYXJhbV90eXBlJiBfX3ApCiB7IHRoaXMtPl9fZ2VuZXJhdGVfaW1wbChfX2YsIF9fdCwg
X191cm5nLCBfX3ApOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51
bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUocmVzdWx0X3R5cGUqIF9fZiwgcmVzdWx0
X3R5cGUqIF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAog
ICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKIHsgdGhpcy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwg
X190LCBfX3VybmcsIF9fcCk7IH0KCgoKCgoKICAgICAgZnJpZW5kIGJvb2wKICAgICAgb3BlcmF0
b3I9PShjb25zdCBnYW1tYV9kaXN0cmlidXRpb24mIF9fZDEsCiAgIGNvbnN0IGdhbW1hX2Rpc3Ry
aWJ1dGlvbiYgX19kMikKICAgICAgeyByZXR1cm4gKF9fZDEuX01fcGFyYW0gPT0gX19kMi5fTV9w
YXJhbQogICYmIF9fZDEuX01fbmQgPT0gX19kMi5fTV9uZCk7IH0KIyAyNjcwICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9yYW5kb20uaCIgMwog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUxLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVu
YW1lIF9UcmFpdHM+CiBmcmllbmQgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m
CiBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAog
ICAgIGNvbnN0IHN0ZDo6Z2FtbWFfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZTE+JiBfX3gpOwojIDI2
ODQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRz
L3JhbmRvbS5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZTEsIHR5cGVuYW1l
IF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KIGZyaWVuZCBzdGQ6OmJhc2ljX2lzdHJlYW08X0No
YXJULCBfVHJhaXRzPiYKIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1Ry
YWl0cz4mIF9faXMsCiAgICAgc3RkOjpnYW1tYV9kaXN0cmlidXRpb248X1JlYWxUeXBlMT4mIF9f
eCk7CgogICAgcHJpdmF0ZToKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRv
ciwKICAgICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQK
IF9fZ2VuZXJhdGVfaW1wbChfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBf
X3QsCiAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgIGNvbnN0IHBh
cmFtX3R5cGUmIF9fcCk7CgogICAgICBwYXJhbV90eXBlIF9NX3BhcmFtOwoKICAgICAgc3RkOjpu
b3JtYWxfZGlzdHJpYnV0aW9uPHJlc3VsdF90eXBlPiBfTV9uZDsKICAgIH07CgoKCgogICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGU+CiAgICAgaW5saW5lIGJvb2wKICAgICBvcGVyYXRvciE9
KGNvbnN0IHN0ZDo6Z2FtbWFfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9fZDEsCiAgY29uc3Qg
c3RkOjpnYW1tYV9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX19kMikKICAgIHsgcmV0dXJuICEo
X19kMSA9PSBfX2QyKTsgfQojIDI3MTggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jl
YWxUeXBlID0gZG91YmxlPgogICAgY2xhc3MgY2hpX3NxdWFyZWRfZGlzdHJpYnV0aW9uCiAgICB7
CiAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19mbG9hdGluZ19wb2ludDxfUmVhbFR5cGU+Ojp2
YWx1ZSwKICAgICAgInRlbXBsYXRlIGFyZ3VtZW50IG5vdCBhIGZsb2F0aW5nIHBvaW50IHR5cGUi
KTsKCiAgICBwdWJsaWM6CgogICAgICB0eXBlZGVmIF9SZWFsVHlwZSByZXN1bHRfdHlwZTsKCiAg
ICAgIHN0cnVjdCBwYXJhbV90eXBlCiAgICAgIHsKIHR5cGVkZWYgY2hpX3NxdWFyZWRfZGlzdHJp
YnV0aW9uPF9SZWFsVHlwZT4gZGlzdHJpYnV0aW9uX3R5cGU7CgogZXhwbGljaXQKIHBhcmFtX3R5
cGUoX1JlYWxUeXBlIF9fbiA9IF9SZWFsVHlwZSgxKSkKIDogX01fbihfX24pCiB7IH0KCiBfUmVh
bFR5cGUKIG4oKSBjb25zdAogeyByZXR1cm4gX01fbjsgfQoKIGZyaWVuZCBib29sCiBvcGVyYXRv
cj09KGNvbnN0IHBhcmFtX3R5cGUmIF9fcDEsIGNvbnN0IHBhcmFtX3R5cGUmIF9fcDIpCiB7IHJl
dHVybiBfX3AxLl9NX24gPT0gX19wMi5fTV9uOyB9CgogICAgICBwcml2YXRlOgogX1JlYWxUeXBl
IF9NX247CiAgICAgIH07CgogICAgICBleHBsaWNpdAogICAgICBjaGlfc3F1YXJlZF9kaXN0cmli
dXRpb24oX1JlYWxUeXBlIF9fbiA9IF9SZWFsVHlwZSgxKSkKICAgICAgOiBfTV9wYXJhbShfX24p
LCBfTV9nZChfX24gLyAyKQogICAgICB7IH0KCiAgICAgIGV4cGxpY2l0CiAgICAgIGNoaV9zcXVh
cmVkX2Rpc3RyaWJ1dGlvbihjb25zdCBwYXJhbV90eXBlJiBfX3ApCiAgICAgIDogX01fcGFyYW0o
X19wKSwgX01fZ2QoX19wLm4oKSAvIDIpCiAgICAgIHsgfQoKCgoKICAgICAgdm9pZAogICAgICBy
ZXNldCgpCiAgICAgIHsgX01fZ2QucmVzZXQoKTsgfQoKCgoKICAgICAgX1JlYWxUeXBlCiAgICAg
IG4oKSBjb25zdAogICAgICB7IHJldHVybiBfTV9wYXJhbS5uKCk7IH0KCgoKCiAgICAgIHBhcmFt
X3R5cGUKICAgICAgcGFyYW0oKSBjb25zdAogICAgICB7IHJldHVybiBfTV9wYXJhbTsgfQoKCgoK
CiAgICAgIHZvaWQKICAgICAgcGFyYW0oY29uc3QgcGFyYW1fdHlwZSYgX19wYXJhbSkKICAgICAg
eyBfTV9wYXJhbSA9IF9fcGFyYW07IH0KCgoKCiAgICAgIHJlc3VsdF90eXBlCiAgICAgIG1pbigp
IGNvbnN0CiAgICAgIHsgcmV0dXJuIHJlc3VsdF90eXBlKDApOyB9CgoKCgogICAgICByZXN1bHRf
dHlwZQogICAgICBtYXgoKSBjb25zdAogICAgICB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRz
PHJlc3VsdF90eXBlPjo6bWF4KCk7IH0KCgoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlm
b3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1VuaWZv
cm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZykKIHsgcmV0dXJuIDIgKiBfTV9nZChfX3Vy
bmcpOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVy
YXRvcj4KIHJlc3VsdF90eXBlCiBvcGVyYXRvcigpKF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJh
dG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKQogICAgICAgIHsKICAgdHlw
ZWRlZiB0eXBlbmFtZSBzdGQ6OmdhbW1hX2Rpc3RyaWJ1dGlvbjxyZXN1bHRfdHlwZT46OnBhcmFt
X3R5cGUKICAgICBwYXJhbV90eXBlOwogICByZXR1cm4gMiAqIF9NX2dkKF9fdXJuZywgcGFyYW1f
dHlwZShfX3AubigpIC8gMikpOwogfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJ
dGVyYXRvciwKICAgICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4K
IHZvaWQKIF9fZ2VuZXJhdGUoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3Ig
X190LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcpCiAgICAgICAg
eyB0aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBfX3QsIF9fdXJuZyk7IH0KCiAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgICAgdHlwZW5hbWUgX1VuaWZvcm1S
YW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKF9Gb3J3YXJkSXRlcmF0b3Ig
X19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVy
YXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKIHsgdHlwZW5hbWUgc3Rk
OjpnYW1tYV9kaXN0cmlidXRpb248cmVzdWx0X3R5cGU+OjpwYXJhbV90eXBlCiAgICAgX19wMihf
X3AubigpIC8gMik7CiAgIHRoaXMtPl9fZ2VuZXJhdGVfaW1wbChfX2YsIF9fdCwgX191cm5nLCBf
X3AyKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5l
cmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKHJlc3VsdF90eXBlKiBfX2YsIHJlc3VsdF90eXBlKiBf
X3QsCiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZykKICAgICAgICB7
IHRoaXMtPl9fZ2VuZXJhdGVfaW1wbChfX2YsIF9fdCwgX191cm5nKTsgfQoKICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVy
YXRlKHJlc3VsdF90eXBlKiBfX2YsIHJlc3VsdF90eXBlKiBfX3QsCiAgICAgX1VuaWZvcm1SYW5k
b21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiB7
IHR5cGVuYW1lIHN0ZDo6Z2FtbWFfZGlzdHJpYnV0aW9uPHJlc3VsdF90eXBlPjo6cGFyYW1fdHlw
ZQogICAgIF9fcDIoX19wLm4oKSAvIDIpOwogICB0aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBf
X3QsIF9fdXJuZywgX19wMik7IH0KCgoKCgoKICAgICAgZnJpZW5kIGJvb2wKICAgICAgb3BlcmF0
b3I9PShjb25zdCBjaGlfc3F1YXJlZF9kaXN0cmlidXRpb24mIF9fZDEsCiAgIGNvbnN0IGNoaV9z
cXVhcmVkX2Rpc3RyaWJ1dGlvbiYgX19kMikKICAgICAgeyByZXR1cm4gX19kMS5fTV9wYXJhbSA9
PSBfX2QyLl9NX3BhcmFtICYmIF9fZDEuX01fZ2QgPT0gX19kMi5fTV9nZDsgfQojIDI4NzIgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3JhbmRv
bS5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZTEsIHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cz4KIGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBf
VHJhaXRzPiYKIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m
IF9fb3MsCiAgICAgY29uc3Qgc3RkOjpjaGlfc3F1YXJlZF9kaXN0cmlidXRpb248X1JlYWxUeXBl
MT4mIF9feCk7CiMgMjg4NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOC4xL2JpdHMvcmFuZG9tLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxU
eXBlMSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogZnJpZW5kIHN0ZDo6YmFz
aWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jgogb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJl
YW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywKICAgICBzdGQ6OmNoaV9zcXVhcmVkX2Rpc3RyaWJ1
dGlvbjxfUmVhbFR5cGUxPiYgX194KTsKCiAgICBwcml2YXRlOgogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVt
YmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19m
LCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3Im
IF9fdXJuZyk7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAg
ICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5l
cmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAg
X1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgY29uc3QgdHlwZW5hbWUK
ICAgc3RkOjpnYW1tYV9kaXN0cmlidXRpb248cmVzdWx0X3R5cGU+OjpwYXJhbV90eXBlJiBfX3Ap
OwoKICAgICAgcGFyYW1fdHlwZSBfTV9wYXJhbTsKCiAgICAgIHN0ZDo6Z2FtbWFfZGlzdHJpYnV0
aW9uPHJlc3VsdF90eXBlPiBfTV9nZDsKICAgIH07CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9S
ZWFsVHlwZT4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IHN0ZDo6Y2hpX3Nx
dWFyZWRfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9fZDEsCiAgICAgICAgY29uc3Qgc3RkOjpj
aGlfc3F1YXJlZF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX19kMikKICAgIHsgcmV0dXJuICEo
X19kMSA9PSBfX2QyKTsgfQojIDI5MjggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jl
YWxUeXBlID0gZG91YmxlPgogICAgY2xhc3MgY2F1Y2h5X2Rpc3RyaWJ1dGlvbgogICAgewogICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8X1JlYWxUeXBlPjo6dmFsdWUs
CiAgICAgICJ0ZW1wbGF0ZSBhcmd1bWVudCBub3QgYSBmbG9hdGluZyBwb2ludCB0eXBlIik7Cgog
ICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBfUmVhbFR5cGUgcmVzdWx0X3R5cGU7CgogICAgICBz
dHJ1Y3QgcGFyYW1fdHlwZQogICAgICB7CiB0eXBlZGVmIGNhdWNoeV9kaXN0cmlidXRpb248X1Jl
YWxUeXBlPiBkaXN0cmlidXRpb25fdHlwZTsKCiBleHBsaWNpdAogcGFyYW1fdHlwZShfUmVhbFR5
cGUgX19hID0gX1JlYWxUeXBlKDApLAogICAgIF9SZWFsVHlwZSBfX2IgPSBfUmVhbFR5cGUoMSkp
CiA6IF9NX2EoX19hKSwgX01fYihfX2IpCiB7IH0KCiBfUmVhbFR5cGUKIGEoKSBjb25zdAogeyBy
ZXR1cm4gX01fYTsgfQoKIF9SZWFsVHlwZQogYigpIGNvbnN0CiB7IHJldHVybiBfTV9iOyB9Cgog
ZnJpZW5kIGJvb2wKIG9wZXJhdG9yPT0oY29uc3QgcGFyYW1fdHlwZSYgX19wMSwgY29uc3QgcGFy
YW1fdHlwZSYgX19wMikKIHsgcmV0dXJuIF9fcDEuX01fYSA9PSBfX3AyLl9NX2EgJiYgX19wMS5f
TV9iID09IF9fcDIuX01fYjsgfQoKICAgICAgcHJpdmF0ZToKIF9SZWFsVHlwZSBfTV9hOwogX1Jl
YWxUeXBlIF9NX2I7CiAgICAgIH07CgogICAgICBleHBsaWNpdAogICAgICBjYXVjaHlfZGlzdHJp
YnV0aW9uKF9SZWFsVHlwZSBfX2EgPSBfUmVhbFR5cGUoMCksCiAgICAgX1JlYWxUeXBlIF9fYiA9
IF9SZWFsVHlwZSgxKSkKICAgICAgOiBfTV9wYXJhbShfX2EsIF9fYikKICAgICAgeyB9CgogICAg
ICBleHBsaWNpdAogICAgICBjYXVjaHlfZGlzdHJpYnV0aW9uKGNvbnN0IHBhcmFtX3R5cGUmIF9f
cCkKICAgICAgOiBfTV9wYXJhbShfX3ApCiAgICAgIHsgfQoKCgoKICAgICAgdm9pZAogICAgICBy
ZXNldCgpCiAgICAgIHsgfQoKCgoKICAgICAgX1JlYWxUeXBlCiAgICAgIGEoKSBjb25zdAogICAg
ICB7IHJldHVybiBfTV9wYXJhbS5hKCk7IH0KCiAgICAgIF9SZWFsVHlwZQogICAgICBiKCkgY29u
c3QKICAgICAgeyByZXR1cm4gX01fcGFyYW0uYigpOyB9CgoKCgogICAgICBwYXJhbV90eXBlCiAg
ICAgIHBhcmFtKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fcGFyYW07IH0KCgoKCgogICAgICB2
b2lkCiAgICAgIHBhcmFtKGNvbnN0IHBhcmFtX3R5cGUmIF9fcGFyYW0pCiAgICAgIHsgX01fcGFy
YW0gPSBfX3BhcmFtOyB9CgoKCgogICAgICByZXN1bHRfdHlwZQogICAgICBtaW4oKSBjb25zdAog
ICAgICB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90eXBlPjo6bWluKCk7IH0K
CgoKCiAgICAgIHJlc3VsdF90eXBlCiAgICAgIG1heCgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHN0
ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjptYXgoKTsgfQoKCgoKICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiByZXN1bHRfdHlwZQog
b3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nKQogeyByZXR1
cm4gdGhpcy0+b3BlcmF0b3IoKShfX3VybmcsIF9NX3BhcmFtKTsgfQoKICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiByZXN1bHRfdHlwZQogb3Bl
cmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0
IHBhcmFtX3R5cGUmIF9fcCk7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJh
dG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9p
ZAogX19nZW5lcmF0ZShfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3Qs
CiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZykKIHsgdGhpcy0+X19n
ZW5lcmF0ZShfX2YsIF9fdCwgX191cm5nLCBfTV9wYXJhbSk7IH0KCiAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21O
dW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBf
Rm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYg
X191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKIHsgdGhpcy0+X19nZW5lcmF0ZV9p
bXBsKF9fZiwgX190LCBfX3VybmcsIF9fcCk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9V
bmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZShyZXN1bHRfdHlw
ZSogX19mLCByZXN1bHRfdHlwZSogX190LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJh
dG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKQogeyB0aGlzLT5fX2dlbmVy
YXRlX2ltcGwoX19mLCBfX3QsIF9fdXJuZywgX19wKTsgfQoKCgoKCiAgICAgIGZyaWVuZCBib29s
CiAgICAgIG9wZXJhdG9yPT0oY29uc3QgY2F1Y2h5X2Rpc3RyaWJ1dGlvbiYgX19kMSwKICAgY29u
c3QgY2F1Y2h5X2Rpc3RyaWJ1dGlvbiYgX19kMikKICAgICAgeyByZXR1cm4gX19kMS5fTV9wYXJh
bSA9PSBfX2QyLl9NX3BhcmFtOyB9CgogICAgcHJpdmF0ZToKICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJl
ckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGVfaW1wbChfRm9yd2FyZEl0ZXJhdG9yIF9fZiwg
X0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBf
X3VybmcsCiAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCk7CgogICAgICBwYXJhbV90eXBlIF9NX3Bh
cmFtOwogICAgfTsKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZT4KICAgIGlubGlu
ZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IHN0ZDo6Y2F1Y2h5X2Rpc3RyaWJ1dGlvbjxfUmVh
bFR5cGU+JiBfX2QxLAogICAgICAgIGNvbnN0IHN0ZDo6Y2F1Y2h5X2Rpc3RyaWJ1dGlvbjxfUmVh
bFR5cGU+JiBfX2QyKQogICAgeyByZXR1cm4gIShfX2QxID09IF9fZDIpOyB9CiMgMzA5OCAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44
LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvcmFuZG9t
LmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUsIHR5cGVuYW1lIF9DaGFyVCwgdHlw
ZW5hbWUgX1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jgog
ICAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vcywK
ICAgICAgICBjb25zdCBzdGQ6OmNhdWNoeV9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX194KTsK
IyAzMTEzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEv
Yml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSwgdHlwZW5hbWUg
X0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwg
X1RyYWl0cz4mCiAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFp
dHM+JiBfX2lzLAogICAgICAgIHN0ZDo6Y2F1Y2h5X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBf
X3gpOwojIDMxMjkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjguMS9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlID0gZG91
YmxlPgogICAgY2xhc3MgZmlzaGVyX2ZfZGlzdHJpYnV0aW9uCiAgICB7CiAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19mbG9hdGluZ19wb2ludDxfUmVhbFR5cGU+Ojp2YWx1ZSwKICAgICAgInRl
bXBsYXRlIGFyZ3VtZW50IG5vdCBhIGZsb2F0aW5nIHBvaW50IHR5cGUiKTsKCiAgICBwdWJsaWM6
CgogICAgICB0eXBlZGVmIF9SZWFsVHlwZSByZXN1bHRfdHlwZTsKCiAgICAgIHN0cnVjdCBwYXJh
bV90eXBlCiAgICAgIHsKIHR5cGVkZWYgZmlzaGVyX2ZfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4g
ZGlzdHJpYnV0aW9uX3R5cGU7CgogZXhwbGljaXQKIHBhcmFtX3R5cGUoX1JlYWxUeXBlIF9fbSA9
IF9SZWFsVHlwZSgxKSwKICAgICBfUmVhbFR5cGUgX19uID0gX1JlYWxUeXBlKDEpKQogOiBfTV9t
KF9fbSksIF9NX24oX19uKQogeyB9CgogX1JlYWxUeXBlCiBtKCkgY29uc3QKIHsgcmV0dXJuIF9N
X207IH0KCiBfUmVhbFR5cGUKIG4oKSBjb25zdAogeyByZXR1cm4gX01fbjsgfQoKIGZyaWVuZCBi
b29sCiBvcGVyYXRvcj09KGNvbnN0IHBhcmFtX3R5cGUmIF9fcDEsIGNvbnN0IHBhcmFtX3R5cGUm
IF9fcDIpCiB7IHJldHVybiBfX3AxLl9NX20gPT0gX19wMi5fTV9tICYmIF9fcDEuX01fbiA9PSBf
X3AyLl9NX247IH0KCiAgICAgIHByaXZhdGU6CiBfUmVhbFR5cGUgX01fbTsKIF9SZWFsVHlwZSBf
TV9uOwogICAgICB9OwoKICAgICAgZXhwbGljaXQKICAgICAgZmlzaGVyX2ZfZGlzdHJpYnV0aW9u
KF9SZWFsVHlwZSBfX20gPSBfUmVhbFR5cGUoMSksCiAgICAgICBfUmVhbFR5cGUgX19uID0gX1Jl
YWxUeXBlKDEpKQogICAgICA6IF9NX3BhcmFtKF9fbSwgX19uKSwgX01fZ2RfeChfX20gLyAyKSwg
X01fZ2RfeShfX24gLyAyKQogICAgICB7IH0KCiAgICAgIGV4cGxpY2l0CiAgICAgIGZpc2hlcl9m
X2Rpc3RyaWJ1dGlvbihjb25zdCBwYXJhbV90eXBlJiBfX3ApCiAgICAgIDogX01fcGFyYW0oX19w
KSwgX01fZ2RfeChfX3AubSgpIC8gMiksIF9NX2dkX3koX19wLm4oKSAvIDIpCiAgICAgIHsgfQoK
CgoKICAgICAgdm9pZAogICAgICByZXNldCgpCiAgICAgIHsKIF9NX2dkX3gucmVzZXQoKTsKIF9N
X2dkX3kucmVzZXQoKTsKICAgICAgfQoKCgoKICAgICAgX1JlYWxUeXBlCiAgICAgIG0oKSBjb25z
dAogICAgICB7IHJldHVybiBfTV9wYXJhbS5tKCk7IH0KCiAgICAgIF9SZWFsVHlwZQogICAgICBu
KCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fcGFyYW0ubigpOyB9CgoKCgogICAgICBwYXJhbV90
eXBlCiAgICAgIHBhcmFtKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fcGFyYW07IH0KCgoKCgog
ICAgICB2b2lkCiAgICAgIHBhcmFtKGNvbnN0IHBhcmFtX3R5cGUmIF9fcGFyYW0pCiAgICAgIHsg
X01fcGFyYW0gPSBfX3BhcmFtOyB9CgoKCgogICAgICByZXN1bHRfdHlwZQogICAgICBtaW4oKSBj
b25zdAogICAgICB7IHJldHVybiByZXN1bHRfdHlwZSgwKTsgfQoKCgoKICAgICAgcmVzdWx0X3R5
cGUKICAgICAgbWF4KCkgY29uc3QKICAgICAgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxy
ZXN1bHRfdHlwZT46Om1heCgpOyB9CgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9y
bVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHJlc3VsdF90eXBlCiBvcGVyYXRvcigpKF9Vbmlmb3Jt
UmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcpCiB7IHJldHVybiAoX01fZ2RfeChfX3Vybmcp
ICogbigpKSAvIChfTV9nZF95KF9fdXJuZykgKiBtKCkpOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHJlc3VsdF90eXBlCiBvcGVyYXRv
cigpKF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFy
YW1fdHlwZSYgX19wKQogICAgICAgIHsKICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmdhbW1hX2Rp
c3RyaWJ1dGlvbjxyZXN1bHRfdHlwZT46OnBhcmFtX3R5cGUKICAgICBwYXJhbV90eXBlOwogICBy
ZXR1cm4gKChfTV9nZF94KF9fdXJuZywgcGFyYW1fdHlwZShfX3AubSgpIC8gMikpICogbigpKQog
ICAgLyAoX01fZ2RfeShfX3VybmcsIHBhcmFtX3R5cGUoX19wLm4oKSAvIDIpKSAqIG0oKSkpOwog
fQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBl
bmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUoX0Zv
cndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgIF9Vbmlmb3JtUmFu
ZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcpCiB7IHRoaXMtPl9fZ2VuZXJhdGVfaW1wbChfX2Ys
IF9fdCwgX191cm5nKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRv
ciwKICAgICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQK
IF9fZ2VuZXJhdGUoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAog
ICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFy
YW1fdHlwZSYgX19wKQogeyB0aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBfX3QsIF9fdXJuZywg
X19wKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5l
cmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKHJlc3VsdF90eXBlKiBfX2YsIHJlc3VsdF90eXBlKiBf
X3QsCiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZykKIHsgdGhpcy0+
X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBfX3VybmcpOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUocmVz
dWx0X3R5cGUqIF9fZiwgcmVzdWx0X3R5cGUqIF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJl
ckdlbmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKIHsgdGhpcy0+
X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBfX3VybmcsIF9fcCk7IH0KCgoKCgoKICAgICAgZnJp
ZW5kIGJvb2wKICAgICAgb3BlcmF0b3I9PShjb25zdCBmaXNoZXJfZl9kaXN0cmlidXRpb24mIF9f
ZDEsCiAgIGNvbnN0IGZpc2hlcl9mX2Rpc3RyaWJ1dGlvbiYgX19kMikKICAgICAgeyByZXR1cm4g
KF9fZDEuX01fcGFyYW0gPT0gX19kMi5fTV9wYXJhbQogICYmIF9fZDEuX01fZ2RfeCA9PSBfX2Qy
Ll9NX2dkX3gKICAmJiBfX2QxLl9NX2dkX3kgPT0gX19kMi5fTV9nZF95KTsgfQojIDMyOTYgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3JhbmRv
bS5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZTEsIHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cz4KIGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBf
VHJhaXRzPiYKIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m
IF9fb3MsCiAgICAgY29uc3Qgc3RkOjpmaXNoZXJfZl9kaXN0cmlidXRpb248X1JlYWxUeXBlMT4m
IF9feCk7CiMgMzMxMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOC4xL2JpdHMvcmFuZG9tLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBl
MSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogZnJpZW5kIHN0ZDo6YmFzaWNf
aXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jgogb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08
X0NoYXJULCBfVHJhaXRzPiYgX19pcywKICAgICBzdGQ6OmZpc2hlcl9mX2Rpc3RyaWJ1dGlvbjxf
UmVhbFR5cGUxPiYgX194KTsKCiAgICBwcml2YXRlOgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Rm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2Vu
ZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9y
d2FyZEl0ZXJhdG9yIF9fdCwKICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJu
Zyk7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5
cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZV9p
bXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgX1VuaWZv
cm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgY29uc3QgcGFyYW1fdHlwZSYgX19w
KTsKCiAgICAgIHBhcmFtX3R5cGUgX01fcGFyYW07CgogICAgICBzdGQ6OmdhbW1hX2Rpc3RyaWJ1
dGlvbjxyZXN1bHRfdHlwZT4gX01fZ2RfeCwgX01fZ2RfeTsKICAgIH07CgoKCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9SZWFsVHlwZT4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0
IHN0ZDo6ZmlzaGVyX2ZfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9fZDEsCiAgICAgICAgY29u
c3Qgc3RkOjpmaXNoZXJfZl9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX19kMikKICAgIHsgcmV0
dXJuICEoX19kMSA9PSBfX2QyKTsgfQojIDMzNTMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1JlYWxUeXBlID0gZG91YmxlPgogICAgY2xhc3Mgc3R1ZGVudF90X2Rpc3RyaWJ1dGlvbgog
ICAgewogICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8X1JlYWxUeXBl
Pjo6dmFsdWUsCiAgICAgICJ0ZW1wbGF0ZSBhcmd1bWVudCBub3QgYSBmbG9hdGluZyBwb2ludCB0
eXBlIik7CgogICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBfUmVhbFR5cGUgcmVzdWx0X3R5cGU7
CgogICAgICBzdHJ1Y3QgcGFyYW1fdHlwZQogICAgICB7CiB0eXBlZGVmIHN0dWRlbnRfdF9kaXN0
cmlidXRpb248X1JlYWxUeXBlPiBkaXN0cmlidXRpb25fdHlwZTsKCiBleHBsaWNpdAogcGFyYW1f
dHlwZShfUmVhbFR5cGUgX19uID0gX1JlYWxUeXBlKDEpKQogOiBfTV9uKF9fbikKIHsgfQoKIF9S
ZWFsVHlwZQogbigpIGNvbnN0CiB7IHJldHVybiBfTV9uOyB9CgogZnJpZW5kIGJvb2wKIG9wZXJh
dG9yPT0oY29uc3QgcGFyYW1fdHlwZSYgX19wMSwgY29uc3QgcGFyYW1fdHlwZSYgX19wMikKIHsg
cmV0dXJuIF9fcDEuX01fbiA9PSBfX3AyLl9NX247IH0KCiAgICAgIHByaXZhdGU6CiBfUmVhbFR5
cGUgX01fbjsKICAgICAgfTsKCiAgICAgIGV4cGxpY2l0CiAgICAgIHN0dWRlbnRfdF9kaXN0cmli
dXRpb24oX1JlYWxUeXBlIF9fbiA9IF9SZWFsVHlwZSgxKSkKICAgICAgOiBfTV9wYXJhbShfX24p
LCBfTV9uZCgpLCBfTV9nZChfX24gLyAyLCAyKQogICAgICB7IH0KCiAgICAgIGV4cGxpY2l0CiAg
ICAgIHN0dWRlbnRfdF9kaXN0cmlidXRpb24oY29uc3QgcGFyYW1fdHlwZSYgX19wKQogICAgICA6
IF9NX3BhcmFtKF9fcCksIF9NX25kKCksIF9NX2dkKF9fcC5uKCkgLyAyLCAyKQogICAgICB7IH0K
CgoKCiAgICAgIHZvaWQKICAgICAgcmVzZXQoKQogICAgICB7CiBfTV9uZC5yZXNldCgpOwogX01f
Z2QucmVzZXQoKTsKICAgICAgfQoKCgoKICAgICAgX1JlYWxUeXBlCiAgICAgIG4oKSBjb25zdAog
ICAgICB7IHJldHVybiBfTV9wYXJhbS5uKCk7IH0KCgoKCiAgICAgIHBhcmFtX3R5cGUKICAgICAg
cGFyYW0oKSBjb25zdAogICAgICB7IHJldHVybiBfTV9wYXJhbTsgfQoKCgoKCiAgICAgIHZvaWQK
ICAgICAgcGFyYW0oY29uc3QgcGFyYW1fdHlwZSYgX19wYXJhbSkKICAgICAgeyBfTV9wYXJhbSA9
IF9fcGFyYW07IH0KCgoKCiAgICAgIHJlc3VsdF90eXBlCiAgICAgIG1pbigpIGNvbnN0CiAgICAg
IHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjptaW4oKTsgfQoKCgoK
ICAgICAgcmVzdWx0X3R5cGUKICAgICAgbWF4KCkgY29uc3QKICAgICAgeyByZXR1cm4gc3RkOjpu
dW1lcmljX2xpbWl0czxyZXN1bHRfdHlwZT46Om1heCgpOyB9CgoKCgogICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHJlc3VsdF90eXBlCiAgICAg
ICAgb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nKQogICAg
ICAgIHsgcmV0dXJuIF9NX25kKF9fdXJuZykgKiBzdGQ6OnNxcnQobigpIC8gX01fZ2QoX191cm5n
KSk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJh
dG9yPgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0
b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiAgICAgICAgewogICB0eXBl
ZGVmIHR5cGVuYW1lIHN0ZDo6Z2FtbWFfZGlzdHJpYnV0aW9uPHJlc3VsdF90eXBlPjo6cGFyYW1f
dHlwZQogICAgIHBhcmFtX3R5cGU7CgogICBjb25zdCByZXN1bHRfdHlwZSBfX2cgPSBfTV9nZChf
X3VybmcsIHBhcmFtX3R5cGUoX19wLm4oKSAvIDIsIDIpKTsKICAgcmV0dXJuIF9NX25kKF9fdXJu
ZykgKiBzdGQ6OnNxcnQoX19wLm4oKSAvIF9fZyk7CiAgICAgICAgfQoKICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRv
bU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUoX0ZvcndhcmRJdGVyYXRvciBfX2Ys
IF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9y
JiBfX3VybmcpCiB7IHRoaXMtPl9fZ2VuZXJhdGVfaW1wbChfX2YsIF9fdCwgX191cm5nKTsgfQoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBlbmFt
ZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUoX0Zvcndh
cmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgIF9Vbmlmb3JtUmFuZG9t
TnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKQogeyB0
aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBfX3QsIF9fdXJuZywgX19wKTsgfQoKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dl
bmVyYXRlKHJlc3VsdF90eXBlKiBfX2YsIHJlc3VsdF90eXBlKiBfX3QsCiAgICAgX1VuaWZvcm1S
YW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZykKIHsgdGhpcy0+X19nZW5lcmF0ZV9pbXBsKF9f
ZiwgX190LCBfX3VybmcpOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRv
bU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUocmVzdWx0X3R5cGUqIF9fZiwgcmVz
dWx0X3R5cGUqIF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5n
LAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKIHsgdGhpcy0+X19nZW5lcmF0ZV9pbXBsKF9f
ZiwgX190LCBfX3VybmcsIF9fcCk7IH0KCgoKCgoKICAgICAgZnJpZW5kIGJvb2wKICAgICAgb3Bl
cmF0b3I9PShjb25zdCBzdHVkZW50X3RfZGlzdHJpYnV0aW9uJiBfX2QxLAogICBjb25zdCBzdHVk
ZW50X3RfZGlzdHJpYnV0aW9uJiBfX2QyKQogICAgICB7IHJldHVybiAoX19kMS5fTV9wYXJhbSA9
PSBfX2QyLl9NX3BhcmFtCiAgJiYgX19kMS5fTV9uZCA9PSBfX2QyLl9NX25kICYmIF9fZDEuX01f
Z2QgPT0gX19kMi5fTV9nZCk7IH0KIyAzNTA5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9yYW5kb20uaCIgMwogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUmVhbFR5cGUxLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiBmcmll
bmQgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiBvcGVyYXRvcjw8KHN0ZDo6
YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAgIGNvbnN0IHN0ZDo6c3R1
ZGVudF90X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGUxPiYgX194KTsKIyAzNTI0ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9yYW5kb20uaCIgMwog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUxLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVu
YW1lIF9UcmFpdHM+CiBmcmllbmQgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m
CiBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAog
ICAgIHN0ZDo6c3R1ZGVudF90X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGUxPiYgX194KTsKCiAgICBw
cml2YXRlOgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAg
IHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0
ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgX1Vu
aWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZyk7CiAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1i
ZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlX2ltcGwoX0ZvcndhcmRJdGVyYXRvciBfX2Ys
IF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYg
X191cm5nLAogICBjb25zdCBwYXJhbV90eXBlJiBfX3ApOwoKICAgICAgcGFyYW1fdHlwZSBfTV9w
YXJhbTsKCiAgICAgIHN0ZDo6bm9ybWFsX2Rpc3RyaWJ1dGlvbjxyZXN1bHRfdHlwZT4gX01fbmQ7
CiAgICAgIHN0ZDo6Z2FtbWFfZGlzdHJpYnV0aW9uPHJlc3VsdF90eXBlPiBfTV9nZDsKICAgIH07
CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZT4KICAgIGlubGluZSBib29sCiAgICBv
cGVyYXRvciE9KGNvbnN0IHN0ZDo6c3R1ZGVudF90X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBf
X2QxLAogICAgICAgIGNvbnN0IHN0ZDo6c3R1ZGVudF90X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+
JiBfX2QyKQogICAgeyByZXR1cm4gIShfX2QxID09IF9fZDIpOyB9CiMgMzU3MiAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvcmFuZG9tLmgiIDMK
ICBjbGFzcyBiZXJub3VsbGlfZGlzdHJpYnV0aW9uCiAgewogIHB1YmxpYzoKCiAgICB0eXBlZGVm
IGJvb2wgcmVzdWx0X3R5cGU7CgogICAgc3RydWN0IHBhcmFtX3R5cGUKICAgIHsKICAgICAgdHlw
ZWRlZiBiZXJub3VsbGlfZGlzdHJpYnV0aW9uIGRpc3RyaWJ1dGlvbl90eXBlOwoKICAgICAgZXhw
bGljaXQKICAgICAgcGFyYW1fdHlwZShkb3VibGUgX19wID0gMC41KQogICAgICA6IF9NX3AoX19w
KQogICAgICB7CiA7CiAgICAgIH0KCiAgICAgIGRvdWJsZQogICAgICBwKCkgY29uc3QKICAgICAg
eyByZXR1cm4gX01fcDsgfQoKICAgICAgZnJpZW5kIGJvb2wKICAgICAgb3BlcmF0b3I9PShjb25z
dCBwYXJhbV90eXBlJiBfX3AxLCBjb25zdCBwYXJhbV90eXBlJiBfX3AyKQogICAgICB7IHJldHVy
biBfX3AxLl9NX3AgPT0gX19wMi5fTV9wOyB9CgogICAgcHJpdmF0ZToKICAgICAgZG91YmxlIF9N
X3A7CiAgICB9OwoKICBwdWJsaWM6CgoKCgoKCiAgICBleHBsaWNpdAogICAgYmVybm91bGxpX2Rp
c3RyaWJ1dGlvbihkb3VibGUgX19wID0gMC41KQogICAgOiBfTV9wYXJhbShfX3ApCiAgICB7IH0K
CiAgICBleHBsaWNpdAogICAgYmVybm91bGxpX2Rpc3RyaWJ1dGlvbihjb25zdCBwYXJhbV90eXBl
JiBfX3ApCiAgICA6IF9NX3BhcmFtKF9fcCkKICAgIHsgfQoKCgoKCgogICAgdm9pZAogICAgcmVz
ZXQoKSB7IH0KCgoKCiAgICBkb3VibGUKICAgIHAoKSBjb25zdAogICAgeyByZXR1cm4gX01fcGFy
YW0ucCgpOyB9CgoKCgogICAgcGFyYW1fdHlwZQogICAgcGFyYW0oKSBjb25zdAogICAgeyByZXR1
cm4gX01fcGFyYW07IH0KCgoKCgogICAgdm9pZAogICAgcGFyYW0oY29uc3QgcGFyYW1fdHlwZSYg
X19wYXJhbSkKICAgIHsgX01fcGFyYW0gPSBfX3BhcmFtOyB9CgoKCgogICAgcmVzdWx0X3R5cGUK
ICAgIG1pbigpIGNvbnN0CiAgICB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHJlc3VsdF90
eXBlPjo6bWluKCk7IH0KCgoKCiAgICByZXN1bHRfdHlwZQogICAgbWF4KCkgY29uc3QKICAgIHsg
cmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjptYXgoKTsgfQoKCgoKICAg
IHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogICAgICBy
ZXN1bHRfdHlwZQogICAgICBvcGVyYXRvcigpKF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9y
JiBfX3VybmcpCiAgICAgIHsgcmV0dXJuIHRoaXMtPm9wZXJhdG9yKCkoX191cm5nLCBfTV9wYXJh
bSk7IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRv
cj4KICAgICAgcmVzdWx0X3R5cGUKICAgICAgb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJl
ckdlbmVyYXRvciYgX191cm5nLAogICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiAgICAgIHsKIF9f
ZGV0YWlsOjpfQWRhcHRvcjxfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciwgZG91YmxlPgog
ICBfX2F1cm5nKF9fdXJuZyk7CiBpZiAoKF9fYXVybmcoKSAtIF9fYXVybmcubWluKCkpCiAgICAg
IDwgX19wLnAoKSAqIChfX2F1cm5nLm1heCgpIC0gX19hdXJuZy5taW4oKSkpCiAgIHJldHVybiB0
cnVlOwogcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zvcndh
cmRJdGVyYXRvciwKICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+
CiAgICAgIHZvaWQKICAgICAgX19nZW5lcmF0ZShfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0Zvcndh
cmRJdGVyYXRvciBfX3QsCiAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3Vybmcp
CiAgICAgIHsgdGhpcy0+X19nZW5lcmF0ZShfX2YsIF9fdCwgX191cm5nLCBfTV9wYXJhbSk7IH0K
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICB0eXBlbmFtZSBf
VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KICAgICAgdm9pZAogICAgICBfX2dlbmVyYXRl
KF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgX1VuaWZvcm1S
YW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywgY29uc3QgcGFyYW1fdHlwZSYgX19wKQogICAg
ICB7IHRoaXMtPl9fZ2VuZXJhdGVfaW1wbChfX2YsIF9fdCwgX191cm5nLCBfX3ApOyB9CgogICAg
dGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiAgICAgIHZv
aWQKICAgICAgX19nZW5lcmF0ZShyZXN1bHRfdHlwZSogX19mLCByZXN1bHRfdHlwZSogX190LAog
ICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICBjb25zdCBwYXJhbV90
eXBlJiBfX3ApCiAgICAgIHsgdGhpcy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBfX3Vybmcs
IF9fcCk7IH0KCgoKCgogICAgZnJpZW5kIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3QgYmVybm91
bGxpX2Rpc3RyaWJ1dGlvbiYgX19kMSwKICAgICAgICBjb25zdCBiZXJub3VsbGlfZGlzdHJpYnV0
aW9uJiBfX2QyKQogICAgeyByZXR1cm4gX19kMS5fTV9wYXJhbSA9PSBfX2QyLl9NX3BhcmFtOyB9
CgogIHByaXZhdGU6CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAg
ICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KICAgICAgdm9pZAogICAg
ICBfX2dlbmVyYXRlX2ltcGwoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3Ig
X190LAogICAgICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAg
ICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKTsKCiAgICBwYXJhbV90eXBlIF9NX3BhcmFtOwogIH07
CgoKCgoKICBpbmxpbmUgYm9vbAogIG9wZXJhdG9yIT0oY29uc3Qgc3RkOjpiZXJub3VsbGlfZGlz
dHJpYnV0aW9uJiBfX2QxLAogICAgICBjb25zdCBzdGQ6OmJlcm5vdWxsaV9kaXN0cmlidXRpb24m
IF9fZDIpCiAgeyByZXR1cm4gIShfX2QxID09IF9fZDIpOyB9CiMgMzc0MyAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvcmFuZG9tLmgiIDMKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJhc2lj
X29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3Ry
ZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9fb3MsCiAgICAgICAgY29uc3Qgc3RkOjpiZXJub3VsbGlf
ZGlzdHJpYnV0aW9uJiBfX3gpOwojIDM3NTcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwg
X1RyYWl0cz4mCiAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFp
dHM+JiBfX2lzLAogICAgICAgIHN0ZDo6YmVybm91bGxpX2Rpc3RyaWJ1dGlvbiYgX194KQogICAg
ewogICAgICBkb3VibGUgX19wOwogICAgICBfX2lzID4+IF9fcDsKICAgICAgX194LnBhcmFtKGJl
cm5vdWxsaV9kaXN0cmlidXRpb246OnBhcmFtX3R5cGUoX19wKSk7CiAgICAgIHJldHVybiBfX2lz
OwogICAgfQojIDM3NzYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjguMS9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGUgPSBp
bnQ+CiAgICBjbGFzcyBiaW5vbWlhbF9kaXN0cmlidXRpb24KICAgIHsKICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2ludGVncmFsPF9JbnRUeXBlPjo6dmFsdWUsCiAgICAgICJ0ZW1wbGF0ZSBh
cmd1bWVudCBub3QgYW4gaW50ZWdyYWwgdHlwZSIpOwoKICAgIHB1YmxpYzoKCiAgICAgIHR5cGVk
ZWYgX0ludFR5cGUgcmVzdWx0X3R5cGU7CgogICAgICBzdHJ1Y3QgcGFyYW1fdHlwZQogICAgICB7
CiB0eXBlZGVmIGJpbm9taWFsX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT4gZGlzdHJpYnV0aW9uX3R5
cGU7CiBmcmllbmQgY2xhc3MgYmlub21pYWxfZGlzdHJpYnV0aW9uPF9JbnRUeXBlPjsKCiBleHBs
aWNpdAogcGFyYW1fdHlwZShfSW50VHlwZSBfX3QgPSBfSW50VHlwZSgxKSwgZG91YmxlIF9fcCA9
IDAuNSkKIDogX01fdChfX3QpLCBfTV9wKF9fcCkKIHsKICAKCiAgICAgICAgICAgICAgICAgICAg
IDsKICAgX01faW5pdGlhbGl6ZSgpOwogfQoKIF9JbnRUeXBlCiB0KCkgY29uc3QKIHsgcmV0dXJu
IF9NX3Q7IH0KCiBkb3VibGUKIHAoKSBjb25zdAogeyByZXR1cm4gX01fcDsgfQoKIGZyaWVuZCBi
b29sCiBvcGVyYXRvcj09KGNvbnN0IHBhcmFtX3R5cGUmIF9fcDEsIGNvbnN0IHBhcmFtX3R5cGUm
IF9fcDIpCiB7IHJldHVybiBfX3AxLl9NX3QgPT0gX19wMi5fTV90ICYmIF9fcDEuX01fcCA9PSBf
X3AyLl9NX3A7IH0KCiAgICAgIHByaXZhdGU6CiB2b2lkCiBfTV9pbml0aWFsaXplKCk7CgogX0lu
dFR5cGUgX01fdDsKIGRvdWJsZSBfTV9wOwoKIGRvdWJsZSBfTV9xOwoKIGRvdWJsZSBfTV9kMSwg
X01fZDIsIF9NX3MxLCBfTV9zMiwgX01fYywKICAgICAgICBfTV9hMSwgX01fYTEyMywgX01fcywg
X01fbGYsIF9NX2xwMXA7CgogYm9vbCBfTV9lYXN5OwogICAgICB9OwoKCiAgICAgIGV4cGxpY2l0
CiAgICAgIGJpbm9taWFsX2Rpc3RyaWJ1dGlvbihfSW50VHlwZSBfX3QgPSBfSW50VHlwZSgxKSwK
ICAgICAgIGRvdWJsZSBfX3AgPSAwLjUpCiAgICAgIDogX01fcGFyYW0oX190LCBfX3ApLCBfTV9u
ZCgpCiAgICAgIHsgfQoKICAgICAgZXhwbGljaXQKICAgICAgYmlub21pYWxfZGlzdHJpYnV0aW9u
KGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKICAgICAgOiBfTV9wYXJhbShfX3ApLCBfTV9uZCgpCiAg
ICAgIHsgfQoKCgoKICAgICAgdm9pZAogICAgICByZXNldCgpCiAgICAgIHsgX01fbmQucmVzZXQo
KTsgfQoKCgoKICAgICAgX0ludFR5cGUKICAgICAgdCgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9N
X3BhcmFtLnQoKTsgfQoKCgoKICAgICAgZG91YmxlCiAgICAgIHAoKSBjb25zdAogICAgICB7IHJl
dHVybiBfTV9wYXJhbS5wKCk7IH0KCgoKCiAgICAgIHBhcmFtX3R5cGUKICAgICAgcGFyYW0oKSBj
b25zdAogICAgICB7IHJldHVybiBfTV9wYXJhbTsgfQoKCgoKCiAgICAgIHZvaWQKICAgICAgcGFy
YW0oY29uc3QgcGFyYW1fdHlwZSYgX19wYXJhbSkKICAgICAgeyBfTV9wYXJhbSA9IF9fcGFyYW07
IH0KCgoKCiAgICAgIHJlc3VsdF90eXBlCiAgICAgIG1pbigpIGNvbnN0CiAgICAgIHsgcmV0dXJu
IDA7IH0KCgoKCiAgICAgIHJlc3VsdF90eXBlCiAgICAgIG1heCgpIGNvbnN0CiAgICAgIHsgcmV0
dXJuIF9NX3BhcmFtLnQoKTsgfQoKCgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1S
YW5kb21OdW1iZXJHZW5lcmF0b3I+CiByZXN1bHRfdHlwZQogb3BlcmF0b3IoKShfVW5pZm9ybVJh
bmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nKQogeyByZXR1cm4gdGhpcy0+b3BlcmF0b3IoKShf
X3VybmcsIF9NX3BhcmFtKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5k
b21OdW1iZXJHZW5lcmF0b3I+CiByZXN1bHRfdHlwZQogb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRv
bU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCk7Cgog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1l
IF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZShfRm9yd2Fy
ZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21O
dW1iZXJHZW5lcmF0b3ImIF9fdXJuZykKIHsgdGhpcy0+X19nZW5lcmF0ZShfX2YsIF9fdCwgX191
cm5nLCBfTV9wYXJhbSk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0
b3IsCiAgICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lk
CiBfX2dlbmVyYXRlKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwK
ICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0IHBh
cmFtX3R5cGUmIF9fcCkKIHsgdGhpcy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBfX3Vybmcs
IF9fcCk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2Vu
ZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZShyZXN1bHRfdHlwZSogX19mLCByZXN1bHRfdHlwZSog
X190LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29u
c3QgcGFyYW1fdHlwZSYgX19wKQogeyB0aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBfX3QsIF9f
dXJuZywgX19wKTsgfQoKCgoKCgogZnJpZW5kIGJvb2wKICAgICAgICBvcGVyYXRvcj09KGNvbnN0
IGJpbm9taWFsX2Rpc3RyaWJ1dGlvbiYgX19kMSwKICAgICBjb25zdCBiaW5vbWlhbF9kaXN0cmli
dXRpb24mIF9fZDIpCgogeyByZXR1cm4gX19kMS5fTV9wYXJhbSA9PSBfX2QyLl9NX3BhcmFtICYm
IF9fZDEuX01fbmQgPT0gX19kMi5fTV9uZDsgfQojIDM5NDkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xj
aGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3JhbmRvbS5oIiAzCiAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIF9JbnRUeXBlMSwKICAgICAgICB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHM+CiBmcmllbmQgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiBv
cGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAg
IGNvbnN0IHN0ZDo6Ymlub21pYWxfZGlzdHJpYnV0aW9uPF9JbnRUeXBlMT4mIF9feCk7CiMgMzk2
NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMv
cmFuZG9tLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGUxLAogICAgICAgIHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KIGZyaWVuZCBzdGQ6OmJhc2ljX2lzdHJl
YW08X0NoYXJULCBfVHJhaXRzPiYKIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFy
VCwgX1RyYWl0cz4mIF9faXMsCiAgICAgc3RkOjpiaW5vbWlhbF9kaXN0cmlidXRpb248X0ludFR5
cGUxPiYgX194KTsKCiAgICBwcml2YXRlOgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2Fy
ZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9y
Pgogdm9pZAogX19nZW5lcmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0
ZXJhdG9yIF9fdCwKICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAg
Y29uc3QgcGFyYW1fdHlwZSYgX19wKTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3Jt
UmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogcmVzdWx0X3R5cGUKIF9NX3dhaXRpbmcoX1VuaWZvcm1S
YW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywgX0ludFR5cGUgX190KTsKCiAgICAgIHBhcmFt
X3R5cGUgX01fcGFyYW07CgoKICAgICAgc3RkOjpub3JtYWxfZGlzdHJpYnV0aW9uPGRvdWJsZT4g
X01fbmQ7CiAgICB9OwoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50VHlwZT4KICAgIGlubGlu
ZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IHN0ZDo6Ymlub21pYWxfZGlzdHJpYnV0aW9uPF9J
bnRUeXBlPiYgX19kMSwKICAgICAgICBjb25zdCBzdGQ6OmJpbm9taWFsX2Rpc3RyaWJ1dGlvbjxf
SW50VHlwZT4mIF9fZDIpCiAgICB7IHJldHVybiAhKF9fZDEgPT0gX19kMik7IH0KIyA0MDA2ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9yYW5k
b20uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlID0gaW50PgogICAgY2xhc3MgZ2Vv
bWV0cmljX2Rpc3RyaWJ1dGlvbgogICAgewogICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50
ZWdyYWw8X0ludFR5cGU+Ojp2YWx1ZSwKICAgICAgInRlbXBsYXRlIGFyZ3VtZW50IG5vdCBhbiBp
bnRlZ3JhbCB0eXBlIik7CgogICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBfSW50VHlwZSByZXN1
bHRfdHlwZTsKCiAgICAgIHN0cnVjdCBwYXJhbV90eXBlCiAgICAgIHsKIHR5cGVkZWYgZ2VvbWV0
cmljX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT4gZGlzdHJpYnV0aW9uX3R5cGU7CiBmcmllbmQgY2xh
c3MgZ2VvbWV0cmljX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT47CgogZXhwbGljaXQKIHBhcmFtX3R5
cGUoZG91YmxlIF9fcCA9IDAuNSkKIDogX01fcChfX3ApCiB7CiAgIDsKICAgX01faW5pdGlhbGl6
ZSgpOwogfQoKIGRvdWJsZQogcCgpIGNvbnN0CiB7IHJldHVybiBfTV9wOyB9CgogZnJpZW5kIGJv
b2wKIG9wZXJhdG9yPT0oY29uc3QgcGFyYW1fdHlwZSYgX19wMSwgY29uc3QgcGFyYW1fdHlwZSYg
X19wMikKIHsgcmV0dXJuIF9fcDEuX01fcCA9PSBfX3AyLl9NX3A7IH0KCiAgICAgIHByaXZhdGU6
CiB2b2lkCiBfTV9pbml0aWFsaXplKCkKIHsgX01fbG9nXzFfcCA9IHN0ZDo6bG9nKDEuMCAtIF9N
X3ApOyB9CgogZG91YmxlIF9NX3A7CgogZG91YmxlIF9NX2xvZ18xX3A7CiAgICAgIH07CgoKICAg
ICAgZXhwbGljaXQKICAgICAgZ2VvbWV0cmljX2Rpc3RyaWJ1dGlvbihkb3VibGUgX19wID0gMC41
KQogICAgICA6IF9NX3BhcmFtKF9fcCkKICAgICAgeyB9CgogICAgICBleHBsaWNpdAogICAgICBn
ZW9tZXRyaWNfZGlzdHJpYnV0aW9uKGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKICAgICAgOiBfTV9w
YXJhbShfX3ApCiAgICAgIHsgfQoKCgoKCgogICAgICB2b2lkCiAgICAgIHJlc2V0KCkgeyB9CgoK
CgogICAgICBkb3VibGUKICAgICAgcCgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3BhcmFtLnAo
KTsgfQoKCgoKICAgICAgcGFyYW1fdHlwZQogICAgICBwYXJhbSgpIGNvbnN0CiAgICAgIHsgcmV0
dXJuIF9NX3BhcmFtOyB9CgoKCgoKICAgICAgdm9pZAogICAgICBwYXJhbShjb25zdCBwYXJhbV90
eXBlJiBfX3BhcmFtKQogICAgICB7IF9NX3BhcmFtID0gX19wYXJhbTsgfQoKCgoKICAgICAgcmVz
dWx0X3R5cGUKICAgICAgbWluKCkgY29uc3QKICAgICAgeyByZXR1cm4gMDsgfQoKCgoKICAgICAg
cmVzdWx0X3R5cGUKICAgICAgbWF4KCkgY29uc3QKICAgICAgeyByZXR1cm4gc3RkOjpudW1lcmlj
X2xpbWl0czxyZXN1bHRfdHlwZT46Om1heCgpOyB9CgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHJlc3VsdF90eXBlCiBvcGVyYXRvcigp
KF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcpCiB7IHJldHVybiB0aGlzLT5v
cGVyYXRvcigpKF9fdXJuZywgX01fcGFyYW0pOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHJlc3VsdF90eXBlCiBvcGVyYXRvcigpKF9V
bmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1fdHlw
ZSYgX19wKTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAg
ICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVy
YXRlKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgICBfVW5p
Zm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nKQogeyB0aGlzLT5fX2dlbmVyYXRlKF9f
ZiwgX190LCBfX3VybmcsIF9NX3BhcmFtKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zv
cndhcmRJdGVyYXRvciwKICAgICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVy
YXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRl
cmF0b3IgX190LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAg
ICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKQogeyB0aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBf
X3QsIF9fdXJuZywgX19wKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5k
b21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKHJlc3VsdF90eXBlKiBfX2YsIHJl
c3VsdF90eXBlKiBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJu
ZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiB7IHRoaXMtPl9fZ2VuZXJhdGVfaW1wbChf
X2YsIF9fdCwgX191cm5nLCBfX3ApOyB9CgoKCgoKICAgICAgZnJpZW5kIGJvb2wKICAgICAgb3Bl
cmF0b3I9PShjb25zdCBnZW9tZXRyaWNfZGlzdHJpYnV0aW9uJiBfX2QxLAogICBjb25zdCBnZW9t
ZXRyaWNfZGlzdHJpYnV0aW9uJiBfX2QyKQogICAgICB7IHJldHVybiBfX2QxLl9NX3BhcmFtID09
IF9fZDIuX01fcGFyYW07IH0KCiAgICBwcml2YXRlOgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Rm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2Vu
ZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9y
d2FyZEl0ZXJhdG9yIF9fdCwKICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJu
ZywKICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKTsKCiAgICAgIHBhcmFtX3R5cGUgX01fcGFyYW07
CiAgICB9OwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGU+CiAgICBpbmxpbmUgYm9v
bAogICAgb3BlcmF0b3IhPShjb25zdCBzdGQ6Omdlb21ldHJpY19kaXN0cmlidXRpb248X0ludFR5
cGU+JiBfX2QxLAogICAgICAgIGNvbnN0IHN0ZDo6Z2VvbWV0cmljX2Rpc3RyaWJ1dGlvbjxfSW50
VHlwZT4mIF9fZDIpCiAgICB7IHJldHVybiAhKF9fZDEgPT0gX19kMik7IH0KIyA0MTc3ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljgu
MS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9yYW5kb20u
aCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlLAogICAgdHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m
CiAgICBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29z
LAogICAgICAgIGNvbnN0IHN0ZDo6Z2VvbWV0cmljX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT4mIF9f
eCk7CiMgNDE5MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OC4xL2JpdHMvcmFuZG9tLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50VHlwZSwKICAgIHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxf
Q2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJU
LCBfVHJhaXRzPiYgX19pcywKICAgICAgICBzdGQ6Omdlb21ldHJpY19kaXN0cmlidXRpb248X0lu
dFR5cGU+JiBfX3gpOwojIDQyMDYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjguMS9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5
cGUgPSBpbnQ+CiAgICBjbGFzcyBuZWdhdGl2ZV9iaW5vbWlhbF9kaXN0cmlidXRpb24KICAgIHsK
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ludGVncmFsPF9JbnRUeXBlPjo6dmFsdWUsCiAg
ICAgICJ0ZW1wbGF0ZSBhcmd1bWVudCBub3QgYW4gaW50ZWdyYWwgdHlwZSIpOwoKICAgIHB1Ymxp
YzoKCiAgICAgIHR5cGVkZWYgX0ludFR5cGUgcmVzdWx0X3R5cGU7CgogICAgICBzdHJ1Y3QgcGFy
YW1fdHlwZQogICAgICB7CiB0eXBlZGVmIG5lZ2F0aXZlX2Jpbm9taWFsX2Rpc3RyaWJ1dGlvbjxf
SW50VHlwZT4gZGlzdHJpYnV0aW9uX3R5cGU7CgogZXhwbGljaXQKIHBhcmFtX3R5cGUoX0ludFR5
cGUgX19rID0gMSwgZG91YmxlIF9fcCA9IDAuNSkKIDogX01fayhfX2spLCBfTV9wKF9fcCkKIHsK
ICAgOwogfQoKIF9JbnRUeXBlCiBrKCkgY29uc3QKIHsgcmV0dXJuIF9NX2s7IH0KCiBkb3VibGUK
IHAoKSBjb25zdAogeyByZXR1cm4gX01fcDsgfQoKIGZyaWVuZCBib29sCiBvcGVyYXRvcj09KGNv
bnN0IHBhcmFtX3R5cGUmIF9fcDEsIGNvbnN0IHBhcmFtX3R5cGUmIF9fcDIpCiB7IHJldHVybiBf
X3AxLl9NX2sgPT0gX19wMi5fTV9rICYmIF9fcDEuX01fcCA9PSBfX3AyLl9NX3A7IH0KCiAgICAg
IHByaXZhdGU6CiBfSW50VHlwZSBfTV9rOwogZG91YmxlIF9NX3A7CiAgICAgIH07CgogICAgICBl
eHBsaWNpdAogICAgICBuZWdhdGl2ZV9iaW5vbWlhbF9kaXN0cmlidXRpb24oX0ludFR5cGUgX19r
ID0gMSwgZG91YmxlIF9fcCA9IDAuNSkKICAgICAgOiBfTV9wYXJhbShfX2ssIF9fcCksIF9NX2dk
KF9faywgKDEuMCAtIF9fcCkgLyBfX3ApCiAgICAgIHsgfQoKICAgICAgZXhwbGljaXQKICAgICAg
bmVnYXRpdmVfYmlub21pYWxfZGlzdHJpYnV0aW9uKGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKICAg
ICAgOiBfTV9wYXJhbShfX3ApLCBfTV9nZChfX3AuaygpLCAoMS4wIC0gX19wLnAoKSkgLyBfX3Au
cCgpKQogICAgICB7IH0KCgoKCiAgICAgIHZvaWQKICAgICAgcmVzZXQoKQogICAgICB7IF9NX2dk
LnJlc2V0KCk7IH0KCgoKCiAgICAgIF9JbnRUeXBlCiAgICAgIGsoKSBjb25zdAogICAgICB7IHJl
dHVybiBfTV9wYXJhbS5rKCk7IH0KCgoKCiAgICAgIGRvdWJsZQogICAgICBwKCkgY29uc3QKICAg
ICAgeyByZXR1cm4gX01fcGFyYW0ucCgpOyB9CgoKCgogICAgICBwYXJhbV90eXBlCiAgICAgIHBh
cmFtKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fcGFyYW07IH0KCgoKCgogICAgICB2b2lkCiAg
ICAgIHBhcmFtKGNvbnN0IHBhcmFtX3R5cGUmIF9fcGFyYW0pCiAgICAgIHsgX01fcGFyYW0gPSBf
X3BhcmFtOyB9CgoKCgogICAgICByZXN1bHRfdHlwZQogICAgICBtaW4oKSBjb25zdAogICAgICB7
IHJldHVybiByZXN1bHRfdHlwZSgwKTsgfQoKCgoKICAgICAgcmVzdWx0X3R5cGUKICAgICAgbWF4
KCkgY29uc3QKICAgICAgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlwZT46
Om1heCgpOyB9CgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJl
ckdlbmVyYXRvcj4KIHJlc3VsdF90eXBlCiAgICAgICAgb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRv
bU51bWJlckdlbmVyYXRvciYgX191cm5nKTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlm
b3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1VuaWZv
cm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBf
X3ApOwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0
eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUo
X0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgIF9Vbmlmb3Jt
UmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcpCiB7IHRoaXMtPl9fZ2VuZXJhdGVfaW1wbChf
X2YsIF9fdCwgX191cm5nKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVy
YXRvciwKICAgICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZv
aWQKIF9fZ2VuZXJhdGUoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190
LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29uc3Qg
cGFyYW1fdHlwZSYgX19wKQogeyB0aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBfX3QsIF9fdXJu
ZywgX19wKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJH
ZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKHJlc3VsdF90eXBlKiBfX2YsIHJlc3VsdF90eXBl
KiBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZykKIHsgdGhp
cy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBfX3VybmcpOyB9CgogICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUo
cmVzdWx0X3R5cGUqIF9fZiwgcmVzdWx0X3R5cGUqIF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51
bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKIHsgdGhp
cy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBfX3VybmcsIF9fcCk7IH0KCgoKCgoKICAgICAg
ZnJpZW5kIGJvb2wKICAgICAgb3BlcmF0b3I9PShjb25zdCBuZWdhdGl2ZV9iaW5vbWlhbF9kaXN0
cmlidXRpb24mIF9fZDEsCiAgIGNvbnN0IG5lZ2F0aXZlX2Jpbm9taWFsX2Rpc3RyaWJ1dGlvbiYg
X19kMikKICAgICAgeyByZXR1cm4gX19kMS5fTV9wYXJhbSA9PSBfX2QyLl9NX3BhcmFtICYmIF9f
ZDEuX01fZ2QgPT0gX19kMi5fTV9nZDsgfQojIDQzNjUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3JhbmRvbS5oIiAzCiAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIF9JbnRUeXBlMSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgog
ZnJpZW5kIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jgogb3BlcmF0b3I8PChz
dGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vcywKICAgICBjb25zdCBzdGQ6
Om5lZ2F0aXZlX2Jpbm9taWFsX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZTE+JiBfX3gpOwojIDQzODAg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3Jh
bmRvbS5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlMSwgdHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfVHJhaXRzPgogZnJpZW5kIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQs
IF9UcmFpdHM+Jgogb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRz
PiYgX19pcywKICAgICBzdGQ6Om5lZ2F0aXZlX2Jpbm9taWFsX2Rpc3RyaWJ1dGlvbjxfSW50VHlw
ZTE+JiBfX3gpOwoKICAgIHByaXZhdGU6CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJk
SXRlcmF0b3IsCiAgICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+
CiB2b2lkCiBfX2dlbmVyYXRlX2ltcGwoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRl
cmF0b3IgX190LAogICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nKTsKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBlbmFtZSBf
VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGVfaW1wbChfRm9y
d2FyZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgIF9Vbmlmb3JtUmFuZG9t
TnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCk7CgogICAg
ICBwYXJhbV90eXBlIF9NX3BhcmFtOwoKICAgICAgc3RkOjpnYW1tYV9kaXN0cmlidXRpb248ZG91
YmxlPiBfTV9nZDsKICAgIH07CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlPgogICAg
aW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3Qgc3RkOjpuZWdhdGl2ZV9iaW5vbWlhbF9k
aXN0cmlidXRpb248X0ludFR5cGU+JiBfX2QxLAogICAgICAgIGNvbnN0IHN0ZDo6bmVnYXRpdmVf
Ymlub21pYWxfZGlzdHJpYnV0aW9uPF9JbnRUeXBlPiYgX19kMikKICAgIHsgcmV0dXJuICEoX19k
MSA9PSBfX2QyKTsgfQojIDQ0MjggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjguMS9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5
cGUgPSBpbnQ+CiAgICBjbGFzcyBwb2lzc29uX2Rpc3RyaWJ1dGlvbgogICAgewogICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8X0ludFR5cGU+Ojp2YWx1ZSwKICAgICAgInRlbXBs
YXRlIGFyZ3VtZW50IG5vdCBhbiBpbnRlZ3JhbCB0eXBlIik7CgogICAgcHVibGljOgoKICAgICAg
dHlwZWRlZiBfSW50VHlwZSByZXN1bHRfdHlwZTsKCiAgICAgIHN0cnVjdCBwYXJhbV90eXBlCiAg
ICAgIHsKIHR5cGVkZWYgcG9pc3Nvbl9kaXN0cmlidXRpb248X0ludFR5cGU+IGRpc3RyaWJ1dGlv
bl90eXBlOwogZnJpZW5kIGNsYXNzIHBvaXNzb25fZGlzdHJpYnV0aW9uPF9JbnRUeXBlPjsKCiBl
eHBsaWNpdAogcGFyYW1fdHlwZShkb3VibGUgX19tZWFuID0gMS4wKQogOiBfTV9tZWFuKF9fbWVh
bikKIHsKICAgOwogICBfTV9pbml0aWFsaXplKCk7CiB9CgogZG91YmxlCiBtZWFuKCkgY29uc3QK
IHsgcmV0dXJuIF9NX21lYW47IH0KCiBmcmllbmQgYm9vbAogb3BlcmF0b3I9PShjb25zdCBwYXJh
bV90eXBlJiBfX3AxLCBjb25zdCBwYXJhbV90eXBlJiBfX3AyKQogeyByZXR1cm4gX19wMS5fTV9t
ZWFuID09IF9fcDIuX01fbWVhbjsgfQoKICAgICAgcHJpdmF0ZToKCiB2b2lkCiBfTV9pbml0aWFs
aXplKCk7CgogZG91YmxlIF9NX21lYW47CgogZG91YmxlIF9NX2xtX3RocjsKCiBkb3VibGUgX01f
bGZtLCBfTV9zbSwgX01fZCwgX01fc2N4LCBfTV8xY3gsIF9NX2MyYiwgX01fY2I7CgogICAgICB9
OwoKCiAgICAgIGV4cGxpY2l0CiAgICAgIHBvaXNzb25fZGlzdHJpYnV0aW9uKGRvdWJsZSBfX21l
YW4gPSAxLjApCiAgICAgIDogX01fcGFyYW0oX19tZWFuKSwgX01fbmQoKQogICAgICB7IH0KCiAg
ICAgIGV4cGxpY2l0CiAgICAgIHBvaXNzb25fZGlzdHJpYnV0aW9uKGNvbnN0IHBhcmFtX3R5cGUm
IF9fcCkKICAgICAgOiBfTV9wYXJhbShfX3ApLCBfTV9uZCgpCiAgICAgIHsgfQoKCgoKICAgICAg
dm9pZAogICAgICByZXNldCgpCiAgICAgIHsgX01fbmQucmVzZXQoKTsgfQoKCgoKICAgICAgZG91
YmxlCiAgICAgIG1lYW4oKSBjb25zdAogICAgICB7IHJldHVybiBfTV9wYXJhbS5tZWFuKCk7IH0K
CgoKCiAgICAgIHBhcmFtX3R5cGUKICAgICAgcGFyYW0oKSBjb25zdAogICAgICB7IHJldHVybiBf
TV9wYXJhbTsgfQoKCgoKCiAgICAgIHZvaWQKICAgICAgcGFyYW0oY29uc3QgcGFyYW1fdHlwZSYg
X19wYXJhbSkKICAgICAgeyBfTV9wYXJhbSA9IF9fcGFyYW07IH0KCgoKCiAgICAgIHJlc3VsdF90
eXBlCiAgICAgIG1pbigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIDA7IH0KCgoKCiAgICAgIHJlc3Vs
dF90eXBlCiAgICAgIG1heCgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1p
dHM8cmVzdWx0X3R5cGU+OjptYXgoKTsgfQoKCgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Vu
aWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiByZXN1bHRfdHlwZQogb3BlcmF0b3IoKShfVW5p
Zm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nKQogeyByZXR1cm4gdGhpcy0+b3BlcmF0
b3IoKShfX3VybmcsIF9NX3BhcmFtKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZv
cm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiByZXN1bHRfdHlwZQogb3BlcmF0b3IoKShfVW5pZm9y
bVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9f
cCk7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5
cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZShf
Rm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgICAgX1VuaWZvcm1S
YW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZykKIHsgdGhpcy0+X19nZW5lcmF0ZShfX2YsIF9f
dCwgX191cm5nLCBfTV9wYXJhbSk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJk
SXRlcmF0b3IsCiAgICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+
CiB2b2lkCiBfX2dlbmVyYXRlKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9y
IF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgIGNv
bnN0IHBhcmFtX3R5cGUmIF9fcCkKIHsgdGhpcy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBf
X3VybmcsIF9fcCk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVt
YmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZShyZXN1bHRfdHlwZSogX19mLCByZXN1bHRf
dHlwZSogX190LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAg
ICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKQogeyB0aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBf
X3QsIF9fdXJuZywgX19wKTsgfQoKCgoKCgogICAgICBmcmllbmQgYm9vbAogICAgICBvcGVyYXRv
cj09KGNvbnN0IHBvaXNzb25fZGlzdHJpYnV0aW9uJiBfX2QxLAogICBjb25zdCBwb2lzc29uX2Rp
c3RyaWJ1dGlvbiYgX19kMikKCiAgICAgIHsgcmV0dXJuIF9fZDEuX01fcGFyYW0gPT0gX19kMi5f
TV9wYXJhbSAmJiBfX2QxLl9NX25kID09IF9fZDIuX01fbmQ7IH0KIyA0NTg1ICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9yYW5kb20uaCIgMwog
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50VHlwZTEsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h
bWUgX1RyYWl0cz4KIGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYK
IG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9fb3MsCiAg
ICAgY29uc3Qgc3RkOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZTE+JiBfX3gpOwojIDQ2
MDAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRz
L3JhbmRvbS5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlMSwgdHlwZW5hbWUg
X0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogZnJpZW5kIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+Jgogb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJh
aXRzPiYgX19pcywKICAgICBzdGQ6OnBvaXNzb25fZGlzdHJpYnV0aW9uPF9JbnRUeXBlMT4mIF9f
eCk7CgogICAgcHJpdmF0ZToKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRv
ciwKICAgICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQK
IF9fZ2VuZXJhdGVfaW1wbChfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBf
X3QsCiAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgIGNvbnN0IHBh
cmFtX3R5cGUmIF9fcCk7CgogICAgICBwYXJhbV90eXBlIF9NX3BhcmFtOwoKCiAgICAgIHN0ZDo6
bm9ybWFsX2Rpc3RyaWJ1dGlvbjxkb3VibGU+IF9NX25kOwogICAgfTsKCgoKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0ludFR5cGU+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25zdCBz
dGQ6OnBvaXNzb25fZGlzdHJpYnV0aW9uPF9JbnRUeXBlPiYgX19kMSwKICAgICAgICBjb25zdCBz
dGQ6OnBvaXNzb25fZGlzdHJpYnV0aW9uPF9JbnRUeXBlPiYgX19kMikKICAgIHsgcmV0dXJuICEo
X19kMSA9PSBfX2QyKTsgfQojIDQ2NDQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jl
YWxUeXBlID0gZG91YmxlPgogICAgY2xhc3MgZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uCiAgICB7
CiAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19mbG9hdGluZ19wb2ludDxfUmVhbFR5cGU+Ojp2
YWx1ZSwKICAgICAgInRlbXBsYXRlIGFyZ3VtZW50IG5vdCBhIGZsb2F0aW5nIHBvaW50IHR5cGUi
KTsKCiAgICBwdWJsaWM6CgogICAgICB0eXBlZGVmIF9SZWFsVHlwZSByZXN1bHRfdHlwZTsKCiAg
ICAgIHN0cnVjdCBwYXJhbV90eXBlCiAgICAgIHsKIHR5cGVkZWYgZXhwb25lbnRpYWxfZGlzdHJp
YnV0aW9uPF9SZWFsVHlwZT4gZGlzdHJpYnV0aW9uX3R5cGU7CgogZXhwbGljaXQKIHBhcmFtX3R5
cGUoX1JlYWxUeXBlIF9fbGFtYmRhID0gX1JlYWxUeXBlKDEpKQogOiBfTV9sYW1iZGEoX19sYW1i
ZGEpCiB7CiAgIDsKIH0KCiBfUmVhbFR5cGUKIGxhbWJkYSgpIGNvbnN0CiB7IHJldHVybiBfTV9s
YW1iZGE7IH0KCiBmcmllbmQgYm9vbAogb3BlcmF0b3I9PShjb25zdCBwYXJhbV90eXBlJiBfX3Ax
LCBjb25zdCBwYXJhbV90eXBlJiBfX3AyKQogeyByZXR1cm4gX19wMS5fTV9sYW1iZGEgPT0gX19w
Mi5fTV9sYW1iZGE7IH0KCiAgICAgIHByaXZhdGU6CiBfUmVhbFR5cGUgX01fbGFtYmRhOwogICAg
ICB9OwoKICAgIHB1YmxpYzoKCgoKCiAgICAgIGV4cGxpY2l0CiAgICAgIGV4cG9uZW50aWFsX2Rp
c3RyaWJ1dGlvbihjb25zdCByZXN1bHRfdHlwZSYgX19sYW1iZGEgPSByZXN1bHRfdHlwZSgxKSkK
ICAgICAgOiBfTV9wYXJhbShfX2xhbWJkYSkKICAgICAgeyB9CgogICAgICBleHBsaWNpdAogICAg
ICBleHBvbmVudGlhbF9kaXN0cmlidXRpb24oY29uc3QgcGFyYW1fdHlwZSYgX19wKQogICAgICA6
IF9NX3BhcmFtKF9fcCkKICAgICAgeyB9CgoKCgoKCiAgICAgIHZvaWQKICAgICAgcmVzZXQoKSB7
IH0KCgoKCiAgICAgIF9SZWFsVHlwZQogICAgICBsYW1iZGEoKSBjb25zdAogICAgICB7IHJldHVy
biBfTV9wYXJhbS5sYW1iZGEoKTsgfQoKCgoKICAgICAgcGFyYW1fdHlwZQogICAgICBwYXJhbSgp
IGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX3BhcmFtOyB9CgoKCgoKICAgICAgdm9pZAogICAgICBw
YXJhbShjb25zdCBwYXJhbV90eXBlJiBfX3BhcmFtKQogICAgICB7IF9NX3BhcmFtID0gX19wYXJh
bTsgfQoKCgoKICAgICAgcmVzdWx0X3R5cGUKICAgICAgbWluKCkgY29uc3QKICAgICAgeyByZXR1
cm4gcmVzdWx0X3R5cGUoMCk7IH0KCgoKCiAgICAgIHJlc3VsdF90eXBlCiAgICAgIG1heCgpIGNv
bnN0CiAgICAgIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjptYXgo
KTsgfQoKCgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5l
cmF0b3I+CiByZXN1bHRfdHlwZQogb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVy
YXRvciYgX191cm5nKQogICAgICAgIHsgcmV0dXJuIHRoaXMtPm9wZXJhdG9yKCkoX191cm5nLCBf
TV9wYXJhbSk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVy
R2VuZXJhdG9yPgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21OdW1iZXJH
ZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiB7CiAgIF9fZGV0
YWlsOjpfQWRhcHRvcjxfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciwgcmVzdWx0X3R5cGU+
CiAgICAgX19hdXJuZyhfX3VybmcpOwogICByZXR1cm4gLXN0ZDo6bG9nKHJlc3VsdF90eXBlKDEp
IC0gX19hdXJuZygpKSAvIF9fcC5sYW1iZGEoKTsKIH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJH
ZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2Fy
ZEl0ZXJhdG9yIF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5n
KQogeyB0aGlzLT5fX2dlbmVyYXRlKF9fZiwgX190LCBfX3VybmcsIF9NX3BhcmFtKTsgfQoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBlbmFtZSBf
VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUoX0ZvcndhcmRJ
dGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVt
YmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKQogeyB0aGlz
LT5fX2dlbmVyYXRlX2ltcGwoX19mLCBfX3QsIF9fdXJuZywgX19wKTsgfQoKICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVy
YXRlKHJlc3VsdF90eXBlKiBfX2YsIHJlc3VsdF90eXBlKiBfX3QsCiAgICAgX1VuaWZvcm1SYW5k
b21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiB7
IHRoaXMtPl9fZ2VuZXJhdGVfaW1wbChfX2YsIF9fdCwgX191cm5nLCBfX3ApOyB9CgoKCgoKICAg
ICAgZnJpZW5kIGJvb2wKICAgICAgb3BlcmF0b3I9PShjb25zdCBleHBvbmVudGlhbF9kaXN0cmli
dXRpb24mIF9fZDEsCiAgIGNvbnN0IGV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbiYgX19kMikKICAg
ICAgeyByZXR1cm4gX19kMS5fTV9wYXJhbSA9PSBfX2QyLl9NX3BhcmFtOyB9CgogICAgcHJpdmF0
ZToKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBl
bmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGVfaW1w
bChfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgIF9Vbmlmb3Jt
UmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCk7
CgogICAgICBwYXJhbV90eXBlIF9NX3BhcmFtOwogICAgfTsKCgoKCgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9SZWFsVHlwZT4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IHN0ZDo6
ZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9fZDEsCiAgICAgICAgY29uc3Qg
c3RkOjpleHBvbmVudGlhbF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX19kMikKICAgIHsgcmV0
dXJuICEoX19kMSA9PSBfX2QyKTsgfQojIDQ4MTYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1JlYWxUeXBlLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6
OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPDwoc3RkOjpiYXNp
Y19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9fb3MsCiAgICAgICAgY29uc3Qgc3RkOjpleHBv
bmVudGlhbF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX194KTsKIyA0ODMxICIvbW50L3N0b3Jl
L0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9yYW5kb20uaCIgMwog
IHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzPgogICAgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVy
YXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAogICAgICAg
IHN0ZDo6ZXhwb25lbnRpYWxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9feCk7CiMgNDg0NiAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvcmFu
ZG9tLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUgPSBkb3VibGU+CiAgICBjbGFz
cyB3ZWlidWxsX2Rpc3RyaWJ1dGlvbgogICAgewogICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
ZmxvYXRpbmdfcG9pbnQ8X1JlYWxUeXBlPjo6dmFsdWUsCiAgICAgICJ0ZW1wbGF0ZSBhcmd1bWVu
dCBub3QgYSBmbG9hdGluZyBwb2ludCB0eXBlIik7CgogICAgcHVibGljOgoKICAgICAgdHlwZWRl
ZiBfUmVhbFR5cGUgcmVzdWx0X3R5cGU7CgogICAgICBzdHJ1Y3QgcGFyYW1fdHlwZQogICAgICB7
CiB0eXBlZGVmIHdlaWJ1bGxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4gZGlzdHJpYnV0aW9uX3R5
cGU7CgogZXhwbGljaXQKIHBhcmFtX3R5cGUoX1JlYWxUeXBlIF9fYSA9IF9SZWFsVHlwZSgxKSwK
ICAgICBfUmVhbFR5cGUgX19iID0gX1JlYWxUeXBlKDEpKQogOiBfTV9hKF9fYSksIF9NX2IoX19i
KQogeyB9CgogX1JlYWxUeXBlCiBhKCkgY29uc3QKIHsgcmV0dXJuIF9NX2E7IH0KCiBfUmVhbFR5
cGUKIGIoKSBjb25zdAogeyByZXR1cm4gX01fYjsgfQoKIGZyaWVuZCBib29sCiBvcGVyYXRvcj09
KGNvbnN0IHBhcmFtX3R5cGUmIF9fcDEsIGNvbnN0IHBhcmFtX3R5cGUmIF9fcDIpCiB7IHJldHVy
biBfX3AxLl9NX2EgPT0gX19wMi5fTV9hICYmIF9fcDEuX01fYiA9PSBfX3AyLl9NX2I7IH0KCiAg
ICAgIHByaXZhdGU6CiBfUmVhbFR5cGUgX01fYTsKIF9SZWFsVHlwZSBfTV9iOwogICAgICB9OwoK
ICAgICAgZXhwbGljaXQKICAgICAgd2VpYnVsbF9kaXN0cmlidXRpb24oX1JlYWxUeXBlIF9fYSA9
IF9SZWFsVHlwZSgxKSwKICAgICAgX1JlYWxUeXBlIF9fYiA9IF9SZWFsVHlwZSgxKSkKICAgICAg
OiBfTV9wYXJhbShfX2EsIF9fYikKICAgICAgeyB9CgogICAgICBleHBsaWNpdAogICAgICB3ZWli
dWxsX2Rpc3RyaWJ1dGlvbihjb25zdCBwYXJhbV90eXBlJiBfX3ApCiAgICAgIDogX01fcGFyYW0o
X19wKQogICAgICB7IH0KCgoKCiAgICAgIHZvaWQKICAgICAgcmVzZXQoKQogICAgICB7IH0KCgoK
CiAgICAgIF9SZWFsVHlwZQogICAgICBhKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fcGFyYW0u
YSgpOyB9CgoKCgogICAgICBfUmVhbFR5cGUKICAgICAgYigpIGNvbnN0CiAgICAgIHsgcmV0dXJu
IF9NX3BhcmFtLmIoKTsgfQoKCgoKICAgICAgcGFyYW1fdHlwZQogICAgICBwYXJhbSgpIGNvbnN0
CiAgICAgIHsgcmV0dXJuIF9NX3BhcmFtOyB9CgoKCgoKICAgICAgdm9pZAogICAgICBwYXJhbShj
b25zdCBwYXJhbV90eXBlJiBfX3BhcmFtKQogICAgICB7IF9NX3BhcmFtID0gX19wYXJhbTsgfQoK
CgoKICAgICAgcmVzdWx0X3R5cGUKICAgICAgbWluKCkgY29uc3QKICAgICAgeyByZXR1cm4gcmVz
dWx0X3R5cGUoMCk7IH0KCgoKCiAgICAgIHJlc3VsdF90eXBlCiAgICAgIG1heCgpIGNvbnN0CiAg
ICAgIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8cmVzdWx0X3R5cGU+OjptYXgoKTsgfQoK
CgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+
CiByZXN1bHRfdHlwZQogb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYg
X191cm5nKQogeyByZXR1cm4gdGhpcy0+b3BlcmF0b3IoKShfX3VybmcsIF9NX3BhcmFtKTsgfQoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiBy
ZXN1bHRfdHlwZQogb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191
cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCk7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVy
R2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZShfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0Zvcndh
cmRJdGVyYXRvciBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJu
ZykKIHsgdGhpcy0+X19nZW5lcmF0ZShfX2YsIF9fdCwgX191cm5nLCBfTV9wYXJhbSk7IH0KCiAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgICAgdHlwZW5hbWUg
X1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKF9Gb3J3YXJk
SXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51
bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKIHsgdGhp
cy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBfX3VybmcsIF9fcCk7IH0KCiAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5l
cmF0ZShyZXN1bHRfdHlwZSogX19mLCByZXN1bHRfdHlwZSogX190LAogICAgIF9Vbmlmb3JtUmFu
ZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKQog
eyB0aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBfX3QsIF9fdXJuZywgX19wKTsgfQoKCgoKCiAg
ICAgIGZyaWVuZCBib29sCiAgICAgIG9wZXJhdG9yPT0oY29uc3Qgd2VpYnVsbF9kaXN0cmlidXRp
b24mIF9fZDEsCiAgIGNvbnN0IHdlaWJ1bGxfZGlzdHJpYnV0aW9uJiBfX2QyKQogICAgICB7IHJl
dHVybiBfX2QxLl9NX3BhcmFtID09IF9fZDIuX01fcGFyYW07IH0KCiAgICBwcml2YXRlOgogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9V
bmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZV9pbXBsKF9Gb3J3
YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgX1VuaWZvcm1SYW5kb21O
dW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKTsKCiAgICAg
IHBhcmFtX3R5cGUgX01fcGFyYW07CiAgICB9OwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jl
YWxUeXBlPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3Qgc3RkOjp3ZWlidWxs
X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBfX2QxLAogICAgICAgIGNvbnN0IHN0ZDo6d2VpYnVs
bF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX19kMikKICAgIHsgcmV0dXJuICEoX19kMSA9PSBf
X2QyKTsgfQojIDUwMTkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjguMS9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlLCB0
eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX29zdHJlYW08
X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFy
VCwgX1RyYWl0cz4mIF9fb3MsCiAgICAgICAgY29uc3Qgc3RkOjp3ZWlidWxsX2Rpc3RyaWJ1dGlv
bjxfUmVhbFR5cGU+JiBfX3gpOwojIDUwMzQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1JlYWxUeXBlLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJh
c2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19p
c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAgICAgICAgc3RkOjp3ZWlidWxsX2Rpc3Ry
aWJ1dGlvbjxfUmVhbFR5cGU+JiBfX3gpOwojIDUwNDkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3JhbmRvbS5oIiAzCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1JlYWxUeXBlID0gZG91YmxlPgogICAgY2xhc3MgZXh0cmVtZV92YWx1ZV9kaXN0cmli
dXRpb24KICAgIHsKICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PF9S
ZWFsVHlwZT46OnZhbHVlLAogICAgICAidGVtcGxhdGUgYXJndW1lbnQgbm90IGEgZmxvYXRpbmcg
cG9pbnQgdHlwZSIpOwoKICAgIHB1YmxpYzoKCiAgICAgIHR5cGVkZWYgX1JlYWxUeXBlIHJlc3Vs
dF90eXBlOwoKICAgICAgc3RydWN0IHBhcmFtX3R5cGUKICAgICAgewogdHlwZWRlZiBleHRyZW1l
X3ZhbHVlX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+IGRpc3RyaWJ1dGlvbl90eXBlOwoKIGV4cGxp
Y2l0CiBwYXJhbV90eXBlKF9SZWFsVHlwZSBfX2EgPSBfUmVhbFR5cGUoMCksCiAgICAgX1JlYWxU
eXBlIF9fYiA9IF9SZWFsVHlwZSgxKSkKIDogX01fYShfX2EpLCBfTV9iKF9fYikKIHsgfQoKIF9S
ZWFsVHlwZQogYSgpIGNvbnN0CiB7IHJldHVybiBfTV9hOyB9CgogX1JlYWxUeXBlCiBiKCkgY29u
c3QKIHsgcmV0dXJuIF9NX2I7IH0KCiBmcmllbmQgYm9vbAogb3BlcmF0b3I9PShjb25zdCBwYXJh
bV90eXBlJiBfX3AxLCBjb25zdCBwYXJhbV90eXBlJiBfX3AyKQogeyByZXR1cm4gX19wMS5fTV9h
ID09IF9fcDIuX01fYSAmJiBfX3AxLl9NX2IgPT0gX19wMi5fTV9iOyB9CgogICAgICBwcml2YXRl
OgogX1JlYWxUeXBlIF9NX2E7CiBfUmVhbFR5cGUgX01fYjsKICAgICAgfTsKCiAgICAgIGV4cGxp
Y2l0CiAgICAgIGV4dHJlbWVfdmFsdWVfZGlzdHJpYnV0aW9uKF9SZWFsVHlwZSBfX2EgPSBfUmVh
bFR5cGUoMCksCiAgICAgX1JlYWxUeXBlIF9fYiA9IF9SZWFsVHlwZSgxKSkKICAgICAgOiBfTV9w
YXJhbShfX2EsIF9fYikKICAgICAgeyB9CgogICAgICBleHBsaWNpdAogICAgICBleHRyZW1lX3Zh
bHVlX2Rpc3RyaWJ1dGlvbihjb25zdCBwYXJhbV90eXBlJiBfX3ApCiAgICAgIDogX01fcGFyYW0o
X19wKQogICAgICB7IH0KCgoKCiAgICAgIHZvaWQKICAgICAgcmVzZXQoKQogICAgICB7IH0KCgoK
CiAgICAgIF9SZWFsVHlwZQogICAgICBhKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fcGFyYW0u
YSgpOyB9CgoKCgogICAgICBfUmVhbFR5cGUKICAgICAgYigpIGNvbnN0CiAgICAgIHsgcmV0dXJu
IF9NX3BhcmFtLmIoKTsgfQoKCgoKICAgICAgcGFyYW1fdHlwZQogICAgICBwYXJhbSgpIGNvbnN0
CiAgICAgIHsgcmV0dXJuIF9NX3BhcmFtOyB9CgoKCgoKICAgICAgdm9pZAogICAgICBwYXJhbShj
b25zdCBwYXJhbV90eXBlJiBfX3BhcmFtKQogICAgICB7IF9NX3BhcmFtID0gX19wYXJhbTsgfQoK
CgoKICAgICAgcmVzdWx0X3R5cGUKICAgICAgbWluKCkgY29uc3QKICAgICAgeyByZXR1cm4gc3Rk
OjpudW1lcmljX2xpbWl0czxyZXN1bHRfdHlwZT46Om1pbigpOyB9CgoKCgogICAgICByZXN1bHRf
dHlwZQogICAgICBtYXgoKSBjb25zdAogICAgICB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRz
PHJlc3VsdF90eXBlPjo6bWF4KCk7IH0KCgoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlm
b3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1VuaWZv
cm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZykKIHsgcmV0dXJuIHRoaXMtPm9wZXJhdG9y
KCkoX191cm5nLCBfTV9wYXJhbSk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3Jt
UmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1VuaWZvcm1S
YW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3Ap
OwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBl
bmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUoX0Zv
cndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgIF9Vbmlmb3JtUmFu
ZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcpCiB7IHRoaXMtPl9fZ2VuZXJhdGUoX19mLCBfX3Qs
IF9fdXJuZywgX01fcGFyYW0pOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0
ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgog
dm9pZAogX19nZW5lcmF0ZShfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBf
X3QsCiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25z
dCBwYXJhbV90eXBlJiBfX3ApCiB7IHRoaXMtPl9fZ2VuZXJhdGVfaW1wbChfX2YsIF9fdCwgX191
cm5nLCBfX3ApOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJl
ckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUocmVzdWx0X3R5cGUqIF9fZiwgcmVzdWx0X3R5
cGUqIF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAg
IGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKIHsgdGhpcy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190
LCBfX3VybmcsIF9fcCk7IH0KCgoKCgogICAgICBmcmllbmQgYm9vbAogICAgICBvcGVyYXRvcj09
KGNvbnN0IGV4dHJlbWVfdmFsdWVfZGlzdHJpYnV0aW9uJiBfX2QxLAogICBjb25zdCBleHRyZW1l
X3ZhbHVlX2Rpc3RyaWJ1dGlvbiYgX19kMikKICAgICAgeyByZXR1cm4gX19kMS5fTV9wYXJhbSA9
PSBfX2QyLl9NX3BhcmFtOyB9CgogICAgcHJpdmF0ZToKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
X0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdl
bmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGVfaW1wbChfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0Zv
cndhcmRJdGVyYXRvciBfX3QsCiAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3Vy
bmcsCiAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCk7CgogICAgICBwYXJhbV90eXBlIF9NX3BhcmFt
OwogICAgfTsKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZT4KICAgIGlubGluZSBi
b29sCiAgICBvcGVyYXRvciE9KGNvbnN0IHN0ZDo6ZXh0cmVtZV92YWx1ZV9kaXN0cmlidXRpb248
X1JlYWxUeXBlPiYgX19kMSwKICAgICAgICBjb25zdCBzdGQ6OmV4dHJlbWVfdmFsdWVfZGlzdHJp
YnV0aW9uPF9SZWFsVHlwZT4mIF9fZDIpCiAgICB7IHJldHVybiAhKF9fZDEgPT0gX19kMik7IH0K
IyA1MjIyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEv
Yml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSwgdHlwZW5hbWUg
X0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwg
X1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFp
dHM+JiBfX29zLAogICAgICAgIGNvbnN0IHN0ZDo6ZXh0cmVtZV92YWx1ZV9kaXN0cmlidXRpb248
X1JlYWxUeXBlPiYgX194KTsKIyA1MjM3ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC44LjEvYml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9S
ZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNp
Y19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0
cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAogICAgICAgIHN0ZDo6ZXh0cmVtZV92YWx1ZV9k
aXN0cmlidXRpb248X1JlYWxUeXBlPiYgX194KTsKIyA1MjQ5ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRl
PHR5cGVuYW1lIF9JbnRUeXBlID0gaW50PgogICAgY2xhc3MgZGlzY3JldGVfZGlzdHJpYnV0aW9u
CiAgICB7CiAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3JhbDxfSW50VHlwZT46OnZh
bHVlLAogICAgICAidGVtcGxhdGUgYXJndW1lbnQgbm90IGFuIGludGVncmFsIHR5cGUiKTsKCiAg
ICBwdWJsaWM6CgogICAgICB0eXBlZGVmIF9JbnRUeXBlIHJlc3VsdF90eXBlOwoKICAgICAgc3Ry
dWN0IHBhcmFtX3R5cGUKICAgICAgewogdHlwZWRlZiBkaXNjcmV0ZV9kaXN0cmlidXRpb248X0lu
dFR5cGU+IGRpc3RyaWJ1dGlvbl90eXBlOwogZnJpZW5kIGNsYXNzIGRpc2NyZXRlX2Rpc3RyaWJ1
dGlvbjxfSW50VHlwZT47CgogcGFyYW1fdHlwZSgpCiA6IF9NX3Byb2IoKSwgX01fY3AoKQogeyB9
CgogdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3I+CiAgIHBhcmFtX3R5cGUoX0lucHV0
SXRlcmF0b3IgX193YmVnaW4sCiAgICAgICBfSW5wdXRJdGVyYXRvciBfX3dlbmQpCiAgIDogX01f
cHJvYihfX3diZWdpbiwgX193ZW5kKSwgX01fY3AoKQogICB7IF9NX2luaXRpYWxpemUoKTsgfQoK
IHBhcmFtX3R5cGUoaW5pdGlhbGl6ZXJfbGlzdDxkb3VibGU+IF9fd2lsKQogOiBfTV9wcm9iKF9f
d2lsLmJlZ2luKCksIF9fd2lsLmVuZCgpKSwgX01fY3AoKQogeyBfTV9pbml0aWFsaXplKCk7IH0K
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnVuYz4KICAgcGFyYW1fdHlwZShzaXplX3QgX19udywgZG91
YmxlIF9feG1pbiwgZG91YmxlIF9feG1heCwKICAgICAgIF9GdW5jIF9fZncpOwoKCiBwYXJhbV90
eXBlKGNvbnN0IHBhcmFtX3R5cGUmKSA9IGRlZmF1bHQ7CiBwYXJhbV90eXBlJiBvcGVyYXRvcj0o
Y29uc3QgcGFyYW1fdHlwZSYpID0gZGVmYXVsdDsKCiBzdGQ6OnZlY3Rvcjxkb3VibGU+CiBwcm9i
YWJpbGl0aWVzKCkgY29uc3QKIHsgcmV0dXJuIF9NX3Byb2IuZW1wdHkoKSA/IHN0ZDo6dmVjdG9y
PGRvdWJsZT4oMSwgMS4wKSA6IF9NX3Byb2I7IH0KCiBmcmllbmQgYm9vbAogb3BlcmF0b3I9PShj
b25zdCBwYXJhbV90eXBlJiBfX3AxLCBjb25zdCBwYXJhbV90eXBlJiBfX3AyKQogeyByZXR1cm4g
X19wMS5fTV9wcm9iID09IF9fcDIuX01fcHJvYjsgfQoKICAgICAgcHJpdmF0ZToKIHZvaWQKIF9N
X2luaXRpYWxpemUoKTsKCiBzdGQ6OnZlY3Rvcjxkb3VibGU+IF9NX3Byb2I7CiBzdGQ6OnZlY3Rv
cjxkb3VibGU+IF9NX2NwOwogICAgICB9OwoKICAgICAgZGlzY3JldGVfZGlzdHJpYnV0aW9uKCkK
ICAgICAgOiBfTV9wYXJhbSgpCiAgICAgIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0lu
cHV0SXRlcmF0b3I+CiBkaXNjcmV0ZV9kaXN0cmlidXRpb24oX0lucHV0SXRlcmF0b3IgX193YmVn
aW4sCiAgICAgICAgIF9JbnB1dEl0ZXJhdG9yIF9fd2VuZCkKIDogX01fcGFyYW0oX193YmVnaW4s
IF9fd2VuZCkKIHsgfQoKICAgICAgZGlzY3JldGVfZGlzdHJpYnV0aW9uKGluaXRpYWxpemVyX2xp
c3Q8ZG91YmxlPiBfX3dsKQogICAgICA6IF9NX3BhcmFtKF9fd2wpCiAgICAgIHsgfQoKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX0Z1bmM+CiBkaXNjcmV0ZV9kaXN0cmlidXRpb24oc2l6ZV90IF9f
bncsIGRvdWJsZSBfX3htaW4sIGRvdWJsZSBfX3htYXgsCiAgICAgICAgIF9GdW5jIF9fZncpCiA6
IF9NX3BhcmFtKF9fbncsIF9feG1pbiwgX194bWF4LCBfX2Z3KQogeyB9CgogICAgICBleHBsaWNp
dAogICAgICBkaXNjcmV0ZV9kaXN0cmlidXRpb24oY29uc3QgcGFyYW1fdHlwZSYgX19wKQogICAg
ICA6IF9NX3BhcmFtKF9fcCkKICAgICAgeyB9CgoKCgogICAgICB2b2lkCiAgICAgIHJlc2V0KCkK
ICAgICAgeyB9CgoKCgogICAgICBzdGQ6OnZlY3Rvcjxkb3VibGU+CiAgICAgIHByb2JhYmlsaXRp
ZXMoKSBjb25zdAogICAgICB7CiByZXR1cm4gX01fcGFyYW0uX01fcHJvYi5lbXB0eSgpCiAgID8g
c3RkOjp2ZWN0b3I8ZG91YmxlPigxLCAxLjApIDogX01fcGFyYW0uX01fcHJvYjsKICAgICAgfQoK
CgoKICAgICAgcGFyYW1fdHlwZQogICAgICBwYXJhbSgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9N
X3BhcmFtOyB9CgoKCgoKICAgICAgdm9pZAogICAgICBwYXJhbShjb25zdCBwYXJhbV90eXBlJiBf
X3BhcmFtKQogICAgICB7IF9NX3BhcmFtID0gX19wYXJhbTsgfQoKCgoKICAgICAgcmVzdWx0X3R5
cGUKICAgICAgbWluKCkgY29uc3QKICAgICAgeyByZXR1cm4gcmVzdWx0X3R5cGUoMCk7IH0KCgoK
CiAgICAgIHJlc3VsdF90eXBlCiAgICAgIG1heCgpIGNvbnN0CiAgICAgIHsKIHJldHVybiBfTV9w
YXJhbS5fTV9wcm9iLmVtcHR5KCkKICAgPyByZXN1bHRfdHlwZSgwKSA6IHJlc3VsdF90eXBlKF9N
X3BhcmFtLl9NX3Byb2Iuc2l6ZSgpIC0gMSk7CiAgICAgIH0KCgoKCiAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogcmVzdWx0X3R5cGUKIG9wZXJh
dG9yKCkoX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZykKIHsgcmV0dXJuIHRo
aXMtPm9wZXJhdG9yKCkoX191cm5nLCBfTV9wYXJhbSk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogcmVzdWx0X3R5cGUKIG9wZXJhdG9y
KCkoX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJh
bV90eXBlJiBfX3ApOwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwK
ICAgICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9f
Z2VuZXJhdGUoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAg
IF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcpCiB7IHRoaXMtPl9fZ2VuZXJh
dGUoX19mLCBfX3QsIF9fdXJuZywgX01fcGFyYW0pOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVy
R2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZShfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0Zvcndh
cmRJdGVyYXRvciBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJu
ZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiB7IHRoaXMtPl9fZ2VuZXJhdGVfaW1wbChf
X2YsIF9fdCwgX191cm5nLCBfX3ApOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9y
bVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUocmVzdWx0X3R5cGUqIF9f
ZiwgcmVzdWx0X3R5cGUqIF9fdCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYg
X191cm5nLAogICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKIHsgdGhpcy0+X19nZW5lcmF0ZV9p
bXBsKF9fZiwgX190LCBfX3VybmcsIF9fcCk7IH0KCgoKCgogICAgICBmcmllbmQgYm9vbAogICAg
ICBvcGVyYXRvcj09KGNvbnN0IGRpc2NyZXRlX2Rpc3RyaWJ1dGlvbiYgX19kMSwKICAgY29uc3Qg
ZGlzY3JldGVfZGlzdHJpYnV0aW9uJiBfX2QyKQogICAgICB7IHJldHVybiBfX2QxLl9NX3BhcmFt
ID09IF9fZDIuX01fcGFyYW07IH0KIyA1NDMwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9yYW5kb20uaCIgMwogICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfSW50VHlwZTEsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KIGZyaWVu
ZCBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKIG9wZXJhdG9yPDwoc3RkOjpi
YXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9fb3MsCiAgICAgY29uc3Qgc3RkOjpkaXNj
cmV0ZV9kaXN0cmlidXRpb248X0ludFR5cGUxPiYgX194KTsKIyA1NDQ2ICIvbW50L3N0b3JlL0FS
TS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9yYW5kb20uaCIgMwogICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50VHlwZTEsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg
X1RyYWl0cz4KIGZyaWVuZCBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKIG9w
ZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAgICAg
c3RkOjpkaXNjcmV0ZV9kaXN0cmlidXRpb248X0ludFR5cGUxPiYgX194KTsKCiAgICBwcml2YXRl
OgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVu
YW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZV9pbXBs
KF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgX1VuaWZvcm1S
YW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKTsK
CiAgICAgIHBhcmFtX3R5cGUgX01fcGFyYW07CiAgICB9OwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ludFR5cGU+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25zdCBzdGQ6OmRp
c2NyZXRlX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT4mIF9fZDEsCiAgICAgICAgY29uc3Qgc3RkOjpk
aXNjcmV0ZV9kaXN0cmlidXRpb248X0ludFR5cGU+JiBfX2QyKQogICAgeyByZXR1cm4gIShfX2Qx
ID09IF9fZDIpOyB9CiMgNTQ3OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOC4xL2JpdHMvcmFuZG9tLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5
cGUgPSBkb3VibGU+CiAgICBjbGFzcyBwaWVjZXdpc2VfY29uc3RhbnRfZGlzdHJpYnV0aW9uCiAg
ICB7CiAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19mbG9hdGluZ19wb2ludDxfUmVhbFR5cGU+
Ojp2YWx1ZSwKICAgICAgInRlbXBsYXRlIGFyZ3VtZW50IG5vdCBhIGZsb2F0aW5nIHBvaW50IHR5
cGUiKTsKCiAgICBwdWJsaWM6CgogICAgICB0eXBlZGVmIF9SZWFsVHlwZSByZXN1bHRfdHlwZTsK
CiAgICAgIHN0cnVjdCBwYXJhbV90eXBlCiAgICAgIHsKIHR5cGVkZWYgcGllY2V3aXNlX2NvbnN0
YW50X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+IGRpc3RyaWJ1dGlvbl90eXBlOwogZnJpZW5kIGNs
YXNzIHBpZWNld2lzZV9jb25zdGFudF9kaXN0cmlidXRpb248X1JlYWxUeXBlPjsKCiBwYXJhbV90
eXBlKCkKIDogX01faW50KCksIF9NX2RlbigpLCBfTV9jcCgpCiB7IH0KCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBfSW5wdXRJdGVyYXRvckIsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yVz4KICAgcGFyYW1f
dHlwZShfSW5wdXRJdGVyYXRvckIgX19iZmlyc3QsCiAgICAgICBfSW5wdXRJdGVyYXRvckIgX19i
ZW5kLAogICAgICAgX0lucHV0SXRlcmF0b3JXIF9fd2JlZ2luKTsKCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRnVuYz4KICAgcGFyYW1fdHlwZShpbml0aWFsaXplcl9saXN0PF9SZWFsVHlwZT4gX19iaSwg
X0Z1bmMgX19mdyk7CgogdGVtcGxhdGU8dHlwZW5hbWUgX0Z1bmM+CiAgIHBhcmFtX3R5cGUoc2l6
ZV90IF9fbncsIF9SZWFsVHlwZSBfX3htaW4sIF9SZWFsVHlwZSBfX3htYXgsCiAgICAgICBfRnVu
YyBfX2Z3KTsKCgogcGFyYW1fdHlwZShjb25zdCBwYXJhbV90eXBlJikgPSBkZWZhdWx0OwogcGFy
YW1fdHlwZSYgb3BlcmF0b3I9KGNvbnN0IHBhcmFtX3R5cGUmKSA9IGRlZmF1bHQ7Cgogc3RkOjp2
ZWN0b3I8X1JlYWxUeXBlPgogaW50ZXJ2YWxzKCkgY29uc3QKIHsKICAgaWYgKF9NX2ludC5lbXB0
eSgpKQogICAgIHsKICAgICAgIHN0ZDo6dmVjdG9yPF9SZWFsVHlwZT4gX190bXAoMik7CiAgICAg
ICBfX3RtcFsxXSA9IF9SZWFsVHlwZSgxKTsKICAgICAgIHJldHVybiBfX3RtcDsKICAgICB9CiAg
IGVsc2UKICAgICByZXR1cm4gX01faW50OwogfQoKIHN0ZDo6dmVjdG9yPGRvdWJsZT4KIGRlbnNp
dGllcygpIGNvbnN0CiB7IHJldHVybiBfTV9kZW4uZW1wdHkoKSA/IHN0ZDo6dmVjdG9yPGRvdWJs
ZT4oMSwgMS4wKSA6IF9NX2RlbjsgfQoKIGZyaWVuZCBib29sCiBvcGVyYXRvcj09KGNvbnN0IHBh
cmFtX3R5cGUmIF9fcDEsIGNvbnN0IHBhcmFtX3R5cGUmIF9fcDIpCiB7IHJldHVybiBfX3AxLl9N
X2ludCA9PSBfX3AyLl9NX2ludCAmJiBfX3AxLl9NX2RlbiA9PSBfX3AyLl9NX2RlbjsgfQoKICAg
ICAgcHJpdmF0ZToKIHZvaWQKIF9NX2luaXRpYWxpemUoKTsKCiBzdGQ6OnZlY3RvcjxfUmVhbFR5
cGU+IF9NX2ludDsKIHN0ZDo6dmVjdG9yPGRvdWJsZT4gX01fZGVuOwogc3RkOjp2ZWN0b3I8ZG91
YmxlPiBfTV9jcDsKICAgICAgfTsKCiAgICAgIGV4cGxpY2l0CiAgICAgIHBpZWNld2lzZV9jb25z
dGFudF9kaXN0cmlidXRpb24oKQogICAgICA6IF9NX3BhcmFtKCkKICAgICAgeyB9CgogICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvckIsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9y
Vz4KIHBpZWNld2lzZV9jb25zdGFudF9kaXN0cmlidXRpb24oX0lucHV0SXRlcmF0b3JCIF9fYmZp
cnN0LAogICAgIF9JbnB1dEl0ZXJhdG9yQiBfX2JlbmQsCiAgICAgX0lucHV0SXRlcmF0b3JXIF9f
d2JlZ2luKQogOiBfTV9wYXJhbShfX2JmaXJzdCwgX19iZW5kLCBfX3diZWdpbikKIHsgfQoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Z1bmM+CiBwaWVjZXdpc2VfY29uc3RhbnRfZGlzdHJpYnV0
aW9uKGluaXRpYWxpemVyX2xpc3Q8X1JlYWxUeXBlPiBfX2JsLAogICAgIF9GdW5jIF9fZncpCiA6
IF9NX3BhcmFtKF9fYmwsIF9fZncpCiB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9GdW5j
PgogcGllY2V3aXNlX2NvbnN0YW50X2Rpc3RyaWJ1dGlvbihzaXplX3QgX19udywKICAgICBfUmVh
bFR5cGUgX194bWluLCBfUmVhbFR5cGUgX194bWF4LAogICAgIF9GdW5jIF9fZncpCiA6IF9NX3Bh
cmFtKF9fbncsIF9feG1pbiwgX194bWF4LCBfX2Z3KQogeyB9CgogICAgICBleHBsaWNpdAogICAg
ICBwaWVjZXdpc2VfY29uc3RhbnRfZGlzdHJpYnV0aW9uKGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkK
ICAgICAgOiBfTV9wYXJhbShfX3ApCiAgICAgIHsgfQoKCgoKICAgICAgdm9pZAogICAgICByZXNl
dCgpCiAgICAgIHsgfQoKCgoKICAgICAgc3RkOjp2ZWN0b3I8X1JlYWxUeXBlPgogICAgICBpbnRl
cnZhbHMoKSBjb25zdAogICAgICB7CiBpZiAoX01fcGFyYW0uX01faW50LmVtcHR5KCkpCiAgIHsK
ICAgICBzdGQ6OnZlY3RvcjxfUmVhbFR5cGU+IF9fdG1wKDIpOwogICAgIF9fdG1wWzFdID0gX1Jl
YWxUeXBlKDEpOwogICAgIHJldHVybiBfX3RtcDsKICAgfQogZWxzZQogICByZXR1cm4gX01fcGFy
YW0uX01faW50OwogICAgICB9CgoKCgogICAgICBzdGQ6OnZlY3Rvcjxkb3VibGU+CiAgICAgIGRl
bnNpdGllcygpIGNvbnN0CiAgICAgIHsKIHJldHVybiBfTV9wYXJhbS5fTV9kZW4uZW1wdHkoKQog
ICA/IHN0ZDo6dmVjdG9yPGRvdWJsZT4oMSwgMS4wKSA6IF9NX3BhcmFtLl9NX2RlbjsKICAgICAg
fQoKCgoKICAgICAgcGFyYW1fdHlwZQogICAgICBwYXJhbSgpIGNvbnN0CiAgICAgIHsgcmV0dXJu
IF9NX3BhcmFtOyB9CgoKCgoKICAgICAgdm9pZAogICAgICBwYXJhbShjb25zdCBwYXJhbV90eXBl
JiBfX3BhcmFtKQogICAgICB7IF9NX3BhcmFtID0gX19wYXJhbTsgfQoKCgoKICAgICAgcmVzdWx0
X3R5cGUKICAgICAgbWluKCkgY29uc3QKICAgICAgewogcmV0dXJuIF9NX3BhcmFtLl9NX2ludC5l
bXB0eSgpCiAgID8gcmVzdWx0X3R5cGUoMCkgOiBfTV9wYXJhbS5fTV9pbnQuZnJvbnQoKTsKICAg
ICAgfQoKCgoKICAgICAgcmVzdWx0X3R5cGUKICAgICAgbWF4KCkgY29uc3QKICAgICAgewogcmV0
dXJuIF9NX3BhcmFtLl9NX2ludC5lbXB0eSgpCiAgID8gcmVzdWx0X3R5cGUoMSkgOiBfTV9wYXJh
bS5fTV9pbnQuYmFjaygpOwogICAgICB9CgoKCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5p
Zm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHJlc3VsdF90eXBlCiBvcGVyYXRvcigpKF9Vbmlm
b3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcpCiB7IHJldHVybiB0aGlzLT5vcGVyYXRv
cigpKF9fdXJuZywgX01fcGFyYW0pOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9y
bVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHJlc3VsdF90eXBlCiBvcGVyYXRvcigpKF9Vbmlmb3Jt
UmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19w
KTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgICAgdHlw
ZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKF9G
b3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgICBfVW5pZm9ybVJh
bmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nKQogeyB0aGlzLT5fX2dlbmVyYXRlKF9fZiwgX190
LCBfX3VybmcsIF9NX3BhcmFtKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJ
dGVyYXRvciwKICAgICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4K
IHZvaWQKIF9fZ2VuZXJhdGUoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3Ig
X190LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgY29u
c3QgcGFyYW1fdHlwZSYgX19wKQogeyB0aGlzLT5fX2dlbmVyYXRlX2ltcGwoX19mLCBfX3QsIF9f
dXJuZywgX19wKTsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1i
ZXJHZW5lcmF0b3I+CiB2b2lkCiBfX2dlbmVyYXRlKHJlc3VsdF90eXBlKiBfX2YsIHJlc3VsdF90
eXBlKiBfX3QsCiAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAg
ICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiB7IHRoaXMtPl9fZ2VuZXJhdGVfaW1wbChfX2YsIF9f
dCwgX191cm5nLCBfX3ApOyB9CgoKCgoKICAgICAgZnJpZW5kIGJvb2wKICAgICAgb3BlcmF0b3I9
PShjb25zdCBwaWVjZXdpc2VfY29uc3RhbnRfZGlzdHJpYnV0aW9uJiBfX2QxLAogICBjb25zdCBw
aWVjZXdpc2VfY29uc3RhbnRfZGlzdHJpYnV0aW9uJiBfX2QyKQogICAgICB7IHJldHVybiBfX2Qx
Ll9NX3BhcmFtID09IF9fZDIuX01fcGFyYW07IH0KIyA1Njk3ICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9yYW5kb20uaCIgMwogICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUxLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp
dHM+CiBmcmllbmQgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiBvcGVyYXRv
cjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAgIGNvbnN0
IHN0ZDo6cGllY2V3aXNlX2NvbnN0YW50X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGUxPiYgX194KTsK
IyA1NzEzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEv
Yml0cy9yYW5kb20uaCIgMwogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUxLCB0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiBmcmllbmQgc3RkOjpiYXNpY19pc3RyZWFt
PF9DaGFyVCwgX1RyYWl0cz4mCiBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQs
IF9UcmFpdHM+JiBfX2lzLAogICAgIHN0ZDo6cGllY2V3aXNlX2NvbnN0YW50X2Rpc3RyaWJ1dGlv
bjxfUmVhbFR5cGUxPiYgX194KTsKCiAgICBwcml2YXRlOgogICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVy
R2VuZXJhdG9yPgogdm9pZAogX19nZW5lcmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBf
Rm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9f
dXJuZywKICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKTsKCiAgICAgIHBhcmFtX3R5cGUgX01fcGFy
YW07CiAgICB9OwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlPgogICAgaW5saW5l
IGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3Qgc3RkOjpwaWVjZXdpc2VfY29uc3RhbnRfZGlzdHJp
YnV0aW9uPF9SZWFsVHlwZT4mIF9fZDEsCiAgICAgICAgY29uc3Qgc3RkOjpwaWVjZXdpc2VfY29u
c3RhbnRfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9fZDIpCiAgICB7IHJldHVybiAhKF9fZDEg
PT0gX19kMik7IH0KIyA1NzQ2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC44LjEvYml0cy9yYW5kb20uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlw
ZSA9IGRvdWJsZT4KICAgIGNsYXNzIHBpZWNld2lzZV9saW5lYXJfZGlzdHJpYnV0aW9uCiAgICB7
CiAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19mbG9hdGluZ19wb2ludDxfUmVhbFR5cGU+Ojp2
YWx1ZSwKICAgICAgInRlbXBsYXRlIGFyZ3VtZW50IG5vdCBhIGZsb2F0aW5nIHBvaW50IHR5cGUi
KTsKCiAgICBwdWJsaWM6CgogICAgICB0eXBlZGVmIF9SZWFsVHlwZSByZXN1bHRfdHlwZTsKCiAg
ICAgIHN0cnVjdCBwYXJhbV90eXBlCiAgICAgIHsKIHR5cGVkZWYgcGllY2V3aXNlX2xpbmVhcl9k
aXN0cmlidXRpb248X1JlYWxUeXBlPiBkaXN0cmlidXRpb25fdHlwZTsKIGZyaWVuZCBjbGFzcyBw
aWVjZXdpc2VfbGluZWFyX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+OwoKIHBhcmFtX3R5cGUoKQog
OiBfTV9pbnQoKSwgX01fZGVuKCksIF9NX2NwKCksIF9NX20oKQogeyB9CgogdGVtcGxhdGU8dHlw
ZW5hbWUgX0lucHV0SXRlcmF0b3JCLCB0eXBlbmFtZSBfSW5wdXRJdGVyYXRvclc+CiAgIHBhcmFt
X3R5cGUoX0lucHV0SXRlcmF0b3JCIF9fYmZpcnN0LAogICAgICAgX0lucHV0SXRlcmF0b3JCIF9f
YmVuZCwKICAgICAgIF9JbnB1dEl0ZXJhdG9yVyBfX3diZWdpbik7CgogdGVtcGxhdGU8dHlwZW5h
bWUgX0Z1bmM+CiAgIHBhcmFtX3R5cGUoaW5pdGlhbGl6ZXJfbGlzdDxfUmVhbFR5cGU+IF9fYmws
IF9GdW5jIF9fZncpOwoKIHRlbXBsYXRlPHR5cGVuYW1lIF9GdW5jPgogICBwYXJhbV90eXBlKHNp
emVfdCBfX253LCBfUmVhbFR5cGUgX194bWluLCBfUmVhbFR5cGUgX194bWF4LAogICAgICAgX0Z1
bmMgX19mdyk7CgoKIHBhcmFtX3R5cGUoY29uc3QgcGFyYW1fdHlwZSYpID0gZGVmYXVsdDsKIHBh
cmFtX3R5cGUmIG9wZXJhdG9yPShjb25zdCBwYXJhbV90eXBlJikgPSBkZWZhdWx0OwoKIHN0ZDo6
dmVjdG9yPF9SZWFsVHlwZT4KIGludGVydmFscygpIGNvbnN0CiB7CiAgIGlmIChfTV9pbnQuZW1w
dHkoKSkKICAgICB7CiAgICAgICBzdGQ6OnZlY3RvcjxfUmVhbFR5cGU+IF9fdG1wKDIpOwogICAg
ICAgX190bXBbMV0gPSBfUmVhbFR5cGUoMSk7CiAgICAgICByZXR1cm4gX190bXA7CiAgICAgfQog
ICBlbHNlCiAgICAgcmV0dXJuIF9NX2ludDsKIH0KCiBzdGQ6OnZlY3Rvcjxkb3VibGU+CiBkZW5z
aXRpZXMoKSBjb25zdAogeyByZXR1cm4gX01fZGVuLmVtcHR5KCkgPyBzdGQ6OnZlY3Rvcjxkb3Vi
bGU+KDIsIDEuMCkgOiBfTV9kZW47IH0KCiBmcmllbmQgYm9vbAogb3BlcmF0b3I9PShjb25zdCBw
YXJhbV90eXBlJiBfX3AxLCBjb25zdCBwYXJhbV90eXBlJiBfX3AyKQogeyByZXR1cm4gKF9fcDEu
X01faW50ID09IF9fcDIuX01faW50CiAgICAmJiBfX3AxLl9NX2RlbiA9PSBfX3AyLl9NX2Rlbik7
IH0KCiAgICAgIHByaXZhdGU6CiB2b2lkCiBfTV9pbml0aWFsaXplKCk7Cgogc3RkOjp2ZWN0b3I8
X1JlYWxUeXBlPiBfTV9pbnQ7CiBzdGQ6OnZlY3Rvcjxkb3VibGU+IF9NX2RlbjsKIHN0ZDo6dmVj
dG9yPGRvdWJsZT4gX01fY3A7CiBzdGQ6OnZlY3Rvcjxkb3VibGU+IF9NX207CiAgICAgIH07Cgog
ICAgICBleHBsaWNpdAogICAgICBwaWVjZXdpc2VfbGluZWFyX2Rpc3RyaWJ1dGlvbigpCiAgICAg
IDogX01fcGFyYW0oKQogICAgICB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0
ZXJhdG9yQiwgdHlwZW5hbWUgX0lucHV0SXRlcmF0b3JXPgogcGllY2V3aXNlX2xpbmVhcl9kaXN0
cmlidXRpb24oX0lucHV0SXRlcmF0b3JCIF9fYmZpcnN0LAogICAgICAgICAgX0lucHV0SXRlcmF0
b3JCIF9fYmVuZCwKICAgICAgICAgIF9JbnB1dEl0ZXJhdG9yVyBfX3diZWdpbikKIDogX01fcGFy
YW0oX19iZmlyc3QsIF9fYmVuZCwgX193YmVnaW4pCiB7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9GdW5jPgogcGllY2V3aXNlX2xpbmVhcl9kaXN0cmlidXRpb24oaW5pdGlhbGl6ZXJfbGlz
dDxfUmVhbFR5cGU+IF9fYmwsCiAgICAgICAgICBfRnVuYyBfX2Z3KQogOiBfTV9wYXJhbShfX2Js
LCBfX2Z3KQogeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnVuYz4KIHBpZWNld2lzZV9s
aW5lYXJfZGlzdHJpYnV0aW9uKHNpemVfdCBfX253LAogICAgICAgICAgX1JlYWxUeXBlIF9feG1p
biwgX1JlYWxUeXBlIF9feG1heCwKICAgICAgICAgIF9GdW5jIF9fZncpCiA6IF9NX3BhcmFtKF9f
bncsIF9feG1pbiwgX194bWF4LCBfX2Z3KQogeyB9CgogICAgICBleHBsaWNpdAogICAgICBwaWVj
ZXdpc2VfbGluZWFyX2Rpc3RyaWJ1dGlvbihjb25zdCBwYXJhbV90eXBlJiBfX3ApCiAgICAgIDog
X01fcGFyYW0oX19wKQogICAgICB7IH0KCgoKCiAgICAgIHZvaWQKICAgICAgcmVzZXQoKQogICAg
ICB7IH0KCgoKCiAgICAgIHN0ZDo6dmVjdG9yPF9SZWFsVHlwZT4KICAgICAgaW50ZXJ2YWxzKCkg
Y29uc3QKICAgICAgewogaWYgKF9NX3BhcmFtLl9NX2ludC5lbXB0eSgpKQogICB7CiAgICAgc3Rk
Ojp2ZWN0b3I8X1JlYWxUeXBlPiBfX3RtcCgyKTsKICAgICBfX3RtcFsxXSA9IF9SZWFsVHlwZSgx
KTsKICAgICByZXR1cm4gX190bXA7CiAgIH0KIGVsc2UKICAgcmV0dXJuIF9NX3BhcmFtLl9NX2lu
dDsKICAgICAgfQoKCgoKCiAgICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4KICAgICAgZGVuc2l0aWVz
KCkgY29uc3QKICAgICAgewogcmV0dXJuIF9NX3BhcmFtLl9NX2Rlbi5lbXB0eSgpCiAgID8gc3Rk
Ojp2ZWN0b3I8ZG91YmxlPigyLCAxLjApIDogX01fcGFyYW0uX01fZGVuOwogICAgICB9CgoKCgog
ICAgICBwYXJhbV90eXBlCiAgICAgIHBhcmFtKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fcGFy
YW07IH0KCgoKCgogICAgICB2b2lkCiAgICAgIHBhcmFtKGNvbnN0IHBhcmFtX3R5cGUmIF9fcGFy
YW0pCiAgICAgIHsgX01fcGFyYW0gPSBfX3BhcmFtOyB9CgoKCgogICAgICByZXN1bHRfdHlwZQog
ICAgICBtaW4oKSBjb25zdAogICAgICB7CiByZXR1cm4gX01fcGFyYW0uX01faW50LmVtcHR5KCkK
ICAgPyByZXN1bHRfdHlwZSgwKSA6IF9NX3BhcmFtLl9NX2ludC5mcm9udCgpOwogICAgICB9CgoK
CgogICAgICByZXN1bHRfdHlwZQogICAgICBtYXgoKSBjb25zdAogICAgICB7CiByZXR1cm4gX01f
cGFyYW0uX01faW50LmVtcHR5KCkKICAgPyByZXN1bHRfdHlwZSgxKSA6IF9NX3BhcmFtLl9NX2lu
dC5iYWNrKCk7CiAgICAgIH0KCgoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFu
ZG9tTnVtYmVyR2VuZXJhdG9yPgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5k
b21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZykKIHsgcmV0dXJuIHRoaXMtPm9wZXJhdG9yKCkoX191
cm5nLCBfTV9wYXJhbSk7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9t
TnVtYmVyR2VuZXJhdG9yPgogcmVzdWx0X3R5cGUKIG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21O
dW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApOwoKICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgICB0eXBlbmFtZSBf
VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUoX0ZvcndhcmRJ
dGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgIF9Vbmlmb3JtUmFuZG9tTnVt
YmVyR2VuZXJhdG9yJiBfX3VybmcpCiB7IHRoaXMtPl9fZ2VuZXJhdGUoX19mLCBfX3QsIF9fdXJu
ZywgX01fcGFyYW0pOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9y
LAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9pZAog
X19nZW5lcmF0ZShfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAg
ICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICBjb25zdCBwYXJh
bV90eXBlJiBfX3ApCiB7IHRoaXMtPl9fZ2VuZXJhdGVfaW1wbChfX2YsIF9fdCwgX191cm5nLCBf
X3ApOyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVy
YXRvcj4KIHZvaWQKIF9fZ2VuZXJhdGUocmVzdWx0X3R5cGUqIF9fZiwgcmVzdWx0X3R5cGUqIF9f
dCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICAgIGNvbnN0
IHBhcmFtX3R5cGUmIF9fcCkKIHsgdGhpcy0+X19nZW5lcmF0ZV9pbXBsKF9fZiwgX190LCBfX3Vy
bmcsIF9fcCk7IH0KCgoKCgogICAgICBmcmllbmQgYm9vbAogICAgICBvcGVyYXRvcj09KGNvbnN0
IHBpZWNld2lzZV9saW5lYXJfZGlzdHJpYnV0aW9uJiBfX2QxLAogICBjb25zdCBwaWVjZXdpc2Vf
bGluZWFyX2Rpc3RyaWJ1dGlvbiYgX19kMikKICAgICAgeyByZXR1cm4gX19kMS5fTV9wYXJhbSA9
PSBfX2QyLl9NX3BhcmFtOyB9CiMgNTk2NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvcmFuZG9tLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgX1JlYWxUeXBlMSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogZnJpZW5k
IHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jgogb3BlcmF0b3I8PChzdGQ6OmJh
c2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vcywKICAgICBjb25zdCBzdGQ6OnBpZWNl
d2lzZV9saW5lYXJfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZTE+JiBfX3gpOwojIDU5ODMgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4x
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3JhbmRvbS5o
IiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZTEsIHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cz4KIGZyaWVuZCBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJh
aXRzPiYKIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9f
aXMsCiAgICAgc3RkOjpwaWVjZXdpc2VfbGluZWFyX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGUxPiYg
X194KTsKCiAgICBwcml2YXRlOgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJh
dG9yLAogICAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogdm9p
ZAogX19nZW5lcmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9y
IF9fdCwKICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgY29uc3Qg
cGFyYW1fdHlwZSYgX19wKTsKCiAgICAgIHBhcmFtX3R5cGUgX01fcGFyYW07CiAgICB9OwoKCgoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJh
dG9yIT0oY29uc3Qgc3RkOjpwaWVjZXdpc2VfbGluZWFyX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+
JiBfX2QxLAogICAgICAgIGNvbnN0IHN0ZDo6cGllY2V3aXNlX2xpbmVhcl9kaXN0cmlidXRpb248
X1JlYWxUeXBlPiYgX19kMikKICAgIHsgcmV0dXJuICEoX19kMSA9PSBfX2QyKTsgfQojIDYwMjQg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3Jh
bmRvbS5oIiAzCiAgY2xhc3Mgc2VlZF9zZXEKICB7CgogIHB1YmxpYzoKCiAgICB0eXBlZGVmIHVp
bnRfbGVhc3QzMl90IHJlc3VsdF90eXBlOwoKCiAgICBzZWVkX3NlcSgpCiAgICA6IF9NX3YoKQog
ICAgeyB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGU+CiAgICAgIHNlZWRfc2VxKHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxfSW50VHlwZT4gaWwpOwoKICAgIHRlbXBsYXRlPHR5cGVuYW1l
IF9JbnB1dEl0ZXJhdG9yPgogICAgICBzZWVkX3NlcShfSW5wdXRJdGVyYXRvciBfX2JlZ2luLCBf
SW5wdXRJdGVyYXRvciBfX2VuZCk7CgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nl
c3NJdGVyYXRvcj4KICAgICAgdm9pZAogICAgICBnZW5lcmF0ZShfUmFuZG9tQWNjZXNzSXRlcmF0
b3IgX19iZWdpbiwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZW5kKTsKCgogICAgc2l6ZV90IHNp
emUoKSBjb25zdAogICAgeyByZXR1cm4gX01fdi5zaXplKCk7IH0KCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPdXRwdXRJdGVyYXRvcj4KICAgICAgdm9pZAogICAgICBwYXJhbShPdXRwdXRJdGVyYXRv
ciBfX2Rlc3QpIGNvbnN0CiAgICAgIHsgc3RkOjpjb3B5KF9NX3YuYmVnaW4oKSwgX01fdi5lbmQo
KSwgX19kZXN0KTsgfQoKICBwcml2YXRlOgoKICAgIHN0ZDo6dmVjdG9yPHJlc3VsdF90eXBlPiBf
TV92OwogIH07CgoKCgoKCn0KIyA1MSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOC4xL3JhbmRvbSIgMiAzCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvb3B0X3JhbmRvbS5oIiAxIDMKIyAzMyAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44
LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvb3B0X3Jh
bmRvbS5oIiAzCiAgICAgICAKIyAzNCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOC4xL2JpdHMvb3B0X3JhbmRvbS5oIiAzCiMgNTIgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9yYW5kb20iIDIgMwojIDEgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4x
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3JhbmRvbS50
Y2MiIDEgMwojIDMzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysv
NC44LjEvYml0cy9yYW5kb20udGNjIiAzCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOC4xL251bWVyaWMiIDEgMwojIDU4ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvbnVtZXJpYyIgMwogICAgICAgCiMgNTkg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9udW1lcmlj
IiAzCgoKCiMgMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OC4xL2JpdHMvc3RsX251bWVyaWMuaCIgMSAzCiMgNjUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9udW1lcmljLmgiIDMKbmFtZXNwYWNl
IHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgojIDgw
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9z
dGxfbnVtZXJpYy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlw
ZW5hbWUgX1RwPgogICAgdm9pZAogICAgaW90YShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9G
b3J3YXJkSXRlcmF0b3IgX19sYXN0LCBfVHAgX192YWx1ZSkKICAgIHsKCiAgICAgCgogICAgIAoK
ICAgICAgOwoKICAgICAgZm9yICg7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiB7CiAg
ICpfX2ZpcnN0ID0gX192YWx1ZTsKICAgKytfX3ZhbHVlOwogfQogICAgfQoKCn0KCgoKbmFtZXNw
YWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7Cgoj
IDExOCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2Jp
dHMvc3RsX251bWVyaWMuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0
eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgX1RwCiAgICBhY2N1bXVsYXRlKF9JbnB1dEl0ZXJhdG9y
IF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwgX1RwIF9faW5pdCkKICAgIHsKCiAgICAg
CiAgICAgIDsKCiAgICAgIGZvciAoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogX19p
bml0ID0gX19pbml0ICsgKl9fZmlyc3Q7CiAgICAgIHJldHVybiBfX2luaXQ7CiAgICB9CiMgMTQ0
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9z
dGxfbnVtZXJpYy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5cGVu
YW1lIF9UcCwgdHlwZW5hbWUgX0JpbmFyeU9wZXJhdGlvbj4KICAgIGlubGluZSBfVHAKICAgIGFj
Y3VtdWxhdGUoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LCBf
VHAgX19pbml0LAogICAgICAgIF9CaW5hcnlPcGVyYXRpb24gX19iaW5hcnlfb3ApCiAgICB7Cgog
ICAgIAogICAgICA7CgogICAgICBmb3IgKDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkK
IF9faW5pdCA9IF9fYmluYXJ5X29wKF9faW5pdCwgKl9fZmlyc3QpOwogICAgICByZXR1cm4gX19p
bml0OwogICAgfQojIDE3MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOC4xL2JpdHMvc3RsX251bWVyaWMuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1
dEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0lucHV0SXRlcmF0b3IyLCB0eXBlbmFtZSBfVHA+CiAgICBp
bmxpbmUgX1RwCiAgICBpbm5lcl9wcm9kdWN0KF9JbnB1dEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0lu
cHV0SXRlcmF0b3IxIF9fbGFzdDEsCiAgICBfSW5wdXRJdGVyYXRvcjIgX19maXJzdDIsIF9UcCBf
X2luaXQpCiAgICB7CgogICAgIAogICAgIAogICAgICA7CgogICAgICBmb3IgKDsgX19maXJzdDEg
IT0gX19sYXN0MTsgKytfX2ZpcnN0MSwgKytfX2ZpcnN0MikKIF9faW5pdCA9IF9faW5pdCArICgq
X19maXJzdDEgKiAqX19maXJzdDIpOwogICAgICByZXR1cm4gX19pbml0OwogICAgfQojIDIwMyAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3Rs
X251bWVyaWMuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMSwgdHlwZW5h
bWUgX0lucHV0SXRlcmF0b3IyLCB0eXBlbmFtZSBfVHAsCiAgICB0eXBlbmFtZSBfQmluYXJ5T3Bl
cmF0aW9uMSwgdHlwZW5hbWUgX0JpbmFyeU9wZXJhdGlvbjI+CiAgICBpbmxpbmUgX1RwCiAgICBp
bm5lcl9wcm9kdWN0KF9JbnB1dEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0b3IxIF9f
bGFzdDEsCiAgICBfSW5wdXRJdGVyYXRvcjIgX19maXJzdDIsIF9UcCBfX2luaXQsCiAgICBfQmlu
YXJ5T3BlcmF0aW9uMSBfX2JpbmFyeV9vcDEsCiAgICBfQmluYXJ5T3BlcmF0aW9uMiBfX2JpbmFy
eV9vcDIpCiAgICB7CgogICAgIAogICAgIAogICAgICA7CgogICAgICBmb3IgKDsgX19maXJzdDEg
IT0gX19sYXN0MTsgKytfX2ZpcnN0MSwgKytfX2ZpcnN0MikKIF9faW5pdCA9IF9fYmluYXJ5X29w
MShfX2luaXQsIF9fYmluYXJ5X29wMigqX19maXJzdDEsICpfX2ZpcnN0MikpOwogICAgICByZXR1
cm4gX19pbml0OwogICAgfQojIDIzNSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2lu
Y2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX251bWVyaWMuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1l
IF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3I+CiAgICBfT3V0cHV0SXRl
cmF0b3IKICAgIHBhcnRpYWxfc3VtKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJh
dG9yIF9fbGFzdCwKICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQpCiAgICB7CiAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSBf
VmFsdWVUeXBlOwoKCiAgICAgCiAgICAgCgogICAgICA7CgogICAgICBpZiAoX19maXJzdCA9PSBf
X2xhc3QpCiByZXR1cm4gX19yZXN1bHQ7CiAgICAgIF9WYWx1ZVR5cGUgX192YWx1ZSA9ICpfX2Zp
cnN0OwogICAgICAqX19yZXN1bHQgPSBfX3ZhbHVlOwogICAgICB3aGlsZSAoKytfX2ZpcnN0ICE9
IF9fbGFzdCkKIHsKICAgX192YWx1ZSA9IF9fdmFsdWUgKyAqX19maXJzdDsKICAgKisrX19yZXN1
bHQgPSBfX3ZhbHVlOwogfQogICAgICByZXR1cm4gKytfX3Jlc3VsdDsKICAgIH0KIyAyNzUgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9u
dW1lcmljLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUg
X091dHB1dEl0ZXJhdG9yLAogICAgdHlwZW5hbWUgX0JpbmFyeU9wZXJhdGlvbj4KICAgIF9PdXRw
dXRJdGVyYXRvcgogICAgcGFydGlhbF9zdW0oX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0
SXRlcmF0b3IgX19sYXN0LAogIF9PdXRwdXRJdGVyYXRvciBfX3Jlc3VsdCwgX0JpbmFyeU9wZXJh
dGlvbiBfX2JpbmFyeV9vcCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90
cmFpdHM8X0lucHV0SXRlcmF0b3I+Ojp2YWx1ZV90eXBlIF9WYWx1ZVR5cGU7CgoKICAgICAKICAg
ICAKCiAgICAgIDsKCiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKIHJldHVybiBfX3Jlc3Vs
dDsKICAgICAgX1ZhbHVlVHlwZSBfX3ZhbHVlID0gKl9fZmlyc3Q7CiAgICAgICpfX3Jlc3VsdCA9
IF9fdmFsdWU7CiAgICAgIHdoaWxlICgrK19fZmlyc3QgIT0gX19sYXN0KQogewogICBfX3ZhbHVl
ID0gX19iaW5hcnlfb3AoX192YWx1ZSwgKl9fZmlyc3QpOwogICAqKytfX3Jlc3VsdCA9IF9fdmFs
dWU7CiB9CiAgICAgIHJldHVybiArK19fcmVzdWx0OwogICAgfQojIDMxNSAiL21udC9zdG9yZS9B
Uk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6
ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX251bWVyaWMuaCIg
MwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfT3V0cHV0SXRl
cmF0b3I+CiAgICBfT3V0cHV0SXRlcmF0b3IKICAgIGFkamFjZW50X2RpZmZlcmVuY2UoX0lucHV0
SXRlcmF0b3IgX19maXJzdCwKICAgX0lucHV0SXRlcmF0b3IgX19sYXN0LCBfT3V0cHV0SXRlcmF0
b3IgX19yZXN1bHQpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRz
PF9JbnB1dEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSBfVmFsdWVUeXBlOwoKCiAgICAgCiAgICAgCgog
ICAgICA7CgogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiByZXR1cm4gX19yZXN1bHQ7CiAg
ICAgIF9WYWx1ZVR5cGUgX192YWx1ZSA9ICpfX2ZpcnN0OwogICAgICAqX19yZXN1bHQgPSBfX3Zh
bHVlOwogICAgICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFzdCkKIHsKICAgX1ZhbHVlVHlwZSBf
X3RtcCA9ICpfX2ZpcnN0OwogICAqKytfX3Jlc3VsdCA9IF9fdG1wIC0gX192YWx1ZTsKICAgX192
YWx1ZSA9IHN0ZDo6bW92ZShfX3RtcCk7CiB9CiAgICAgIHJldHVybiArK19fcmVzdWx0OwogICAg
fQojIDM1NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4
LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4x
L2JpdHMvc3RsX251bWVyaWMuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9y
LCB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3IsCiAgICB0eXBlbmFtZSBfQmluYXJ5T3BlcmF0aW9u
PgogICAgX091dHB1dEl0ZXJhdG9yCiAgICBhZGphY2VudF9kaWZmZXJlbmNlKF9JbnB1dEl0ZXJh
dG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgX091dHB1dEl0ZXJhdG9yIF9f
cmVzdWx0LCBfQmluYXJ5T3BlcmF0aW9uIF9fYmluYXJ5X29wKQogICAgewogICAgICB0eXBlZGVm
IHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46OnZhbHVlX3R5cGUgX1Zh
bHVlVHlwZTsKCgogICAgIAogICAgIAoKICAgICAgOwoKICAgICAgaWYgKF9fZmlyc3QgPT0gX19s
YXN0KQogcmV0dXJuIF9fcmVzdWx0OwogICAgICBfVmFsdWVUeXBlIF9fdmFsdWUgPSAqX19maXJz
dDsKICAgICAgKl9fcmVzdWx0ID0gX192YWx1ZTsKICAgICAgd2hpbGUgKCsrX19maXJzdCAhPSBf
X2xhc3QpCiB7CiAgIF9WYWx1ZVR5cGUgX190bXAgPSAqX19maXJzdDsKICAgKisrX19yZXN1bHQg
PSBfX2JpbmFyeV9vcChfX3RtcCwgX192YWx1ZSk7CiAgIF9fdmFsdWUgPSBzdGQ6Om1vdmUoX190
bXApOwogfQogICAgICByZXR1cm4gKytfX3Jlc3VsdDsKICAgIH0KCgp9CiMgNjMgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9udW1lcmljIiAyIDMKIyAz
NCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMv
cmFuZG9tLnRjYyIgMiAzCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxp
dHlfXyAoImRlZmF1bHQiKSkpCnsKCgoKICBuYW1lc3BhY2UgX19kZXRhaWwKICB7CiAKCgoKCgoK
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIF9UcCBfX20sIF9UcCBfX2EsIF9UcCBfX2M+CiAg
ICAgIF9UcAogICAgICBfTW9kPF9UcCwgX19tLCBfX2EsIF9fYywgZmFsc2UsIHRydWU+OjoKICAg
ICAgX19jYWxjKF9UcCBfX3gpCiAgICAgIHsKIGlmIChfX2EgPT0gMSkKICAgX194ICU9IF9fbTsK
IGVsc2UKICAgewogICAgIHN0YXRpYyBjb25zdCBfVHAgX19xID0gX19tIC8gX19hOwogICAgIHN0
YXRpYyBjb25zdCBfVHAgX19yID0gX19tICUgX19hOwoKICAgICBfVHAgX190MSA9IF9fYSAqIChf
X3ggJSBfX3EpOwogICAgIF9UcCBfX3QyID0gX19yICogKF9feCAvIF9fcSk7CiAgICAgaWYgKF9f
dDEgPj0gX190MikKICAgICAgIF9feCA9IF9fdDEgLSBfX3QyOwogICAgIGVsc2UKICAgICAgIF9f
eCA9IF9fbSAtIF9fdDIgKyBfX3QxOwogICB9CgogaWYgKF9fYyAhPSAwKQogICB7CiAgICAgY29u
c3QgX1RwIF9fZCA9IF9fbSAtIF9feDsKICAgICBpZiAoX19kID4gX19jKQogICAgICAgX194ICs9
IF9fYzsKICAgICBlbHNlCiAgICAgICBfX3ggPSBfX2MgLSBfX2Q7CiAgIH0KIHJldHVybiBfX3g7
CiAgICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUg
X091dHB1dEl0ZXJhdG9yLAogICAgICB0eXBlbmFtZSBfVHA+CiAgICAgIF9PdXRwdXRJdGVyYXRv
cgogICAgICBfX25vcm1hbGl6ZShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRv
ciBfX2xhc3QsCiAgICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQsIGNvbnN0IF9UcCYgX19mYWN0
b3IpCiAgICAgIHsKIGZvciAoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0LCArK19fcmVz
dWx0KQogICAqX19yZXN1bHQgPSAqX19maXJzdCAvIF9fZmFjdG9yOwogcmV0dXJuIF9fcmVzdWx0
OwogICAgICB9CgogCiAgfQoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlwZSwgX1VJbnRU
eXBlIF9fYSwgX1VJbnRUeXBlIF9fYywgX1VJbnRUeXBlIF9fbT4KICAgIGNvbnN0ZXhwciBfVUlu
dFR5cGUKICAgIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPF9VSW50VHlwZSwgX19hLCBfX2Ms
IF9fbT46Om11bHRpcGxpZXI7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlwZSwgX1VJbnRU
eXBlIF9fYSwgX1VJbnRUeXBlIF9fYywgX1VJbnRUeXBlIF9fbT4KICAgIGNvbnN0ZXhwciBfVUlu
dFR5cGUKICAgIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPF9VSW50VHlwZSwgX19hLCBfX2Ms
IF9fbT46OmluY3JlbWVudDsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1VJbnRUeXBlLCBfVUludFR5
cGUgX19hLCBfVUludFR5cGUgX19jLCBfVUludFR5cGUgX19tPgogICAgY29uc3RleHByIF9VSW50
VHlwZQogICAgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmU8X1VJbnRUeXBlLCBfX2EsIF9fYywg
X19tPjo6bW9kdWx1czsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1VJbnRUeXBlLCBfVUludFR5cGUg
X19hLCBfVUludFR5cGUgX19jLCBfVUludFR5cGUgX19tPgogICAgY29uc3RleHByIF9VSW50VHlw
ZQogICAgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmU8X1VJbnRUeXBlLCBfX2EsIF9fYywgX19t
Pjo6ZGVmYXVsdF9zZWVkOwoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1VJbnRUeXBlLCBfVUlu
dFR5cGUgX19hLCBfVUludFR5cGUgX19jLCBfVUludFR5cGUgX19tPgogICAgdm9pZAogICAgbGlu
ZWFyX2NvbmdydWVudGlhbF9lbmdpbmU8X1VJbnRUeXBlLCBfX2EsIF9fYywgX19tPjo6CiAgICBz
ZWVkKHJlc3VsdF90eXBlIF9fcykKICAgIHsKICAgICAgaWYgKChfX2RldGFpbDo6X19tb2Q8X1VJ
bnRUeXBlLCBfX20+KF9fYykgPT0gMCkKICAgJiYgKF9fZGV0YWlsOjpfX21vZDxfVUludFR5cGUs
IF9fbT4oX19zKSA9PSAwKSkKIF9NX3ggPSAxOwogICAgICBlbHNlCiBfTV94ID0gX19kZXRhaWw6
Ol9fbW9kPF9VSW50VHlwZSwgX19tPihfX3MpOwogICAgfQoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVUludFR5cGUsIF9VSW50VHlwZSBfX2EsIF9VSW50VHlwZSBfX2MsIF9VSW50VHlwZSBfX20+
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU3NlcT4KICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19jbGFzczxfU3NlcT46OnZhbHVlPjo6dHlwZQogICAgICBsaW5lYXJfY29uZ3J1
ZW50aWFsX2VuZ2luZTxfVUludFR5cGUsIF9fYSwgX19jLCBfX20+OjoKICAgICAgc2VlZChfU3Nl
cSYgX19xKQogICAgICB7CiBjb25zdCBfVUludFR5cGUgX19rMCA9IF9fbSA9PSAwID8gc3RkOjpu
dW1lcmljX2xpbWl0czxfVUludFR5cGU+OjpkaWdpdHMKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiBzdGQ6Ol9fbGcoX19tKTsKIGNvbnN0IF9VSW50VHlwZSBfX2sgPSAoX19rMCAr
IDMxKSAvIDMyOwogdWludF9sZWFzdDMyX3QgX19hcnJbX19rICsgM107CiBfX3EuZ2VuZXJhdGUo
X19hcnIgKyAwLCBfX2FyciArIF9fayArIDMpOwogX1VJbnRUeXBlIF9fZmFjdG9yID0gMXU7CiBf
VUludFR5cGUgX19zdW0gPSAwdTsKIGZvciAoc2l6ZV90IF9faiA9IDA7IF9faiA8IF9fazsgKytf
X2opCiAgIHsKICAgICBfX3N1bSArPSBfX2FycltfX2ogKyAzXSAqIF9fZmFjdG9yOwogICAgIF9f
ZmFjdG9yICo9IF9fZGV0YWlsOjpfU2hpZnQ8X1VJbnRUeXBlLCAzMj46Ol9fdmFsdWU7CiAgIH0K
IHNlZWQoX19zdW0pOwogICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlwZSwgX1VJ
bnRUeXBlIF9fYSwgX1VJbnRUeXBlIF9fYywgX1VJbnRUeXBlIF9fbSwKICAgIHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9U
cmFpdHM+JgogICAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRz
PiYgX19vcywKICAgICAgICBjb25zdCBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZTxfVUludFR5
cGUsCiAgICAgIF9fYSwgX19jLCBfX20+JiBfX2xjcikKICAgIHsKICAgICAgdHlwZWRlZiBzdGQ6
OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX29zdHJlYW1fdHlwZTsKICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBfX29zdHJlYW1fdHlwZTo6aW9zX2Jhc2UgX19pb3NfYmFzZTsKCiAgICAg
IGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZtdGZsYWdzIF9fZmxhZ3MgPSBfX29zLmZsYWdz
KCk7CiAgICAgIGNvbnN0IF9DaGFyVCBfX2ZpbGwgPSBfX29zLmZpbGwoKTsKICAgICAgX19vcy5m
bGFncyhfX2lvc19iYXNlOjpkZWMgfCBfX2lvc19iYXNlOjpmaXhlZCB8IF9faW9zX2Jhc2U6Omxl
ZnQpOwogICAgICBfX29zLmZpbGwoX19vcy53aWRlbignICcpKTsKCiAgICAgIF9fb3MgPDwgX19s
Y3IuX01feDsKCiAgICAgIF9fb3MuZmxhZ3MoX19mbGFncyk7CiAgICAgIF9fb3MuZmlsbChfX2Zp
bGwpOwogICAgICByZXR1cm4gX19vczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1VJbnRU
eXBlLCBfVUludFR5cGUgX19hLCBfVUludFR5cGUgX19jLCBfVUludFR5cGUgX19tLAogICAgdHlw
ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19pc3RyZWFtPF9D
aGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQs
IF9UcmFpdHM+JiBfX2lzLAogICAgICAgIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPF9VSW50
VHlwZSwgX19hLCBfX2MsIF9fbT4mIF9fbGNyKQogICAgewogICAgICB0eXBlZGVmIHN0ZDo6YmFz
aWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9faXN0cmVhbV90eXBlOwogICAgICB0eXBlZGVm
IHR5cGVuYW1lIF9faXN0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19iYXNlOwoKICAgICAgY29u
c3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9IF9faXMuZmxhZ3MoKTsK
ICAgICAgX19pcy5mbGFncyhfX2lvc19iYXNlOjpkZWMpOwoKICAgICAgX19pcyA+PiBfX2xjci5f
TV94OwoKICAgICAgX19pcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgcmV0dXJuIF9faXM7CiAgICB9
CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVUludFR5cGUsCiAgICBzaXplX3QgX193LCBzaXplX3Qg
X19uLCBzaXplX3QgX19tLCBzaXplX3QgX19yLAogICAgX1VJbnRUeXBlIF9fYSwgc2l6ZV90IF9f
dSwgX1VJbnRUeXBlIF9fZCwgc2l6ZV90IF9fcywKICAgIF9VSW50VHlwZSBfX2IsIHNpemVfdCBf
X3QsIF9VSW50VHlwZSBfX2MsIHNpemVfdCBfX2wsCiAgICBfVUludFR5cGUgX19mPgogICAgY29u
c3RleHByIHNpemVfdAogICAgbWVyc2VubmVfdHdpc3Rlcl9lbmdpbmU8X1VJbnRUeXBlLCBfX3cs
IF9fbiwgX19tLCBfX3IsIF9fYSwgX191LCBfX2QsCiAgICAgICBfX3MsIF9fYiwgX190LCBfX2Ms
IF9fbCwgX19mPjo6d29yZF9zaXplOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVUludFR5cGUsCiAg
ICBzaXplX3QgX193LCBzaXplX3QgX19uLCBzaXplX3QgX19tLCBzaXplX3QgX19yLAogICAgX1VJ
bnRUeXBlIF9fYSwgc2l6ZV90IF9fdSwgX1VJbnRUeXBlIF9fZCwgc2l6ZV90IF9fcywKICAgIF9V
SW50VHlwZSBfX2IsIHNpemVfdCBfX3QsIF9VSW50VHlwZSBfX2MsIHNpemVfdCBfX2wsCiAgICBf
VUludFR5cGUgX19mPgogICAgY29uc3RleHByIHNpemVfdAogICAgbWVyc2VubmVfdHdpc3Rlcl9l
bmdpbmU8X1VJbnRUeXBlLCBfX3csIF9fbiwgX19tLCBfX3IsIF9fYSwgX191LCBfX2QsCiAgICAg
ICBfX3MsIF9fYiwgX190LCBfX2MsIF9fbCwgX19mPjo6c3RhdGVfc2l6ZTsKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1VJbnRUeXBlLAogICAgc2l6ZV90IF9fdywgc2l6ZV90IF9fbiwgc2l6ZV90IF9f
bSwgc2l6ZV90IF9fciwKICAgIF9VSW50VHlwZSBfX2EsIHNpemVfdCBfX3UsIF9VSW50VHlwZSBf
X2QsIHNpemVfdCBfX3MsCiAgICBfVUludFR5cGUgX19iLCBzaXplX3QgX190LCBfVUludFR5cGUg
X19jLCBzaXplX3QgX19sLAogICAgX1VJbnRUeXBlIF9fZj4KICAgIGNvbnN0ZXhwciBzaXplX3QK
ICAgIG1lcnNlbm5lX3R3aXN0ZXJfZW5naW5lPF9VSW50VHlwZSwgX193LCBfX24sIF9fbSwgX19y
LCBfX2EsIF9fdSwgX19kLAogICAgICAgX19zLCBfX2IsIF9fdCwgX19jLCBfX2wsIF9fZj46OnNo
aWZ0X3NpemU7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlwZSwKICAgIHNpemVfdCBfX3cs
IHNpemVfdCBfX24sIHNpemVfdCBfX20sIHNpemVfdCBfX3IsCiAgICBfVUludFR5cGUgX19hLCBz
aXplX3QgX191LCBfVUludFR5cGUgX19kLCBzaXplX3QgX19zLAogICAgX1VJbnRUeXBlIF9fYiwg
c2l6ZV90IF9fdCwgX1VJbnRUeXBlIF9fYywgc2l6ZV90IF9fbCwKICAgIF9VSW50VHlwZSBfX2Y+
CiAgICBjb25zdGV4cHIgc2l6ZV90CiAgICBtZXJzZW5uZV90d2lzdGVyX2VuZ2luZTxfVUludFR5
cGUsIF9fdywgX19uLCBfX20sIF9fciwgX19hLCBfX3UsIF9fZCwKICAgICAgIF9fcywgX19iLCBf
X3QsIF9fYywgX19sLCBfX2Y+OjptYXNrX2JpdHM7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50
VHlwZSwKICAgIHNpemVfdCBfX3csIHNpemVfdCBfX24sIHNpemVfdCBfX20sIHNpemVfdCBfX3Is
CiAgICBfVUludFR5cGUgX19hLCBzaXplX3QgX191LCBfVUludFR5cGUgX19kLCBzaXplX3QgX19z
LAogICAgX1VJbnRUeXBlIF9fYiwgc2l6ZV90IF9fdCwgX1VJbnRUeXBlIF9fYywgc2l6ZV90IF9f
bCwKICAgIF9VSW50VHlwZSBfX2Y+CiAgICBjb25zdGV4cHIgX1VJbnRUeXBlCiAgICBtZXJzZW5u
ZV90d2lzdGVyX2VuZ2luZTxfVUludFR5cGUsIF9fdywgX19uLCBfX20sIF9fciwgX19hLCBfX3Us
IF9fZCwKICAgICAgIF9fcywgX19iLCBfX3QsIF9fYywgX19sLCBfX2Y+Ojp4b3JfbWFzazsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1VJbnRUeXBlLAogICAgc2l6ZV90IF9fdywgc2l6ZV90IF9fbiwg
c2l6ZV90IF9fbSwgc2l6ZV90IF9fciwKICAgIF9VSW50VHlwZSBfX2EsIHNpemVfdCBfX3UsIF9V
SW50VHlwZSBfX2QsIHNpemVfdCBfX3MsCiAgICBfVUludFR5cGUgX19iLCBzaXplX3QgX190LCBf
VUludFR5cGUgX19jLCBzaXplX3QgX19sLAogICAgX1VJbnRUeXBlIF9fZj4KICAgIGNvbnN0ZXhw
ciBzaXplX3QKICAgIG1lcnNlbm5lX3R3aXN0ZXJfZW5naW5lPF9VSW50VHlwZSwgX193LCBfX24s
IF9fbSwgX19yLCBfX2EsIF9fdSwgX19kLAogICAgICAgX19zLCBfX2IsIF9fdCwgX19jLCBfX2ws
IF9fZj46OnRlbXBlcmluZ191OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVUludFR5cGUsCiAgICBz
aXplX3QgX193LCBzaXplX3QgX19uLCBzaXplX3QgX19tLCBzaXplX3QgX19yLAogICAgX1VJbnRU
eXBlIF9fYSwgc2l6ZV90IF9fdSwgX1VJbnRUeXBlIF9fZCwgc2l6ZV90IF9fcywKICAgIF9VSW50
VHlwZSBfX2IsIHNpemVfdCBfX3QsIF9VSW50VHlwZSBfX2MsIHNpemVfdCBfX2wsCiAgICBfVUlu
dFR5cGUgX19mPgogICAgY29uc3RleHByIF9VSW50VHlwZQogICAgbWVyc2VubmVfdHdpc3Rlcl9l
bmdpbmU8X1VJbnRUeXBlLCBfX3csIF9fbiwgX19tLCBfX3IsIF9fYSwgX191LCBfX2QsCiAgICAg
ICBfX3MsIF9fYiwgX190LCBfX2MsIF9fbCwgX19mPjo6dGVtcGVyaW5nX2Q7CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9VSW50VHlwZSwKICAgIHNpemVfdCBfX3csIHNpemVfdCBfX24sIHNpemVfdCBf
X20sIHNpemVfdCBfX3IsCiAgICBfVUludFR5cGUgX19hLCBzaXplX3QgX191LCBfVUludFR5cGUg
X19kLCBzaXplX3QgX19zLAogICAgX1VJbnRUeXBlIF9fYiwgc2l6ZV90IF9fdCwgX1VJbnRUeXBl
IF9fYywgc2l6ZV90IF9fbCwKICAgIF9VSW50VHlwZSBfX2Y+CiAgICBjb25zdGV4cHIgc2l6ZV90
CiAgICBtZXJzZW5uZV90d2lzdGVyX2VuZ2luZTxfVUludFR5cGUsIF9fdywgX19uLCBfX20sIF9f
ciwgX19hLCBfX3UsIF9fZCwKICAgICAgIF9fcywgX19iLCBfX3QsIF9fYywgX19sLCBfX2Y+Ojp0
ZW1wZXJpbmdfczsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1VJbnRUeXBlLAogICAgc2l6ZV90IF9f
dywgc2l6ZV90IF9fbiwgc2l6ZV90IF9fbSwgc2l6ZV90IF9fciwKICAgIF9VSW50VHlwZSBfX2Es
IHNpemVfdCBfX3UsIF9VSW50VHlwZSBfX2QsIHNpemVfdCBfX3MsCiAgICBfVUludFR5cGUgX19i
LCBzaXplX3QgX190LCBfVUludFR5cGUgX19jLCBzaXplX3QgX19sLAogICAgX1VJbnRUeXBlIF9f
Zj4KICAgIGNvbnN0ZXhwciBfVUludFR5cGUKICAgIG1lcnNlbm5lX3R3aXN0ZXJfZW5naW5lPF9V
SW50VHlwZSwgX193LCBfX24sIF9fbSwgX19yLCBfX2EsIF9fdSwgX19kLAogICAgICAgX19zLCBf
X2IsIF9fdCwgX19jLCBfX2wsIF9fZj46OnRlbXBlcmluZ19iOwoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVUludFR5cGUsCiAgICBzaXplX3QgX193LCBzaXplX3QgX19uLCBzaXplX3QgX19tLCBzaXpl
X3QgX19yLAogICAgX1VJbnRUeXBlIF9fYSwgc2l6ZV90IF9fdSwgX1VJbnRUeXBlIF9fZCwgc2l6
ZV90IF9fcywKICAgIF9VSW50VHlwZSBfX2IsIHNpemVfdCBfX3QsIF9VSW50VHlwZSBfX2MsIHNp
emVfdCBfX2wsCiAgICBfVUludFR5cGUgX19mPgogICAgY29uc3RleHByIHNpemVfdAogICAgbWVy
c2VubmVfdHdpc3Rlcl9lbmdpbmU8X1VJbnRUeXBlLCBfX3csIF9fbiwgX19tLCBfX3IsIF9fYSwg
X191LCBfX2QsCiAgICAgICBfX3MsIF9fYiwgX190LCBfX2MsIF9fbCwgX19mPjo6dGVtcGVyaW5n
X3Q7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlwZSwKICAgIHNpemVfdCBfX3csIHNpemVf
dCBfX24sIHNpemVfdCBfX20sIHNpemVfdCBfX3IsCiAgICBfVUludFR5cGUgX19hLCBzaXplX3Qg
X191LCBfVUludFR5cGUgX19kLCBzaXplX3QgX19zLAogICAgX1VJbnRUeXBlIF9fYiwgc2l6ZV90
IF9fdCwgX1VJbnRUeXBlIF9fYywgc2l6ZV90IF9fbCwKICAgIF9VSW50VHlwZSBfX2Y+CiAgICBj
b25zdGV4cHIgX1VJbnRUeXBlCiAgICBtZXJzZW5uZV90d2lzdGVyX2VuZ2luZTxfVUludFR5cGUs
IF9fdywgX19uLCBfX20sIF9fciwgX19hLCBfX3UsIF9fZCwKICAgICAgIF9fcywgX19iLCBfX3Qs
IF9fYywgX19sLCBfX2Y+Ojp0ZW1wZXJpbmdfYzsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1VJbnRU
eXBlLAogICAgc2l6ZV90IF9fdywgc2l6ZV90IF9fbiwgc2l6ZV90IF9fbSwgc2l6ZV90IF9fciwK
ICAgIF9VSW50VHlwZSBfX2EsIHNpemVfdCBfX3UsIF9VSW50VHlwZSBfX2QsIHNpemVfdCBfX3Ms
CiAgICBfVUludFR5cGUgX19iLCBzaXplX3QgX190LCBfVUludFR5cGUgX19jLCBzaXplX3QgX19s
LAogICAgX1VJbnRUeXBlIF9fZj4KICAgIGNvbnN0ZXhwciBzaXplX3QKICAgIG1lcnNlbm5lX3R3
aXN0ZXJfZW5naW5lPF9VSW50VHlwZSwgX193LCBfX24sIF9fbSwgX19yLCBfX2EsIF9fdSwgX19k
LAogICAgICAgX19zLCBfX2IsIF9fdCwgX19jLCBfX2wsIF9fZj46OnRlbXBlcmluZ19sOwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVUludFR5cGUsCiAgICBzaXplX3QgX193LCBzaXplX3QgX19uLCBz
aXplX3QgX19tLCBzaXplX3QgX19yLAogICAgX1VJbnRUeXBlIF9fYSwgc2l6ZV90IF9fdSwgX1VJ
bnRUeXBlIF9fZCwgc2l6ZV90IF9fcywKICAgIF9VSW50VHlwZSBfX2IsIHNpemVfdCBfX3QsIF9V
SW50VHlwZSBfX2MsIHNpemVfdCBfX2wsCiAgICBfVUludFR5cGUgX19mPgogICAgY29uc3RleHBy
IF9VSW50VHlwZQogICAgbWVyc2VubmVfdHdpc3Rlcl9lbmdpbmU8X1VJbnRUeXBlLCBfX3csIF9f
biwgX19tLCBfX3IsIF9fYSwgX191LCBfX2QsCiAgICAgICBfX3MsIF9fYiwgX190LCBfX2MsIF9f
bCwgX19mPjo6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bml0aWFsaXphdGlvbl9tdWx0aXBsaWVyOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVUludFR5cGUs
CiAgICBzaXplX3QgX193LCBzaXplX3QgX19uLCBzaXplX3QgX19tLCBzaXplX3QgX19yLAogICAg
X1VJbnRUeXBlIF9fYSwgc2l6ZV90IF9fdSwgX1VJbnRUeXBlIF9fZCwgc2l6ZV90IF9fcywKICAg
IF9VSW50VHlwZSBfX2IsIHNpemVfdCBfX3QsIF9VSW50VHlwZSBfX2MsIHNpemVfdCBfX2wsCiAg
ICBfVUludFR5cGUgX19mPgogICAgY29uc3RleHByIF9VSW50VHlwZQogICAgbWVyc2VubmVfdHdp
c3Rlcl9lbmdpbmU8X1VJbnRUeXBlLCBfX3csIF9fbiwgX19tLCBfX3IsIF9fYSwgX191LCBfX2Qs
CiAgICAgICBfX3MsIF9fYiwgX190LCBfX2MsIF9fbCwgX19mPjo6ZGVmYXVsdF9zZWVkOwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVUludFR5cGUsCiAgICBzaXplX3QgX193LCBzaXplX3QgX19uLCBz
aXplX3QgX19tLCBzaXplX3QgX19yLAogICAgX1VJbnRUeXBlIF9fYSwgc2l6ZV90IF9fdSwgX1VJ
bnRUeXBlIF9fZCwgc2l6ZV90IF9fcywKICAgIF9VSW50VHlwZSBfX2IsIHNpemVfdCBfX3QsIF9V
SW50VHlwZSBfX2MsIHNpemVfdCBfX2wsCiAgICBfVUludFR5cGUgX19mPgogICAgdm9pZAogICAg
bWVyc2VubmVfdHdpc3Rlcl9lbmdpbmU8X1VJbnRUeXBlLCBfX3csIF9fbiwgX19tLCBfX3IsIF9f
YSwgX191LCBfX2QsCiAgICAgICBfX3MsIF9fYiwgX190LCBfX2MsIF9fbCwgX19mPjo6CiAgICBz
ZWVkKHJlc3VsdF90eXBlIF9fc2QpCiAgICB7CiAgICAgIF9NX3hbMF0gPSBfX2RldGFpbDo6X19t
b2Q8X1VJbnRUeXBlLAogX19kZXRhaWw6Ol9TaGlmdDxfVUludFR5cGUsIF9fdz46Ol9fdmFsdWU+
KF9fc2QpOwoKICAgICAgZm9yIChzaXplX3QgX19pID0gMTsgX19pIDwgc3RhdGVfc2l6ZTsgKytf
X2kpCiB7CiAgIF9VSW50VHlwZSBfX3ggPSBfTV94W19faSAtIDFdOwogICBfX3ggXj0gX194ID4+
IChfX3cgLSAyKTsKICAgX194ICo9IF9fZjsKICAgX194ICs9IF9fZGV0YWlsOjpfX21vZDxfVUlu
dFR5cGUsIF9fbj4oX19pKTsKICAgX01feFtfX2ldID0gX19kZXRhaWw6Ol9fbW9kPF9VSW50VHlw
ZSwKICAgICBfX2RldGFpbDo6X1NoaWZ0PF9VSW50VHlwZSwgX193Pjo6X192YWx1ZT4oX194KTsK
IH0KICAgICAgX01fcCA9IHN0YXRlX3NpemU7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9V
SW50VHlwZSwKICAgIHNpemVfdCBfX3csIHNpemVfdCBfX24sIHNpemVfdCBfX20sIHNpemVfdCBf
X3IsCiAgICBfVUludFR5cGUgX19hLCBzaXplX3QgX191LCBfVUludFR5cGUgX19kLCBzaXplX3Qg
X19zLAogICAgX1VJbnRUeXBlIF9fYiwgc2l6ZV90IF9fdCwgX1VJbnRUeXBlIF9fYywgc2l6ZV90
IF9fbCwKICAgIF9VSW50VHlwZSBfX2Y+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU3NlcT4KICAg
ICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19jbGFzczxfU3NlcT46OnZhbHVlPjo6
dHlwZQogICAgICBtZXJzZW5uZV90d2lzdGVyX2VuZ2luZTxfVUludFR5cGUsIF9fdywgX19uLCBf
X20sIF9fciwgX19hLCBfX3UsIF9fZCwKICAgICAgICAgX19zLCBfX2IsIF9fdCwgX19jLCBfX2ws
IF9fZj46OgogICAgICBzZWVkKF9Tc2VxJiBfX3EpCiAgICAgIHsKIGNvbnN0IF9VSW50VHlwZSBf
X3VwcGVyX21hc2sgPSAofl9VSW50VHlwZSgpKSA8PCBfX3I7CiBjb25zdCBzaXplX3QgX19rID0g
KF9fdyArIDMxKSAvIDMyOwogdWludF9sZWFzdDMyX3QgX19hcnJbX19uICogX19rXTsKIF9fcS5n
ZW5lcmF0ZShfX2FyciArIDAsIF9fYXJyICsgX19uICogX19rKTsKCiBib29sIF9femVybyA9IHRy
dWU7CiBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBzdGF0ZV9zaXplOyArK19faSkKICAgewog
ICAgIF9VSW50VHlwZSBfX2ZhY3RvciA9IDF1OwogICAgIF9VSW50VHlwZSBfX3N1bSA9IDB1Owog
ICAgIGZvciAoc2l6ZV90IF9faiA9IDA7IF9faiA8IF9fazsgKytfX2opCiAgICAgICB7CiAgX19z
dW0gKz0gX19hcnJbX19rICogX19pICsgX19qXSAqIF9fZmFjdG9yOwogIF9fZmFjdG9yICo9IF9f
ZGV0YWlsOjpfU2hpZnQ8X1VJbnRUeXBlLCAzMj46Ol9fdmFsdWU7CiAgICAgICB9CiAgICAgX01f
eFtfX2ldID0gX19kZXRhaWw6Ol9fbW9kPF9VSW50VHlwZSwKICAgICAgIF9fZGV0YWlsOjpfU2hp
ZnQ8X1VJbnRUeXBlLCBfX3c+OjpfX3ZhbHVlPihfX3N1bSk7CgogICAgIGlmIChfX3plcm8pCiAg
ICAgICB7CiAgaWYgKF9faSA9PSAwKQogICAgewogICAgICBpZiAoKF9NX3hbMF0gJiBfX3VwcGVy
X21hc2spICE9IDB1KQogICAgICAgIF9femVybyA9IGZhbHNlOwogICAgfQogIGVsc2UgaWYgKF9N
X3hbX19pXSAhPSAwdSkKICAgIF9femVybyA9IGZhbHNlOwogICAgICAgfQogICB9CiAgICAgICAg
aWYgKF9femVybykKICAgICAgICAgIF9NX3hbMF0gPSBfX2RldGFpbDo6X1NoaWZ0PF9VSW50VHlw
ZSwgX193IC0gMT46Ol9fdmFsdWU7CiBfTV9wID0gc3RhdGVfc2l6ZTsKICAgICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVUludFR5cGUsIHNpemVfdCBfX3csCiAgICBzaXplX3QgX19uLCBzaXpl
X3QgX19tLCBzaXplX3QgX19yLAogICAgX1VJbnRUeXBlIF9fYSwgc2l6ZV90IF9fdSwgX1VJbnRU
eXBlIF9fZCwgc2l6ZV90IF9fcywKICAgIF9VSW50VHlwZSBfX2IsIHNpemVfdCBfX3QsIF9VSW50
VHlwZSBfX2MsIHNpemVfdCBfX2wsCiAgICBfVUludFR5cGUgX19mPgogICAgdm9pZAogICAgbWVy
c2VubmVfdHdpc3Rlcl9lbmdpbmU8X1VJbnRUeXBlLCBfX3csIF9fbiwgX19tLCBfX3IsIF9fYSwg
X191LCBfX2QsCiAgICAgICBfX3MsIF9fYiwgX190LCBfX2MsIF9fbCwgX19mPjo6CiAgICBfTV9n
ZW5fcmFuZCh2b2lkKQogICAgewogICAgICBjb25zdCBfVUludFR5cGUgX191cHBlcl9tYXNrID0g
KH5fVUludFR5cGUoKSkgPDwgX19yOwogICAgICBjb25zdCBfVUludFR5cGUgX19sb3dlcl9tYXNr
ID0gfl9fdXBwZXJfbWFzazsKCiAgICAgIGZvciAoc2l6ZV90IF9fayA9IDA7IF9fayA8IChfX24g
LSBfX20pOyArK19faykKICAgICAgICB7CiAgIF9VSW50VHlwZSBfX3kgPSAoKF9NX3hbX19rXSAm
IF9fdXBwZXJfbWFzaykKICAgICAgfCAoX01feFtfX2sgKyAxXSAmIF9fbG93ZXJfbWFzaykpOwog
ICBfTV94W19fa10gPSAoX01feFtfX2sgKyBfX21dIF4gKF9feSA+PiAxKQogICAgICAgICBeICgo
X195ICYgMHgwMSkgPyBfX2EgOiAwKSk7CiAgICAgICAgfQoKICAgICAgZm9yIChzaXplX3QgX19r
ID0gKF9fbiAtIF9fbSk7IF9fayA8IChfX24gLSAxKTsgKytfX2spCiB7CiAgIF9VSW50VHlwZSBf
X3kgPSAoKF9NX3hbX19rXSAmIF9fdXBwZXJfbWFzaykKICAgICAgfCAoX01feFtfX2sgKyAxXSAm
IF9fbG93ZXJfbWFzaykpOwogICBfTV94W19fa10gPSAoX01feFtfX2sgKyAoX19tIC0gX19uKV0g
XiAoX195ID4+IDEpCiAgICAgICAgIF4gKChfX3kgJiAweDAxKSA/IF9fYSA6IDApKTsKIH0KCiAg
ICAgIF9VSW50VHlwZSBfX3kgPSAoKF9NX3hbX19uIC0gMV0gJiBfX3VwcGVyX21hc2spCiAgICAg
ICAgIHwgKF9NX3hbMF0gJiBfX2xvd2VyX21hc2spKTsKICAgICAgX01feFtfX24gLSAxXSA9IChf
TV94W19fbSAtIDFdIF4gKF9feSA+PiAxKQogICAgICAgICBeICgoX195ICYgMHgwMSkgPyBfX2Eg
OiAwKSk7CiAgICAgIF9NX3AgPSAwOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVUludFR5
cGUsIHNpemVfdCBfX3csCiAgICBzaXplX3QgX19uLCBzaXplX3QgX19tLCBzaXplX3QgX19yLAog
ICAgX1VJbnRUeXBlIF9fYSwgc2l6ZV90IF9fdSwgX1VJbnRUeXBlIF9fZCwgc2l6ZV90IF9fcywK
ICAgIF9VSW50VHlwZSBfX2IsIHNpemVfdCBfX3QsIF9VSW50VHlwZSBfX2MsIHNpemVfdCBfX2ws
CiAgICBfVUludFR5cGUgX19mPgogICAgdm9pZAogICAgbWVyc2VubmVfdHdpc3Rlcl9lbmdpbmU8
X1VJbnRUeXBlLCBfX3csIF9fbiwgX19tLCBfX3IsIF9fYSwgX191LCBfX2QsCiAgICAgICBfX3Ms
IF9fYiwgX190LCBfX2MsIF9fbCwgX19mPjo6CiAgICBkaXNjYXJkKHVuc2lnbmVkIGxvbmcgbG9u
ZyBfX3opCiAgICB7CiAgICAgIHdoaWxlIChfX3ogPiBzdGF0ZV9zaXplIC0gX01fcCkKIHsKICAg
X196IC09IHN0YXRlX3NpemUgLSBfTV9wOwogICBfTV9nZW5fcmFuZCgpOwogfQogICAgICBfTV9w
ICs9IF9fejsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1VJbnRUeXBlLCBzaXplX3QgX193
LAogICAgc2l6ZV90IF9fbiwgc2l6ZV90IF9fbSwgc2l6ZV90IF9fciwKICAgIF9VSW50VHlwZSBf
X2EsIHNpemVfdCBfX3UsIF9VSW50VHlwZSBfX2QsIHNpemVfdCBfX3MsCiAgICBfVUludFR5cGUg
X19iLCBzaXplX3QgX190LCBfVUludFR5cGUgX19jLCBzaXplX3QgX19sLAogICAgX1VJbnRUeXBl
IF9fZj4KICAgIHR5cGVuYW1lCiAgICBtZXJzZW5uZV90d2lzdGVyX2VuZ2luZTxfVUludFR5cGUs
IF9fdywgX19uLCBfX20sIF9fciwgX19hLCBfX3UsIF9fZCwKICAgICAgIF9fcywgX19iLCBfX3Qs
IF9fYywgX19sLCBfX2Y+OjpyZXN1bHRfdHlwZQogICAgbWVyc2VubmVfdHdpc3Rlcl9lbmdpbmU8
X1VJbnRUeXBlLCBfX3csIF9fbiwgX19tLCBfX3IsIF9fYSwgX191LCBfX2QsCiAgICAgICBfX3Ms
IF9fYiwgX190LCBfX2MsIF9fbCwgX19mPjo6CiAgICBvcGVyYXRvcigpKCkKICAgIHsKCiAgICAg
IGlmIChfTV9wID49IHN0YXRlX3NpemUpCiBfTV9nZW5fcmFuZCgpOwoKCiAgICAgIHJlc3VsdF90
eXBlIF9feiA9IF9NX3hbX01fcCsrXTsKICAgICAgX196IF49IChfX3ogPj4gX191KSAmIF9fZDsK
ICAgICAgX196IF49IChfX3ogPDwgX19zKSAmIF9fYjsKICAgICAgX196IF49IChfX3ogPDwgX190
KSAmIF9fYzsKICAgICAgX196IF49IChfX3ogPj4gX19sKTsKCiAgICAgIHJldHVybiBfX3o7CiAg
ICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlwZSwgc2l6ZV90IF9fdywKICAgIHNpemVf
dCBfX24sIHNpemVfdCBfX20sIHNpemVfdCBfX3IsCiAgICBfVUludFR5cGUgX19hLCBzaXplX3Qg
X191LCBfVUludFR5cGUgX19kLCBzaXplX3QgX19zLAogICAgX1VJbnRUeXBlIF9fYiwgc2l6ZV90
IF9fdCwgX1VJbnRUeXBlIF9fYywgc2l6ZV90IF9fbCwKICAgIF9VSW50VHlwZSBfX2YsIHR5cGVu
YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBf
VHJhaXRzPiYgX19vcywKICAgICAgICBjb25zdCBtZXJzZW5uZV90d2lzdGVyX2VuZ2luZTxfVUlu
dFR5cGUsIF9fdywgX19uLCBfX20sCiAgICAgICAgX19yLCBfX2EsIF9fdSwgX19kLCBfX3MsIF9f
YiwgX190LCBfX2MsIF9fbCwgX19mPiYgX194KQogICAgewogICAgICB0eXBlZGVmIHN0ZDo6YmFz
aWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9fb3N0cmVhbV90eXBlOwogICAgICB0eXBlZGVm
IHR5cGVuYW1lIF9fb3N0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19iYXNlOwoKICAgICAgY29u
c3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9IF9fb3MuZmxhZ3MoKTsK
ICAgICAgY29uc3QgX0NoYXJUIF9fZmlsbCA9IF9fb3MuZmlsbCgpOwogICAgICBjb25zdCBfQ2hh
clQgX19zcGFjZSA9IF9fb3Mud2lkZW4oJyAnKTsKICAgICAgX19vcy5mbGFncyhfX2lvc19iYXNl
OjpkZWMgfCBfX2lvc19iYXNlOjpmaXhlZCB8IF9faW9zX2Jhc2U6OmxlZnQpOwogICAgICBfX29z
LmZpbGwoX19zcGFjZSk7CgogICAgICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBfX247ICsr
X19pKQogX19vcyA8PCBfX3guX01feFtfX2ldIDw8IF9fc3BhY2U7CiAgICAgIF9fb3MgPDwgX194
Ll9NX3A7CgogICAgICBfX29zLmZsYWdzKF9fZmxhZ3MpOwogICAgICBfX29zLmZpbGwoX19maWxs
KTsKICAgICAgcmV0dXJuIF9fb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlw
ZSwgc2l6ZV90IF9fdywKICAgIHNpemVfdCBfX24sIHNpemVfdCBfX20sIHNpemVfdCBfX3IsCiAg
ICBfVUludFR5cGUgX19hLCBzaXplX3QgX191LCBfVUludFR5cGUgX19kLCBzaXplX3QgX19zLAog
ICAgX1VJbnRUeXBlIF9fYiwgc2l6ZV90IF9fdCwgX1VJbnRUeXBlIF9fYywgc2l6ZV90IF9fbCwK
ICAgIF9VSW50VHlwZSBfX2YsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAg
IHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+PihzdGQ6
OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywKICAgICAgICBtZXJzZW5uZV90
d2lzdGVyX2VuZ2luZTxfVUludFR5cGUsIF9fdywgX19uLCBfX20sCiAgICAgICAgX19yLCBfX2Es
IF9fdSwgX19kLCBfX3MsIF9fYiwgX190LCBfX2MsIF9fbCwgX19mPiYgX194KQogICAgewogICAg
ICB0eXBlZGVmIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9faXN0cmVhbV90
eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXN0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lv
c19iYXNlOwoKICAgICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFn
cyA9IF9faXMuZmxhZ3MoKTsKICAgICAgX19pcy5mbGFncyhfX2lvc19iYXNlOjpkZWMgfCBfX2lv
c19iYXNlOjpza2lwd3MpOwoKICAgICAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgX19uOyAr
K19faSkKIF9faXMgPj4gX194Ll9NX3hbX19pXTsKICAgICAgX19pcyA+PiBfX3guX01fcDsKCiAg
ICAgIF9faXMuZmxhZ3MoX19mbGFncyk7CiAgICAgIHJldHVybiBfX2lzOwogICAgfQoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1VJbnRUeXBlLCBzaXplX3QgX193LCBzaXplX3QgX19zLCBzaXplX3Qg
X19yPgogICAgY29uc3RleHByIHNpemVfdAogICAgc3VidHJhY3Rfd2l0aF9jYXJyeV9lbmdpbmU8
X1VJbnRUeXBlLCBfX3csIF9fcywgX19yPjo6d29yZF9zaXplOwoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVUludFR5cGUsIHNpemVfdCBfX3csIHNpemVfdCBfX3MsIHNpemVfdCBfX3I+CiAgICBjb25z
dGV4cHIgc2l6ZV90CiAgICBzdWJ0cmFjdF93aXRoX2NhcnJ5X2VuZ2luZTxfVUludFR5cGUsIF9f
dywgX19zLCBfX3I+OjpzaG9ydF9sYWc7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlwZSwg
c2l6ZV90IF9fdywgc2l6ZV90IF9fcywgc2l6ZV90IF9fcj4KICAgIGNvbnN0ZXhwciBzaXplX3QK
ICAgIHN1YnRyYWN0X3dpdGhfY2FycnlfZW5naW5lPF9VSW50VHlwZSwgX193LCBfX3MsIF9fcj46
OmxvbmdfbGFnOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVUludFR5cGUsIHNpemVfdCBfX3csIHNp
emVfdCBfX3MsIHNpemVfdCBfX3I+CiAgICBjb25zdGV4cHIgX1VJbnRUeXBlCiAgICBzdWJ0cmFj
dF93aXRoX2NhcnJ5X2VuZ2luZTxfVUludFR5cGUsIF9fdywgX19zLCBfX3I+OjpkZWZhdWx0X3Nl
ZWQ7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlwZSwgc2l6ZV90IF9fdywgc2l6ZV90IF9f
cywgc2l6ZV90IF9fcj4KICAgIHZvaWQKICAgIHN1YnRyYWN0X3dpdGhfY2FycnlfZW5naW5lPF9V
SW50VHlwZSwgX193LCBfX3MsIF9fcj46OgogICAgc2VlZChyZXN1bHRfdHlwZSBfX3ZhbHVlKQog
ICAgewogICAgICBzdGQ6OmxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPHJlc3VsdF90eXBlLCA0
MDAxNHUsIDB1LCAyMTQ3NDgzNTYzdT4KIF9fbGNnKF9fdmFsdWUgPT0gMHUgPyBkZWZhdWx0X3Nl
ZWQgOiBfX3ZhbHVlKTsKCiAgICAgIGNvbnN0IHNpemVfdCBfX24gPSAoX193ICsgMzEpIC8gMzI7
CgogICAgICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBsb25nX2xhZzsgKytfX2kpCiB7CiAg
IF9VSW50VHlwZSBfX3N1bSA9IDB1OwogICBfVUludFR5cGUgX19mYWN0b3IgPSAxdTsKICAgZm9y
IChzaXplX3QgX19qID0gMDsgX19qIDwgX19uOyArK19faikKICAgICB7CiAgICAgICBfX3N1bSAr
PSBfX2RldGFpbDo6X19tb2Q8dWludF9sZWFzdDMyX3QsCiAgICAgICAgIF9fZGV0YWlsOjpfU2hp
ZnQ8dWludF9sZWFzdDMyX3QsIDMyPjo6X192YWx1ZT4KICAgIChfX2xjZygpKSAqIF9fZmFjdG9y
OwogICAgICAgX19mYWN0b3IgKj0gX19kZXRhaWw6Ol9TaGlmdDxfVUludFR5cGUsIDMyPjo6X192
YWx1ZTsKICAgICB9CiAgIF9NX3hbX19pXSA9IF9fZGV0YWlsOjpfX21vZDxfVUludFR5cGUsCiAg
ICAgX19kZXRhaWw6Ol9TaGlmdDxfVUludFR5cGUsIF9fdz46Ol9fdmFsdWU+KF9fc3VtKTsKIH0K
ICAgICAgX01fY2FycnkgPSAoX01feFtsb25nX2xhZyAtIDFdID09IDApID8gMSA6IDA7CiAgICAg
IF9NX3AgPSAwOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVUludFR5cGUsIHNpemVfdCBf
X3csIHNpemVfdCBfX3MsIHNpemVfdCBfX3I+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU3NlcT4K
ICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19jbGFzczxfU3NlcT46OnZhbHVl
Pjo6dHlwZQogICAgICBzdWJ0cmFjdF93aXRoX2NhcnJ5X2VuZ2luZTxfVUludFR5cGUsIF9fdywg
X19zLCBfX3I+OjoKICAgICAgc2VlZChfU3NlcSYgX19xKQogICAgICB7CiBjb25zdCBzaXplX3Qg
X19rID0gKF9fdyArIDMxKSAvIDMyOwogdWludF9sZWFzdDMyX3QgX19hcnJbX19yICogX19rXTsK
IF9fcS5nZW5lcmF0ZShfX2FyciArIDAsIF9fYXJyICsgX19yICogX19rKTsKCiBmb3IgKHNpemVf
dCBfX2kgPSAwOyBfX2kgPCBsb25nX2xhZzsgKytfX2kpCiAgIHsKICAgICBfVUludFR5cGUgX19z
dW0gPSAwdTsKICAgICBfVUludFR5cGUgX19mYWN0b3IgPSAxdTsKICAgICBmb3IgKHNpemVfdCBf
X2ogPSAwOyBfX2ogPCBfX2s7ICsrX19qKQogICAgICAgewogIF9fc3VtICs9IF9fYXJyW19fayAq
IF9faSArIF9fal0gKiBfX2ZhY3RvcjsKICBfX2ZhY3RvciAqPSBfX2RldGFpbDo6X1NoaWZ0PF9V
SW50VHlwZSwgMzI+OjpfX3ZhbHVlOwogICAgICAgfQogICAgIF9NX3hbX19pXSA9IF9fZGV0YWls
OjpfX21vZDxfVUludFR5cGUsCiAgICAgICBfX2RldGFpbDo6X1NoaWZ0PF9VSW50VHlwZSwgX193
Pjo6X192YWx1ZT4oX19zdW0pOwogICB9CiBfTV9jYXJyeSA9IChfTV94W2xvbmdfbGFnIC0gMV0g
PT0gMCkgPyAxIDogMDsKIF9NX3AgPSAwOwogICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9V
SW50VHlwZSwgc2l6ZV90IF9fdywgc2l6ZV90IF9fcywgc2l6ZV90IF9fcj4KICAgIHR5cGVuYW1l
IHN1YnRyYWN0X3dpdGhfY2FycnlfZW5naW5lPF9VSW50VHlwZSwgX193LCBfX3MsIF9fcj46Ogog
ICAgICByZXN1bHRfdHlwZQogICAgc3VidHJhY3Rfd2l0aF9jYXJyeV9lbmdpbmU8X1VJbnRUeXBl
LCBfX3csIF9fcywgX19yPjo6CiAgICBvcGVyYXRvcigpKCkKICAgIHsKCiAgICAgIGxvbmcgX19w
cyA9IF9NX3AgLSBzaG9ydF9sYWc7CiAgICAgIGlmIChfX3BzIDwgMCkKIF9fcHMgKz0gbG9uZ19s
YWc7CgoKCgogICAgICBfVUludFR5cGUgX194aTsKICAgICAgaWYgKF9NX3hbX19wc10gPj0gX01f
eFtfTV9wXSArIF9NX2NhcnJ5KQogewogICBfX3hpID0gX01feFtfX3BzXSAtIF9NX3hbX01fcF0g
LSBfTV9jYXJyeTsKICAgX01fY2FycnkgPSAwOwogfQogICAgICBlbHNlCiB7CiAgIF9feGkgPSAo
X19kZXRhaWw6Ol9TaGlmdDxfVUludFR5cGUsIF9fdz46Ol9fdmFsdWUKICAgIC0gX01feFtfTV9w
XSAtIF9NX2NhcnJ5ICsgX01feFtfX3BzXSk7CiAgIF9NX2NhcnJ5ID0gMTsKIH0KICAgICAgX01f
eFtfTV9wXSA9IF9feGk7CgoKICAgICAgaWYgKCsrX01fcCA+PSBsb25nX2xhZykKIF9NX3AgPSAw
OwoKICAgICAgcmV0dXJuIF9feGk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9VSW50VHlw
ZSwgc2l6ZV90IF9fdywgc2l6ZV90IF9fcywgc2l6ZV90IF9fciwKICAgIHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFp
dHM+JgogICAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYg
X19vcywKICAgICAgICBjb25zdCBzdWJ0cmFjdF93aXRoX2NhcnJ5X2VuZ2luZTxfVUludFR5cGUs
CiAgICAgIF9fdywgX19zLCBfX3I+JiBfX3gpCiAgICB7CiAgICAgIHR5cGVkZWYgc3RkOjpiYXNp
Y19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19vc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgX19vc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jhc2U7CgogICAgICBjb25z
dCB0eXBlbmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzID0gX19vcy5mbGFncygpOwog
ICAgICBjb25zdCBfQ2hhclQgX19maWxsID0gX19vcy5maWxsKCk7CiAgICAgIGNvbnN0IF9DaGFy
VCBfX3NwYWNlID0gX19vcy53aWRlbignICcpOwogICAgICBfX29zLmZsYWdzKF9faW9zX2Jhc2U6
OmRlYyB8IF9faW9zX2Jhc2U6OmZpeGVkIHwgX19pb3NfYmFzZTo6bGVmdCk7CiAgICAgIF9fb3Mu
ZmlsbChfX3NwYWNlKTsKCiAgICAgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8IF9fcjsgKytf
X2kpCiBfX29zIDw8IF9feC5fTV94W19faV0gPDwgX19zcGFjZTsKICAgICAgX19vcyA8PCBfX3gu
X01fY2FycnkgPDwgX19zcGFjZSA8PCBfX3guX01fcDsKCiAgICAgIF9fb3MuZmxhZ3MoX19mbGFn
cyk7CiAgICAgIF9fb3MuZmlsbChfX2ZpbGwpOwogICAgICByZXR1cm4gX19vczsKICAgIH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1VJbnRUeXBlLCBzaXplX3QgX193LCBzaXplX3QgX19zLCBzaXpl
X3QgX19yLAogICAgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpi
YXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNf
aXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAogICAgICAgIHN1YnRyYWN0X3dpdGhfY2Fy
cnlfZW5naW5lPF9VSW50VHlwZSwgX193LCBfX3MsIF9fcj4mIF9feCkKICAgIHsKICAgICAgdHlw
ZWRlZiBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX2lzdHJlYW1fdHlwZTsK
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6aW9zX2Jhc2UgX19pb3NfYmFz
ZTsKCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZtdGZsYWdzIF9fZmxhZ3MgPSBf
X2lzLmZsYWdzKCk7CiAgICAgIF9faXMuZmxhZ3MoX19pb3NfYmFzZTo6ZGVjIHwgX19pb3NfYmFz
ZTo6c2tpcHdzKTsKCiAgICAgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8IF9fcjsgKytfX2kp
CiBfX2lzID4+IF9feC5fTV94W19faV07CiAgICAgIF9faXMgPj4gX194Ll9NX2NhcnJ5OwogICAg
ICBfX2lzID4+IF9feC5fTV9wOwoKICAgICAgX19pcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgcmV0
dXJuIF9faXM7CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tTnVtYmVyRW5naW5l
LCBzaXplX3QgX19wLCBzaXplX3QgX19yPgogICAgY29uc3RleHByIHNpemVfdAogICAgZGlzY2Fy
ZF9ibG9ja19lbmdpbmU8X1JhbmRvbU51bWJlckVuZ2luZSwgX19wLCBfX3I+OjpibG9ja19zaXpl
OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tTnVtYmVyRW5naW5lLCBzaXplX3QgX19wLCBz
aXplX3QgX19yPgogICAgY29uc3RleHByIHNpemVfdAogICAgZGlzY2FyZF9ibG9ja19lbmdpbmU8
X1JhbmRvbU51bWJlckVuZ2luZSwgX19wLCBfX3I+Ojp1c2VkX2Jsb2NrOwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmFuZG9tTnVtYmVyRW5naW5lLCBzaXplX3QgX19wLCBzaXplX3QgX19yPgogICAg
dHlwZW5hbWUgZGlzY2FyZF9ibG9ja19lbmdpbmU8X1JhbmRvbU51bWJlckVuZ2luZSwKICAgICAg
X19wLCBfX3I+OjpyZXN1bHRfdHlwZQogICAgZGlzY2FyZF9ibG9ja19lbmdpbmU8X1JhbmRvbU51
bWJlckVuZ2luZSwgX19wLCBfX3I+OjoKICAgIG9wZXJhdG9yKCkoKQogICAgewogICAgICBpZiAo
X01fbiA+PSB1c2VkX2Jsb2NrKQogewogICBfTV9iLmRpc2NhcmQoYmxvY2tfc2l6ZSAtIF9NX24p
OwogICBfTV9uID0gMDsKIH0KICAgICAgKytfTV9uOwogICAgICByZXR1cm4gX01fYigpOwogICAg
fQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tTnVtYmVyRW5naW5lLCBzaXplX3QgX19wLCBz
aXplX3QgX19yLAogICAgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3Rk
OjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KHN0ZDo6YmFz
aWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAgICAgIGNvbnN0IGRpc2NhcmRf
YmxvY2tfZW5naW5lPF9SYW5kb21OdW1iZXJFbmdpbmUsCiAgICAgICAgX19wLCBfX3I+JiBfX3gp
CiAgICB7CiAgICAgIHR5cGVkZWYgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4g
X19vc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19vc3RyZWFtX3R5cGU6Omlv
c19iYXNlIF9faW9zX2Jhc2U7CgogICAgICBjb25zdCB0eXBlbmFtZSBfX2lvc19iYXNlOjpmbXRm
bGFncyBfX2ZsYWdzID0gX19vcy5mbGFncygpOwogICAgICBjb25zdCBfQ2hhclQgX19maWxsID0g
X19vcy5maWxsKCk7CiAgICAgIGNvbnN0IF9DaGFyVCBfX3NwYWNlID0gX19vcy53aWRlbignICcp
OwogICAgICBfX29zLmZsYWdzKF9faW9zX2Jhc2U6OmRlYyB8IF9faW9zX2Jhc2U6OmZpeGVkIHwg
X19pb3NfYmFzZTo6bGVmdCk7CiAgICAgIF9fb3MuZmlsbChfX3NwYWNlKTsKCiAgICAgIF9fb3Mg
PDwgX194LmJhc2UoKSA8PCBfX3NwYWNlIDw8IF9feC5fTV9uOwoKICAgICAgX19vcy5mbGFncyhf
X2ZsYWdzKTsKICAgICAgX19vcy5maWxsKF9fZmlsbCk7CiAgICAgIHJldHVybiBfX29zOwogICAg
fQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tTnVtYmVyRW5naW5lLCBzaXplX3QgX19wLCBz
aXplX3QgX19yLAogICAgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3Rk
OjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcj4+KHN0ZDo6YmFz
aWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAogICAgICAgIGRpc2NhcmRfYmxvY2tf
ZW5naW5lPF9SYW5kb21OdW1iZXJFbmdpbmUsIF9fcCwgX19yPiYgX194KQogICAgewogICAgICB0
eXBlZGVmIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9faXN0cmVhbV90eXBl
OwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXN0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19i
YXNlOwoKICAgICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9
IF9faXMuZmxhZ3MoKTsKICAgICAgX19pcy5mbGFncyhfX2lvc19iYXNlOjpkZWMgfCBfX2lvc19i
YXNlOjpza2lwd3MpOwoKICAgICAgX19pcyA+PiBfX3guX01fYiA+PiBfX3guX01fbjsKCiAgICAg
IF9faXMuZmxhZ3MoX19mbGFncyk7CiAgICAgIHJldHVybiBfX2lzOwogICAgfQoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1JhbmRvbU51bWJlckVuZ2luZSwgc2l6ZV90IF9fdywgdHlwZW5hbWUgX1VJ
bnRUeXBlPgogICAgdHlwZW5hbWUgaW5kZXBlbmRlbnRfYml0c19lbmdpbmU8X1JhbmRvbU51bWJl
ckVuZ2luZSwgX193LCBfVUludFR5cGU+OjoKICAgICAgcmVzdWx0X3R5cGUKICAgIGluZGVwZW5k
ZW50X2JpdHNfZW5naW5lPF9SYW5kb21OdW1iZXJFbmdpbmUsIF9fdywgX1VJbnRUeXBlPjo6CiAg
ICBvcGVyYXRvcigpKCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfUmFuZG9tTnVtYmVy
RW5naW5lOjpyZXN1bHRfdHlwZSBfRXJlc3VsdF90eXBlOwogICAgICBjb25zdCBfRXJlc3VsdF90
eXBlIF9fcgogPSAoX01fYi5tYXgoKSAtIF9NX2IubWluKCkgPCBzdGQ6Om51bWVyaWNfbGltaXRz
PF9FcmVzdWx0X3R5cGU+OjptYXgoKQogICAgPyBfTV9iLm1heCgpIC0gX01fYi5taW4oKSArIDEg
OiAwKTsKICAgICAgY29uc3QgdW5zaWduZWQgX19lZGlnID0gc3RkOjpudW1lcmljX2xpbWl0czxf
RXJlc3VsdF90eXBlPjo6ZGlnaXRzOwogICAgICBjb25zdCB1bnNpZ25lZCBfX20gPSBfX3IgPyBz
dGQ6Ol9fbGcoX19yKSA6IF9fZWRpZzsKCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpjb21t
b25fdHlwZTxfRXJlc3VsdF90eXBlLCByZXN1bHRfdHlwZT46OnR5cGUKIF9fY3R5cGU7CiAgICAg
IGNvbnN0IHVuc2lnbmVkIF9fY2RpZyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8X19jdHlwZT46OmRp
Z2l0czsKCiAgICAgIHVuc2lnbmVkIF9fbiwgX19uMDsKICAgICAgX19jdHlwZSBfX3MwLCBfX3Mx
LCBfX3kwLCBfX3kxOwoKICAgICAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgMjsgKytfX2kp
CiB7CiAgIF9fbiA9IChfX3cgKyBfX20gLSAxKSAvIF9fbSArIF9faTsKICAgX19uMCA9IF9fbiAt
IF9fdyAlIF9fbjsKICAgY29uc3QgdW5zaWduZWQgX193MCA9IF9fdyAvIF9fbjsKCiAgIF9fczAg
PSAwOwogICBfX3MxID0gMDsKICAgaWYgKF9fdzAgPCBfX2NkaWcpCiAgICAgewogICAgICAgX19z
MCA9IF9fY3R5cGUoMSkgPDwgX193MDsKICAgICAgIF9fczEgPSBfX3MwIDw8IDE7CiAgICAgfQoK
ICAgX195MCA9IDA7CiAgIF9feTEgPSAwOwogICBpZiAoX19yKQogICAgIHsKICAgICAgIF9feTAg
PSBfX3MwICogKF9fciAvIF9fczApOwogICAgICAgaWYgKF9fczEpCiAgX195MSA9IF9fczEgKiAo
X19yIC8gX19zMSk7CgogICAgICAgaWYgKF9fciAtIF9feTAgPD0gX195MCAvIF9fbikKICBicmVh
azsKICAgICB9CiAgIGVsc2UKICAgICBicmVhazsKIH0KCiAgICAgIHJlc3VsdF90eXBlIF9fc3Vt
ID0gMDsKICAgICAgZm9yIChzaXplX3QgX19rID0gMDsgX19rIDwgX19uMDsgKytfX2spCiB7CiAg
IF9fY3R5cGUgX191OwogICBkbwogICAgIF9fdSA9IF9NX2IoKSAtIF9NX2IubWluKCk7CiAgIHdo
aWxlIChfX3kwICYmIF9fdSA+PSBfX3kwKTsKICAgX19zdW0gPSBfX3MwICogX19zdW0gKyAoX19z
MCA/IF9fdSAlIF9fczAgOiBfX3UpOwogfQogICAgICBmb3IgKHNpemVfdCBfX2sgPSBfX24wOyBf
X2sgPCBfX247ICsrX19rKQogewogICBfX2N0eXBlIF9fdTsKICAgZG8KICAgICBfX3UgPSBfTV9i
KCkgLSBfTV9iLm1pbigpOwogICB3aGlsZSAoX195MSAmJiBfX3UgPj0gX195MSk7CiAgIF9fc3Vt
ID0gX19zMSAqIF9fc3VtICsgKF9fczEgPyBfX3UgJSBfX3MxIDogX191KTsKIH0KICAgICAgcmV0
dXJuIF9fc3VtOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbU51bWJlckVuZ2lu
ZSwgc2l6ZV90IF9faz4KICAgIGNvbnN0ZXhwciBzaXplX3QKICAgIHNodWZmbGVfb3JkZXJfZW5n
aW5lPF9SYW5kb21OdW1iZXJFbmdpbmUsIF9faz46OnRhYmxlX3NpemU7CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9SYW5kb21OdW1iZXJFbmdpbmUsIHNpemVfdCBfX2s+CiAgICB0eXBlbmFtZSBzaHVm
ZmxlX29yZGVyX2VuZ2luZTxfUmFuZG9tTnVtYmVyRW5naW5lLCBfX2s+OjpyZXN1bHRfdHlwZQog
ICAgc2h1ZmZsZV9vcmRlcl9lbmdpbmU8X1JhbmRvbU51bWJlckVuZ2luZSwgX19rPjo6CiAgICBv
cGVyYXRvcigpKCkKICAgIHsKICAgICAgc2l6ZV90IF9faiA9IF9fayAqICgoX01feSAtIF9NX2Iu
bWluKCkpCiAgICAgLyAoX01fYi5tYXgoKSAtIF9NX2IubWluKCkgKyAxLjBMKSk7CiAgICAgIF9N
X3kgPSBfTV92W19fal07CiAgICAgIF9NX3ZbX19qXSA9IF9NX2IoKTsKCiAgICAgIHJldHVybiBf
TV95OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tTnVtYmVyRW5naW5lLCBzaXpl
X3QgX19rLAogICAgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpi
YXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNf
b3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAgICAgIGNvbnN0IHNodWZmbGVfb3Jk
ZXJfZW5naW5lPF9SYW5kb21OdW1iZXJFbmdpbmUsIF9faz4mIF9feCkKICAgIHsKICAgICAgdHlw
ZWRlZiBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX29zdHJlYW1fdHlwZTsK
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX29zdHJlYW1fdHlwZTo6aW9zX2Jhc2UgX19pb3NfYmFz
ZTsKCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZtdGZsYWdzIF9fZmxhZ3MgPSBf
X29zLmZsYWdzKCk7CiAgICAgIGNvbnN0IF9DaGFyVCBfX2ZpbGwgPSBfX29zLmZpbGwoKTsKICAg
ICAgY29uc3QgX0NoYXJUIF9fc3BhY2UgPSBfX29zLndpZGVuKCcgJyk7CiAgICAgIF9fb3MuZmxh
Z3MoX19pb3NfYmFzZTo6ZGVjIHwgX19pb3NfYmFzZTo6Zml4ZWQgfCBfX2lvc19iYXNlOjpsZWZ0
KTsKICAgICAgX19vcy5maWxsKF9fc3BhY2UpOwoKICAgICAgX19vcyA8PCBfX3guYmFzZSgpOwog
ICAgICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBfX2s7ICsrX19pKQogX19vcyA8PCBfX3Nw
YWNlIDw8IF9feC5fTV92W19faV07CiAgICAgIF9fb3MgPDwgX19zcGFjZSA8PCBfX3guX01feTsK
CiAgICAgIF9fb3MuZmxhZ3MoX19mbGFncyk7CiAgICAgIF9fb3MuZmlsbChfX2ZpbGwpOwogICAg
ICByZXR1cm4gX19vczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbU51bWJlckVu
Z2luZSwgc2l6ZV90IF9faywKICAgIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4K
ICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+Pihz
dGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywKICAgICAgICBzaHVmZmxl
X29yZGVyX2VuZ2luZTxfUmFuZG9tTnVtYmVyRW5naW5lLCBfX2s+JiBfX3gpCiAgICB7CiAgICAg
IHR5cGVkZWYgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5
cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19pc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9z
X2Jhc2U7CgogICAgICBjb25zdCB0eXBlbmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdz
ID0gX19pcy5mbGFncygpOwogICAgICBfX2lzLmZsYWdzKF9faW9zX2Jhc2U6OmRlYyB8IF9faW9z
X2Jhc2U6OnNraXB3cyk7CgogICAgICBfX2lzID4+IF9feC5fTV9iOwogICAgICBmb3IgKHNpemVf
dCBfX2kgPSAwOyBfX2kgPCBfX2s7ICsrX19pKQogX19pcyA+PiBfX3guX01fdltfX2ldOwogICAg
ICBfX2lzID4+IF9feC5fTV95OwoKICAgICAgX19pcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgcmV0
dXJuIF9faXM7CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50VHlwZT4KICAgIHRlbXBs
YXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogICAgICB0eXBlbmFt
ZSB1bmlmb3JtX2ludF9kaXN0cmlidXRpb248X0ludFR5cGU+OjpyZXN1bHRfdHlwZQogICAgICB1
bmlmb3JtX2ludF9kaXN0cmlidXRpb248X0ludFR5cGU+OjoKICAgICAgb3BlcmF0b3IoKShfVW5p
Zm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICBjb25zdCBwYXJhbV90eXBlJiBf
X3BhcmFtKQogICAgICB7CiB0eXBlZGVmIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2Vu
ZXJhdG9yOjpyZXN1bHRfdHlwZQogICBfR3Jlc3VsdF90eXBlOwogdHlwZWRlZiB0eXBlbmFtZSBz
dGQ6Om1ha2VfdW5zaWduZWQ8cmVzdWx0X3R5cGU+Ojp0eXBlIF9fdXR5cGU7CiB0eXBlZGVmIHR5
cGVuYW1lIHN0ZDo6Y29tbW9uX3R5cGU8X0dyZXN1bHRfdHlwZSwgX191dHlwZT46OnR5cGUKICAg
X191Y3R5cGU7CgogY29uc3QgX191Y3R5cGUgX191cm5nbWluID0gX191cm5nLm1pbigpOwogY29u
c3QgX191Y3R5cGUgX191cm5nbWF4ID0gX191cm5nLm1heCgpOwogY29uc3QgX191Y3R5cGUgX191
cm5ncmFuZ2UgPSBfX3VybmdtYXggLSBfX3VybmdtaW47CiBjb25zdCBfX3VjdHlwZSBfX3VyYW5n
ZQogICA9IF9fdWN0eXBlKF9fcGFyYW0uYigpKSAtIF9fdWN0eXBlKF9fcGFyYW0uYSgpKTsKCiBf
X3VjdHlwZSBfX3JldDsKCiBpZiAoX191cm5ncmFuZ2UgPiBfX3VyYW5nZSkKICAgewoKICAgICBj
b25zdCBfX3VjdHlwZSBfX3VlcmFuZ2UgPSBfX3VyYW5nZSArIDE7CiAgICAgY29uc3QgX191Y3R5
cGUgX19zY2FsaW5nID0gX191cm5ncmFuZ2UgLyBfX3VlcmFuZ2U7CiAgICAgY29uc3QgX191Y3R5
cGUgX19wYXN0ID0gX191ZXJhbmdlICogX19zY2FsaW5nOwogICAgIGRvCiAgICAgICBfX3JldCA9
IF9fdWN0eXBlKF9fdXJuZygpKSAtIF9fdXJuZ21pbjsKICAgICB3aGlsZSAoX19yZXQgPj0gX19w
YXN0KTsKICAgICBfX3JldCAvPSBfX3NjYWxpbmc7CiAgIH0KIGVsc2UgaWYgKF9fdXJuZ3Jhbmdl
IDwgX191cmFuZ2UpCiAgIHsKIyA5MjQgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9iaXRzL3JhbmRvbS50Y2MiIDMKICAgICBfX3VjdHlwZSBfX3RtcDsK
ICAgICBkbwogICAgICAgewogIGNvbnN0IF9fdWN0eXBlIF9fdWVybmdyYW5nZSA9IF9fdXJuZ3Jh
bmdlICsgMTsKICBfX3RtcCA9IChfX3Vlcm5ncmFuZ2UgKiBvcGVyYXRvcigpCiAgICAoX191cm5n
LCBwYXJhbV90eXBlKDAsIF9fdXJhbmdlIC8gX191ZXJuZ3JhbmdlKSkpOwogIF9fcmV0ID0gX190
bXAgKyAoX191Y3R5cGUoX191cm5nKCkpIC0gX191cm5nbWluKTsKICAgICAgIH0KICAgICB3aGls
ZSAoX19yZXQgPiBfX3VyYW5nZSB8fCBfX3JldCA8IF9fdG1wKTsKICAgfQogZWxzZQogICBfX3Jl
dCA9IF9fdWN0eXBlKF9fdXJuZygpKSAtIF9fdXJuZ21pbjsKCiByZXR1cm4gX19yZXQgKyBfX3Bh
cmFtLmEoKTsKICAgICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGU+CiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICB0eXBlbmFtZSBfVW5pZm9ybVJh
bmRvbU51bWJlckdlbmVyYXRvcj4KICAgICAgdm9pZAogICAgICB1bmlmb3JtX2ludF9kaXN0cmli
dXRpb248X0ludFR5cGU+OjoKICAgICAgX19nZW5lcmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3Ig
X19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdl
bmVyYXRvciYgX191cm5nLAogICAgICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcGFyYW0pCiAgICAg
IHsKCiB0eXBlZGVmIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yOjpyZXN1
bHRfdHlwZQogICBfR3Jlc3VsdF90eXBlOwogdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Om1ha2VfdW5z
aWduZWQ8cmVzdWx0X3R5cGU+Ojp0eXBlIF9fdXR5cGU7CiB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6
Y29tbW9uX3R5cGU8X0dyZXN1bHRfdHlwZSwgX191dHlwZT46OnR5cGUKICAgX191Y3R5cGU7Cgog
Y29uc3QgX191Y3R5cGUgX191cm5nbWluID0gX191cm5nLm1pbigpOwogY29uc3QgX191Y3R5cGUg
X191cm5nbWF4ID0gX191cm5nLm1heCgpOwogY29uc3QgX191Y3R5cGUgX191cm5ncmFuZ2UgPSBf
X3VybmdtYXggLSBfX3VybmdtaW47CiBjb25zdCBfX3VjdHlwZSBfX3VyYW5nZQogICA9IF9fdWN0
eXBlKF9fcGFyYW0uYigpKSAtIF9fdWN0eXBlKF9fcGFyYW0uYSgpKTsKCiBfX3VjdHlwZSBfX3Jl
dDsKCiBpZiAoX191cm5ncmFuZ2UgPiBfX3VyYW5nZSkKICAgewogICAgIGlmIChfX2RldGFpbDo6
X1Bvd2VyX29mXzIoX191cm5ncmFuZ2UgKyAxKQogICYmIF9fZGV0YWlsOjpfUG93ZXJfb2ZfMihf
X3VyYW5nZSArIDEpKQogICAgICAgewogIHdoaWxlIChfX2YgIT0gX190KQogICAgewogICAgICBf
X3JldCA9IF9fdWN0eXBlKF9fdXJuZygpKSAtIF9fdXJuZ21pbjsKICAgICAgKl9fZisrID0gKF9f
cmV0ICYgX191cmFuZ2UpICsgX19wYXJhbS5hKCk7CiAgICB9CiAgICAgICB9CiAgICAgZWxzZQog
ICAgICAgewoKICBjb25zdCBfX3VjdHlwZSBfX3VlcmFuZ2UgPSBfX3VyYW5nZSArIDE7CiAgY29u
c3QgX191Y3R5cGUgX19zY2FsaW5nID0gX191cm5ncmFuZ2UgLyBfX3VlcmFuZ2U7CiAgY29uc3Qg
X191Y3R5cGUgX19wYXN0ID0gX191ZXJhbmdlICogX19zY2FsaW5nOwogIHdoaWxlIChfX2YgIT0g
X190KQogICAgewogICAgICBkbwogICAgICAgIF9fcmV0ID0gX191Y3R5cGUoX191cm5nKCkpIC0g
X191cm5nbWluOwogICAgICB3aGlsZSAoX19yZXQgPj0gX19wYXN0KTsKICAgICAgKl9fZisrID0g
X19yZXQgLyBfX3NjYWxpbmcgKyBfX3BhcmFtLmEoKTsKICAgIH0KICAgICAgIH0KICAgfQogZWxz
ZSBpZiAoX191cm5ncmFuZ2UgPCBfX3VyYW5nZSkKICAgewojIDEwMDggIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3JhbmRvbS50Y2MiIDMKICAg
ICBfX3VjdHlwZSBfX3RtcDsKICAgICB3aGlsZSAoX19mICE9IF9fdCkKICAgICAgIHsKICBkbwog
ICAgewogICAgICBjb25zdCBfX3VjdHlwZSBfX3Vlcm5ncmFuZ2UgPSBfX3VybmdyYW5nZSArIDE7
CiAgICAgIF9fdG1wID0gKF9fdWVybmdyYW5nZSAqIG9wZXJhdG9yKCkKICAgICAgICAoX191cm5n
LCBwYXJhbV90eXBlKDAsIF9fdXJhbmdlIC8gX191ZXJuZ3JhbmdlKSkpOwogICAgICBfX3JldCA9
IF9fdG1wICsgKF9fdWN0eXBlKF9fdXJuZygpKSAtIF9fdXJuZ21pbik7CiAgICB9CiAgd2hpbGUg
KF9fcmV0ID4gX191cmFuZ2UgfHwgX19yZXQgPCBfX3RtcCk7CiAgKl9fZisrID0gX19yZXQ7CiAg
ICAgICB9CiAgIH0KIGVsc2UKICAgd2hpbGUgKF9fZiAhPSBfX3QpCiAgICAgKl9fZisrID0gX191
Y3R5cGUoX191cm5nKCkpIC0gX191cm5nbWluICsgX19wYXJhbS5hKCk7CiAgICAgIH0KCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0ludFR5cGUsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cz4KICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I8
PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vcywKICAgICAgICBjb25z
dCB1bmlmb3JtX2ludF9kaXN0cmlidXRpb248X0ludFR5cGU+JiBfX3gpCiAgICB7CiAgICAgIHR5
cGVkZWYgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19vc3RyZWFtX3R5cGU7
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19vc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jh
c2U7CgogICAgICBjb25zdCB0eXBlbmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzID0g
X19vcy5mbGFncygpOwogICAgICBjb25zdCBfQ2hhclQgX19maWxsID0gX19vcy5maWxsKCk7CiAg
ICAgIGNvbnN0IF9DaGFyVCBfX3NwYWNlID0gX19vcy53aWRlbignICcpOwogICAgICBfX29zLmZs
YWdzKF9faW9zX2Jhc2U6OnNjaWVudGlmaWMgfCBfX2lvc19iYXNlOjpsZWZ0KTsKICAgICAgX19v
cy5maWxsKF9fc3BhY2UpOwoKICAgICAgX19vcyA8PCBfX3guYSgpIDw8IF9fc3BhY2UgPDwgX194
LmIoKTsKCiAgICAgIF9fb3MuZmxhZ3MoX19mbGFncyk7CiAgICAgIF9fb3MuZmlsbChfX2ZpbGwp
OwogICAgICByZXR1cm4gX19vczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGUs
IHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNfaXN0cmVh
bTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08X0No
YXJULCBfVHJhaXRzPiYgX19pcywKICAgICAgICB1bmlmb3JtX2ludF9kaXN0cmlidXRpb248X0lu
dFR5cGU+JiBfX3gpCiAgICB7CiAgICAgIHR5cGVkZWYgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFy
VCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19pc3Ry
ZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jhc2U7CgogICAgICBjb25zdCB0eXBlbmFtZSBfX2lv
c19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzID0gX19pcy5mbGFncygpOwogICAgICBfX2lzLmZsYWdz
KF9faW9zX2Jhc2U6OmRlYyB8IF9faW9zX2Jhc2U6OnNraXB3cyk7CgogICAgICBfSW50VHlwZSBf
X2EsIF9fYjsKICAgICAgX19pcyA+PiBfX2EgPj4gX19iOwogICAgICBfX3gucGFyYW0odHlwZW5h
bWUgdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPF9JbnRUeXBlPjo6CiAgcGFyYW1fdHlwZShfX2Es
IF9fYikpOwoKICAgICAgX19pcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgcmV0dXJuIF9faXM7CiAg
ICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGU+CiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdl
bmVyYXRvcj4KICAgICAgdm9pZAogICAgICB1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPF9SZWFs
VHlwZT46OgogICAgICBfX2dlbmVyYXRlX2ltcGwoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3
YXJkSXRlcmF0b3IgX190LAogICAgICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBf
X3VybmcsCiAgICAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKQogICAgICB7CgogX19kZXRhaWw6
Ol9BZGFwdG9yPF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yLCByZXN1bHRfdHlwZT4KICAg
X19hdXJuZyhfX3VybmcpOwogYXV0byBfX3JhbmdlID0gX19wLmIoKSAtIF9fcC5hKCk7CiB3aGls
ZSAoX19mICE9IF9fdCkKICAgKl9fZisrID0gX19hdXJuZygpICogX19yYW5nZSArIF9fcC5hKCk7
CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlLCB0eXBlbmFtZSBfQ2hhclQs
IHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRz
PiYKICAgIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9f
b3MsCiAgICAgICAgY29uc3QgdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBf
X3gpCiAgICB7CiAgICAgIHR5cGVkZWYgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0
cz4gX19vc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19vc3RyZWFtX3R5cGU6
Omlvc19iYXNlIF9faW9zX2Jhc2U7CgogICAgICBjb25zdCB0eXBlbmFtZSBfX2lvc19iYXNlOjpm
bXRmbGFncyBfX2ZsYWdzID0gX19vcy5mbGFncygpOwogICAgICBjb25zdCBfQ2hhclQgX19maWxs
ID0gX19vcy5maWxsKCk7CiAgICAgIGNvbnN0IHN0ZDo6c3RyZWFtc2l6ZSBfX3ByZWNpc2lvbiA9
IF9fb3MucHJlY2lzaW9uKCk7CiAgICAgIGNvbnN0IF9DaGFyVCBfX3NwYWNlID0gX19vcy53aWRl
bignICcpOwogICAgICBfX29zLmZsYWdzKF9faW9zX2Jhc2U6OnNjaWVudGlmaWMgfCBfX2lvc19i
YXNlOjpsZWZ0KTsKICAgICAgX19vcy5maWxsKF9fc3BhY2UpOwogICAgICBfX29zLnByZWNpc2lv
bihzdGQ6Om51bWVyaWNfbGltaXRzPF9SZWFsVHlwZT46Om1heF9kaWdpdHMxMCk7CgogICAgICBf
X29zIDw8IF9feC5hKCkgPDwgX19zcGFjZSA8PCBfX3guYigpOwoKICAgICAgX19vcy5mbGFncyhf
X2ZsYWdzKTsKICAgICAgX19vcy5maWxsKF9fZmlsbCk7CiAgICAgIF9fb3MucHJlY2lzaW9uKF9f
cHJlY2lzaW9uKTsKICAgICAgcmV0dXJuIF9fb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9SZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpi
YXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNf
aXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAogICAgICAgIHVuaWZvcm1fcmVhbF9kaXN0
cmlidXRpb248X1JlYWxUeXBlPiYgX194KQogICAgewogICAgICB0eXBlZGVmIHN0ZDo6YmFzaWNf
aXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9faXN0cmVhbV90eXBlOwogICAgICB0eXBlZGVmIHR5
cGVuYW1lIF9faXN0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19iYXNlOwoKICAgICAgY29uc3Qg
dHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9IF9faXMuZmxhZ3MoKTsKICAg
ICAgX19pcy5mbGFncyhfX2lvc19iYXNlOjpza2lwd3MpOwoKICAgICAgX1JlYWxUeXBlIF9fYSwg
X19iOwogICAgICBfX2lzID4+IF9fYSA+PiBfX2I7CiAgICAgIF9feC5wYXJhbSh0eXBlbmFtZSB1
bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46OgogIHBhcmFtX3R5cGUoX19hLCBf
X2IpKTsKCiAgICAgIF9faXMuZmxhZ3MoX19mbGFncyk7CiAgICAgIHJldHVybiBfX2lzOwogICAg
fQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgIHR5cGVuYW1lIF9V
bmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogICAgdm9pZAogICAgc3RkOjpiZXJub3VsbGlf
ZGlzdHJpYnV0aW9uOjoKICAgIF9fZ2VuZXJhdGVfaW1wbChfRm9yd2FyZEl0ZXJhdG9yIF9fZiwg
X0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9y
JiBfX3VybmcsCiAgICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKICAgIHsKICAgICAKICAgICAg
X19kZXRhaWw6Ol9BZGFwdG9yPF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yLCBkb3VibGU+
CiBfX2F1cm5nKF9fdXJuZyk7CiAgICAgIGF1dG8gX19saW1pdCA9IF9fcC5wKCkgKiAoX19hdXJu
Zy5tYXgoKSAtIF9fYXVybmcubWluKCkpOwoKICAgICAgd2hpbGUgKF9fZiAhPSBfX3QpCiAqX19m
KysgPSAoX19hdXJuZygpIC0gX19hdXJuZy5taW4oKSkgPCBfX2xpbWl0OwogICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX29z
dHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFt
PF9DaGFyVCwgX1RyYWl0cz4mIF9fb3MsCiAgICAgICAgY29uc3QgYmVybm91bGxpX2Rpc3RyaWJ1
dGlvbiYgX194KQogICAgewogICAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQs
IF9UcmFpdHM+IF9fb3N0cmVhbV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fb3N0cmVh
bV90eXBlOjppb3NfYmFzZSBfX2lvc19iYXNlOwoKICAgICAgY29uc3QgdHlwZW5hbWUgX19pb3Nf
YmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9IF9fb3MuZmxhZ3MoKTsKICAgICAgY29uc3QgX0NoYXJU
IF9fZmlsbCA9IF9fb3MuZmlsbCgpOwogICAgICBjb25zdCBzdGQ6OnN0cmVhbXNpemUgX19wcmVj
aXNpb24gPSBfX29zLnByZWNpc2lvbigpOwogICAgICBfX29zLmZsYWdzKF9faW9zX2Jhc2U6OnNj
aWVudGlmaWMgfCBfX2lvc19iYXNlOjpsZWZ0KTsKICAgICAgX19vcy5maWxsKF9fb3Mud2lkZW4o
JyAnKSk7CiAgICAgIF9fb3MucHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
bWF4X2RpZ2l0czEwKTsKCiAgICAgIF9fb3MgPDwgX194LnAoKTsKCiAgICAgIF9fb3MuZmxhZ3Mo
X19mbGFncyk7CiAgICAgIF9fb3MuZmlsbChfX2ZpbGwpOwogICAgICBfX29zLnByZWNpc2lvbihf
X3ByZWNpc2lvbik7CiAgICAgIHJldHVybiBfX29zOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ludFR5cGU+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdl
bmVyYXRvcj4KICAgICAgdHlwZW5hbWUgZ2VvbWV0cmljX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT46
OnJlc3VsdF90eXBlCiAgICAgIGdlb21ldHJpY19kaXN0cmlidXRpb248X0ludFR5cGU+OjoKICAg
ICAgb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICBj
b25zdCBwYXJhbV90eXBlJiBfX3BhcmFtKQogICAgICB7CgoKIGNvbnN0IGRvdWJsZSBfX25hZiA9
CiAgICgxIC0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjplcHNpbG9uKCkpIC8gMjsKCiBj
b25zdCBkb3VibGUgX190aHIgPQogICBzdGQ6Om51bWVyaWNfbGltaXRzPF9JbnRUeXBlPjo6bWF4
KCkgKyBfX25hZjsKIF9fZGV0YWlsOjpfQWRhcHRvcjxfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVy
YXRvciwgZG91YmxlPgogICBfX2F1cm5nKF9fdXJuZyk7CgogZG91YmxlIF9fY2FuZDsKIGRvCiAg
IF9fY2FuZCA9IHN0ZDo6Zmxvb3Ioc3RkOjpsb2coMS4wIC0gX19hdXJuZygpKSAvIF9fcGFyYW0u
X01fbG9nXzFfcCk7CiB3aGlsZSAoX19jYW5kID49IF9fdGhyKTsKCiByZXR1cm4gcmVzdWx0X3R5
cGUoX19jYW5kICsgX19uYWYpOwogICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBl
PgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgdHlwZW5hbWUg
X1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiAgICAgIHZvaWQKICAgICAgZ2VvbWV0cmlj
X2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT46OgogICAgICBfX2dlbmVyYXRlX2ltcGwoX0ZvcndhcmRJ
dGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgICAgIF9Vbmlmb3JtUmFuZG9t
TnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wYXJh
bSkKICAgICAgewoKCgogY29uc3QgZG91YmxlIF9fbmFmID0KICAgKDEgLSBzdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46OmVwc2lsb24oKSkgLyAyOwoKIGNvbnN0IGRvdWJsZSBfX3RociA9CiAg
IHN0ZDo6bnVtZXJpY19saW1pdHM8X0ludFR5cGU+OjptYXgoKSArIF9fbmFmOwogX19kZXRhaWw6
Ol9BZGFwdG9yPF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yLCBkb3VibGU+CiAgIF9fYXVy
bmcoX191cm5nKTsKCiB3aGlsZSAoX19mICE9IF9fdCkKICAgewogICAgIGRvdWJsZSBfX2NhbmQ7
CiAgICAgZG8KICAgICAgIF9fY2FuZCA9IHN0ZDo6Zmxvb3Ioc3RkOjpsb2coMS4wIC0gX19hdXJu
ZygpKQogICAgICAvIF9fcGFyYW0uX01fbG9nXzFfcCk7CiAgICAgd2hpbGUgKF9fY2FuZCA+PSBf
X3Rocik7CgogICAgICpfX2YrKyA9IF9fY2FuZCArIF9fbmFmOwogICB9CiAgICAgIH0KCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0ludFR5cGUsCiAgICB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U
cmFpdHM+CiAgICBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJh
dG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9fb3MsCiAgICAgICAg
Y29uc3QgZ2VvbWV0cmljX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT4mIF9feCkKICAgIHsKICAgICAg
dHlwZWRlZiBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX29zdHJlYW1fdHlw
ZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX29zdHJlYW1fdHlwZTo6aW9zX2Jhc2UgX19pb3Nf
YmFzZTsKCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZtdGZsYWdzIF9fZmxhZ3Mg
PSBfX29zLmZsYWdzKCk7CiAgICAgIGNvbnN0IF9DaGFyVCBfX2ZpbGwgPSBfX29zLmZpbGwoKTsK
ICAgICAgY29uc3Qgc3RkOjpzdHJlYW1zaXplIF9fcHJlY2lzaW9uID0gX19vcy5wcmVjaXNpb24o
KTsKICAgICAgX19vcy5mbGFncyhfX2lvc19iYXNlOjpzY2llbnRpZmljIHwgX19pb3NfYmFzZTo6
bGVmdCk7CiAgICAgIF9fb3MuZmlsbChfX29zLndpZGVuKCcgJykpOwogICAgICBfX29zLnByZWNp
c2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heF9kaWdpdHMxMCk7CgogICAgICBf
X29zIDw8IF9feC5wKCk7CgogICAgICBfX29zLmZsYWdzKF9fZmxhZ3MpOwogICAgICBfX29zLmZp
bGwoX19maWxsKTsKICAgICAgX19vcy5wcmVjaXNpb24oX19wcmVjaXNpb24pOwogICAgICByZXR1
cm4gX19vczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGUsCiAgICB0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJU
LCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1Ry
YWl0cz4mIF9faXMsCiAgICAgICAgZ2VvbWV0cmljX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT4mIF9f
eCkKICAgIHsKICAgICAgdHlwZWRlZiBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRz
PiBfX2lzdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6
aW9zX2Jhc2UgX19pb3NfYmFzZTsKCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZt
dGZsYWdzIF9fZmxhZ3MgPSBfX2lzLmZsYWdzKCk7CiAgICAgIF9faXMuZmxhZ3MoX19pb3NfYmFz
ZTo6c2tpcHdzKTsKCiAgICAgIGRvdWJsZSBfX3A7CiAgICAgIF9faXMgPj4gX19wOwogICAgICBf
X3gucGFyYW0odHlwZW5hbWUgZ2VvbWV0cmljX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT46OnBhcmFt
X3R5cGUoX19wKSk7CgogICAgICBfX2lzLmZsYWdzKF9fZmxhZ3MpOwogICAgICByZXR1cm4gX19p
czsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlPgogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiAgICAgIHR5cGVuYW1lIG5lZ2F0
aXZlX2Jpbm9taWFsX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT46OnJlc3VsdF90eXBlCiAgICAgIG5l
Z2F0aXZlX2Jpbm9taWFsX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT46OgogICAgICBvcGVyYXRvcigp
KF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcpCiAgICAgIHsKIGNvbnN0IGRv
dWJsZSBfX3kgPSBfTV9nZChfX3VybmcpOwoKCiBzdGQ6OnBvaXNzb25fZGlzdHJpYnV0aW9uPHJl
c3VsdF90eXBlPiBfX3BvaXNzb24oX195KTsKIHJldHVybiBfX3BvaXNzb24oX191cm5nKTsKICAg
ICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50VHlwZT4KICAgIHRlbXBsYXRlPHR5cGVuYW1l
IF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogICAgICB0eXBlbmFtZSBuZWdhdGl2ZV9i
aW5vbWlhbF9kaXN0cmlidXRpb248X0ludFR5cGU+OjpyZXN1bHRfdHlwZQogICAgICBuZWdhdGl2
ZV9iaW5vbWlhbF9kaXN0cmlidXRpb248X0ludFR5cGU+OjoKICAgICAgb3BlcmF0b3IoKShfVW5p
Zm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICBjb25zdCBwYXJhbV90eXBlJiBf
X3ApCiAgICAgIHsKIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpnYW1tYV9kaXN0cmlidXRpb248cmVz
dWx0X3R5cGU+OjpwYXJhbV90eXBlCiAgIHBhcmFtX3R5cGU7CgogY29uc3QgZG91YmxlIF9feSA9
CiAgIF9NX2dkKF9fdXJuZywgcGFyYW1fdHlwZShfX3AuaygpLCAoMS4wIC0gX19wLnAoKSkgLyBf
X3AucCgpKSk7Cgogc3RkOjpwb2lzc29uX2Rpc3RyaWJ1dGlvbjxyZXN1bHRfdHlwZT4gX19wb2lz
c29uKF9feSk7CiByZXR1cm4gX19wb2lzc29uKF9fdXJuZyk7CiAgICAgIH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0ludFR5cGU+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9y
LAogICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KICAgICAgdm9p
ZAogICAgICBuZWdhdGl2ZV9iaW5vbWlhbF9kaXN0cmlidXRpb248X0ludFR5cGU+OjoKICAgICAg
X19nZW5lcmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9f
dCwKICAgICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nKQogICAgICB7
Cgogd2hpbGUgKF9fZiAhPSBfX3QpCiAgIHsKICAgICBjb25zdCBkb3VibGUgX195ID0gX01fZ2Qo
X191cm5nKTsKCgogICAgIHN0ZDo6cG9pc3Nvbl9kaXN0cmlidXRpb248cmVzdWx0X3R5cGU+IF9f
cG9pc3NvbihfX3kpOwogICAgICpfX2YrKyA9IF9fcG9pc3NvbihfX3VybmcpOwogICB9CiAgICAg
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGU+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Rm9yd2FyZEl0ZXJhdG9yLAogICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVy
YXRvcj4KICAgICAgdm9pZAogICAgICBuZWdhdGl2ZV9iaW5vbWlhbF9kaXN0cmlidXRpb248X0lu
dFR5cGU+OjoKICAgICAgX19nZW5lcmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9y
d2FyZEl0ZXJhdG9yIF9fdCwKICAgICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYg
X191cm5nLAogICAgICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKICAgICAgewoKIHR5cGVuYW1l
IHN0ZDo6Z2FtbWFfZGlzdHJpYnV0aW9uPHJlc3VsdF90eXBlPjo6cGFyYW1fdHlwZQogICBfX3Ay
KF9fcC5rKCksICgxLjAgLSBfX3AucCgpKSAvIF9fcC5wKCkpOwoKIHdoaWxlIChfX2YgIT0gX190
KQogICB7CiAgICAgY29uc3QgZG91YmxlIF9feSA9IF9NX2dkKF9fdXJuZywgX19wMik7CgogICAg
IHN0ZDo6cG9pc3Nvbl9kaXN0cmlidXRpb248cmVzdWx0X3R5cGU+IF9fcG9pc3NvbihfX3kpOwog
ICAgICpfX2YrKyA9IF9fcG9pc3NvbihfX3VybmcpOwogICB9CiAgICAgIH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0ludFR5cGUsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAg
IHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I8PChzdGQ6
OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vcywKICAgICAgICBjb25zdCBuZWdh
dGl2ZV9iaW5vbWlhbF9kaXN0cmlidXRpb248X0ludFR5cGU+JiBfX3gpCiAgICB7CiAgICAgIHR5
cGVkZWYgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19vc3RyZWFtX3R5cGU7
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19vc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jh
c2U7CgogICAgICBjb25zdCB0eXBlbmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzID0g
X19vcy5mbGFncygpOwogICAgICBjb25zdCBfQ2hhclQgX19maWxsID0gX19vcy5maWxsKCk7CiAg
ICAgIGNvbnN0IHN0ZDo6c3RyZWFtc2l6ZSBfX3ByZWNpc2lvbiA9IF9fb3MucHJlY2lzaW9uKCk7
CiAgICAgIGNvbnN0IF9DaGFyVCBfX3NwYWNlID0gX19vcy53aWRlbignICcpOwogICAgICBfX29z
LmZsYWdzKF9faW9zX2Jhc2U6OnNjaWVudGlmaWMgfCBfX2lvc19iYXNlOjpsZWZ0KTsKICAgICAg
X19vcy5maWxsKF9fb3Mud2lkZW4oJyAnKSk7CiAgICAgIF9fb3MucHJlY2lzaW9uKHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4X2RpZ2l0czEwKTsKCiAgICAgIF9fb3MgPDwgX194Lmso
KSA8PCBfX3NwYWNlIDw8IF9feC5wKCkKICAgIDw8IF9fc3BhY2UgPDwgX194Ll9NX2dkOwoKICAg
ICAgX19vcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgX19vcy5maWxsKF9fZmlsbCk7CiAgICAgIF9f
b3MucHJlY2lzaW9uKF9fcHJlY2lzaW9uKTsKICAgICAgcmV0dXJuIF9fb3M7CiAgICB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp
dHM+CiAgICBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9y
Pj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAgICAgICAgbmVn
YXRpdmVfYmlub21pYWxfZGlzdHJpYnV0aW9uPF9JbnRUeXBlPiYgX194KQogICAgewogICAgICB0
eXBlZGVmIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9faXN0cmVhbV90eXBl
OwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXN0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19i
YXNlOwoKICAgICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9
IF9faXMuZmxhZ3MoKTsKICAgICAgX19pcy5mbGFncyhfX2lvc19iYXNlOjpza2lwd3MpOwoKICAg
ICAgX0ludFR5cGUgX19rOwogICAgICBkb3VibGUgX19wOwogICAgICBfX2lzID4+IF9fayA+PiBf
X3AgPj4gX194Ll9NX2dkOwogICAgICBfX3gucGFyYW0odHlwZW5hbWUgbmVnYXRpdmVfYmlub21p
YWxfZGlzdHJpYnV0aW9uPF9JbnRUeXBlPjo6CiAgcGFyYW1fdHlwZShfX2ssIF9fcCkpOwoKICAg
ICAgX19pcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgcmV0dXJuIF9faXM7CiAgICB9CgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSW50VHlwZT4KICAgIHZvaWQKICAgIHBvaXNzb25fZGlzdHJpYnV0aW9u
PF9JbnRUeXBlPjo6cGFyYW1fdHlwZTo6CiAgICBfTV9pbml0aWFsaXplKCkKICAgIHsKCiAgICAg
IGlmIChfTV9tZWFuID49IDEyKQogewogICBjb25zdCBkb3VibGUgX19tID0gc3RkOjpmbG9vcihf
TV9tZWFuKTsKICAgX01fbG1fdGhyID0gc3RkOjpsb2coX01fbWVhbik7CiAgIF9NX2xmbSA9IHN0
ZDo6bGdhbW1hKF9fbSArIDEpOwogICBfTV9zbSA9IHN0ZDo6c3FydChfX20pOwoKICAgY29uc3Qg
ZG91YmxlIF9fcGlfNCA9IDAuNzg1Mzk4MTYzMzk3NDQ4MzA5NjE1NjYwODQ1ODE5ODc1N0w7CiAg
IGNvbnN0IGRvdWJsZSBfX2R4ID0gc3RkOjpzcXJ0KDIgKiBfX20gKiBzdGQ6OmxvZygzMiAqIF9f
bQogICAgICAgICAgICAgLyBfX3BpXzQpKTsKICAgX01fZCA9IHN0ZDo6cm91bmQoc3RkOjptYXgo
Ni4wLCBzdGQ6Om1pbihfX20sIF9fZHgpKSk7CiAgIGNvbnN0IGRvdWJsZSBfX2N4ID0gMiAqIF9f
bSArIF9NX2Q7CiAgIF9NX3NjeCA9IHN0ZDo6c3FydChfX2N4IC8gMik7CiAgIF9NXzFjeCA9IDEg
LyBfX2N4OwoKICAgX01fYzJiID0gc3RkOjpzcXJ0KF9fcGlfNCAqIF9fY3gpICogc3RkOjpleHAo
X01fMWN4KTsKICAgX01fY2IgPSAyICogX19jeCAqIHN0ZDo6ZXhwKC1fTV9kICogX01fMWN4ICog
KDEgKyBfTV9kIC8gMikpCiAgLyBfTV9kOwogfQogICAgICBlbHNlCgogX01fbG1fdGhyID0gc3Rk
OjpleHAoLV9NX21lYW4pOwogICAgICB9CiMgMTQzMiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvcmFuZG9tLnRjYyIgMwogIHRlbXBsYXRlPHR5
cGVuYW1lIF9JbnRUeXBlPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1i
ZXJHZW5lcmF0b3I+CiAgICAgIHR5cGVuYW1lIHBvaXNzb25fZGlzdHJpYnV0aW9uPF9JbnRUeXBl
Pjo6cmVzdWx0X3R5cGUKICAgICAgcG9pc3Nvbl9kaXN0cmlidXRpb248X0ludFR5cGU+OjoKICAg
ICAgb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICBj
b25zdCBwYXJhbV90eXBlJiBfX3BhcmFtKQogICAgICB7CiBfX2RldGFpbDo6X0FkYXB0b3I8X1Vu
aWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3IsIGRvdWJsZT4KICAgX19hdXJuZyhfX3VybmcpOwoK
IGlmIChfX3BhcmFtLm1lYW4oKSA+PSAxMikKICAgewogICAgIGRvdWJsZSBfX3g7CgoKICAgICBj
b25zdCBkb3VibGUgX19uYWYgPQogICAgICAgKDEgLSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46OmVwc2lsb24oKSkgLyAyOwogICAgIGNvbnN0IGRvdWJsZSBfX3RociA9CiAgICAgICBzdGQ6
Om51bWVyaWNfbGltaXRzPF9JbnRUeXBlPjo6bWF4KCkgKyBfX25hZjsKCiAgICAgY29uc3QgZG91
YmxlIF9fbSA9IHN0ZDo6Zmxvb3IoX19wYXJhbS5tZWFuKCkpOwoKICAgICBjb25zdCBkb3VibGUg
X19zcGlfMiA9IDEuMjUzMzE0MTM3MzE1NTAwMjUxMjA3ODgyNjQyNDA1NTIyNkw7CiAgICAgY29u
c3QgZG91YmxlIF9fYzEgPSBfX3BhcmFtLl9NX3NtICogX19zcGlfMjsKICAgICBjb25zdCBkb3Vi
bGUgX19jMiA9IF9fcGFyYW0uX01fYzJiICsgX19jMTsKICAgICBjb25zdCBkb3VibGUgX19jMyA9
IF9fYzIgKyAxOwogICAgIGNvbnN0IGRvdWJsZSBfX2M0ID0gX19jMyArIDE7CgogICAgIGNvbnN0
IGRvdWJsZSBfX2UxNzggPSAxLjAxMjkwMzA0NzkzMjAwMTg1ODMxODU1MTQ3Nzc1MTI5ODNMOwog
ICAgIGNvbnN0IGRvdWJsZSBfX2M1ID0gX19jNCArIF9fZTE3ODsKICAgICBjb25zdCBkb3VibGUg
X19jID0gX19wYXJhbS5fTV9jYiArIF9fYzU7CiAgICAgY29uc3QgZG91YmxlIF9fMmN4ID0gMiAq
ICgyICogX19tICsgX19wYXJhbS5fTV9kKTsKCiAgICAgYm9vbCBfX3JlamVjdCA9IHRydWU7CiAg
ICAgZG8KICAgICAgIHsKICBjb25zdCBkb3VibGUgX191ID0gX19jICogX19hdXJuZygpOwogIGNv
bnN0IGRvdWJsZSBfX2UgPSAtc3RkOjpsb2coMS4wIC0gX19hdXJuZygpKTsKCiAgZG91YmxlIF9f
dyA9IDAuMDsKCiAgaWYgKF9fdSA8PSBfX2MxKQogICAgewogICAgICBjb25zdCBkb3VibGUgX19u
ID0gX01fbmQoX191cm5nKTsKICAgICAgY29uc3QgZG91YmxlIF9feSA9IC1zdGQ6OmFicyhfX24p
ICogX19wYXJhbS5fTV9zbSAtIDE7CiAgICAgIF9feCA9IHN0ZDo6Zmxvb3IoX195KTsKICAgICAg
X193ID0gLV9fbiAqIF9fbiAvIDI7CiAgICAgIGlmIChfX3ggPCAtX19tKQogICAgICAgIGNvbnRp
bnVlOwogICAgfQogIGVsc2UgaWYgKF9fdSA8PSBfX2MyKQogICAgewogICAgICBjb25zdCBkb3Vi
bGUgX19uID0gX01fbmQoX191cm5nKTsKICAgICAgY29uc3QgZG91YmxlIF9feSA9IDEgKyBzdGQ6
OmFicyhfX24pICogX19wYXJhbS5fTV9zY3g7CiAgICAgIF9feCA9IHN0ZDo6Y2VpbChfX3kpOwog
ICAgICBfX3cgPSBfX3kgKiAoMiAtIF9feSkgKiBfX3BhcmFtLl9NXzFjeDsKICAgICAgaWYgKF9f
eCA+IF9fcGFyYW0uX01fZCkKICAgICAgICBjb250aW51ZTsKICAgIH0KICBlbHNlIGlmIChfX3Ug
PD0gX19jMykKCgogICAgX194ID0gLTE7CiAgZWxzZSBpZiAoX191IDw9IF9fYzQpCiAgICBfX3gg
PSAwOwogIGVsc2UgaWYgKF9fdSA8PSBfX2M1KQogICAgX194ID0gMTsKICBlbHNlCiAgICB7CiAg
ICAgIGNvbnN0IGRvdWJsZSBfX3YgPSAtc3RkOjpsb2coMS4wIC0gX19hdXJuZygpKTsKICAgICAg
Y29uc3QgZG91YmxlIF9feSA9IF9fcGFyYW0uX01fZAogICAgICAgICArIF9fdiAqIF9fMmN4IC8g
X19wYXJhbS5fTV9kOwogICAgICBfX3ggPSBzdGQ6OmNlaWwoX195KTsKICAgICAgX193ID0gLV9f
cGFyYW0uX01fZCAqIF9fcGFyYW0uX01fMWN4ICogKDEgKyBfX3kgLyAyKTsKICAgIH0KCiAgX19y
ZWplY3QgPSAoX193IC0gX19lIC0gX194ICogX19wYXJhbS5fTV9sbV90aHIKICAgICAgID4gX19w
YXJhbS5fTV9sZm0gLSBzdGQ6OmxnYW1tYShfX3ggKyBfX20gKyAxKSk7CgogIF9fcmVqZWN0IHw9
IF9feCArIF9fbSA+PSBfX3RocjsKCiAgICAgICB9IHdoaWxlIChfX3JlamVjdCk7CgogICAgIHJl
dHVybiByZXN1bHRfdHlwZShfX3ggKyBfX20gKyBfX25hZik7CiAgIH0KIGVsc2UKCiAgIHsKICAg
ICBfSW50VHlwZSBfX3ggPSAwOwogICAgIGRvdWJsZSBfX3Byb2QgPSAxLjA7CgogICAgIGRvCiAg
ICAgICB7CiAgX19wcm9kICo9IF9fYXVybmcoKTsKICBfX3ggKz0gMTsKICAgICAgIH0KICAgICB3
aGlsZSAoX19wcm9kID4gX19wYXJhbS5fTV9sbV90aHIpOwoKICAgICByZXR1cm4gX194IC0gMTsK
ICAgfQogICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlPgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21O
dW1iZXJHZW5lcmF0b3I+CiAgICAgIHZvaWQKICAgICAgcG9pc3Nvbl9kaXN0cmlidXRpb248X0lu
dFR5cGU+OjoKICAgICAgX19nZW5lcmF0ZV9pbXBsKF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9y
d2FyZEl0ZXJhdG9yIF9fdCwKICAgICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYg
X191cm5nLAogICAgICAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcGFyYW0pCiAgICAgIHsKCgogd2hp
bGUgKF9fZiAhPSBfX3QpCiAgICpfX2YrKyA9IHRoaXMtPm9wZXJhdG9yKCkoX191cm5nLCBfX3Bh
cmFtKTsKICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50VHlwZSwKICAgIHR5cGVuYW1l
IF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQs
IF9UcmFpdHM+JgogICAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJh
aXRzPiYgX19vcywKICAgICAgICBjb25zdCBwb2lzc29uX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT4m
IF9feCkKICAgIHsKICAgICAgdHlwZWRlZiBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJh
aXRzPiBfX29zdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX29zdHJlYW1fdHlw
ZTo6aW9zX2Jhc2UgX19pb3NfYmFzZTsKCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6
OmZtdGZsYWdzIF9fZmxhZ3MgPSBfX29zLmZsYWdzKCk7CiAgICAgIGNvbnN0IF9DaGFyVCBfX2Zp
bGwgPSBfX29zLmZpbGwoKTsKICAgICAgY29uc3Qgc3RkOjpzdHJlYW1zaXplIF9fcHJlY2lzaW9u
ID0gX19vcy5wcmVjaXNpb24oKTsKICAgICAgY29uc3QgX0NoYXJUIF9fc3BhY2UgPSBfX29zLndp
ZGVuKCcgJyk7CiAgICAgIF9fb3MuZmxhZ3MoX19pb3NfYmFzZTo6c2NpZW50aWZpYyB8IF9faW9z
X2Jhc2U6OmxlZnQpOwogICAgICBfX29zLmZpbGwoX19zcGFjZSk7CiAgICAgIF9fb3MucHJlY2lz
aW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4X2RpZ2l0czEwKTsKCiAgICAgIF9f
b3MgPDwgX194Lm1lYW4oKSA8PCBfX3NwYWNlIDw8IF9feC5fTV9uZDsKCiAgICAgIF9fb3MuZmxh
Z3MoX19mbGFncyk7CiAgICAgIF9fb3MuZmlsbChfX2ZpbGwpOwogICAgICBfX29zLnByZWNpc2lv
bihfX3ByZWNpc2lvbik7CiAgICAgIHJldHVybiBfX29zOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfSW50VHlwZSwKICAgIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAg
IHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+PihzdGQ6
OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywKICAgICAgICBwb2lzc29uX2Rp
c3RyaWJ1dGlvbjxfSW50VHlwZT4mIF9feCkKICAgIHsKICAgICAgdHlwZWRlZiBzdGQ6OmJhc2lj
X2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX2lzdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6aW9zX2Jhc2UgX19pb3NfYmFzZTsKCiAgICAgIGNvbnN0
IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZtdGZsYWdzIF9fZmxhZ3MgPSBfX2lzLmZsYWdzKCk7CiAg
ICAgIF9faXMuZmxhZ3MoX19pb3NfYmFzZTo6c2tpcHdzKTsKCiAgICAgIGRvdWJsZSBfX21lYW47
CiAgICAgIF9faXMgPj4gX19tZWFuID4+IF9feC5fTV9uZDsKICAgICAgX194LnBhcmFtKHR5cGVu
YW1lIHBvaXNzb25fZGlzdHJpYnV0aW9uPF9JbnRUeXBlPjo6cGFyYW1fdHlwZShfX21lYW4pKTsK
CiAgICAgIF9faXMuZmxhZ3MoX19mbGFncyk7CiAgICAgIHJldHVybiBfX2lzOwogICAgfQoKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGU+CiAgICB2b2lkCiAgICBiaW5vbWlhbF9kaXN0cmli
dXRpb248X0ludFR5cGU+OjpwYXJhbV90eXBlOjoKICAgIF9NX2luaXRpYWxpemUoKQogICAgewog
ICAgICBjb25zdCBkb3VibGUgX19wMTIgPSBfTV9wIDw9IDAuNSA/IF9NX3AgOiAxLjAgLSBfTV9w
OwoKICAgICAgX01fZWFzeSA9IHRydWU7CgoKICAgICAgaWYgKF9NX3QgKiBfX3AxMiA+PSA4KQog
ewogICBfTV9lYXN5ID0gZmFsc2U7CiAgIGNvbnN0IGRvdWJsZSBfX25wID0gc3RkOjpmbG9vcihf
TV90ICogX19wMTIpOwogICBjb25zdCBkb3VibGUgX19wYSA9IF9fbnAgLyBfTV90OwogICBjb25z
dCBkb3VibGUgX18xcCA9IDEgLSBfX3BhOwoKICAgY29uc3QgZG91YmxlIF9fcGlfNCA9IDAuNzg1
Mzk4MTYzMzk3NDQ4MzA5NjE1NjYwODQ1ODE5ODc1N0w7CiAgIGNvbnN0IGRvdWJsZSBfX2QxeCA9
CiAgICAgc3RkOjpzcXJ0KF9fbnAgKiBfXzFwICogc3RkOjpsb2coMzIgKiBfX25wCiAgICAgICAg
ICAvICg4MSAqIF9fcGlfNCAqIF9fMXApKSk7CiAgIF9NX2QxID0gc3RkOjpyb3VuZChzdGQ6Om1h
eCgxLjAsIF9fZDF4KSk7CiAgIGNvbnN0IGRvdWJsZSBfX2QyeCA9CiAgICAgc3RkOjpzcXJ0KF9f
bnAgKiBfXzFwICogc3RkOjpsb2coMzIgKiBfTV90ICogX18xcAogICAgICAgICAgLyAoX19waV80
ICogX19wYSkpKTsKICAgX01fZDIgPSBzdGQ6OnJvdW5kKHN0ZDo6bWF4KDEuMCwgX19kMngpKTsK
CgogICBjb25zdCBkb3VibGUgX19zcGlfMiA9IDEuMjUzMzE0MTM3MzE1NTAwMjUxMjA3ODgyNjQy
NDA1NTIyNkw7CiAgIF9NX3MxID0gc3RkOjpzcXJ0KF9fbnAgKiBfXzFwKSAqICgxICsgX01fZDEg
LyAoNCAqIF9fbnApKTsKICAgX01fczIgPSBzdGQ6OnNxcnQoX19ucCAqIF9fMXApICogKDEgKyBf
TV9kMiAvICg0ICogX01fdCAqIF9fMXApKTsKICAgX01fYyA9IDIgKiBfTV9kMSAvIF9fbnA7CiAg
IF9NX2ExID0gc3RkOjpleHAoX01fYykgKiBfTV9zMSAqIF9fc3BpXzI7CiAgIGNvbnN0IGRvdWJs
ZSBfX2ExMiA9IF9NX2ExICsgX01fczIgKiBfX3NwaV8yOwogICBjb25zdCBkb3VibGUgX19zMXMg
PSBfTV9zMSAqIF9NX3MxOwogICBfTV9hMTIzID0gX19hMTIgKyAoc3RkOjpleHAoX01fZDEgLyAo
X01fdCAqIF9fMXApKQogICAgICAgICogMiAqIF9fczFzIC8gX01fZDEKICAgICAgICAqIHN0ZDo6
ZXhwKC1fTV9kMSAqIF9NX2QxIC8gKDIgKiBfX3MxcykpKTsKICAgY29uc3QgZG91YmxlIF9fczJz
ID0gX01fczIgKiBfTV9zMjsKICAgX01fcyA9IChfTV9hMTIzICsgMiAqIF9fczJzIC8gX01fZDIK
ICAgICogc3RkOjpleHAoLV9NX2QyICogX01fZDIgLyAoMiAqIF9fczJzKSkpOwogICBfTV9sZiA9
IChzdGQ6OmxnYW1tYShfX25wICsgMSkKICAgICArIHN0ZDo6bGdhbW1hKF9NX3QgLSBfX25wICsg
MSkpOwogICBfTV9scDFwID0gc3RkOjpsb2coX19wYSAvIF9fMXApOwoKICAgX01fcSA9IC1zdGQ6
OmxvZygxIC0gKF9fcDEyIC0gX19wYSkgLyBfXzFwKTsKIH0KICAgICAgZWxzZQoKIF9NX3EgPSAt
c3RkOjpsb2coMSAtIF9fcDEyKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGU+
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KICAg
ICAgdHlwZW5hbWUgYmlub21pYWxfZGlzdHJpYnV0aW9uPF9JbnRUeXBlPjo6cmVzdWx0X3R5cGUK
ICAgICAgYmlub21pYWxfZGlzdHJpYnV0aW9uPF9JbnRUeXBlPjo6CiAgICAgIF9NX3dhaXRpbmco
X1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywgX0ludFR5cGUgX190KQogICAg
ICB7CiBfSW50VHlwZSBfX3ggPSAwOwogZG91YmxlIF9fc3VtID0gMC4wOwogX19kZXRhaWw6Ol9B
ZGFwdG9yPF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yLCBkb3VibGU+CiAgIF9fYXVybmco
X191cm5nKTsKCiBkbwogICB7CiAgICAgaWYgKF9fdCA9PSBfX3gpCiAgICAgICByZXR1cm4gX194
OwogICAgIGNvbnN0IGRvdWJsZSBfX2UgPSAtc3RkOjpsb2coMS4wIC0gX19hdXJuZygpKTsKICAg
ICBfX3N1bSArPSBfX2UgLyAoX190IC0gX194KTsKICAgICBfX3ggKz0gMTsKICAgfQogd2hpbGUg
KF9fc3VtIDw9IF9NX3BhcmFtLl9NX3EpOwoKIHJldHVybiBfX3ggLSAxOwogICAgICB9CiMgMTY4
MSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMv
cmFuZG9tLnRjYyIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlPgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiAgICAgIHR5cGVuYW1lIGJp
bm9taWFsX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT46OnJlc3VsdF90eXBlCiAgICAgIGJpbm9taWFs
X2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT46OgogICAgICBvcGVyYXRvcigpKF9Vbmlmb3JtUmFuZG9t
TnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcGFyYW0pCiAg
ICAgIHsKIHJlc3VsdF90eXBlIF9fcmV0OwogY29uc3QgX0ludFR5cGUgX190ID0gX19wYXJhbS50
KCk7CiBjb25zdCBkb3VibGUgX19wID0gX19wYXJhbS5wKCk7CiBjb25zdCBkb3VibGUgX19wMTIg
PSBfX3AgPD0gMC41ID8gX19wIDogMS4wIC0gX19wOwogX19kZXRhaWw6Ol9BZGFwdG9yPF9Vbmlm
b3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yLCBkb3VibGU+CiAgIF9fYXVybmcoX191cm5nKTsKCgog
aWYgKCFfX3BhcmFtLl9NX2Vhc3kpCiAgIHsKICAgICBkb3VibGUgX194OwoKCiAgICAgY29uc3Qg
ZG91YmxlIF9fbmFmID0KICAgICAgICgxIC0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpl
cHNpbG9uKCkpIC8gMjsKICAgICBjb25zdCBkb3VibGUgX190aHIgPQogICAgICAgc3RkOjpudW1l
cmljX2xpbWl0czxfSW50VHlwZT46Om1heCgpICsgX19uYWY7CgogICAgIGNvbnN0IGRvdWJsZSBf
X25wID0gc3RkOjpmbG9vcihfX3QgKiBfX3AxMik7CgoKICAgICBjb25zdCBkb3VibGUgX19zcGlf
MiA9IDEuMjUzMzE0MTM3MzE1NTAwMjUxMjA3ODgyNjQyNDA1NTIyNkw7CiAgICAgY29uc3QgZG91
YmxlIF9fYTEgPSBfX3BhcmFtLl9NX2ExOwogICAgIGNvbnN0IGRvdWJsZSBfX2ExMiA9IF9fYTEg
KyBfX3BhcmFtLl9NX3MyICogX19zcGlfMjsKICAgICBjb25zdCBkb3VibGUgX19hMTIzID0gX19w
YXJhbS5fTV9hMTIzOwogICAgIGNvbnN0IGRvdWJsZSBfX3MxcyA9IF9fcGFyYW0uX01fczEgKiBf
X3BhcmFtLl9NX3MxOwogICAgIGNvbnN0IGRvdWJsZSBfX3MycyA9IF9fcGFyYW0uX01fczIgKiBf
X3BhcmFtLl9NX3MyOwoKICAgICBib29sIF9fcmVqZWN0OwogICAgIGRvCiAgICAgICB7CiAgY29u
c3QgZG91YmxlIF9fdSA9IF9fcGFyYW0uX01fcyAqIF9fYXVybmcoKTsKCiAgZG91YmxlIF9fdjsK
CiAgaWYgKF9fdSA8PSBfX2ExKQogICAgewogICAgICBjb25zdCBkb3VibGUgX19uID0gX01fbmQo
X191cm5nKTsKICAgICAgY29uc3QgZG91YmxlIF9feSA9IF9fcGFyYW0uX01fczEgKiBzdGQ6OmFi
cyhfX24pOwogICAgICBfX3JlamVjdCA9IF9feSA+PSBfX3BhcmFtLl9NX2QxOwogICAgICBpZiAo
IV9fcmVqZWN0KQogICAgICAgIHsKICAgY29uc3QgZG91YmxlIF9fZSA9IC1zdGQ6OmxvZygxLjAg
LSBfX2F1cm5nKCkpOwogICBfX3ggPSBzdGQ6OmZsb29yKF9feSk7CiAgIF9fdiA9IC1fX2UgLSBf
X24gKiBfX24gLyAyICsgX19wYXJhbS5fTV9jOwogICAgICAgIH0KICAgIH0KICBlbHNlIGlmIChf
X3UgPD0gX19hMTIpCiAgICB7CiAgICAgIGNvbnN0IGRvdWJsZSBfX24gPSBfTV9uZChfX3Vybmcp
OwogICAgICBjb25zdCBkb3VibGUgX195ID0gX19wYXJhbS5fTV9zMiAqIHN0ZDo6YWJzKF9fbik7
CiAgICAgIF9fcmVqZWN0ID0gX195ID49IF9fcGFyYW0uX01fZDI7CiAgICAgIGlmICghX19yZWpl
Y3QpCiAgICAgICAgewogICBjb25zdCBkb3VibGUgX19lID0gLXN0ZDo6bG9nKDEuMCAtIF9fYXVy
bmcoKSk7CiAgIF9feCA9IHN0ZDo6Zmxvb3IoLV9feSk7CiAgIF9fdiA9IC1fX2UgLSBfX24gKiBf
X24gLyAyOwogICAgICAgIH0KICAgIH0KICBlbHNlIGlmIChfX3UgPD0gX19hMTIzKQogICAgewog
ICAgICBjb25zdCBkb3VibGUgX19lMSA9IC1zdGQ6OmxvZygxLjAgLSBfX2F1cm5nKCkpOwogICAg
ICBjb25zdCBkb3VibGUgX19lMiA9IC1zdGQ6OmxvZygxLjAgLSBfX2F1cm5nKCkpOwoKICAgICAg
Y29uc3QgZG91YmxlIF9feSA9IF9fcGFyYW0uX01fZDEKICAgICAgICAgKyAyICogX19zMXMgKiBf
X2UxIC8gX19wYXJhbS5fTV9kMTsKICAgICAgX194ID0gc3RkOjpmbG9vcihfX3kpOwogICAgICBf
X3YgPSAoLV9fZTIgKyBfX3BhcmFtLl9NX2QxICogKDEgLyAoX190IC0gX19ucCkKICAgICAgICAg
IC1fX3kgLyAoMiAqIF9fczFzKSkpOwogICAgICBfX3JlamVjdCA9IGZhbHNlOwogICAgfQogIGVs
c2UKICAgIHsKICAgICAgY29uc3QgZG91YmxlIF9fZTEgPSAtc3RkOjpsb2coMS4wIC0gX19hdXJu
ZygpKTsKICAgICAgY29uc3QgZG91YmxlIF9fZTIgPSAtc3RkOjpsb2coMS4wIC0gX19hdXJuZygp
KTsKCiAgICAgIGNvbnN0IGRvdWJsZSBfX3kgPSBfX3BhcmFtLl9NX2QyCiAgICAgICAgICsgMiAq
IF9fczJzICogX19lMSAvIF9fcGFyYW0uX01fZDI7CiAgICAgIF9feCA9IHN0ZDo6Zmxvb3IoLV9f
eSk7CiAgICAgIF9fdiA9IC1fX2UyIC0gX19wYXJhbS5fTV9kMiAqIF9feSAvICgyICogX19zMnMp
OwogICAgICBfX3JlamVjdCA9IGZhbHNlOwogICAgfQoKICBfX3JlamVjdCA9IF9fcmVqZWN0IHx8
IF9feCA8IC1fX25wIHx8IF9feCA+IF9fdCAtIF9fbnA7CiAgaWYgKCFfX3JlamVjdCkKICAgIHsK
ICAgICAgY29uc3QgZG91YmxlIF9fbGZ4ID0KICAgICAgICBzdGQ6OmxnYW1tYShfX25wICsgX194
ICsgMSkKICAgICAgICArIHN0ZDo6bGdhbW1hKF9fdCAtIChfX25wICsgX194KSArIDEpOwogICAg
ICBfX3JlamVjdCA9IF9fdiA+IF9fcGFyYW0uX01fbGYgLSBfX2xmeAogICAgICAgICsgX194ICog
X19wYXJhbS5fTV9scDFwOwogICAgfQoKICBfX3JlamVjdCB8PSBfX3ggKyBfX25wID49IF9fdGhy
OwogICAgICAgfQogICAgIHdoaWxlIChfX3JlamVjdCk7CgogICAgIF9feCArPSBfX25wICsgX19u
YWY7CgogICAgIGNvbnN0IF9JbnRUeXBlIF9feiA9IF9NX3dhaXRpbmcoX191cm5nLCBfX3QgLSBf
SW50VHlwZShfX3gpKTsKICAgICBfX3JldCA9IF9JbnRUeXBlKF9feCkgKyBfX3o7CiAgIH0KIGVs
c2UKCiAgIF9fcmV0ID0gX01fd2FpdGluZyhfX3VybmcsIF9fdCk7CgogaWYgKF9fcDEyICE9IF9f
cCkKICAgX19yZXQgPSBfX3QgLSBfX3JldDsKIHJldHVybiBfX3JldDsKICAgICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSW50VHlwZT4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRl
cmF0b3IsCiAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogICAg
ICB2b2lkCiAgICAgIGJpbm9taWFsX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT46OgogICAgICBfX2dl
bmVyYXRlX2ltcGwoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAog
ICAgICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgICAgY29u
c3QgcGFyYW1fdHlwZSYgX19wYXJhbSkKICAgICAgewoKCiB3aGlsZSAoX19mICE9IF9fdCkKICAg
Kl9fZisrID0gdGhpcy0+b3BlcmF0b3IoKShfX3VybmcsIF9fcGFyYW0pOwogICAgICB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlLAogICAgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzPgogICAgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVy
YXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAgICAg
IGNvbnN0IGJpbm9taWFsX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT4mIF9feCkKICAgIHsKICAgICAg
dHlwZWRlZiBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX29zdHJlYW1fdHlw
ZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX29zdHJlYW1fdHlwZTo6aW9zX2Jhc2UgX19pb3Nf
YmFzZTsKCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZtdGZsYWdzIF9fZmxhZ3Mg
PSBfX29zLmZsYWdzKCk7CiAgICAgIGNvbnN0IF9DaGFyVCBfX2ZpbGwgPSBfX29zLmZpbGwoKTsK
ICAgICAgY29uc3Qgc3RkOjpzdHJlYW1zaXplIF9fcHJlY2lzaW9uID0gX19vcy5wcmVjaXNpb24o
KTsKICAgICAgY29uc3QgX0NoYXJUIF9fc3BhY2UgPSBfX29zLndpZGVuKCcgJyk7CiAgICAgIF9f
b3MuZmxhZ3MoX19pb3NfYmFzZTo6c2NpZW50aWZpYyB8IF9faW9zX2Jhc2U6OmxlZnQpOwogICAg
ICBfX29zLmZpbGwoX19zcGFjZSk7CiAgICAgIF9fb3MucHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6bWF4X2RpZ2l0czEwKTsKCiAgICAgIF9fb3MgPDwgX194LnQoKSA8PCBf
X3NwYWNlIDw8IF9feC5wKCkKICAgIDw8IF9fc3BhY2UgPDwgX194Ll9NX25kOwoKICAgICAgX19v
cy5mbGFncyhfX2ZsYWdzKTsKICAgICAgX19vcy5maWxsKF9fZmlsbCk7CiAgICAgIF9fb3MucHJl
Y2lzaW9uKF9fcHJlY2lzaW9uKTsKICAgICAgcmV0dXJuIF9fb3M7CiAgICB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9JbnRUeXBlLAogICAgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz
PgogICAgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcj4+
KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAogICAgICAgIGJpbm9t
aWFsX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT4mIF9feCkKICAgIHsKICAgICAgdHlwZWRlZiBzdGQ6
OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX2lzdHJlYW1fdHlwZTsKICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6aW9zX2Jhc2UgX19pb3NfYmFzZTsKCiAgICAg
IGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZtdGZsYWdzIF9fZmxhZ3MgPSBfX2lzLmZsYWdz
KCk7CiAgICAgIF9faXMuZmxhZ3MoX19pb3NfYmFzZTo6ZGVjIHwgX19pb3NfYmFzZTo6c2tpcHdz
KTsKCiAgICAgIF9JbnRUeXBlIF9fdDsKICAgICAgZG91YmxlIF9fcDsKICAgICAgX19pcyA+PiBf
X3QgPj4gX19wID4+IF9feC5fTV9uZDsKICAgICAgX194LnBhcmFtKHR5cGVuYW1lIGJpbm9taWFs
X2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT46OgogIHBhcmFtX3R5cGUoX190LCBfX3ApKTsKCiAgICAg
IF9faXMuZmxhZ3MoX19mbGFncyk7CiAgICAgIHJldHVybiBfX2lzOwogICAgfQoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1JlYWxUeXBlPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVy
YXRvciwKICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiAgICAg
IHZvaWQKICAgICAgc3RkOjpleHBvbmVudGlhbF9kaXN0cmlidXRpb248X1JlYWxUeXBlPjo6CiAg
ICAgIF9fZ2VuZXJhdGVfaW1wbChfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRv
ciBfX3QsCiAgICAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAg
ICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiAgICAgIHsKCiBfX2RldGFpbDo6X0FkYXB0b3I8
X1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3IsIHJlc3VsdF90eXBlPgogICBfX2F1cm5nKF9f
dXJuZyk7CiB3aGlsZSAoX19mICE9IF9fdCkKICAgKl9fZisrID0gLXN0ZDo6bG9nKHJlc3VsdF90
eXBlKDEpIC0gX19hdXJuZygpKSAvIF9fcC5sYW1iZGEoKTsKICAgICAgfQoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmVhbFR5cGUsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAg
IHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I8PChzdGQ6
OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vcywKICAgICAgICBjb25zdCBleHBv
bmVudGlhbF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX194KQogICAgewogICAgICB0eXBlZGVm
IHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9fb3N0cmVhbV90eXBlOwogICAg
ICB0eXBlZGVmIHR5cGVuYW1lIF9fb3N0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19iYXNlOwoK
ICAgICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9IF9fb3Mu
ZmxhZ3MoKTsKICAgICAgY29uc3QgX0NoYXJUIF9fZmlsbCA9IF9fb3MuZmlsbCgpOwogICAgICBj
b25zdCBzdGQ6OnN0cmVhbXNpemUgX19wcmVjaXNpb24gPSBfX29zLnByZWNpc2lvbigpOwogICAg
ICBfX29zLmZsYWdzKF9faW9zX2Jhc2U6OnNjaWVudGlmaWMgfCBfX2lvc19iYXNlOjpsZWZ0KTsK
ICAgICAgX19vcy5maWxsKF9fb3Mud2lkZW4oJyAnKSk7CiAgICAgIF9fb3MucHJlY2lzaW9uKHN0
ZDo6bnVtZXJpY19saW1pdHM8X1JlYWxUeXBlPjo6bWF4X2RpZ2l0czEwKTsKCiAgICAgIF9fb3Mg
PDwgX194LmxhbWJkYSgpOwoKICAgICAgX19vcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgX19vcy5m
aWxsKF9fZmlsbCk7CiAgICAgIF9fb3MucHJlY2lzaW9uKF9fcHJlY2lzaW9uKTsKICAgICAgcmV0
dXJuIF9fb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSwgdHlwZW5hbWUg
X0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwg
X1RyYWl0cz4mCiAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFp
dHM+JiBfX2lzLAogICAgICAgIGV4cG9uZW50aWFsX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBf
X3gpCiAgICB7CiAgICAgIHR5cGVkZWYgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0
cz4gX19pc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19pc3RyZWFtX3R5cGU6
Omlvc19iYXNlIF9faW9zX2Jhc2U7CgogICAgICBjb25zdCB0eXBlbmFtZSBfX2lvc19iYXNlOjpm
bXRmbGFncyBfX2ZsYWdzID0gX19pcy5mbGFncygpOwogICAgICBfX2lzLmZsYWdzKF9faW9zX2Jh
c2U6OmRlYyB8IF9faW9zX2Jhc2U6OnNraXB3cyk7CgogICAgICBfUmVhbFR5cGUgX19sYW1iZGE7
CiAgICAgIF9faXMgPj4gX19sYW1iZGE7CiAgICAgIF9feC5wYXJhbSh0eXBlbmFtZSBleHBvbmVu
dGlhbF9kaXN0cmlidXRpb248X1JlYWxUeXBlPjo6CiAgcGFyYW1fdHlwZShfX2xhbWJkYSkpOwoK
ICAgICAgX19pcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgcmV0dXJuIF9faXM7CiAgICB9CiMgMTky
OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMv
cmFuZG9tLnRjYyIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZT4KICAgIHRlbXBsYXRl
PHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogICAgICB0eXBlbmFtZSBu
b3JtYWxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46OnJlc3VsdF90eXBlCiAgICAgIG5vcm1hbF9k
aXN0cmlidXRpb248X1JlYWxUeXBlPjo6CiAgICAgIG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21O
dW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgY29uc3QgcGFyYW1fdHlwZSYgX19wYXJhbSkKICAg
ICAgewogcmVzdWx0X3R5cGUgX19yZXQ7CiBfX2RldGFpbDo6X0FkYXB0b3I8X1VuaWZvcm1SYW5k
b21OdW1iZXJHZW5lcmF0b3IsIHJlc3VsdF90eXBlPgogICBfX2F1cm5nKF9fdXJuZyk7CgogaWYg
KF9NX3NhdmVkX2F2YWlsYWJsZSkKICAgewogICAgIF9NX3NhdmVkX2F2YWlsYWJsZSA9IGZhbHNl
OwogICAgIF9fcmV0ID0gX01fc2F2ZWQ7CiAgIH0KIGVsc2UKICAgewogICAgIHJlc3VsdF90eXBl
IF9feCwgX195LCBfX3IyOwogICAgIGRvCiAgICAgICB7CiAgX194ID0gcmVzdWx0X3R5cGUoMi4w
KSAqIF9fYXVybmcoKSAtIDEuMDsKICBfX3kgPSByZXN1bHRfdHlwZSgyLjApICogX19hdXJuZygp
IC0gMS4wOwogIF9fcjIgPSBfX3ggKiBfX3ggKyBfX3kgKiBfX3k7CiAgICAgICB9CiAgICAgd2hp
bGUgKF9fcjIgPiAxLjAgfHwgX19yMiA9PSAwLjApOwoKICAgICBjb25zdCByZXN1bHRfdHlwZSBf
X211bHQgPSBzdGQ6OnNxcnQoLTIgKiBzdGQ6OmxvZyhfX3IyKSAvIF9fcjIpOwogICAgIF9NX3Nh
dmVkID0gX194ICogX19tdWx0OwogICAgIF9NX3NhdmVkX2F2YWlsYWJsZSA9IHRydWU7CiAgICAg
X19yZXQgPSBfX3kgKiBfX211bHQ7CiAgIH0KCiBfX3JldCA9IF9fcmV0ICogX19wYXJhbS5zdGRk
ZXYoKSArIF9fcGFyYW0ubWVhbigpOwogcmV0dXJuIF9fcmV0OwogICAgICB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9SZWFsVHlwZT4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0
b3IsCiAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogICAgICB2
b2lkCiAgICAgIG5vcm1hbF9kaXN0cmlidXRpb248X1JlYWxUeXBlPjo6CiAgICAgIF9fZ2VuZXJh
dGVfaW1wbChfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgICAg
ICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICAgICBjb25zdCBw
YXJhbV90eXBlJiBfX3BhcmFtKQogICAgICB7CgoKIGlmIChfX2YgPT0gX190KQogICByZXR1cm47
CgogaWYgKF9NX3NhdmVkX2F2YWlsYWJsZSkKICAgewogICAgIF9NX3NhdmVkX2F2YWlsYWJsZSA9
IGZhbHNlOwogICAgICpfX2YrKyA9IF9NX3NhdmVkICogX19wYXJhbS5zdGRkZXYoKSArIF9fcGFy
YW0ubWVhbigpOwoKICAgICBpZiAoX19mID09IF9fdCkKICAgICAgIHJldHVybjsKICAgfQoKIF9f
ZGV0YWlsOjpfQWRhcHRvcjxfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciwgcmVzdWx0X3R5
cGU+CiAgIF9fYXVybmcoX191cm5nKTsKCiB3aGlsZSAoX19mICsgMSA8IF9fdCkKICAgewogICAg
IHJlc3VsdF90eXBlIF9feCwgX195LCBfX3IyOwogICAgIGRvCiAgICAgICB7CiAgX194ID0gcmVz
dWx0X3R5cGUoMi4wKSAqIF9fYXVybmcoKSAtIDEuMDsKICBfX3kgPSByZXN1bHRfdHlwZSgyLjAp
ICogX19hdXJuZygpIC0gMS4wOwogIF9fcjIgPSBfX3ggKiBfX3ggKyBfX3kgKiBfX3k7CiAgICAg
ICB9CiAgICAgd2hpbGUgKF9fcjIgPiAxLjAgfHwgX19yMiA9PSAwLjApOwoKICAgICBjb25zdCBy
ZXN1bHRfdHlwZSBfX211bHQgPSBzdGQ6OnNxcnQoLTIgKiBzdGQ6OmxvZyhfX3IyKSAvIF9fcjIp
OwogICAgICpfX2YrKyA9IF9feSAqIF9fbXVsdCAqIF9fcGFyYW0uc3RkZGV2KCkgKyBfX3BhcmFt
Lm1lYW4oKTsKICAgICAqX19mKysgPSBfX3ggKiBfX211bHQgKiBfX3BhcmFtLnN0ZGRldigpICsg
X19wYXJhbS5tZWFuKCk7CiAgIH0KCiBpZiAoX19mICE9IF9fdCkKICAgewogICAgIHJlc3VsdF90
eXBlIF9feCwgX195LCBfX3IyOwogICAgIGRvCiAgICAgICB7CiAgX194ID0gcmVzdWx0X3R5cGUo
Mi4wKSAqIF9fYXVybmcoKSAtIDEuMDsKICBfX3kgPSByZXN1bHRfdHlwZSgyLjApICogX19hdXJu
ZygpIC0gMS4wOwogIF9fcjIgPSBfX3ggKiBfX3ggKyBfX3kgKiBfX3k7CiAgICAgICB9CiAgICAg
d2hpbGUgKF9fcjIgPiAxLjAgfHwgX19yMiA9PSAwLjApOwoKICAgICBjb25zdCByZXN1bHRfdHlw
ZSBfX211bHQgPSBzdGQ6OnNxcnQoLTIgKiBzdGQ6OmxvZyhfX3IyKSAvIF9fcjIpOwogICAgIF9N
X3NhdmVkID0gX194ICogX19tdWx0OwogICAgIF9NX3NhdmVkX2F2YWlsYWJsZSA9IHRydWU7CiAg
ICAgKl9fZiA9IF9feSAqIF9fbXVsdCAqIF9fcGFyYW0uc3RkZGV2KCkgKyBfX3BhcmFtLm1lYW4o
KTsKICAgfQogICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZT4KICAgIGJvb2wK
ICAgIG9wZXJhdG9yPT0oY29uc3Qgc3RkOjpub3JtYWxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4m
IF9fZDEsCiAgICAgICAgY29uc3Qgc3RkOjpub3JtYWxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4m
IF9fZDIpCiAgICB7CiAgICAgIGlmIChfX2QxLl9NX3BhcmFtID09IF9fZDIuX01fcGFyYW0KICAg
JiYgX19kMS5fTV9zYXZlZF9hdmFpbGFibGUgPT0gX19kMi5fTV9zYXZlZF9hdmFpbGFibGUpCiB7
CiAgIGlmIChfX2QxLl9NX3NhdmVkX2F2YWlsYWJsZQogICAgICAgJiYgX19kMS5fTV9zYXZlZCA9
PSBfX2QyLl9NX3NhdmVkKQogICAgIHJldHVybiB0cnVlOwogICBlbHNlIGlmKCFfX2QxLl9NX3Nh
dmVkX2F2YWlsYWJsZSkKICAgICByZXR1cm4gdHJ1ZTsKICAgZWxzZQogICAgIHJldHVybiBmYWxz
ZTsKIH0KICAgICAgZWxzZQogcmV0dXJuIGZhbHNlOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfUmVhbFR5cGUsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0ZDo6
YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I8PChzdGQ6OmJhc2lj
X29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vcywKICAgICAgICBjb25zdCBub3JtYWxfZGlz
dHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9feCkKICAgIHsKICAgICAgdHlwZWRlZiBzdGQ6OmJhc2lj
X29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX29zdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBfX29zdHJlYW1fdHlwZTo6aW9zX2Jhc2UgX19pb3NfYmFzZTsKCiAgICAgIGNvbnN0
IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZtdGZsYWdzIF9fZmxhZ3MgPSBfX29zLmZsYWdzKCk7CiAg
ICAgIGNvbnN0IF9DaGFyVCBfX2ZpbGwgPSBfX29zLmZpbGwoKTsKICAgICAgY29uc3Qgc3RkOjpz
dHJlYW1zaXplIF9fcHJlY2lzaW9uID0gX19vcy5wcmVjaXNpb24oKTsKICAgICAgY29uc3QgX0No
YXJUIF9fc3BhY2UgPSBfX29zLndpZGVuKCcgJyk7CiAgICAgIF9fb3MuZmxhZ3MoX19pb3NfYmFz
ZTo6c2NpZW50aWZpYyB8IF9faW9zX2Jhc2U6OmxlZnQpOwogICAgICBfX29zLmZpbGwoX19zcGFj
ZSk7CiAgICAgIF9fb3MucHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8X1JlYWxUeXBlPjo6
bWF4X2RpZ2l0czEwKTsKCiAgICAgIF9fb3MgPDwgX194Lm1lYW4oKSA8PCBfX3NwYWNlIDw8IF9f
eC5zdGRkZXYoKQogICAgPDwgX19zcGFjZSA8PCBfX3guX01fc2F2ZWRfYXZhaWxhYmxlOwogICAg
ICBpZiAoX194Ll9NX3NhdmVkX2F2YWlsYWJsZSkKIF9fb3MgPDwgX19zcGFjZSA8PCBfX3guX01f
c2F2ZWQ7CgogICAgICBfX29zLmZsYWdzKF9fZmxhZ3MpOwogICAgICBfX29zLmZpbGwoX19maWxs
KTsKICAgICAgX19vcy5wcmVjaXNpb24oX19wcmVjaXNpb24pOwogICAgICByZXR1cm4gX19vczsK
ICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlLCB0eXBlbmFtZSBfQ2hhclQsIHR5
cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYK
ICAgIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMs
CiAgICAgICAgbm9ybWFsX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBfX3gpCiAgICB7CiAgICAg
IHR5cGVkZWYgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5
cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19pc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9z
X2Jhc2U7CgogICAgICBjb25zdCB0eXBlbmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdz
ID0gX19pcy5mbGFncygpOwogICAgICBfX2lzLmZsYWdzKF9faW9zX2Jhc2U6OmRlYyB8IF9faW9z
X2Jhc2U6OnNraXB3cyk7CgogICAgICBkb3VibGUgX19tZWFuLCBfX3N0ZGRldjsKICAgICAgX19p
cyA+PiBfX21lYW4gPj4gX19zdGRkZXYKICAgID4+IF9feC5fTV9zYXZlZF9hdmFpbGFibGU7CiAg
ICAgIGlmIChfX3guX01fc2F2ZWRfYXZhaWxhYmxlKQogX19pcyA+PiBfX3guX01fc2F2ZWQ7CiAg
ICAgIF9feC5wYXJhbSh0eXBlbmFtZSBub3JtYWxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46Ogog
IHBhcmFtX3R5cGUoX19tZWFuLCBfX3N0ZGRldikpOwoKICAgICAgX19pcy5mbGFncyhfX2ZsYWdz
KTsKICAgICAgcmV0dXJuIF9faXM7CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5
cGU+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICB0eXBlbmFt
ZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KICAgICAgdm9pZAogICAgICBsb2dub3Jt
YWxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46OgogICAgICBfX2dlbmVyYXRlX2ltcGwoX0Zvcndh
cmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgICAgIF9Vbmlmb3JtUmFu
ZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19w
KQogICAgICB7CgogICB3aGlsZSAoX19mICE9IF9fdCkKICAgICAqX19mKysgPSBzdGQ6OmV4cChf
X3AucygpICogX01fbmQoX191cm5nKSArIF9fcC5tKCkpOwogICAgICB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9SZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAg
c3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KHN0ZDo6
YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAgICAgIGNvbnN0IGxvZ25v
cm1hbF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX194KQogICAgewogICAgICB0eXBlZGVmIHN0
ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9fb3N0cmVhbV90eXBlOwogICAgICB0
eXBlZGVmIHR5cGVuYW1lIF9fb3N0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19iYXNlOwoKICAg
ICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9IF9fb3MuZmxh
Z3MoKTsKICAgICAgY29uc3QgX0NoYXJUIF9fZmlsbCA9IF9fb3MuZmlsbCgpOwogICAgICBjb25z
dCBzdGQ6OnN0cmVhbXNpemUgX19wcmVjaXNpb24gPSBfX29zLnByZWNpc2lvbigpOwogICAgICBj
b25zdCBfQ2hhclQgX19zcGFjZSA9IF9fb3Mud2lkZW4oJyAnKTsKICAgICAgX19vcy5mbGFncyhf
X2lvc19iYXNlOjpzY2llbnRpZmljIHwgX19pb3NfYmFzZTo6bGVmdCk7CiAgICAgIF9fb3MuZmls
bChfX3NwYWNlKTsKICAgICAgX19vcy5wcmVjaXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxfUmVh
bFR5cGU+OjptYXhfZGlnaXRzMTApOwoKICAgICAgX19vcyA8PCBfX3gubSgpIDw8IF9fc3BhY2Ug
PDwgX194LnMoKQogICAgPDwgX19zcGFjZSA8PCBfX3guX01fbmQ7CgogICAgICBfX29zLmZsYWdz
KF9fZmxhZ3MpOwogICAgICBfX29zLmZpbGwoX19maWxsKTsKICAgICAgX19vcy5wcmVjaXNpb24o
X19wcmVjaXNpb24pOwogICAgICByZXR1cm4gX19vczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1JlYWxUeXBlLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6
OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPj4oc3RkOjpiYXNp
Y19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAgICAgICAgbG9nbm9ybWFsX2Rpc3Ry
aWJ1dGlvbjxfUmVhbFR5cGU+JiBfX3gpCiAgICB7CiAgICAgIHR5cGVkZWYgc3RkOjpiYXNpY19p
c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgX19pc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jhc2U7CgogICAgICBjb25zdCB0
eXBlbmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzID0gX19pcy5mbGFncygpOwogICAg
ICBfX2lzLmZsYWdzKF9faW9zX2Jhc2U6OmRlYyB8IF9faW9zX2Jhc2U6OnNraXB3cyk7CgogICAg
ICBfUmVhbFR5cGUgX19tLCBfX3M7CiAgICAgIF9faXMgPj4gX19tID4+IF9fcyA+PiBfX3guX01f
bmQ7CiAgICAgIF9feC5wYXJhbSh0eXBlbmFtZSBsb2dub3JtYWxfZGlzdHJpYnV0aW9uPF9SZWFs
VHlwZT46OgogIHBhcmFtX3R5cGUoX19tLCBfX3MpKTsKCiAgICAgIF9faXMuZmxhZ3MoX19mbGFn
cyk7CiAgICAgIHJldHVybiBfX2lzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5
cGU+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICB0eXBlbmFt
ZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KICAgICAgdm9pZAogICAgICBzdGQ6OmNo
aV9zcXVhcmVkX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+OjoKICAgICAgX19nZW5lcmF0ZV9pbXBs
KF9Gb3J3YXJkSXRlcmF0b3IgX19mLCBfRm9yd2FyZEl0ZXJhdG9yIF9fdCwKICAgICAgICBfVW5p
Zm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nKQogICAgICB7Cgogd2hpbGUgKF9fZiAh
PSBfX3QpCiAgICpfX2YrKyA9IDIgKiBfTV9nZChfX3VybmcpOwogICAgICB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9SZWFsVHlwZT4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0
b3IsCiAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogICAgICB2
b2lkCiAgICAgIHN0ZDo6Y2hpX3NxdWFyZWRfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46OgogICAg
ICBfX2dlbmVyYXRlX2ltcGwoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3Ig
X190LAogICAgICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAg
ICAgY29uc3QgdHlwZW5hbWUKICAgICAgICBzdGQ6OmdhbW1hX2Rpc3RyaWJ1dGlvbjxyZXN1bHRf
dHlwZT46OnBhcmFtX3R5cGUmIF9fcCkKICAgICAgewoKIHdoaWxlIChfX2YgIT0gX190KQogICAq
X19mKysgPSAyICogX01fZ2QoX191cm5nLCBfX3ApOwogICAgICB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9SZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3Rk
OjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KHN0ZDo6YmFz
aWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAgICAgIGNvbnN0IGNoaV9zcXVh
cmVkX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBfX3gpCiAgICB7CiAgICAgIHR5cGVkZWYgc3Rk
OjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19vc3RyZWFtX3R5cGU7CiAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgX19vc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jhc2U7CgogICAg
ICBjb25zdCB0eXBlbmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzID0gX19vcy5mbGFn
cygpOwogICAgICBjb25zdCBfQ2hhclQgX19maWxsID0gX19vcy5maWxsKCk7CiAgICAgIGNvbnN0
IHN0ZDo6c3RyZWFtc2l6ZSBfX3ByZWNpc2lvbiA9IF9fb3MucHJlY2lzaW9uKCk7CiAgICAgIGNv
bnN0IF9DaGFyVCBfX3NwYWNlID0gX19vcy53aWRlbignICcpOwogICAgICBfX29zLmZsYWdzKF9f
aW9zX2Jhc2U6OnNjaWVudGlmaWMgfCBfX2lvc19iYXNlOjpsZWZ0KTsKICAgICAgX19vcy5maWxs
KF9fc3BhY2UpOwogICAgICBfX29zLnByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPF9SZWFs
VHlwZT46Om1heF9kaWdpdHMxMCk7CgogICAgICBfX29zIDw8IF9feC5uKCkgPDwgX19zcGFjZSA8
PCBfX3guX01fZ2Q7CgogICAgICBfX29zLmZsYWdzKF9fZmxhZ3MpOwogICAgICBfX29zLmZpbGwo
X19maWxsKTsKICAgICAgX19vcy5wcmVjaXNpb24oX19wcmVjaXNpb24pOwogICAgICByZXR1cm4g
X19vczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlLCB0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJh
aXRzPiYKICAgIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m
IF9faXMsCiAgICAgICAgY2hpX3NxdWFyZWRfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9feCkK
ICAgIHsKICAgICAgdHlwZWRlZiBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiBf
X2lzdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6aW9z
X2Jhc2UgX19pb3NfYmFzZTsKCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZtdGZs
YWdzIF9fZmxhZ3MgPSBfX2lzLmZsYWdzKCk7CiAgICAgIF9faXMuZmxhZ3MoX19pb3NfYmFzZTo6
ZGVjIHwgX19pb3NfYmFzZTo6c2tpcHdzKTsKCiAgICAgIF9SZWFsVHlwZSBfX247CiAgICAgIF9f
aXMgPj4gX19uID4+IF9feC5fTV9nZDsKICAgICAgX194LnBhcmFtKHR5cGVuYW1lIGNoaV9zcXVh
cmVkX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+OjoKICBwYXJhbV90eXBlKF9fbikpOwoKICAgICAg
X19pcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgcmV0dXJuIF9faXM7CiAgICB9CgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfUmVhbFR5cGU+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRv
bU51bWJlckdlbmVyYXRvcj4KICAgICAgdHlwZW5hbWUgY2F1Y2h5X2Rpc3RyaWJ1dGlvbjxfUmVh
bFR5cGU+OjpyZXN1bHRfdHlwZQogICAgICBjYXVjaHlfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46
OgogICAgICBvcGVyYXRvcigpKF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3Vybmcs
CiAgIGNvbnN0IHBhcmFtX3R5cGUmIF9fcCkKICAgICAgewogX19kZXRhaWw6Ol9BZGFwdG9yPF9V
bmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yLCByZXN1bHRfdHlwZT4KICAgX19hdXJuZyhfX3Vy
bmcpOwogX1JlYWxUeXBlIF9fdTsKIGRvCiAgIF9fdSA9IF9fYXVybmcoKTsKIHdoaWxlIChfX3Ug
PT0gMC41KTsKCiBjb25zdCBfUmVhbFR5cGUgX19waSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDYy
NjQzMzgzMjc5NTAyOUw7CiByZXR1cm4gX19wLmEoKSArIF9fcC5iKCkgKiBzdGQ6OnRhbihfX3Bp
ICogX191KTsKICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGU+CiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICB0eXBlbmFtZSBfVW5pZm9ybVJh
bmRvbU51bWJlckdlbmVyYXRvcj4KICAgICAgdm9pZAogICAgICBjYXVjaHlfZGlzdHJpYnV0aW9u
PF9SZWFsVHlwZT46OgogICAgICBfX2dlbmVyYXRlX2ltcGwoX0ZvcndhcmRJdGVyYXRvciBfX2Ys
IF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJh
dG9yJiBfX3VybmcsCiAgICAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wKQogICAgICB7CgogY29u
c3QgX1JlYWxUeXBlIF9fcGkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzM4MzI3OTUwMjlM
OwogX19kZXRhaWw6Ol9BZGFwdG9yPF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yLCByZXN1
bHRfdHlwZT4KICAgX19hdXJuZyhfX3VybmcpOwogd2hpbGUgKF9fZiAhPSBfX3QpCiAgIHsKICAg
ICBfUmVhbFR5cGUgX191OwogICAgIGRvCiAgICAgICBfX3UgPSBfX2F1cm5nKCk7CiAgICAgd2hp
bGUgKF9fdSA9PSAwLjUpOwoKICAgICAqX19mKysgPSBfX3AuYSgpICsgX19wLmIoKSAqIHN0ZDo6
dGFuKF9fcGkgKiBfX3UpOwogICB9CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxU
eXBlLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX29z
dHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFt
PF9DaGFyVCwgX1RyYWl0cz4mIF9fb3MsCiAgICAgICAgY29uc3QgY2F1Y2h5X2Rpc3RyaWJ1dGlv
bjxfUmVhbFR5cGU+JiBfX3gpCiAgICB7CiAgICAgIHR5cGVkZWYgc3RkOjpiYXNpY19vc3RyZWFt
PF9DaGFyVCwgX1RyYWl0cz4gX19vc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
X19vc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jhc2U7CgogICAgICBjb25zdCB0eXBlbmFt
ZSBfX2lvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzID0gX19vcy5mbGFncygpOwogICAgICBjb25z
dCBfQ2hhclQgX19maWxsID0gX19vcy5maWxsKCk7CiAgICAgIGNvbnN0IHN0ZDo6c3RyZWFtc2l6
ZSBfX3ByZWNpc2lvbiA9IF9fb3MucHJlY2lzaW9uKCk7CiAgICAgIGNvbnN0IF9DaGFyVCBfX3Nw
YWNlID0gX19vcy53aWRlbignICcpOwogICAgICBfX29zLmZsYWdzKF9faW9zX2Jhc2U6OnNjaWVu
dGlmaWMgfCBfX2lvc19iYXNlOjpsZWZ0KTsKICAgICAgX19vcy5maWxsKF9fc3BhY2UpOwogICAg
ICBfX29zLnByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPF9SZWFsVHlwZT46Om1heF9kaWdp
dHMxMCk7CgogICAgICBfX29zIDw8IF9feC5hKCkgPDwgX19zcGFjZSA8PCBfX3guYigpOwoKICAg
ICAgX19vcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgX19vcy5maWxsKF9fZmlsbCk7CiAgICAgIF9f
b3MucHJlY2lzaW9uKF9fcHJlY2lzaW9uKTsKICAgICAgcmV0dXJuIF9fb3M7CiAgICB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJh
aXRzPgogICAgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRv
cj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAogICAgICAgIGNh
dWNoeV9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX194KQogICAgewogICAgICB0eXBlZGVmIHN0
ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9faXN0cmVhbV90eXBlOwogICAgICB0
eXBlZGVmIHR5cGVuYW1lIF9faXN0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19iYXNlOwoKICAg
ICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9IF9faXMuZmxh
Z3MoKTsKICAgICAgX19pcy5mbGFncyhfX2lvc19iYXNlOjpkZWMgfCBfX2lvc19iYXNlOjpza2lw
d3MpOwoKICAgICAgX1JlYWxUeXBlIF9fYSwgX19iOwogICAgICBfX2lzID4+IF9fYSA+PiBfX2I7
CiAgICAgIF9feC5wYXJhbSh0eXBlbmFtZSBjYXVjaHlfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46
OgogIHBhcmFtX3R5cGUoX19hLCBfX2IpKTsKCiAgICAgIF9faXMuZmxhZ3MoX19mbGFncyk7CiAg
ICAgIHJldHVybiBfX2lzOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlPgog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgdHlwZW5hbWUgX1Vu
aWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiAgICAgIHZvaWQKICAgICAgc3RkOjpmaXNoZXJf
Zl9kaXN0cmlidXRpb248X1JlYWxUeXBlPjo6CiAgICAgIF9fZ2VuZXJhdGVfaW1wbChfRm9yd2Fy
ZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgICAgICAgX1VuaWZvcm1SYW5k
b21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZykKICAgICAgewoKIHdoaWxlIChfX2YgIT0gX190KQog
ICAqX19mKysgPSAoKF9NX2dkX3goX191cm5nKSAqIG4oKSkgLyAoX01fZ2RfeShfX3VybmcpICog
bSgpKSk7CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlPgogICAgdGVtcGxh
dGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5k
b21OdW1iZXJHZW5lcmF0b3I+CiAgICAgIHZvaWQKICAgICAgc3RkOjpmaXNoZXJfZl9kaXN0cmli
dXRpb248X1JlYWxUeXBlPjo6CiAgICAgIF9fZ2VuZXJhdGVfaW1wbChfRm9yd2FyZEl0ZXJhdG9y
IF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgICAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJH
ZW5lcmF0b3ImIF9fdXJuZywKICAgICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiAgICAgIHsK
CiB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6Z2FtbWFfZGlzdHJpYnV0aW9uPHJlc3VsdF90eXBlPjo6
cGFyYW1fdHlwZQogICBwYXJhbV90eXBlOwogcGFyYW1fdHlwZSBfX3AxKF9fcC5tKCkgLyAyKTsK
IHBhcmFtX3R5cGUgX19wMihfX3AubigpIC8gMik7CiB3aGlsZSAoX19mICE9IF9fdCkKICAgKl9f
ZisrID0gKChfTV9nZF94KF9fdXJuZywgX19wMSkgKiBuKCkpCiAgICAgIC8gKF9NX2dkX3koX191
cm5nLCBfX3AyKSAqIG0oKSkpOwogICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlw
ZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19vc3Ry
ZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxf
Q2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAgICAgIGNvbnN0IGZpc2hlcl9mX2Rpc3RyaWJ1dGlv
bjxfUmVhbFR5cGU+JiBfX3gpCiAgICB7CiAgICAgIHR5cGVkZWYgc3RkOjpiYXNpY19vc3RyZWFt
PF9DaGFyVCwgX1RyYWl0cz4gX19vc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
X19vc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jhc2U7CgogICAgICBjb25zdCB0eXBlbmFt
ZSBfX2lvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzID0gX19vcy5mbGFncygpOwogICAgICBjb25z
dCBfQ2hhclQgX19maWxsID0gX19vcy5maWxsKCk7CiAgICAgIGNvbnN0IHN0ZDo6c3RyZWFtc2l6
ZSBfX3ByZWNpc2lvbiA9IF9fb3MucHJlY2lzaW9uKCk7CiAgICAgIGNvbnN0IF9DaGFyVCBfX3Nw
YWNlID0gX19vcy53aWRlbignICcpOwogICAgICBfX29zLmZsYWdzKF9faW9zX2Jhc2U6OnNjaWVu
dGlmaWMgfCBfX2lvc19iYXNlOjpsZWZ0KTsKICAgICAgX19vcy5maWxsKF9fc3BhY2UpOwogICAg
ICBfX29zLnByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPF9SZWFsVHlwZT46Om1heF9kaWdp
dHMxMCk7CgogICAgICBfX29zIDw8IF9feC5tKCkgPDwgX19zcGFjZSA8PCBfX3gubigpCiAgICA8
PCBfX3NwYWNlIDw8IF9feC5fTV9nZF94IDw8IF9fc3BhY2UgPDwgX194Ll9NX2dkX3k7CgogICAg
ICBfX29zLmZsYWdzKF9fZmxhZ3MpOwogICAgICBfX29zLmZpbGwoX19maWxsKTsKICAgICAgX19v
cy5wcmVjaXNpb24oX19wcmVjaXNpb24pOwogICAgICByZXR1cm4gX19vczsKICAgIH0KCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp
dHM+CiAgICBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9y
Pj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAgICAgICAgZmlz
aGVyX2ZfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9feCkKICAgIHsKICAgICAgdHlwZWRlZiBz
dGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX2lzdHJlYW1fdHlwZTsKICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6aW9zX2Jhc2UgX19pb3NfYmFzZTsKCiAg
ICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZtdGZsYWdzIF9fZmxhZ3MgPSBfX2lzLmZs
YWdzKCk7CiAgICAgIF9faXMuZmxhZ3MoX19pb3NfYmFzZTo6ZGVjIHwgX19pb3NfYmFzZTo6c2tp
cHdzKTsKCiAgICAgIF9SZWFsVHlwZSBfX20sIF9fbjsKICAgICAgX19pcyA+PiBfX20gPj4gX19u
ID4+IF9feC5fTV9nZF94ID4+IF9feC5fTV9nZF95OwogICAgICBfX3gucGFyYW0odHlwZW5hbWUg
ZmlzaGVyX2ZfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46OgogIHBhcmFtX3R5cGUoX19tLCBfX24p
KTsKCiAgICAgIF9faXMuZmxhZ3MoX19mbGFncyk7CiAgICAgIHJldHVybiBfX2lzOwogICAgfQoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zv
cndhcmRJdGVyYXRvciwKICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0
b3I+CiAgICAgIHZvaWQKICAgICAgc3RkOjpzdHVkZW50X3RfZGlzdHJpYnV0aW9uPF9SZWFsVHlw
ZT46OgogICAgICBfX2dlbmVyYXRlX2ltcGwoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJk
SXRlcmF0b3IgX190LAogICAgICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3Vy
bmcpCiAgICAgIHsKCiB3aGlsZSAoX19mICE9IF9fdCkKICAgKl9fZisrID0gX01fbmQoX191cm5n
KSAqIHN0ZDo6c3FydChuKCkgLyBfTV9nZChfX3VybmcpKTsKICAgICAgfQoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmVhbFR5cGU+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9y
LAogICAgICB0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KICAgICAgdm9p
ZAogICAgICBzdGQ6OnN0dWRlbnRfdF9kaXN0cmlidXRpb248X1JlYWxUeXBlPjo6CiAgICAgIF9f
Z2VuZXJhdGVfaW1wbChfRm9yd2FyZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3Qs
CiAgICAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICAgICBj
b25zdCBwYXJhbV90eXBlJiBfX3ApCiAgICAgIHsKCiB0eXBlbmFtZSBzdGQ6OmdhbW1hX2Rpc3Ry
aWJ1dGlvbjxyZXN1bHRfdHlwZT46OnBhcmFtX3R5cGUKICAgX19wMihfX3AubigpIC8gMiwgMik7
CiB3aGlsZSAoX19mICE9IF9fdCkKICAgKl9fZisrID0gX01fbmQoX191cm5nKSAqIHN0ZDo6c3Fy
dChfX3AubigpIC8gX01fZ2QoX191cm5nLCBfX3AyKSk7CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1JlYWxUeXBlLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBz
dGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPDwoc3RkOjpi
YXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9fb3MsCiAgICAgICAgY29uc3Qgc3R1ZGVu
dF90X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBfX3gpCiAgICB7CiAgICAgIHR5cGVkZWYgc3Rk
OjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19vc3RyZWFtX3R5cGU7CiAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgX19vc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jhc2U7CgogICAg
ICBjb25zdCB0eXBlbmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzID0gX19vcy5mbGFn
cygpOwogICAgICBjb25zdCBfQ2hhclQgX19maWxsID0gX19vcy5maWxsKCk7CiAgICAgIGNvbnN0
IHN0ZDo6c3RyZWFtc2l6ZSBfX3ByZWNpc2lvbiA9IF9fb3MucHJlY2lzaW9uKCk7CiAgICAgIGNv
bnN0IF9DaGFyVCBfX3NwYWNlID0gX19vcy53aWRlbignICcpOwogICAgICBfX29zLmZsYWdzKF9f
aW9zX2Jhc2U6OnNjaWVudGlmaWMgfCBfX2lvc19iYXNlOjpsZWZ0KTsKICAgICAgX19vcy5maWxs
KF9fc3BhY2UpOwogICAgICBfX29zLnByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPF9SZWFs
VHlwZT46Om1heF9kaWdpdHMxMCk7CgogICAgICBfX29zIDw8IF9feC5uKCkgPDwgX19zcGFjZSA8
PCBfX3guX01fbmQgPDwgX19zcGFjZSA8PCBfX3guX01fZ2Q7CgogICAgICBfX29zLmZsYWdzKF9f
ZmxhZ3MpOwogICAgICBfX29zLmZpbGwoX19maWxsKTsKICAgICAgX19vcy5wcmVjaXNpb24oX19w
cmVjaXNpb24pOwogICAgICByZXR1cm4gX19vczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1JlYWxUeXBlLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJh
c2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19p
c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAgICAgICAgc3R1ZGVudF90X2Rpc3RyaWJ1
dGlvbjxfUmVhbFR5cGU+JiBfX3gpCiAgICB7CiAgICAgIHR5cGVkZWYgc3RkOjpiYXNpY19pc3Ry
ZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgX19pc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jhc2U7CgogICAgICBjb25zdCB0eXBl
bmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzID0gX19pcy5mbGFncygpOwogICAgICBf
X2lzLmZsYWdzKF9faW9zX2Jhc2U6OmRlYyB8IF9faW9zX2Jhc2U6OnNraXB3cyk7CgogICAgICBf
UmVhbFR5cGUgX19uOwogICAgICBfX2lzID4+IF9fbiA+PiBfX3guX01fbmQgPj4gX194Ll9NX2dk
OwogICAgICBfX3gucGFyYW0odHlwZW5hbWUgc3R1ZGVudF90X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5
cGU+OjpwYXJhbV90eXBlKF9fbikpOwoKICAgICAgX19pcy5mbGFncyhfX2ZsYWdzKTsKICAgICAg
cmV0dXJuIF9faXM7CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGU+CiAgICB2
b2lkCiAgICBnYW1tYV9kaXN0cmlidXRpb248X1JlYWxUeXBlPjo6cGFyYW1fdHlwZTo6CiAgICBf
TV9pbml0aWFsaXplKCkKICAgIHsKICAgICAgX01fbWFscGhhID0gX01fYWxwaGEgPCAxLjAgPyBf
TV9hbHBoYSArIF9SZWFsVHlwZSgxLjApIDogX01fYWxwaGE7CgogICAgICBjb25zdCBfUmVhbFR5
cGUgX19hMSA9IF9NX21hbHBoYSAtIF9SZWFsVHlwZSgxLjApIC8gX1JlYWxUeXBlKDMuMCk7CiAg
ICAgIF9NX2EyID0gX1JlYWxUeXBlKDEuMCkgLyBzdGQ6OnNxcnQoX1JlYWxUeXBlKDkuMCkgKiBf
X2ExKTsKICAgIH0KCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGU+CiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KICAgICAgdHlwZW5h
bWUgZ2FtbWFfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46OnJlc3VsdF90eXBlCiAgICAgIGdhbW1h
X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+OjoKICAgICAgb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRv
bU51bWJlckdlbmVyYXRvciYgX191cm5nLAogICBjb25zdCBwYXJhbV90eXBlJiBfX3BhcmFtKQog
ICAgICB7CiBfX2RldGFpbDo6X0FkYXB0b3I8X1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3Is
IHJlc3VsdF90eXBlPgogICBfX2F1cm5nKF9fdXJuZyk7CgogcmVzdWx0X3R5cGUgX191LCBfX3Ys
IF9fbjsKIGNvbnN0IHJlc3VsdF90eXBlIF9fYTEgPSAoX19wYXJhbS5fTV9tYWxwaGEKICAgICAg
LSBfUmVhbFR5cGUoMS4wKSAvIF9SZWFsVHlwZSgzLjApKTsKCiBkbwogICB7CiAgICAgZG8KICAg
ICAgIHsKICBfX24gPSBfTV9uZChfX3VybmcpOwogIF9fdiA9IHJlc3VsdF90eXBlKDEuMCkgKyBf
X3BhcmFtLl9NX2EyICogX19uOwogICAgICAgfQogICAgIHdoaWxlIChfX3YgPD0gMC4wKTsKCiAg
ICAgX192ID0gX192ICogX192ICogX192OwogICAgIF9fdSA9IF9fYXVybmcoKTsKICAgfQogd2hp
bGUgKF9fdSA+IHJlc3VsdF90eXBlKDEuMCkgLSAwLjMzMSAqIF9fbiAqIF9fbiAqIF9fbiAqIF9f
bgogICAgICAgICYmIChzdGQ6OmxvZyhfX3UpID4gKDAuNSAqIF9fbiAqIF9fbiArIF9fYTEKICAg
ICAgICAqICgxLjAgLSBfX3YgKyBzdGQ6OmxvZyhfX3YpKSkpKTsKCiBpZiAoX19wYXJhbS5hbHBo
YSgpID09IF9fcGFyYW0uX01fbWFscGhhKQogICByZXR1cm4gX19hMSAqIF9fdiAqIF9fcGFyYW0u
YmV0YSgpOwogZWxzZQogICB7CiAgICAgZG8KICAgICAgIF9fdSA9IF9fYXVybmcoKTsKICAgICB3
aGlsZSAoX191ID09IDAuMCk7CgogICAgIHJldHVybiAoc3RkOjpwb3coX191LCByZXN1bHRfdHlw
ZSgxLjApIC8gX19wYXJhbS5hbHBoYSgpKQogICAgICAqIF9fYTEgKiBfX3YgKiBfX3BhcmFtLmJl
dGEoKSk7CiAgIH0KICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGU+CiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgICB0eXBlbmFtZSBfVW5pZm9y
bVJhbmRvbU51bWJlckdlbmVyYXRvcj4KICAgICAgdm9pZAogICAgICBnYW1tYV9kaXN0cmlidXRp
b248X1JlYWxUeXBlPjo6CiAgICAgIF9fZ2VuZXJhdGVfaW1wbChfRm9yd2FyZEl0ZXJhdG9yIF9f
ZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgICAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5l
cmF0b3ImIF9fdXJuZywKICAgICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3BhcmFtKQogICAgICB7
CgogX19kZXRhaWw6Ol9BZGFwdG9yPF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yLCByZXN1
bHRfdHlwZT4KICAgX19hdXJuZyhfX3VybmcpOwoKIHJlc3VsdF90eXBlIF9fdSwgX192LCBfX247
CiBjb25zdCByZXN1bHRfdHlwZSBfX2ExID0gKF9fcGFyYW0uX01fbWFscGhhCiAgICAgIC0gX1Jl
YWxUeXBlKDEuMCkgLyBfUmVhbFR5cGUoMy4wKSk7CgogaWYgKF9fcGFyYW0uYWxwaGEoKSA9PSBf
X3BhcmFtLl9NX21hbHBoYSkKICAgd2hpbGUgKF9fZiAhPSBfX3QpCiAgICAgewogICAgICAgZG8K
ICB7CiAgICBkbwogICAgICB7CiAgICAgICAgX19uID0gX01fbmQoX191cm5nKTsKICAgICAgICBf
X3YgPSByZXN1bHRfdHlwZSgxLjApICsgX19wYXJhbS5fTV9hMiAqIF9fbjsKICAgICAgfQogICAg
d2hpbGUgKF9fdiA8PSAwLjApOwoKICAgIF9fdiA9IF9fdiAqIF9fdiAqIF9fdjsKICAgIF9fdSA9
IF9fYXVybmcoKTsKICB9CiAgICAgICB3aGlsZSAoX191ID4gcmVzdWx0X3R5cGUoMS4wKSAtIDAu
MzMxICogX19uICogX19uICogX19uICogX19uCiAgICAgICAmJiAoc3RkOjpsb2coX191KSA+ICgw
LjUgKiBfX24gKiBfX24gKyBfX2ExCiAgICAgICAqICgxLjAgLSBfX3YgKyBzdGQ6OmxvZyhfX3Yp
KSkpKTsKCiAgICAgICAqX19mKysgPSBfX2ExICogX192ICogX19wYXJhbS5iZXRhKCk7CiAgICAg
fQogZWxzZQogICB3aGlsZSAoX19mICE9IF9fdCkKICAgICB7CiAgICAgICBkbwogIHsKICAgIGRv
CiAgICAgIHsKICAgICAgICBfX24gPSBfTV9uZChfX3VybmcpOwogICAgICAgIF9fdiA9IHJlc3Vs
dF90eXBlKDEuMCkgKyBfX3BhcmFtLl9NX2EyICogX19uOwogICAgICB9CiAgICB3aGlsZSAoX192
IDw9IDAuMCk7CgogICAgX192ID0gX192ICogX192ICogX192OwogICAgX191ID0gX19hdXJuZygp
OwogIH0KICAgICAgIHdoaWxlIChfX3UgPiByZXN1bHRfdHlwZSgxLjApIC0gMC4zMzEgKiBfX24g
KiBfX24gKiBfX24gKiBfX24KICAgICAgICYmIChzdGQ6OmxvZyhfX3UpID4gKDAuNSAqIF9fbiAq
IF9fbiArIF9fYTEKICAgICAgICogKDEuMCAtIF9fdiArIHN0ZDo6bG9nKF9fdikpKSkpOwoKICAg
ICAgIGRvCiAgX191ID0gX19hdXJuZygpOwogICAgICAgd2hpbGUgKF9fdSA9PSAwLjApOwoKICAg
ICAgICpfX2YrKyA9IChzdGQ6OnBvdyhfX3UsIHJlc3VsdF90eXBlKDEuMCkgLyBfX3BhcmFtLmFs
cGhhKCkpCiAgICogX19hMSAqIF9fdiAqIF9fcGFyYW0uYmV0YSgpKTsKICAgICB9CiAgICAgIH0K
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9w
ZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9fb3MsCiAgICAg
ICAgY29uc3QgZ2FtbWFfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9feCkKICAgIHsKICAgICAg
dHlwZWRlZiBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX29zdHJlYW1fdHlw
ZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX29zdHJlYW1fdHlwZTo6aW9zX2Jhc2UgX19pb3Nf
YmFzZTsKCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZtdGZsYWdzIF9fZmxhZ3Mg
PSBfX29zLmZsYWdzKCk7CiAgICAgIGNvbnN0IF9DaGFyVCBfX2ZpbGwgPSBfX29zLmZpbGwoKTsK
ICAgICAgY29uc3Qgc3RkOjpzdHJlYW1zaXplIF9fcHJlY2lzaW9uID0gX19vcy5wcmVjaXNpb24o
KTsKICAgICAgY29uc3QgX0NoYXJUIF9fc3BhY2UgPSBfX29zLndpZGVuKCcgJyk7CiAgICAgIF9f
b3MuZmxhZ3MoX19pb3NfYmFzZTo6c2NpZW50aWZpYyB8IF9faW9zX2Jhc2U6OmxlZnQpOwogICAg
ICBfX29zLmZpbGwoX19zcGFjZSk7CiAgICAgIF9fb3MucHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19s
aW1pdHM8X1JlYWxUeXBlPjo6bWF4X2RpZ2l0czEwKTsKCiAgICAgIF9fb3MgPDwgX194LmFscGhh
KCkgPDwgX19zcGFjZSA8PCBfX3guYmV0YSgpCiAgICA8PCBfX3NwYWNlIDw8IF9feC5fTV9uZDsK
CiAgICAgIF9fb3MuZmxhZ3MoX19mbGFncyk7CiAgICAgIF9fb3MuZmlsbChfX2ZpbGwpOwogICAg
ICBfX29zLnByZWNpc2lvbihfX3ByZWNpc2lvbik7CiAgICAgIHJldHVybiBfX29zOwogICAgfQoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg
X1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3Bl
cmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywKICAgICAg
ICBnYW1tYV9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX194KQogICAgewogICAgICB0eXBlZGVm
IHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9faXN0cmVhbV90eXBlOwogICAg
ICB0eXBlZGVmIHR5cGVuYW1lIF9faXN0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19iYXNlOwoK
ICAgICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9IF9faXMu
ZmxhZ3MoKTsKICAgICAgX19pcy5mbGFncyhfX2lvc19iYXNlOjpkZWMgfCBfX2lvc19iYXNlOjpz
a2lwd3MpOwoKICAgICAgX1JlYWxUeXBlIF9fYWxwaGFfdmFsLCBfX2JldGFfdmFsOwogICAgICBf
X2lzID4+IF9fYWxwaGFfdmFsID4+IF9fYmV0YV92YWwgPj4gX194Ll9NX25kOwogICAgICBfX3gu
cGFyYW0odHlwZW5hbWUgZ2FtbWFfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46OgogIHBhcmFtX3R5
cGUoX19hbHBoYV92YWwsIF9fYmV0YV92YWwpKTsKCiAgICAgIF9faXMuZmxhZ3MoX19mbGFncyk7
CiAgICAgIHJldHVybiBfX2lzOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBl
PgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiAg
ICAgIHR5cGVuYW1lIHdlaWJ1bGxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46OnJlc3VsdF90eXBl
CiAgICAgIHdlaWJ1bGxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46OgogICAgICBvcGVyYXRvcigp
KF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgIGNvbnN0IHBhcmFtX3R5
cGUmIF9fcCkKICAgICAgewogX19kZXRhaWw6Ol9BZGFwdG9yPF9Vbmlmb3JtUmFuZG9tTnVtYmVy
R2VuZXJhdG9yLCByZXN1bHRfdHlwZT4KICAgX19hdXJuZyhfX3VybmcpOwogcmV0dXJuIF9fcC5i
KCkgKiBzdGQ6OnBvdygtc3RkOjpsb2cocmVzdWx0X3R5cGUoMSkgLSBfX2F1cm5nKCkpLAogICAg
ICByZXN1bHRfdHlwZSgxKSAvIF9fcC5hKCkpOwogICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9SZWFsVHlwZT4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAg
IHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogICAgICB2b2lkCiAgICAg
IHdlaWJ1bGxfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46OgogICAgICBfX2dlbmVyYXRlX2ltcGwo
X0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAogICAgICAgIF9Vbmlm
b3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgICAgY29uc3QgcGFyYW1fdHlw
ZSYgX19wKQogICAgICB7CgogX19kZXRhaWw6Ol9BZGFwdG9yPF9Vbmlmb3JtUmFuZG9tTnVtYmVy
R2VuZXJhdG9yLCByZXN1bHRfdHlwZT4KICAgX19hdXJuZyhfX3VybmcpOwogYXV0byBfX2ludl9h
ID0gcmVzdWx0X3R5cGUoMSkgLyBfX3AuYSgpOwoKIHdoaWxlIChfX2YgIT0gX190KQogICAqX19m
KysgPSBfX3AuYigpICogc3RkOjpwb3coLXN0ZDo6bG9nKHJlc3VsdF90eXBlKDEpIC0gX19hdXJu
ZygpKSwKICAgICAgICAgIF9faW52X2EpOwogICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9S
ZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNp
Y19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0
cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAgICAgIGNvbnN0IHdlaWJ1bGxfZGlzdHJp
YnV0aW9uPF9SZWFsVHlwZT4mIF9feCkKICAgIHsKICAgICAgdHlwZWRlZiBzdGQ6OmJhc2ljX29z
dHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX29zdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBfX29zdHJlYW1fdHlwZTo6aW9zX2Jhc2UgX19pb3NfYmFzZTsKCiAgICAgIGNvbnN0IHR5
cGVuYW1lIF9faW9zX2Jhc2U6OmZtdGZsYWdzIF9fZmxhZ3MgPSBfX29zLmZsYWdzKCk7CiAgICAg
IGNvbnN0IF9DaGFyVCBfX2ZpbGwgPSBfX29zLmZpbGwoKTsKICAgICAgY29uc3Qgc3RkOjpzdHJl
YW1zaXplIF9fcHJlY2lzaW9uID0gX19vcy5wcmVjaXNpb24oKTsKICAgICAgY29uc3QgX0NoYXJU
IF9fc3BhY2UgPSBfX29zLndpZGVuKCcgJyk7CiAgICAgIF9fb3MuZmxhZ3MoX19pb3NfYmFzZTo6
c2NpZW50aWZpYyB8IF9faW9zX2Jhc2U6OmxlZnQpOwogICAgICBfX29zLmZpbGwoX19zcGFjZSk7
CiAgICAgIF9fb3MucHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8X1JlYWxUeXBlPjo6bWF4
X2RpZ2l0czEwKTsKCiAgICAgIF9fb3MgPDwgX194LmEoKSA8PCBfX3NwYWNlIDw8IF9feC5iKCk7
CgogICAgICBfX29zLmZsYWdzKF9fZmxhZ3MpOwogICAgICBfX29zLmZpbGwoX19maWxsKTsKICAg
ICAgX19vcy5wcmVjaXNpb24oX19wcmVjaXNpb24pOwogICAgICByZXR1cm4gX19vczsKICAgIH0K
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHM+CiAgICBzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9w
ZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAgICAg
ICAgd2VpYnVsbF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX194KQogICAgewogICAgICB0eXBl
ZGVmIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9faXN0cmVhbV90eXBlOwog
ICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXN0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19iYXNl
OwoKICAgICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9IF9f
aXMuZmxhZ3MoKTsKICAgICAgX19pcy5mbGFncyhfX2lvc19iYXNlOjpkZWMgfCBfX2lvc19iYXNl
Ojpza2lwd3MpOwoKICAgICAgX1JlYWxUeXBlIF9fYSwgX19iOwogICAgICBfX2lzID4+IF9fYSA+
PiBfX2I7CiAgICAgIF9feC5wYXJhbSh0eXBlbmFtZSB3ZWlidWxsX2Rpc3RyaWJ1dGlvbjxfUmVh
bFR5cGU+OjoKICBwYXJhbV90eXBlKF9fYSwgX19iKSk7CgogICAgICBfX2lzLmZsYWdzKF9fZmxh
Z3MpOwogICAgICByZXR1cm4gX19pczsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFs
VHlwZT4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9y
PgogICAgICB0eXBlbmFtZSBleHRyZW1lX3ZhbHVlX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+Ojpy
ZXN1bHRfdHlwZQogICAgICBleHRyZW1lX3ZhbHVlX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+OjoK
ICAgICAgb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAog
ICBjb25zdCBwYXJhbV90eXBlJiBfX3ApCiAgICAgIHsKIF9fZGV0YWlsOjpfQWRhcHRvcjxfVW5p
Zm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciwgcmVzdWx0X3R5cGU+CiAgIF9fYXVybmcoX191cm5n
KTsKIHJldHVybiBfX3AuYSgpIC0gX19wLmIoKSAqIHN0ZDo6bG9nKC1zdGQ6OmxvZyhyZXN1bHRf
dHlwZSgxKQogICAgICAgICAgICAtIF9fYXVybmcoKSkpOwogICAgICB9CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9SZWFsVHlwZT4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3Is
CiAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogICAgICB2b2lk
CiAgICAgIGV4dHJlbWVfdmFsdWVfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46OgogICAgICBfX2dl
bmVyYXRlX2ltcGwoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9Gb3J3YXJkSXRlcmF0b3IgX190LAog
ICAgICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3VybmcsCiAgICAgICAgY29u
c3QgcGFyYW1fdHlwZSYgX19wKQogICAgICB7CgogX19kZXRhaWw6Ol9BZGFwdG9yPF9Vbmlmb3Jt
UmFuZG9tTnVtYmVyR2VuZXJhdG9yLCByZXN1bHRfdHlwZT4KICAgX19hdXJuZyhfX3VybmcpOwoK
IHdoaWxlIChfX2YgIT0gX190KQogICAqX19mKysgPSBfX3AuYSgpIC0gX19wLmIoKSAqIHN0ZDo6
bG9nKC1zdGQ6OmxvZyhyZXN1bHRfdHlwZSgxKQogICAgICAgICAtIF9fYXVybmcoKSkpOwogICAg
ICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBl
bmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAg
ICBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAog
ICAgICAgIGNvbnN0IGV4dHJlbWVfdmFsdWVfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT4mIF9feCkK
ICAgIHsKICAgICAgdHlwZWRlZiBzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiBf
X29zdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX29zdHJlYW1fdHlwZTo6aW9z
X2Jhc2UgX19pb3NfYmFzZTsKCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9faW9zX2Jhc2U6OmZtdGZs
YWdzIF9fZmxhZ3MgPSBfX29zLmZsYWdzKCk7CiAgICAgIGNvbnN0IF9DaGFyVCBfX2ZpbGwgPSBf
X29zLmZpbGwoKTsKICAgICAgY29uc3Qgc3RkOjpzdHJlYW1zaXplIF9fcHJlY2lzaW9uID0gX19v
cy5wcmVjaXNpb24oKTsKICAgICAgY29uc3QgX0NoYXJUIF9fc3BhY2UgPSBfX29zLndpZGVuKCcg
Jyk7CiAgICAgIF9fb3MuZmxhZ3MoX19pb3NfYmFzZTo6c2NpZW50aWZpYyB8IF9faW9zX2Jhc2U6
OmxlZnQpOwogICAgICBfX29zLmZpbGwoX19zcGFjZSk7CiAgICAgIF9fb3MucHJlY2lzaW9uKHN0
ZDo6bnVtZXJpY19saW1pdHM8X1JlYWxUeXBlPjo6bWF4X2RpZ2l0czEwKTsKCiAgICAgIF9fb3Mg
PDwgX194LmEoKSA8PCBfX3NwYWNlIDw8IF9feC5iKCk7CgogICAgICBfX29zLmZsYWdzKF9fZmxh
Z3MpOwogICAgICBfX29zLmZpbGwoX19maWxsKTsKICAgICAgX19vcy5wcmVjaXNpb24oX19wcmVj
aXNpb24pOwogICAgICByZXR1cm4gX19vczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jl
YWxUeXBlLCB0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdGQ6OmJhc2lj
X2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3Ry
ZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAgICAgICAgZXh0cmVtZV92YWx1ZV9kaXN0cmli
dXRpb248X1JlYWxUeXBlPiYgX194KQogICAgewogICAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfaXN0
cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9faXN0cmVhbV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVu
YW1lIF9faXN0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19iYXNlOwoKICAgICAgY29uc3QgdHlw
ZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9IF9faXMuZmxhZ3MoKTsKICAgICAg
X19pcy5mbGFncyhfX2lvc19iYXNlOjpkZWMgfCBfX2lvc19iYXNlOjpza2lwd3MpOwoKICAgICAg
X1JlYWxUeXBlIF9fYSwgX19iOwogICAgICBfX2lzID4+IF9fYSA+PiBfX2I7CiAgICAgIF9feC5w
YXJhbSh0eXBlbmFtZSBleHRyZW1lX3ZhbHVlX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+OjoKICBw
YXJhbV90eXBlKF9fYSwgX19iKSk7CgogICAgICBfX2lzLmZsYWdzKF9fZmxhZ3MpOwogICAgICBy
ZXR1cm4gX19pczsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlPgogICAgdm9p
ZAogICAgZGlzY3JldGVfZGlzdHJpYnV0aW9uPF9JbnRUeXBlPjo6cGFyYW1fdHlwZTo6CiAgICBf
TV9pbml0aWFsaXplKCkKICAgIHsKICAgICAgaWYgKF9NX3Byb2Iuc2l6ZSgpIDwgMikKIHsKICAg
X01fcHJvYi5jbGVhcigpOwogICByZXR1cm47CiB9CgogICAgICBjb25zdCBkb3VibGUgX19zdW0g
PSBzdGQ6OmFjY3VtdWxhdGUoX01fcHJvYi5iZWdpbigpLAogICAgICAgIF9NX3Byb2IuZW5kKCks
IDAuMCk7CgogICAgICBfX2RldGFpbDo6X19ub3JtYWxpemUoX01fcHJvYi5iZWdpbigpLCBfTV9w
cm9iLmVuZCgpLCBfTV9wcm9iLmJlZ2luKCksCiAgICAgICBfX3N1bSk7CgogICAgICBfTV9jcC5y
ZXNlcnZlKF9NX3Byb2Iuc2l6ZSgpKTsKICAgICAgc3RkOjpwYXJ0aWFsX3N1bShfTV9wcm9iLmJl
Z2luKCksIF9NX3Byb2IuZW5kKCksCiAgICAgICAgIHN0ZDo6YmFja19pbnNlcnRlcihfTV9jcCkp
OwoKICAgICAgX01fY3BbX01fY3Auc2l6ZSgpIC0gMV0gPSAxLjA7CiAgICB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9JbnRUeXBlPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Z1bmM+CiAgICAgIGRp
c2NyZXRlX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT46OnBhcmFtX3R5cGU6OgogICAgICBwYXJhbV90
eXBlKHNpemVfdCBfX253LCBkb3VibGUgX194bWluLCBkb3VibGUgX194bWF4LCBfRnVuYyBfX2Z3
KQogICAgICA6IF9NX3Byb2IoKSwgX01fY3AoKQogICAgICB7CiBjb25zdCBzaXplX3QgX19uID0g
X19udyA9PSAwID8gMSA6IF9fbnc7CiBjb25zdCBkb3VibGUgX19kZWx0YSA9IChfX3htYXggLSBf
X3htaW4pIC8gX19uOwoKIF9NX3Byb2IucmVzZXJ2ZShfX24pOwogZm9yIChzaXplX3QgX19rID0g
MDsgX19rIDwgX19udzsgKytfX2spCiAgIF9NX3Byb2IucHVzaF9iYWNrKF9fZncoX194bWluICsg
X19rICogX19kZWx0YSArIDAuNSAqIF9fZGVsdGEpKTsKCiBfTV9pbml0aWFsaXplKCk7CiAgICAg
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGU+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KICAgICAgdHlwZW5hbWUgZGlzY3JldGVfZGlz
dHJpYnV0aW9uPF9JbnRUeXBlPjo6cmVzdWx0X3R5cGUKICAgICAgZGlzY3JldGVfZGlzdHJpYnV0
aW9uPF9JbnRUeXBlPjo6CiAgICAgIG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5l
cmF0b3ImIF9fdXJuZywKICAgY29uc3QgcGFyYW1fdHlwZSYgX19wYXJhbSkKICAgICAgewogaWYg
KF9fcGFyYW0uX01fY3AuZW1wdHkoKSkKICAgcmV0dXJuIHJlc3VsdF90eXBlKDApOwoKIF9fZGV0
YWlsOjpfQWRhcHRvcjxfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciwgZG91YmxlPgogICBf
X2F1cm5nKF9fdXJuZyk7CgogY29uc3QgZG91YmxlIF9fcCA9IF9fYXVybmcoKTsKIGF1dG8gX19w
b3MgPSBzdGQ6Omxvd2VyX2JvdW5kKF9fcGFyYW0uX01fY3AuYmVnaW4oKSwKICAgICAgICAgIF9f
cGFyYW0uX01fY3AuZW5kKCksIF9fcCk7CgogcmV0dXJuIF9fcG9zIC0gX19wYXJhbS5fTV9jcC5i
ZWdpbigpOwogICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlPgogICAgdGVtcGxh
dGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwKICAgICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5k
b21OdW1iZXJHZW5lcmF0b3I+CiAgICAgIHZvaWQKICAgICAgZGlzY3JldGVfZGlzdHJpYnV0aW9u
PF9JbnRUeXBlPjo6CiAgICAgIF9fZ2VuZXJhdGVfaW1wbChfRm9yd2FyZEl0ZXJhdG9yIF9fZiwg
X0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgICAgICAgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0
b3ImIF9fdXJuZywKICAgICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3BhcmFtKQogICAgICB7CgoK
IGlmIChfX3BhcmFtLl9NX2NwLmVtcHR5KCkpCiAgIHsKICAgICB3aGlsZSAoX19mICE9IF9fdCkK
ICAgICAgICpfX2YrKyA9IHJlc3VsdF90eXBlKDApOwogICAgIHJldHVybjsKICAgfQoKIF9fZGV0
YWlsOjpfQWRhcHRvcjxfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciwgZG91YmxlPgogICBf
X2F1cm5nKF9fdXJuZyk7Cgogd2hpbGUgKF9fZiAhPSBfX3QpCiAgIHsKICAgICBjb25zdCBkb3Vi
bGUgX19wID0gX19hdXJuZygpOwogICAgIGF1dG8gX19wb3MgPSBzdGQ6Omxvd2VyX2JvdW5kKF9f
cGFyYW0uX01fY3AuYmVnaW4oKSwKICAgICAgIF9fcGFyYW0uX01fY3AuZW5kKCksIF9fcCk7Cgog
ICAgICpfX2YrKyA9IF9fcG9zIC0gX19wYXJhbS5fTV9jcC5iZWdpbigpOwogICB9CiAgICAgIH0K
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludFR5cGUsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg
X1RyYWl0cz4KICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3Bl
cmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vcywKICAgICAg
ICBjb25zdCBkaXNjcmV0ZV9kaXN0cmlidXRpb248X0ludFR5cGU+JiBfX3gpCiAgICB7CiAgICAg
IHR5cGVkZWYgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19vc3RyZWFtX3R5
cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19vc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9z
X2Jhc2U7CgogICAgICBjb25zdCB0eXBlbmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdz
ID0gX19vcy5mbGFncygpOwogICAgICBjb25zdCBfQ2hhclQgX19maWxsID0gX19vcy5maWxsKCk7
CiAgICAgIGNvbnN0IHN0ZDo6c3RyZWFtc2l6ZSBfX3ByZWNpc2lvbiA9IF9fb3MucHJlY2lzaW9u
KCk7CiAgICAgIGNvbnN0IF9DaGFyVCBfX3NwYWNlID0gX19vcy53aWRlbignICcpOwogICAgICBf
X29zLmZsYWdzKF9faW9zX2Jhc2U6OnNjaWVudGlmaWMgfCBfX2lvc19iYXNlOjpsZWZ0KTsKICAg
ICAgX19vcy5maWxsKF9fc3BhY2UpOwogICAgICBfX29zLnByZWNpc2lvbihzdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46Om1heF9kaWdpdHMxMCk7CgogICAgICBzdGQ6OnZlY3Rvcjxkb3VibGU+
IF9fcHJvYiA9IF9feC5wcm9iYWJpbGl0aWVzKCk7CiAgICAgIF9fb3MgPDwgX19wcm9iLnNpemUo
KTsKICAgICAgZm9yIChhdXRvIF9fZGl0ID0gX19wcm9iLmJlZ2luKCk7IF9fZGl0ICE9IF9fcHJv
Yi5lbmQoKTsgKytfX2RpdCkKIF9fb3MgPDwgX19zcGFjZSA8PCAqX19kaXQ7CgogICAgICBfX29z
LmZsYWdzKF9fZmxhZ3MpOwogICAgICBfX29zLmZpbGwoX19maWxsKTsKICAgICAgX19vcy5wcmVj
aXNpb24oX19wcmVjaXNpb24pOwogICAgICByZXR1cm4gX19vczsKICAgIH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0ludFR5cGUsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAg
IHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+PihzdGQ6
OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywKICAgICAgICBkaXNjcmV0ZV9k
aXN0cmlidXRpb248X0ludFR5cGU+JiBfX3gpCiAgICB7CiAgICAgIHR5cGVkZWYgc3RkOjpiYXNp
Y19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgX19pc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jhc2U7CgogICAgICBjb25z
dCB0eXBlbmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdzID0gX19pcy5mbGFncygpOwog
ICAgICBfX2lzLmZsYWdzKF9faW9zX2Jhc2U6OmRlYyB8IF9faW9zX2Jhc2U6OnNraXB3cyk7Cgog
ICAgICBzaXplX3QgX19uOwogICAgICBfX2lzID4+IF9fbjsKCiAgICAgIHN0ZDo6dmVjdG9yPGRv
dWJsZT4gX19wcm9iX3ZlYzsKICAgICAgX19wcm9iX3ZlYy5yZXNlcnZlKF9fbik7CiAgICAgIGZv
ciAoOyBfX24gIT0gMDsgLS1fX24pCiB7CiAgIGRvdWJsZSBfX3Byb2I7CiAgIF9faXMgPj4gX19w
cm9iOwogICBfX3Byb2JfdmVjLnB1c2hfYmFjayhfX3Byb2IpOwogfQoKICAgICAgX194LnBhcmFt
KHR5cGVuYW1lIGRpc2NyZXRlX2Rpc3RyaWJ1dGlvbjxfSW50VHlwZT46OgogIHBhcmFtX3R5cGUo
X19wcm9iX3ZlYy5iZWdpbigpLCBfX3Byb2JfdmVjLmVuZCgpKSk7CgogICAgICBfX2lzLmZsYWdz
KF9fZmxhZ3MpOwogICAgICByZXR1cm4gX19pczsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9SZWFsVHlwZT4KICAgIHZvaWQKICAgIHBpZWNld2lzZV9jb25zdGFudF9kaXN0cmlidXRpb248
X1JlYWxUeXBlPjo6cGFyYW1fdHlwZTo6CiAgICBfTV9pbml0aWFsaXplKCkKICAgIHsKICAgICAg
aWYgKF9NX2ludC5zaXplKCkgPCAyCiAgIHx8IChfTV9pbnQuc2l6ZSgpID09IDIKICAgICAgICYm
IF9NX2ludFswXSA9PSBfUmVhbFR5cGUoMCkKICAgICAgICYmIF9NX2ludFsxXSA9PSBfUmVhbFR5
cGUoMSkpKQogewogICBfTV9pbnQuY2xlYXIoKTsKICAgX01fZGVuLmNsZWFyKCk7CiAgIHJldHVy
bjsKIH0KCiAgICAgIGNvbnN0IGRvdWJsZSBfX3N1bSA9IHN0ZDo6YWNjdW11bGF0ZShfTV9kZW4u
YmVnaW4oKSwKICAgICAgICBfTV9kZW4uZW5kKCksIDAuMCk7CgogICAgICBfX2RldGFpbDo6X19u
b3JtYWxpemUoX01fZGVuLmJlZ2luKCksIF9NX2Rlbi5lbmQoKSwgX01fZGVuLmJlZ2luKCksCiAg
ICAgICBfX3N1bSk7CgogICAgICBfTV9jcC5yZXNlcnZlKF9NX2Rlbi5zaXplKCkpOwogICAgICBz
dGQ6OnBhcnRpYWxfc3VtKF9NX2Rlbi5iZWdpbigpLCBfTV9kZW4uZW5kKCksCiAgICAgICAgIHN0
ZDo6YmFja19pbnNlcnRlcihfTV9jcCkpOwoKCiAgICAgIF9NX2NwW19NX2NwLnNpemUoKSAtIDFd
ID0gMS4wOwoKICAgICAgZm9yIChzaXplX3QgX19rID0gMDsgX19rIDwgX01fZGVuLnNpemUoKTsg
KytfX2spCiBfTV9kZW5bX19rXSAvPSBfTV9pbnRbX19rICsgMV0gLSBfTV9pbnRbX19rXTsKICAg
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlPgogICAgdGVtcGxhdGU8dHlwZW5hbWUg
X0lucHV0SXRlcmF0b3JCLCB0eXBlbmFtZSBfSW5wdXRJdGVyYXRvclc+CiAgICAgIHBpZWNld2lz
ZV9jb25zdGFudF9kaXN0cmlidXRpb248X1JlYWxUeXBlPjo6cGFyYW1fdHlwZTo6CiAgICAgIHBh
cmFtX3R5cGUoX0lucHV0SXRlcmF0b3JCIF9fYmJlZ2luLAogICBfSW5wdXRJdGVyYXRvckIgX19i
ZW5kLAogICBfSW5wdXRJdGVyYXRvclcgX193YmVnaW4pCiAgICAgIDogX01faW50KCksIF9NX2Rl
bigpLCBfTV9jcCgpCiAgICAgIHsKIGlmIChfX2JiZWdpbiAhPSBfX2JlbmQpCiAgIHsKICAgICBm
b3IgKDs7KQogICAgICAgewogIF9NX2ludC5wdXNoX2JhY2soKl9fYmJlZ2luKTsKICArK19fYmJl
Z2luOwogIGlmIChfX2JiZWdpbiA9PSBfX2JlbmQpCiAgICBicmVhazsKCiAgX01fZGVuLnB1c2hf
YmFjaygqX193YmVnaW4pOwogICsrX193YmVnaW47CiAgICAgICB9CiAgIH0KCiBfTV9pbml0aWFs
aXplKCk7CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlPgogICAgdGVtcGxh
dGU8dHlwZW5hbWUgX0Z1bmM+CiAgICAgIHBpZWNld2lzZV9jb25zdGFudF9kaXN0cmlidXRpb248
X1JlYWxUeXBlPjo6cGFyYW1fdHlwZTo6CiAgICAgIHBhcmFtX3R5cGUoaW5pdGlhbGl6ZXJfbGlz
dDxfUmVhbFR5cGU+IF9fYmwsIF9GdW5jIF9fZncpCiAgICAgIDogX01faW50KCksIF9NX2Rlbigp
LCBfTV9jcCgpCiAgICAgIHsKIF9NX2ludC5yZXNlcnZlKF9fYmwuc2l6ZSgpKTsKIGZvciAoYXV0
byBfX2JpdGVyID0gX19ibC5iZWdpbigpOyBfX2JpdGVyICE9IF9fYmwuZW5kKCk7ICsrX19iaXRl
cikKICAgX01faW50LnB1c2hfYmFjaygqX19iaXRlcik7CgogX01fZGVuLnJlc2VydmUoX01faW50
LnNpemUoKSAtIDEpOwogZm9yIChzaXplX3QgX19rID0gMDsgX19rIDwgX01faW50LnNpemUoKSAt
IDE7ICsrX19rKQogICBfTV9kZW4ucHVzaF9iYWNrKF9fZncoMC41ICogKF9NX2ludFtfX2sgKyAx
XSArIF9NX2ludFtfX2tdKSkpOwoKIF9NX2luaXRpYWxpemUoKTsKICAgICAgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfUmVhbFR5cGU+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnVuYz4KICAgICAg
cGllY2V3aXNlX2NvbnN0YW50X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+OjpwYXJhbV90eXBlOjoK
ICAgICAgcGFyYW1fdHlwZShzaXplX3QgX19udywgX1JlYWxUeXBlIF9feG1pbiwgX1JlYWxUeXBl
IF9feG1heCwgX0Z1bmMgX19mdykKICAgICAgOiBfTV9pbnQoKSwgX01fZGVuKCksIF9NX2NwKCkK
ICAgICAgewogY29uc3Qgc2l6ZV90IF9fbiA9IF9fbncgPT0gMCA/IDEgOiBfX253OwogY29uc3Qg
X1JlYWxUeXBlIF9fZGVsdGEgPSAoX194bWF4IC0gX194bWluKSAvIF9fbjsKCiBfTV9pbnQucmVz
ZXJ2ZShfX24gKyAxKTsKIGZvciAoc2l6ZV90IF9fayA9IDA7IF9fayA8PSBfX253OyArK19faykK
ICAgX01faW50LnB1c2hfYmFjayhfX3htaW4gKyBfX2sgKiBfX2RlbHRhKTsKCiBfTV9kZW4ucmVz
ZXJ2ZShfX24pOwogZm9yIChzaXplX3QgX19rID0gMDsgX19rIDwgX19udzsgKytfX2spCiAgIF9N
X2Rlbi5wdXNoX2JhY2soX19mdyhfTV9pbnRbX19rXSArIDAuNSAqIF9fZGVsdGEpKTsKCiBfTV9p
bml0aWFsaXplKCk7CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlPgogICAg
dGVtcGxhdGU8dHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiAgICAgIHR5
cGVuYW1lIHBpZWNld2lzZV9jb25zdGFudF9kaXN0cmlidXRpb248X1JlYWxUeXBlPjo6cmVzdWx0
X3R5cGUKICAgICAgcGllY2V3aXNlX2NvbnN0YW50X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+OjoK
ICAgICAgb3BlcmF0b3IoKShfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYgX191cm5nLAog
ICBjb25zdCBwYXJhbV90eXBlJiBfX3BhcmFtKQogICAgICB7CiBfX2RldGFpbDo6X0FkYXB0b3I8
X1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3IsIGRvdWJsZT4KICAgX19hdXJuZyhfX3Vybmcp
OwoKIGNvbnN0IGRvdWJsZSBfX3AgPSBfX2F1cm5nKCk7CiBpZiAoX19wYXJhbS5fTV9jcC5lbXB0
eSgpKQogICByZXR1cm4gX19wOwoKIGF1dG8gX19wb3MgPSBzdGQ6Omxvd2VyX2JvdW5kKF9fcGFy
YW0uX01fY3AuYmVnaW4oKSwKICAgICAgICAgIF9fcGFyYW0uX01fY3AuZW5kKCksIF9fcCk7CiBj
b25zdCBzaXplX3QgX19pID0gX19wb3MgLSBfX3BhcmFtLl9NX2NwLmJlZ2luKCk7CgogY29uc3Qg
ZG91YmxlIF9fcHJlZiA9IF9faSA+IDAgPyBfX3BhcmFtLl9NX2NwW19faSAtIDFdIDogMC4wOwoK
IHJldHVybiBfX3BhcmFtLl9NX2ludFtfX2ldICsgKF9fcCAtIF9fcHJlZikgLyBfX3BhcmFtLl9N
X2RlbltfX2ldOwogICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZT4KICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgIHR5cGVuYW1lIF9Vbmlmb3Jt
UmFuZG9tTnVtYmVyR2VuZXJhdG9yPgogICAgICB2b2lkCiAgICAgIHBpZWNld2lzZV9jb25zdGFu
dF9kaXN0cmlidXRpb248X1JlYWxUeXBlPjo6CiAgICAgIF9fZ2VuZXJhdGVfaW1wbChfRm9yd2Fy
ZEl0ZXJhdG9yIF9fZiwgX0ZvcndhcmRJdGVyYXRvciBfX3QsCiAgICAgICAgX1VuaWZvcm1SYW5k
b21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgICAgICBjb25zdCBwYXJhbV90eXBlJiBfX3Bh
cmFtKQogICAgICB7CgogX19kZXRhaWw6Ol9BZGFwdG9yPF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2Vu
ZXJhdG9yLCBkb3VibGU+CiAgIF9fYXVybmcoX191cm5nKTsKCiBpZiAoX19wYXJhbS5fTV9jcC5l
bXB0eSgpKQogICB7CiAgICAgd2hpbGUgKF9fZiAhPSBfX3QpCiAgICAgICAqX19mKysgPSBfX2F1
cm5nKCk7CiAgICAgcmV0dXJuOwogICB9Cgogd2hpbGUgKF9fZiAhPSBfX3QpCiAgIHsKICAgICBj
b25zdCBkb3VibGUgX19wID0gX19hdXJuZygpOwoKICAgICBhdXRvIF9fcG9zID0gc3RkOjpsb3dl
cl9ib3VuZChfX3BhcmFtLl9NX2NwLmJlZ2luKCksCiAgICAgICBfX3BhcmFtLl9NX2NwLmVuZCgp
LCBfX3ApOwogICAgIGNvbnN0IHNpemVfdCBfX2kgPSBfX3BvcyAtIF9fcGFyYW0uX01fY3AuYmVn
aW4oKTsKCiAgICAgY29uc3QgZG91YmxlIF9fcHJlZiA9IF9faSA+IDAgPyBfX3BhcmFtLl9NX2Nw
W19faSAtIDFdIDogMC4wOwoKICAgICAqX19mKysgPSAoX19wYXJhbS5fTV9pbnRbX19pXQogICAg
ICAgICsgKF9fcCAtIF9fcHJlZikgLyBfX3BhcmFtLl9NX2RlbltfX2ldKTsKICAgfQogICAgICB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt
ZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBv
cGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLAogICAg
ICAgIGNvbnN0IHBpZWNld2lzZV9jb25zdGFudF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX194
KQogICAgewogICAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+
IF9fb3N0cmVhbV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fb3N0cmVhbV90eXBlOjpp
b3NfYmFzZSBfX2lvc19iYXNlOwoKICAgICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10
ZmxhZ3MgX19mbGFncyA9IF9fb3MuZmxhZ3MoKTsKICAgICAgY29uc3QgX0NoYXJUIF9fZmlsbCA9
IF9fb3MuZmlsbCgpOwogICAgICBjb25zdCBzdGQ6OnN0cmVhbXNpemUgX19wcmVjaXNpb24gPSBf
X29zLnByZWNpc2lvbigpOwogICAgICBjb25zdCBfQ2hhclQgX19zcGFjZSA9IF9fb3Mud2lkZW4o
JyAnKTsKICAgICAgX19vcy5mbGFncyhfX2lvc19iYXNlOjpzY2llbnRpZmljIHwgX19pb3NfYmFz
ZTo6bGVmdCk7CiAgICAgIF9fb3MuZmlsbChfX3NwYWNlKTsKICAgICAgX19vcy5wcmVjaXNpb24o
c3RkOjpudW1lcmljX2xpbWl0czxfUmVhbFR5cGU+OjptYXhfZGlnaXRzMTApOwoKICAgICAgc3Rk
Ojp2ZWN0b3I8X1JlYWxUeXBlPiBfX2ludCA9IF9feC5pbnRlcnZhbHMoKTsKICAgICAgX19vcyA8
PCBfX2ludC5zaXplKCkgLSAxOwoKICAgICAgZm9yIChhdXRvIF9feGl0ID0gX19pbnQuYmVnaW4o
KTsgX194aXQgIT0gX19pbnQuZW5kKCk7ICsrX194aXQpCiBfX29zIDw8IF9fc3BhY2UgPDwgKl9f
eGl0OwoKICAgICAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBfX2RlbiA9IF9feC5kZW5zaXRpZXMoKTsK
ICAgICAgZm9yIChhdXRvIF9fZGl0ID0gX19kZW4uYmVnaW4oKTsgX19kaXQgIT0gX19kZW4uZW5k
KCk7ICsrX19kaXQpCiBfX29zIDw8IF9fc3BhY2UgPDwgKl9fZGl0OwoKICAgICAgX19vcy5mbGFn
cyhfX2ZsYWdzKTsKICAgICAgX19vcy5maWxsKF9fZmlsbCk7CiAgICAgIF9fb3MucHJlY2lzaW9u
KF9fcHJlY2lzaW9uKTsKICAgICAgcmV0dXJuIF9fb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9SZWFsVHlwZSwgdHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3Rk
OjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcj4+KHN0ZDo6YmFz
aWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLAogICAgICAgIHBpZWNld2lzZV9jb25z
dGFudF9kaXN0cmlidXRpb248X1JlYWxUeXBlPiYgX194KQogICAgewogICAgICB0eXBlZGVmIHN0
ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9faXN0cmVhbV90eXBlOwogICAgICB0
eXBlZGVmIHR5cGVuYW1lIF9faXN0cmVhbV90eXBlOjppb3NfYmFzZSBfX2lvc19iYXNlOwoKICAg
ICAgY29uc3QgdHlwZW5hbWUgX19pb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9IF9faXMuZmxh
Z3MoKTsKICAgICAgX19pcy5mbGFncyhfX2lvc19iYXNlOjpkZWMgfCBfX2lvc19iYXNlOjpza2lw
d3MpOwoKICAgICAgc2l6ZV90IF9fbjsKICAgICAgX19pcyA+PiBfX247CgogICAgICBzdGQ6OnZl
Y3RvcjxfUmVhbFR5cGU+IF9faW50X3ZlYzsKICAgICAgX19pbnRfdmVjLnJlc2VydmUoX19uICsg
MSk7CiAgICAgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8PSBfX247ICsrX19pKQogewogICBf
UmVhbFR5cGUgX19pbnQ7CiAgIF9faXMgPj4gX19pbnQ7CiAgIF9faW50X3ZlYy5wdXNoX2JhY2so
X19pbnQpOwogfQoKICAgICAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBfX2Rlbl92ZWM7CiAgICAgIF9f
ZGVuX3ZlYy5yZXNlcnZlKF9fbik7CiAgICAgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8IF9f
bjsgKytfX2kpCiB7CiAgIGRvdWJsZSBfX2RlbjsKICAgX19pcyA+PiBfX2RlbjsKICAgX19kZW5f
dmVjLnB1c2hfYmFjayhfX2Rlbik7CiB9CgogICAgICBfX3gucGFyYW0odHlwZW5hbWUgcGllY2V3
aXNlX2NvbnN0YW50X2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+OjoKICAgcGFyYW1fdHlwZShfX2lu
dF92ZWMuYmVnaW4oKSwgX19pbnRfdmVjLmVuZCgpLCBfX2Rlbl92ZWMuYmVnaW4oKSkpOwoKICAg
ICAgX19pcy5mbGFncyhfX2ZsYWdzKTsKICAgICAgcmV0dXJuIF9faXM7CiAgICB9CgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGU+CiAgICB2b2lkCiAgICBwaWVjZXdpc2VfbGluZWFyX2Rp
c3RyaWJ1dGlvbjxfUmVhbFR5cGU+OjpwYXJhbV90eXBlOjoKICAgIF9NX2luaXRpYWxpemUoKQog
ICAgewogICAgICBpZiAoX01faW50LnNpemUoKSA8IDIKICAgfHwgKF9NX2ludC5zaXplKCkgPT0g
MgogICAgICAgJiYgX01faW50WzBdID09IF9SZWFsVHlwZSgwKQogICAgICAgJiYgX01faW50WzFd
ID09IF9SZWFsVHlwZSgxKQogICAgICAgJiYgX01fZGVuWzBdID09IF9NX2RlblsxXSkpCiB7CiAg
IF9NX2ludC5jbGVhcigpOwogICBfTV9kZW4uY2xlYXIoKTsKICAgcmV0dXJuOwogfQoKICAgICAg
ZG91YmxlIF9fc3VtID0gMC4wOwogICAgICBfTV9jcC5yZXNlcnZlKF9NX2ludC5zaXplKCkgLSAx
KTsKICAgICAgX01fbS5yZXNlcnZlKF9NX2ludC5zaXplKCkgLSAxKTsKICAgICAgZm9yIChzaXpl
X3QgX19rID0gMDsgX19rIDwgX01faW50LnNpemUoKSAtIDE7ICsrX19rKQogewogICBjb25zdCBf
UmVhbFR5cGUgX19kZWx0YSA9IF9NX2ludFtfX2sgKyAxXSAtIF9NX2ludFtfX2tdOwogICBfX3N1
bSArPSAwLjUgKiAoX01fZGVuW19fayArIDFdICsgX01fZGVuW19fa10pICogX19kZWx0YTsKICAg
X01fY3AucHVzaF9iYWNrKF9fc3VtKTsKICAgX01fbS5wdXNoX2JhY2soKF9NX2RlbltfX2sgKyAx
XSAtIF9NX2RlbltfX2tdKSAvIF9fZGVsdGEpOwogfQoKCiAgICAgIF9fZGV0YWlsOjpfX25vcm1h
bGl6ZShfTV9kZW4uYmVnaW4oKSwgX01fZGVuLmVuZCgpLCBfTV9kZW4uYmVnaW4oKSwKICAgICAg
IF9fc3VtKTsKCiAgICAgIF9fZGV0YWlsOjpfX25vcm1hbGl6ZShfTV9jcC5iZWdpbigpLCBfTV9j
cC5lbmQoKSwgX01fY3AuYmVnaW4oKSwgX19zdW0pOwoKICAgICAgX19kZXRhaWw6Ol9fbm9ybWFs
aXplKF9NX20uYmVnaW4oKSwgX01fbS5lbmQoKSwgX01fbS5iZWdpbigpLCBfX3N1bSk7CgoKICAg
ICAgX01fY3BbX01fY3Auc2l6ZSgpIC0gMV0gPSAxLjA7CiAgICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfUmVhbFR5cGU+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvckIsIHR5
cGVuYW1lIF9JbnB1dEl0ZXJhdG9yVz4KICAgICAgcGllY2V3aXNlX2xpbmVhcl9kaXN0cmlidXRp
b248X1JlYWxUeXBlPjo6cGFyYW1fdHlwZTo6CiAgICAgIHBhcmFtX3R5cGUoX0lucHV0SXRlcmF0
b3JCIF9fYmJlZ2luLAogICBfSW5wdXRJdGVyYXRvckIgX19iZW5kLAogICBfSW5wdXRJdGVyYXRv
clcgX193YmVnaW4pCiAgICAgIDogX01faW50KCksIF9NX2RlbigpLCBfTV9jcCgpLCBfTV9tKCkK
ICAgICAgewogZm9yICg7IF9fYmJlZ2luICE9IF9fYmVuZDsgKytfX2JiZWdpbiwgKytfX3diZWdp
bikKICAgewogICAgIF9NX2ludC5wdXNoX2JhY2soKl9fYmJlZ2luKTsKICAgICBfTV9kZW4ucHVz
aF9iYWNrKCpfX3diZWdpbik7CiAgIH0KCiBfTV9pbml0aWFsaXplKCk7CiAgICAgIH0KCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0Z1bmM+CiAg
ICAgIHBpZWNld2lzZV9saW5lYXJfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46OnBhcmFtX3R5cGU6
OgogICAgICBwYXJhbV90eXBlKGluaXRpYWxpemVyX2xpc3Q8X1JlYWxUeXBlPiBfX2JsLCBfRnVu
YyBfX2Z3KQogICAgICA6IF9NX2ludCgpLCBfTV9kZW4oKSwgX01fY3AoKSwgX01fbSgpCiAgICAg
IHsKIF9NX2ludC5yZXNlcnZlKF9fYmwuc2l6ZSgpKTsKIF9NX2Rlbi5yZXNlcnZlKF9fYmwuc2l6
ZSgpKTsKIGZvciAoYXV0byBfX2JpdGVyID0gX19ibC5iZWdpbigpOyBfX2JpdGVyICE9IF9fYmwu
ZW5kKCk7ICsrX19iaXRlcikKICAgewogICAgIF9NX2ludC5wdXNoX2JhY2soKl9fYml0ZXIpOwog
ICAgIF9NX2Rlbi5wdXNoX2JhY2soX19mdygqX19iaXRlcikpOwogICB9CgogX01faW5pdGlhbGl6
ZSgpOwogICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZT4KICAgIHRlbXBsYXRl
PHR5cGVuYW1lIF9GdW5jPgogICAgICBwaWVjZXdpc2VfbGluZWFyX2Rpc3RyaWJ1dGlvbjxfUmVh
bFR5cGU+OjpwYXJhbV90eXBlOjoKICAgICAgcGFyYW1fdHlwZShzaXplX3QgX19udywgX1JlYWxU
eXBlIF9feG1pbiwgX1JlYWxUeXBlIF9feG1heCwgX0Z1bmMgX19mdykKICAgICAgOiBfTV9pbnQo
KSwgX01fZGVuKCksIF9NX2NwKCksIF9NX20oKQogICAgICB7CiBjb25zdCBzaXplX3QgX19uID0g
X19udyA9PSAwID8gMSA6IF9fbnc7CiBjb25zdCBfUmVhbFR5cGUgX19kZWx0YSA9IChfX3htYXgg
LSBfX3htaW4pIC8gX19uOwoKIF9NX2ludC5yZXNlcnZlKF9fbiArIDEpOwogX01fZGVuLnJlc2Vy
dmUoX19uICsgMSk7CiBmb3IgKHNpemVfdCBfX2sgPSAwOyBfX2sgPD0gX19udzsgKytfX2spCiAg
IHsKICAgICBfTV9pbnQucHVzaF9iYWNrKF9feG1pbiArIF9fayAqIF9fZGVsdGEpOwogICAgIF9N
X2Rlbi5wdXNoX2JhY2soX19mdyhfTV9pbnRbX19rXSArIF9fZGVsdGEpKTsKICAgfQoKIF9NX2lu
aXRpYWxpemUoKTsKICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGU+CiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4KICAgICAgdHlw
ZW5hbWUgcGllY2V3aXNlX2xpbmVhcl9kaXN0cmlidXRpb248X1JlYWxUeXBlPjo6cmVzdWx0X3R5
cGUKICAgICAgcGllY2V3aXNlX2xpbmVhcl9kaXN0cmlidXRpb248X1JlYWxUeXBlPjo6CiAgICAg
IG9wZXJhdG9yKCkoX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fdXJuZywKICAgY29u
c3QgcGFyYW1fdHlwZSYgX19wYXJhbSkKICAgICAgewogX19kZXRhaWw6Ol9BZGFwdG9yPF9Vbmlm
b3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yLCBkb3VibGU+CiAgIF9fYXVybmcoX191cm5nKTsKCiBj
b25zdCBkb3VibGUgX19wID0gX19hdXJuZygpOwogaWYgKF9fcGFyYW0uX01fY3AuZW1wdHkoKSkK
ICAgcmV0dXJuIF9fcDsKCiBhdXRvIF9fcG9zID0gc3RkOjpsb3dlcl9ib3VuZChfX3BhcmFtLl9N
X2NwLmJlZ2luKCksCiAgICAgICAgICBfX3BhcmFtLl9NX2NwLmVuZCgpLCBfX3ApOwogY29uc3Qg
c2l6ZV90IF9faSA9IF9fcG9zIC0gX19wYXJhbS5fTV9jcC5iZWdpbigpOwoKIGNvbnN0IGRvdWJs
ZSBfX3ByZWYgPSBfX2kgPiAwID8gX19wYXJhbS5fTV9jcFtfX2kgLSAxXSA6IDAuMDsKCiBjb25z
dCBkb3VibGUgX19hID0gMC41ICogX19wYXJhbS5fTV9tW19faV07CiBjb25zdCBkb3VibGUgX19i
ID0gX19wYXJhbS5fTV9kZW5bX19pXTsKIGNvbnN0IGRvdWJsZSBfX2NtID0gX19wIC0gX19wcmVm
OwoKIF9SZWFsVHlwZSBfX3ggPSBfX3BhcmFtLl9NX2ludFtfX2ldOwogaWYgKF9fYSA9PSAwKQog
ICBfX3ggKz0gX19jbSAvIF9fYjsKIGVsc2UKICAgewogICAgIGNvbnN0IGRvdWJsZSBfX2QgPSBf
X2IgKiBfX2IgKyA0LjAgKiBfX2EgKiBfX2NtOwogICAgIF9feCArPSAwLjUgKiAoc3RkOjpzcXJ0
KF9fZCkgLSBfX2IpIC8gX19hOwogICAgICAgICAgfQoKICAgICAgICByZXR1cm4gX194OwogICAg
ICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZT4KICAgIHRlbXBsYXRlPHR5cGVuYW1l
IF9Gb3J3YXJkSXRlcmF0b3IsCiAgICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2Vu
ZXJhdG9yPgogICAgICB2b2lkCiAgICAgIHBpZWNld2lzZV9saW5lYXJfZGlzdHJpYnV0aW9uPF9S
ZWFsVHlwZT46OgogICAgICBfX2dlbmVyYXRlX2ltcGwoX0ZvcndhcmRJdGVyYXRvciBfX2YsIF9G
b3J3YXJkSXRlcmF0b3IgX190LAogICAgICAgIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9y
JiBfX3VybmcsCiAgICAgICAgY29uc3QgcGFyYW1fdHlwZSYgX19wYXJhbSkKICAgICAgewoKCiB3
aGlsZSAoX19mICE9IF9fdCkKICAgKl9fZisrID0gdGhpcy0+b3BlcmF0b3IoKShfX3VybmcsIF9f
cGFyYW0pOwogICAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZWFsVHlwZSwgdHlwZW5hbWUg
X0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RkOjpiYXNpY19vc3RyZWFtPF9DaGFyVCwg
X1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFp
dHM+JiBfX29zLAogICAgICAgIGNvbnN0IHBpZWNld2lzZV9saW5lYXJfZGlzdHJpYnV0aW9uPF9S
ZWFsVHlwZT4mIF9feCkKICAgIHsKICAgICAgdHlwZWRlZiBzdGQ6OmJhc2ljX29zdHJlYW08X0No
YXJULCBfVHJhaXRzPiBfX29zdHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX29z
dHJlYW1fdHlwZTo6aW9zX2Jhc2UgX19pb3NfYmFzZTsKCiAgICAgIGNvbnN0IHR5cGVuYW1lIF9f
aW9zX2Jhc2U6OmZtdGZsYWdzIF9fZmxhZ3MgPSBfX29zLmZsYWdzKCk7CiAgICAgIGNvbnN0IF9D
aGFyVCBfX2ZpbGwgPSBfX29zLmZpbGwoKTsKICAgICAgY29uc3Qgc3RkOjpzdHJlYW1zaXplIF9f
cHJlY2lzaW9uID0gX19vcy5wcmVjaXNpb24oKTsKICAgICAgY29uc3QgX0NoYXJUIF9fc3BhY2Ug
PSBfX29zLndpZGVuKCcgJyk7CiAgICAgIF9fb3MuZmxhZ3MoX19pb3NfYmFzZTo6c2NpZW50aWZp
YyB8IF9faW9zX2Jhc2U6OmxlZnQpOwogICAgICBfX29zLmZpbGwoX19zcGFjZSk7CiAgICAgIF9f
b3MucHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8X1JlYWxUeXBlPjo6bWF4X2RpZ2l0czEw
KTsKCiAgICAgIHN0ZDo6dmVjdG9yPF9SZWFsVHlwZT4gX19pbnQgPSBfX3guaW50ZXJ2YWxzKCk7
CiAgICAgIF9fb3MgPDwgX19pbnQuc2l6ZSgpIC0gMTsKCiAgICAgIGZvciAoYXV0byBfX3hpdCA9
IF9faW50LmJlZ2luKCk7IF9feGl0ICE9IF9faW50LmVuZCgpOyArK19feGl0KQogX19vcyA8PCBf
X3NwYWNlIDw8ICpfX3hpdDsKCiAgICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gX19kZW4gPSBfX3gu
ZGVuc2l0aWVzKCk7CiAgICAgIGZvciAoYXV0byBfX2RpdCA9IF9fZGVuLmJlZ2luKCk7IF9fZGl0
ICE9IF9fZGVuLmVuZCgpOyArK19fZGl0KQogX19vcyA8PCBfX3NwYWNlIDw8ICpfX2RpdDsKCiAg
ICAgIF9fb3MuZmxhZ3MoX19mbGFncyk7CiAgICAgIF9fb3MuZmlsbChfX2ZpbGwpOwogICAgICBf
X29zLnByZWNpc2lvbihfX3ByZWNpc2lvbik7CiAgICAgIHJldHVybiBfX29zOwogICAgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfUmVhbFR5cGUsIHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1Ry
YWl0cz4KICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0
b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywKICAgICAgICBw
aWVjZXdpc2VfbGluZWFyX2Rpc3RyaWJ1dGlvbjxfUmVhbFR5cGU+JiBfX3gpCiAgICB7CiAgICAg
IHR5cGVkZWYgc3RkOjpiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5
cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19pc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9z
X2Jhc2U7CgogICAgICBjb25zdCB0eXBlbmFtZSBfX2lvc19iYXNlOjpmbXRmbGFncyBfX2ZsYWdz
ID0gX19pcy5mbGFncygpOwogICAgICBfX2lzLmZsYWdzKF9faW9zX2Jhc2U6OmRlYyB8IF9faW9z
X2Jhc2U6OnNraXB3cyk7CgogICAgICBzaXplX3QgX19uOwogICAgICBfX2lzID4+IF9fbjsKCiAg
ICAgIHN0ZDo6dmVjdG9yPF9SZWFsVHlwZT4gX19pbnRfdmVjOwogICAgICBfX2ludF92ZWMucmVz
ZXJ2ZShfX24gKyAxKTsKICAgICAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDw9IF9fbjsgKytf
X2kpCiB7CiAgIF9SZWFsVHlwZSBfX2ludDsKICAgX19pcyA+PiBfX2ludDsKICAgX19pbnRfdmVj
LnB1c2hfYmFjayhfX2ludCk7CiB9CgogICAgICBzdGQ6OnZlY3Rvcjxkb3VibGU+IF9fZGVuX3Zl
YzsKICAgICAgX19kZW5fdmVjLnJlc2VydmUoX19uICsgMSk7CiAgICAgIGZvciAoc2l6ZV90IF9f
aSA9IDA7IF9faSA8PSBfX247ICsrX19pKQogewogICBkb3VibGUgX19kZW47CiAgIF9faXMgPj4g
X19kZW47CiAgIF9fZGVuX3ZlYy5wdXNoX2JhY2soX19kZW4pOwogfQoKICAgICAgX194LnBhcmFt
KHR5cGVuYW1lIHBpZWNld2lzZV9saW5lYXJfZGlzdHJpYnV0aW9uPF9SZWFsVHlwZT46OgogICBw
YXJhbV90eXBlKF9faW50X3ZlYy5iZWdpbigpLCBfX2ludF92ZWMuZW5kKCksIF9fZGVuX3ZlYy5i
ZWdpbigpKSk7CgogICAgICBfX2lzLmZsYWdzKF9fZmxhZ3MpOwogICAgICByZXR1cm4gX19pczsK
ICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRUeXBlPgogICAgc2VlZF9zZXE6OnNlZWRf
c2VxKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxfSW50VHlwZT4gX19pbCkKICAgIHsKICAgICAgZm9y
IChhdXRvIF9faXRlciA9IF9faWwuYmVnaW4oKTsgX19pdGVyICE9IF9faWwuZW5kKCk7ICsrX19p
dGVyKQogX01fdi5wdXNoX2JhY2soX19kZXRhaWw6Ol9fbW9kPHJlc3VsdF90eXBlLAogICAgICAg
ICBfX2RldGFpbDo6X1NoaWZ0PHJlc3VsdF90eXBlLCAzMj46Ol9fdmFsdWU+KCpfX2l0ZXIpKTsK
ICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3I+CiAgICBzZWVkX3NlcTo6
c2VlZF9zZXEoX0lucHV0SXRlcmF0b3IgX19iZWdpbiwgX0lucHV0SXRlcmF0b3IgX19lbmQpCiAg
ICB7CiAgICAgIGZvciAoX0lucHV0SXRlcmF0b3IgX19pdGVyID0gX19iZWdpbjsgX19pdGVyICE9
IF9fZW5kOyArK19faXRlcikKIF9NX3YucHVzaF9iYWNrKF9fZGV0YWlsOjpfX21vZDxyZXN1bHRf
dHlwZSwKICAgICAgICAgX19kZXRhaWw6Ol9TaGlmdDxyZXN1bHRfdHlwZSwgMzI+OjpfX3ZhbHVl
PigqX19pdGVyKSk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVy
YXRvcj4KICAgIHZvaWQKICAgIHNlZWRfc2VxOjpnZW5lcmF0ZShfUmFuZG9tQWNjZXNzSXRlcmF0
b3IgX19iZWdpbiwKICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZW5kKQogICAgewog
ICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0
b3I+Ojp2YWx1ZV90eXBlCiAgICAgICAgX1R5cGU7CgogICAgICBpZiAoX19iZWdpbiA9PSBfX2Vu
ZCkKIHJldHVybjsKCiAgICAgIHN0ZDo6ZmlsbChfX2JlZ2luLCBfX2VuZCwgX1R5cGUoMHg4Yjhi
OGI4YnUpKTsKCiAgICAgIGNvbnN0IHNpemVfdCBfX24gPSBfX2VuZCAtIF9fYmVnaW47CiAgICAg
IGNvbnN0IHNpemVfdCBfX3MgPSBfTV92LnNpemUoKTsKICAgICAgY29uc3Qgc2l6ZV90IF9fdCA9
IChfX24gPj0gNjIzKSA/IDExCiAgICAgICAgIDogKF9fbiA+PSA2OCkgPyA3CiAgICAgICAgIDog
KF9fbiA+PSAzOSkgPyA1CiAgICAgICAgIDogKF9fbiA+PSA3KSA/IDMKICAgICAgICAgOiAoX19u
IC0gMSkgLyAyOwogICAgICBjb25zdCBzaXplX3QgX19wID0gKF9fbiAtIF9fdCkgLyAyOwogICAg
ICBjb25zdCBzaXplX3QgX19xID0gX19wICsgX190OwogICAgICBjb25zdCBzaXplX3QgX19tID0g
c3RkOjptYXgoc2l6ZV90KF9fcyArIDEpLCBfX24pOwoKICAgICAgZm9yIChzaXplX3QgX19rID0g
MDsgX19rIDwgX19tOyArK19faykKIHsKICAgX1R5cGUgX19hcmcgPSAoX19iZWdpbltfX2sgJSBf
X25dCiAgICBeIF9fYmVnaW5bKF9fayArIF9fcCkgJSBfX25dCiAgICBeIF9fYmVnaW5bKF9fayAt
IDEpICUgX19uXSk7CiAgIF9UeXBlIF9fcjEgPSBfX2FyZyBeIChfX2FyZyA+PiAyNyk7CiAgIF9f
cjEgPSBfX2RldGFpbDo6X19tb2Q8X1R5cGUsCiAgICAgIF9fZGV0YWlsOjpfU2hpZnQ8X1R5cGUs
IDMyPjo6X192YWx1ZT4oMTY2NDUyNXUgKiBfX3IxKTsKICAgX1R5cGUgX19yMiA9IF9fcjE7CiAg
IGlmIChfX2sgPT0gMCkKICAgICBfX3IyICs9IF9fczsKICAgZWxzZSBpZiAoX19rIDw9IF9fcykK
ICAgICBfX3IyICs9IF9fayAlIF9fbiArIF9NX3ZbX19rIC0gMV07CiAgIGVsc2UKICAgICBfX3Iy
ICs9IF9fayAlIF9fbjsKICAgX19yMiA9IF9fZGV0YWlsOjpfX21vZDxfVHlwZSwKICAgICAgICAg
ICAgX19kZXRhaWw6Ol9TaGlmdDxfVHlwZSwgMzI+OjpfX3ZhbHVlPihfX3IyKTsKICAgX19iZWdp
blsoX19rICsgX19wKSAlIF9fbl0gKz0gX19yMTsKICAgX19iZWdpblsoX19rICsgX19xKSAlIF9f
bl0gKz0gX19yMjsKICAgX19iZWdpbltfX2sgJSBfX25dID0gX19yMjsKIH0KCiAgICAgIGZvciAo
c2l6ZV90IF9fayA9IF9fbTsgX19rIDwgX19tICsgX19uOyArK19faykKIHsKICAgX1R5cGUgX19h
cmcgPSAoX19iZWdpbltfX2sgJSBfX25dCiAgICArIF9fYmVnaW5bKF9fayArIF9fcCkgJSBfX25d
CiAgICArIF9fYmVnaW5bKF9fayAtIDEpICUgX19uXSk7CiAgIF9UeXBlIF9fcjMgPSBfX2FyZyBe
IChfX2FyZyA+PiAyNyk7CiAgIF9fcjMgPSBfX2RldGFpbDo6X19tb2Q8X1R5cGUsCiAgICAgX19k
ZXRhaWw6Ol9TaGlmdDxfVHlwZSwgMzI+OjpfX3ZhbHVlPigxNTY2MDgzOTQxdSAqIF9fcjMpOwog
ICBfVHlwZSBfX3I0ID0gX19yMyAtIF9fayAlIF9fbjsKICAgX19yNCA9IF9fZGV0YWlsOjpfX21v
ZDxfVHlwZSwKICAgICAgICAgICAgX19kZXRhaWw6Ol9TaGlmdDxfVHlwZSwgMzI+OjpfX3ZhbHVl
PihfX3I0KTsKICAgX19iZWdpblsoX19rICsgX19wKSAlIF9fbl0gXj0gX19yMzsKICAgX19iZWdp
blsoX19rICsgX19xKSAlIF9fbl0gXj0gX19yNDsKICAgX19iZWdpbltfX2sgJSBfX25dID0gX19y
NDsKIH0KICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JlYWxUeXBlLCBzaXplX3QgX19iaXRz
LAogICAgdHlwZW5hbWUgX1VuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiAgICBfUmVhbFR5
cGUKICAgIGdlbmVyYXRlX2Nhbm9uaWNhbChfVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciYg
X191cm5nKQogICAgewogICAgICBjb25zdCBzaXplX3QgX19iCiA9IHN0ZDo6bWluKHN0YXRpY19j
YXN0PHNpemVfdD4oc3RkOjpudW1lcmljX2xpbWl0czxfUmVhbFR5cGU+OjpkaWdpdHMpLAogICAg
ICAgICAgICAgICAgICAgX19iaXRzKTsKICAgICAgY29uc3QgbG9uZyBkb3VibGUgX19yID0gc3Rh
dGljX2Nhc3Q8bG9uZyBkb3VibGU+KF9fdXJuZy5tYXgoKSkKICAgICAgIC0gc3RhdGljX2Nhc3Q8
bG9uZyBkb3VibGU+KF9fdXJuZy5taW4oKSkgKyAxLjBMOwogICAgICBjb25zdCBzaXplX3QgX19s
b2cyciA9IHN0ZDo6bG9nKF9fcikgLyBzdGQ6OmxvZygyLjBMKTsKICAgICAgc2l6ZV90IF9fayA9
IHN0ZDo6bWF4PHNpemVfdD4oMVVMLCAoX19iICsgX19sb2cyciAtIDFVTCkgLyBfX2xvZzJyKTsK
ICAgICAgX1JlYWxUeXBlIF9fc3VtID0gX1JlYWxUeXBlKDApOwogICAgICBfUmVhbFR5cGUgX190
bXAgPSBfUmVhbFR5cGUoMSk7CiAgICAgIGZvciAoOyBfX2sgIT0gMDsgLS1fX2spCiB7CiAgIF9f
c3VtICs9IF9SZWFsVHlwZShfX3VybmcoKSAtIF9fdXJuZy5taW4oKSkgKiBfX3RtcDsKICAgX190
bXAgKj0gX19yOwogfQogICAgICByZXR1cm4gX19zdW0gLyBfX3RtcDsKICAgIH0KCgp9CiMgNTMg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9yYW5kb20i
IDIgMwojIDY2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44
LjEvYml0cy9zdGxfYWxnby5oIiAyIDMKCgoKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18g
KChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
SXRlcmF0b3I+CiAgICB2b2lkCiAgICBfX21vdmVfbWVkaWFuX2ZpcnN0KF9JdGVyYXRvciBfX2Es
IF9JdGVyYXRvciBfX2IsIF9JdGVyYXRvciBfX2MpCiAgICB7CgogICAgIAoKCiAgICAgIGlmICgq
X19hIDwgKl9fYikKIHsKICAgaWYgKCpfX2IgPCAqX19jKQogICAgIHN0ZDo6aXRlcl9zd2FwKF9f
YSwgX19iKTsKICAgZWxzZSBpZiAoKl9fYSA8ICpfX2MpCiAgICAgc3RkOjppdGVyX3N3YXAoX19h
LCBfX2MpOwogfQogICAgICBlbHNlIGlmICgqX19hIDwgKl9fYykKIHJldHVybjsKICAgICAgZWxz
ZSBpZiAoKl9fYiA8ICpfX2MpCiBzdGQ6Oml0ZXJfc3dhcChfX2EsIF9fYyk7CiAgICAgIGVsc2UK
IHN0ZDo6aXRlcl9zd2FwKF9fYSwgX19iKTsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9J
dGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBfX21vdmVfbWVkaWFuX2Zp
cnN0KF9JdGVyYXRvciBfX2EsIF9JdGVyYXRvciBfX2IsIF9JdGVyYXRvciBfX2MsCiAgIF9Db21w
YXJlIF9fY29tcCkKICAgIHsKCiAgICAgCgoKCiAgICAgIGlmIChfX2NvbXAoKl9fYSwgKl9fYikp
CiB7CiAgIGlmIChfX2NvbXAoKl9fYiwgKl9fYykpCiAgICAgc3RkOjppdGVyX3N3YXAoX19hLCBf
X2IpOwogICBlbHNlIGlmIChfX2NvbXAoKl9fYSwgKl9fYykpCiAgICAgc3RkOjppdGVyX3N3YXAo
X19hLCBfX2MpOwogfQogICAgICBlbHNlIGlmIChfX2NvbXAoKl9fYSwgKl9fYykpCiByZXR1cm47
CiAgICAgIGVsc2UgaWYgKF9fY29tcCgqX19iLCAqX19jKSkKIHN0ZDo6aXRlcl9zd2FwKF9fYSwg
X19jKTsKICAgICAgZWxzZQogc3RkOjppdGVyX3N3YXAoX19hLCBfX2IpOwogICAgfQoKCgoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX1RwPgogICAgaW5saW5l
IF9JbnB1dEl0ZXJhdG9yCiAgICBfX2ZpbmQoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0
SXRlcmF0b3IgX19sYXN0LAogICAgY29uc3QgX1RwJiBfX3ZhbCwgaW5wdXRfaXRlcmF0b3JfdGFn
KQogICAgewogICAgICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3QgJiYgISgqX19maXJzdCA9PSBf
X3ZhbCkpCiArK19fZmlyc3Q7CiAgICAgIHJldHVybiBfX2ZpcnN0OwogICAgfQoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgICBpbmxp
bmUgX0lucHV0SXRlcmF0b3IKICAgIF9fZmluZF9pZihfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBf
SW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICBfUHJlZGljYXRlIF9fcHJlZCwgaW5wdXRfaXRl
cmF0b3JfdGFnKQogICAgewogICAgICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3QgJiYgIWJvb2wo
X19wcmVkKCpfX2ZpcnN0KSkpCiArK19fZmlyc3Q7CiAgICAgIHJldHVybiBfX2ZpcnN0OwogICAg
fQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBf
VHA+CiAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IKICAgIF9fZmluZChfUmFuZG9tQWNjZXNzSXRl
cmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICAgIGNvbnN0IF9U
cCYgX192YWwsIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnKQogICAgewogICAgICB0eXBlbmFt
ZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBl
CiBfX3RyaXBfY291bnQgPSAoX19sYXN0IC0gX19maXJzdCkgPj4gMjsKCiAgICAgIGZvciAoOyBf
X3RyaXBfY291bnQgPiAwOyAtLV9fdHJpcF9jb3VudCkKIHsKICAgaWYgKCpfX2ZpcnN0ID09IF9f
dmFsKQogICAgIHJldHVybiBfX2ZpcnN0OwogICArK19fZmlyc3Q7CgogICBpZiAoKl9fZmlyc3Qg
PT0gX192YWwpCiAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICsrX19maXJzdDsKCiAgIGlmICgqX19m
aXJzdCA9PSBfX3ZhbCkKICAgICByZXR1cm4gX19maXJzdDsKICAgKytfX2ZpcnN0OwoKICAgaWYg
KCpfX2ZpcnN0ID09IF9fdmFsKQogICAgIHJldHVybiBfX2ZpcnN0OwogICArK19fZmlyc3Q7CiB9
CgogICAgICBzd2l0Y2ggKF9fbGFzdCAtIF9fZmlyc3QpCiB7CiBjYXNlIDM6CiAgIGlmICgqX19m
aXJzdCA9PSBfX3ZhbCkKICAgICByZXR1cm4gX19maXJzdDsKICAgKytfX2ZpcnN0OwogY2FzZSAy
OgogICBpZiAoKl9fZmlyc3QgPT0gX192YWwpCiAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICsrX19m
aXJzdDsKIGNhc2UgMToKICAgaWYgKCpfX2ZpcnN0ID09IF9fdmFsKQogICAgIHJldHVybiBfX2Zp
cnN0OwogICArK19fZmlyc3Q7CiBjYXNlIDA6CiBkZWZhdWx0OgogICByZXR1cm4gX19sYXN0Owog
fQogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBl
bmFtZSBfUHJlZGljYXRlPgogICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yCiAgICBfX2ZpbmRfaWYo
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xh
c3QsCiAgICAgICBfUHJlZGljYXRlIF9fcHJlZCwgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcp
CiAgICB7CiAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0
b3I+OjpkaWZmZXJlbmNlX3R5cGUKIF9fdHJpcF9jb3VudCA9IChfX2xhc3QgLSBfX2ZpcnN0KSA+
PiAyOwoKICAgICAgZm9yICg7IF9fdHJpcF9jb3VudCA+IDA7IC0tX190cmlwX2NvdW50KQogewog
ICBpZiAoX19wcmVkKCpfX2ZpcnN0KSkKICAgICByZXR1cm4gX19maXJzdDsKICAgKytfX2ZpcnN0
OwoKICAgaWYgKF9fcHJlZCgqX19maXJzdCkpCiAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICsrX19m
aXJzdDsKCiAgIGlmIChfX3ByZWQoKl9fZmlyc3QpKQogICAgIHJldHVybiBfX2ZpcnN0OwogICAr
K19fZmlyc3Q7CgogICBpZiAoX19wcmVkKCpfX2ZpcnN0KSkKICAgICByZXR1cm4gX19maXJzdDsK
ICAgKytfX2ZpcnN0OwogfQoKICAgICAgc3dpdGNoIChfX2xhc3QgLSBfX2ZpcnN0KQogewogY2Fz
ZSAzOgogICBpZiAoX19wcmVkKCpfX2ZpcnN0KSkKICAgICByZXR1cm4gX19maXJzdDsKICAgKytf
X2ZpcnN0OwogY2FzZSAyOgogICBpZiAoX19wcmVkKCpfX2ZpcnN0KSkKICAgICByZXR1cm4gX19m
aXJzdDsKICAgKytfX2ZpcnN0OwogY2FzZSAxOgogICBpZiAoX19wcmVkKCpfX2ZpcnN0KSkKICAg
ICByZXR1cm4gX19maXJzdDsKICAgKytfX2ZpcnN0OwogY2FzZSAwOgogZGVmYXVsdDoKICAgcmV0
dXJuIF9fbGFzdDsKIH0KICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9y
LCB0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgaW5saW5lIF9JbnB1dEl0ZXJhdG9yCiAgICBfX2Zp
bmRfaWZfbm90KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwK
ICAgIF9QcmVkaWNhdGUgX19wcmVkLCBpbnB1dF9pdGVyYXRvcl90YWcpCiAgICB7CiAgICAgIHdo
aWxlIChfX2ZpcnN0ICE9IF9fbGFzdCAmJiBib29sKF9fcHJlZCgqX19maXJzdCkpKQogKytfX2Zp
cnN0OwogICAgICByZXR1cm4gX19maXJzdDsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9S
YW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIF9SYW5kb21BY2Nl
c3NJdGVyYXRvcgogICAgX19maW5kX2lmX25vdChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJz
dCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICAgIF9QcmVkaWNhdGUgX19wcmVkLCBy
YW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykKICAgIHsKICAgICAgdHlwZW5hbWUgaXRlcmF0b3Jf
dHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogX190cmlwX2Nv
dW50ID0gKF9fbGFzdCAtIF9fZmlyc3QpID4+IDI7CgogICAgICBmb3IgKDsgX190cmlwX2NvdW50
ID4gMDsgLS1fX3RyaXBfY291bnQpCiB7CiAgIGlmICghYm9vbChfX3ByZWQoKl9fZmlyc3QpKSkK
ICAgICByZXR1cm4gX19maXJzdDsKICAgKytfX2ZpcnN0OwoKICAgaWYgKCFib29sKF9fcHJlZCgq
X19maXJzdCkpKQogICAgIHJldHVybiBfX2ZpcnN0OwogICArK19fZmlyc3Q7CgogICBpZiAoIWJv
b2woX19wcmVkKCpfX2ZpcnN0KSkpCiAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICsrX19maXJzdDsK
CiAgIGlmICghYm9vbChfX3ByZWQoKl9fZmlyc3QpKSkKICAgICByZXR1cm4gX19maXJzdDsKICAg
KytfX2ZpcnN0OwogfQoKICAgICAgc3dpdGNoIChfX2xhc3QgLSBfX2ZpcnN0KQogewogY2FzZSAz
OgogICBpZiAoIWJvb2woX19wcmVkKCpfX2ZpcnN0KSkpCiAgICAgcmV0dXJuIF9fZmlyc3Q7CiAg
ICsrX19maXJzdDsKIGNhc2UgMjoKICAgaWYgKCFib29sKF9fcHJlZCgqX19maXJzdCkpKQogICAg
IHJldHVybiBfX2ZpcnN0OwogICArK19fZmlyc3Q7CiBjYXNlIDE6CiAgIGlmICghYm9vbChfX3By
ZWQoKl9fZmlyc3QpKSkKICAgICByZXR1cm4gX19maXJzdDsKICAgKytfX2ZpcnN0OwogY2FzZSAw
OgogZGVmYXVsdDoKICAgcmV0dXJuIF9fbGFzdDsKIH0KICAgIH0KCgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgaW5saW5lIF9JbnB1
dEl0ZXJhdG9yCiAgICBfX2ZpbmRfaWZfbm90KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1
dEl0ZXJhdG9yIF9fbGFzdCwKICAgIF9QcmVkaWNhdGUgX19wcmVkKQogICAgewogICAgICByZXR1
cm4gc3RkOjpfX2ZpbmRfaWZfbm90KF9fZmlyc3QsIF9fbGFzdCwgX19wcmVkLAogICAgc3RkOjpf
X2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsKICAgIH0KCgoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0lucHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9QcmVkaWNhdGUsIHR5cGVuYW1lIF9EaXN0YW5j
ZT4KICAgIF9JbnB1dEl0ZXJhdG9yCiAgICBfX2ZpbmRfaWZfbm90X24oX0lucHV0SXRlcmF0b3Ig
X19maXJzdCwgX0Rpc3RhbmNlJiBfX2xlbiwgX1ByZWRpY2F0ZSBfX3ByZWQpCiAgICB7CiAgICAg
IGZvciAoOyBfX2xlbjsgLS1fX2xlbiwgKytfX2ZpcnN0KQogaWYgKCFib29sKF9fcHJlZCgqX19m
aXJzdCkpKQogICBicmVhazsKICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICB9CiMgMzQ1ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljgu
MS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfYWxn
by5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX0lu
dGVnZXIsIHR5cGVuYW1lIF9UcD4KICAgIF9Gb3J3YXJkSXRlcmF0b3IKICAgIF9fc2VhcmNoX24o
X0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAg
ICBfSW50ZWdlciBfX2NvdW50LCBjb25zdCBfVHAmIF9fdmFsLAogICAgICAgIHN0ZDo6Zm9yd2Fy
ZF9pdGVyYXRvcl90YWcpCiAgICB7CiAgICAgIF9fZmlyc3QgPSBzdGQ6OmZpbmQoX19maXJzdCwg
X19sYXN0LCBfX3ZhbCk7CiAgICAgIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkKIHsKICAgdHlw
ZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUK
ICAgICBfX24gPSBfX2NvdW50OwogICBfRm9yd2FyZEl0ZXJhdG9yIF9faSA9IF9fZmlyc3Q7CiAg
ICsrX19pOwogICB3aGlsZSAoX19pICE9IF9fbGFzdCAmJiBfX24gIT0gMSAmJiAqX19pID09IF9f
dmFsKQogICAgIHsKICAgICAgICsrX19pOwogICAgICAgLS1fX247CiAgICAgfQogICBpZiAoX19u
ID09IDEpCiAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgIGlmIChfX2kgPT0gX19sYXN0KQogICAgIHJl
dHVybiBfX2xhc3Q7CiAgIF9fZmlyc3QgPSBzdGQ6OmZpbmQoKytfX2ksIF9fbGFzdCwgX192YWwp
OwogfQogICAgICByZXR1cm4gX19sYXN0OwogICAgfQoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9SYW5kb21BY2Nlc3NJdGVyLCB0eXBlbmFtZSBfSW50ZWdlciwgdHlwZW5hbWUgX1RwPgogICAg
X1JhbmRvbUFjY2Vzc0l0ZXIKICAgIF9fc2VhcmNoX24oX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJz
dCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LAogICAgICAgIF9JbnRlZ2VyIF9fY291bnQsIGNv
bnN0IF9UcCYgX192YWwsCiAgICAgICAgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykK
ICAgIHsKCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8X1JhbmRv
bUFjY2Vzc0l0ZXI+OjpkaWZmZXJlbmNlX3R5cGUKIF9EaXN0YW5jZVR5cGU7CgogICAgICBfRGlz
dGFuY2VUeXBlIF9fdGFpbFNpemUgPSBfX2xhc3QgLSBfX2ZpcnN0OwogICAgICBjb25zdCBfRGlz
dGFuY2VUeXBlIF9fcGF0dFNpemUgPSBfX2NvdW50OwoKICAgICAgaWYgKF9fdGFpbFNpemUgPCBf
X3BhdHRTaXplKQogICAgICAgIHJldHVybiBfX2xhc3Q7CgogICAgICBjb25zdCBfRGlzdGFuY2VU
eXBlIF9fc2tpcE9mZnNldCA9IF9fcGF0dFNpemUgLSAxOwogICAgICBfUmFuZG9tQWNjZXNzSXRl
ciBfX2xvb2tBaGVhZCA9IF9fZmlyc3QgKyBfX3NraXBPZmZzZXQ7CiAgICAgIF9fdGFpbFNpemUg
LT0gX19wYXR0U2l6ZTsKCiAgICAgIHdoaWxlICgxKQogewoKCiAgIHdoaWxlICghKCpfX2xvb2tB
aGVhZCA9PSBfX3ZhbCkpCiAgICAgewogICAgICAgaWYgKF9fdGFpbFNpemUgPCBfX3BhdHRTaXpl
KQogIHJldHVybiBfX2xhc3Q7CiAgICAgICBfX2xvb2tBaGVhZCArPSBfX3BhdHRTaXplOwogICAg
ICAgX190YWlsU2l6ZSAtPSBfX3BhdHRTaXplOwogICAgIH0KICAgX0Rpc3RhbmNlVHlwZSBfX3Jl
bWFpbmRlciA9IF9fc2tpcE9mZnNldDsKICAgZm9yIChfUmFuZG9tQWNjZXNzSXRlciBfX2JhY2tU
cmFjayA9IF9fbG9va0FoZWFkIC0gMTsKICAgICAgICAqX19iYWNrVHJhY2sgPT0gX192YWw7IC0t
X19iYWNrVHJhY2spCiAgICAgewogICAgICAgaWYgKC0tX19yZW1haW5kZXIgPT0gMCkKICByZXR1
cm4gKF9fbG9va0FoZWFkIC0gX19za2lwT2Zmc2V0KTsKICAgICB9CiAgIGlmIChfX3JlbWFpbmRl
ciA+IF9fdGFpbFNpemUpCiAgICAgcmV0dXJuIF9fbGFzdDsKICAgX19sb29rQWhlYWQgKz0gX19y
ZW1haW5kZXI7CiAgIF9fdGFpbFNpemUgLT0gX19yZW1haW5kZXI7CiB9CiAgICB9CiMgNDMwICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxf
YWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUg
X0ludGVnZXIsIHR5cGVuYW1lIF9UcCwKICAgICAgICAgICB0eXBlbmFtZSBfQmluYXJ5UHJlZGlj
YXRlPgogICAgX0ZvcndhcmRJdGVyYXRvcgogICAgX19zZWFyY2hfbihfRm9yd2FyZEl0ZXJhdG9y
IF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgICAgIF9JbnRlZ2VyIF9fY291
bnQsIGNvbnN0IF9UcCYgX192YWwsCiAgICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9w
cmVkLCBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnKQogICAgewogICAgICB3aGlsZSAoX19maXJz
dCAhPSBfX2xhc3QgJiYgIWJvb2woX19iaW5hcnlfcHJlZCgqX19maXJzdCwgX192YWwpKSkKICAg
ICAgICArK19fZmlyc3Q7CgogICAgICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3QpCiB7CiAgIHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBl
CiAgICAgX19uID0gX19jb3VudDsKICAgX0ZvcndhcmRJdGVyYXRvciBfX2kgPSBfX2ZpcnN0Owog
ICArK19faTsKICAgd2hpbGUgKF9faSAhPSBfX2xhc3QgJiYgX19uICE9IDEgJiYgYm9vbChfX2Jp
bmFyeV9wcmVkKCpfX2ksIF9fdmFsKSkpCiAgICAgewogICAgICAgKytfX2k7CiAgICAgICAtLV9f
bjsKICAgICB9CiAgIGlmIChfX24gPT0gMSkKICAgICByZXR1cm4gX19maXJzdDsKICAgaWYgKF9f
aSA9PSBfX2xhc3QpCiAgICAgcmV0dXJuIF9fbGFzdDsKICAgX19maXJzdCA9ICsrX19pOwogICB3
aGlsZSAoX19maXJzdCAhPSBfX2xhc3QKICAgJiYgIWJvb2woX19iaW5hcnlfcHJlZCgqX19maXJz
dCwgX192YWwpKSkKICAgICArK19fZmlyc3Q7CiB9CiAgICAgIHJldHVybiBfX2xhc3Q7CiAgICB9
CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyLCB0eXBlbmFtZSBf
SW50ZWdlciwgdHlwZW5hbWUgX1RwLAogICAgdHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4KICAg
IF9SYW5kb21BY2Nlc3NJdGVyCiAgICBfX3NlYXJjaF9uKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmly
c3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwKICAgICAgICBfSW50ZWdlciBfX2NvdW50LCBj
b25zdCBfVHAmIF9fdmFsLAogICAgICAgIF9CaW5hcnlQcmVkaWNhdGUgX19iaW5hcnlfcHJlZCwg
c3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykKICAgIHsKCiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXI+OjpkaWZmZXJlbmNl
X3R5cGUKIF9EaXN0YW5jZVR5cGU7CgogICAgICBfRGlzdGFuY2VUeXBlIF9fdGFpbFNpemUgPSBf
X2xhc3QgLSBfX2ZpcnN0OwogICAgICBjb25zdCBfRGlzdGFuY2VUeXBlIF9fcGF0dFNpemUgPSBf
X2NvdW50OwoKICAgICAgaWYgKF9fdGFpbFNpemUgPCBfX3BhdHRTaXplKQogICAgICAgIHJldHVy
biBfX2xhc3Q7CgogICAgICBjb25zdCBfRGlzdGFuY2VUeXBlIF9fc2tpcE9mZnNldCA9IF9fcGF0
dFNpemUgLSAxOwogICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xvb2tBaGVhZCA9IF9fZmlyc3Qg
KyBfX3NraXBPZmZzZXQ7CiAgICAgIF9fdGFpbFNpemUgLT0gX19wYXR0U2l6ZTsKCiAgICAgIHdo
aWxlICgxKQogewoKCiAgIHdoaWxlICghYm9vbChfX2JpbmFyeV9wcmVkKCpfX2xvb2tBaGVhZCwg
X192YWwpKSkKICAgICB7CiAgICAgICBpZiAoX190YWlsU2l6ZSA8IF9fcGF0dFNpemUpCiAgcmV0
dXJuIF9fbGFzdDsKICAgICAgIF9fbG9va0FoZWFkICs9IF9fcGF0dFNpemU7CiAgICAgICBfX3Rh
aWxTaXplIC09IF9fcGF0dFNpemU7CiAgICAgfQogICBfRGlzdGFuY2VUeXBlIF9fcmVtYWluZGVy
ID0gX19za2lwT2Zmc2V0OwogICBmb3IgKF9SYW5kb21BY2Nlc3NJdGVyIF9fYmFja1RyYWNrID0g
X19sb29rQWhlYWQgLSAxOwogICAgICAgIF9fYmluYXJ5X3ByZWQoKl9fYmFja1RyYWNrLCBfX3Zh
bCk7IC0tX19iYWNrVHJhY2spCiAgICAgewogICAgICAgaWYgKC0tX19yZW1haW5kZXIgPT0gMCkK
ICByZXR1cm4gKF9fbG9va0FoZWFkIC0gX19za2lwT2Zmc2V0KTsKICAgICB9CiAgIGlmIChfX3Jl
bWFpbmRlciA+IF9fdGFpbFNpemUpCiAgICAgcmV0dXJuIF9fbGFzdDsKICAgX19sb29rQWhlYWQg
Kz0gX19yZW1haW5kZXI7CiAgIF9fdGFpbFNpemUgLT0gX19yZW1haW5kZXI7CiB9CiAgICB9CgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0ZvcndhcmRJ
dGVyYXRvcjI+CiAgICBfRm9yd2FyZEl0ZXJhdG9yMQogICAgX19maW5kX2VuZChfRm9yd2FyZEl0
ZXJhdG9yMSBfX2ZpcnN0MSwgX0ZvcndhcmRJdGVyYXRvcjEgX19sYXN0MSwKICAgICAgICBfRm9y
d2FyZEl0ZXJhdG9yMiBfX2ZpcnN0MiwgX0ZvcndhcmRJdGVyYXRvcjIgX19sYXN0MiwKICAgICAg
ICBmb3J3YXJkX2l0ZXJhdG9yX3RhZywgZm9yd2FyZF9pdGVyYXRvcl90YWcpCiAgICB7CiAgICAg
IGlmIChfX2ZpcnN0MiA9PSBfX2xhc3QyKQogcmV0dXJuIF9fbGFzdDE7CiAgICAgIGVsc2UKIHsK
ICAgX0ZvcndhcmRJdGVyYXRvcjEgX19yZXN1bHQgPSBfX2xhc3QxOwogICB3aGlsZSAoMSkKICAg
ICB7CiAgICAgICBfRm9yd2FyZEl0ZXJhdG9yMSBfX25ld19yZXN1bHQKICA9IHN0ZDo6c2VhcmNo
KF9fZmlyc3QxLCBfX2xhc3QxLCBfX2ZpcnN0MiwgX19sYXN0Mik7CiAgICAgICBpZiAoX19uZXdf
cmVzdWx0ID09IF9fbGFzdDEpCiAgcmV0dXJuIF9fcmVzdWx0OwogICAgICAgZWxzZQogIHsKICAg
IF9fcmVzdWx0ID0gX19uZXdfcmVzdWx0OwogICAgX19maXJzdDEgPSBfX25ld19yZXN1bHQ7CiAg
ICArK19fZmlyc3QxOwogIH0KICAgICB9CiB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9G
b3J3YXJkSXRlcmF0b3IxLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yMiwKICAgIHR5cGVuYW1l
IF9CaW5hcnlQcmVkaWNhdGU+CiAgICBfRm9yd2FyZEl0ZXJhdG9yMQogICAgX19maW5kX2VuZChf
Rm9yd2FyZEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0ZvcndhcmRJdGVyYXRvcjEgX19sYXN0MSwKICAg
ICAgICBfRm9yd2FyZEl0ZXJhdG9yMiBfX2ZpcnN0MiwgX0ZvcndhcmRJdGVyYXRvcjIgX19sYXN0
MiwKICAgICAgICBmb3J3YXJkX2l0ZXJhdG9yX3RhZywgZm9yd2FyZF9pdGVyYXRvcl90YWcsCiAg
ICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2NvbXApCiAgICB7CiAgICAgIGlmIChfX2ZpcnN0MiA9
PSBfX2xhc3QyKQogcmV0dXJuIF9fbGFzdDE7CiAgICAgIGVsc2UKIHsKICAgX0ZvcndhcmRJdGVy
YXRvcjEgX19yZXN1bHQgPSBfX2xhc3QxOwogICB3aGlsZSAoMSkKICAgICB7CiAgICAgICBfRm9y
d2FyZEl0ZXJhdG9yMSBfX25ld19yZXN1bHQKICA9IHN0ZDo6c2VhcmNoKF9fZmlyc3QxLCBfX2xh
c3QxLCBfX2ZpcnN0MiwKICAgICAgX19sYXN0MiwgX19jb21wKTsKICAgICAgIGlmIChfX25ld19y
ZXN1bHQgPT0gX19sYXN0MSkKICByZXR1cm4gX19yZXN1bHQ7CiAgICAgICBlbHNlCiAgewogICAg
X19yZXN1bHQgPSBfX25ld19yZXN1bHQ7CiAgICBfX2ZpcnN0MSA9IF9fbmV3X3Jlc3VsdDsKICAg
ICsrX19maXJzdDE7CiAgfQogICAgIH0KIH0KICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9C
aWRpcmVjdGlvbmFsSXRlcmF0b3IxLCB0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMj4K
ICAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IxCiAgICBfX2ZpbmRfZW5kKF9CaWRpcmVjdGlvbmFs
SXRlcmF0b3IxIF9fZmlyc3QxLAogICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IxIF9fbGFz
dDEsCiAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjIgX19maXJzdDIsCiAgICAgICAgX0Jp
ZGlyZWN0aW9uYWxJdGVyYXRvcjIgX19sYXN0MiwKICAgICAgICBiaWRpcmVjdGlvbmFsX2l0ZXJh
dG9yX3RhZywgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcpCiAgICB7CgogICAgIAoKICAgICAK
CgogICAgICB0eXBlZGVmIHJldmVyc2VfaXRlcmF0b3I8X0JpZGlyZWN0aW9uYWxJdGVyYXRvcjE+
IF9SZXZJdGVyYXRvcjE7CiAgICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyYXRvcjxfQmlkaXJlY3Rp
b25hbEl0ZXJhdG9yMj4gX1Jldkl0ZXJhdG9yMjsKCiAgICAgIF9SZXZJdGVyYXRvcjEgX19ybGFz
dDEoX19maXJzdDEpOwogICAgICBfUmV2SXRlcmF0b3IyIF9fcmxhc3QyKF9fZmlyc3QyKTsKICAg
ICAgX1Jldkl0ZXJhdG9yMSBfX3JyZXN1bHQgPSBzdGQ6OnNlYXJjaChfUmV2SXRlcmF0b3IxKF9f
bGFzdDEpLAogICAgICAgICAgICAgX19ybGFzdDEsCiAgICAgICAgICAgICBfUmV2SXRlcmF0b3Iy
KF9fbGFzdDIpLAogICAgICAgICAgICAgX19ybGFzdDIpOwoKICAgICAgaWYgKF9fcnJlc3VsdCA9
PSBfX3JsYXN0MSkKIHJldHVybiBfX2xhc3QxOwogICAgICBlbHNlCiB7CiAgIF9CaWRpcmVjdGlv
bmFsSXRlcmF0b3IxIF9fcmVzdWx0ID0gX19ycmVzdWx0LmJhc2UoKTsKICAgc3RkOjphZHZhbmNl
KF9fcmVzdWx0LCAtc3RkOjpkaXN0YW5jZShfX2ZpcnN0MiwgX19sYXN0MikpOwogICByZXR1cm4g
X19yZXN1bHQ7CiB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRl
cmF0b3IxLCB0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMiwKICAgIHR5cGVuYW1lIF9C
aW5hcnlQcmVkaWNhdGU+CiAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMQogICAgX19maW5kX2Vu
ZChfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSBfX2ZpcnN0MSwKICAgICAgICBfQmlkaXJlY3Rpb25h
bEl0ZXJhdG9yMSBfX2xhc3QxLAogICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IyIF9fZmly
c3QyLAogICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IyIF9fbGFzdDIsCiAgICAgICAgYmlk
aXJlY3Rpb25hbF9pdGVyYXRvcl90YWcsIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnLAogICAg
ICAgIF9CaW5hcnlQcmVkaWNhdGUgX19jb21wKQogICAgewoKICAgICAKCiAgICAgCgoKICAgICAg
dHlwZWRlZiByZXZlcnNlX2l0ZXJhdG9yPF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IxPiBfUmV2SXRl
cmF0b3IxOwogICAgICB0eXBlZGVmIHJldmVyc2VfaXRlcmF0b3I8X0JpZGlyZWN0aW9uYWxJdGVy
YXRvcjI+IF9SZXZJdGVyYXRvcjI7CgogICAgICBfUmV2SXRlcmF0b3IxIF9fcmxhc3QxKF9fZmly
c3QxKTsKICAgICAgX1Jldkl0ZXJhdG9yMiBfX3JsYXN0MihfX2ZpcnN0Mik7CiAgICAgIF9SZXZJ
dGVyYXRvcjEgX19ycmVzdWx0ID0gc3RkOjpzZWFyY2goX1Jldkl0ZXJhdG9yMShfX2xhc3QxKSwg
X19ybGFzdDEsCiAgICAgICAgIF9SZXZJdGVyYXRvcjIoX19sYXN0MiksIF9fcmxhc3QyLAogICAg
ICAgICBfX2NvbXApOwoKICAgICAgaWYgKF9fcnJlc3VsdCA9PSBfX3JsYXN0MSkKIHJldHVybiBf
X2xhc3QxOwogICAgICBlbHNlCiB7CiAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IxIF9fcmVzdWx0
ID0gX19ycmVzdWx0LmJhc2UoKTsKICAgc3RkOjphZHZhbmNlKF9fcmVzdWx0LCAtc3RkOjpkaXN0
YW5jZShfX2ZpcnN0MiwgX19sYXN0MikpOwogICByZXR1cm4gX19yZXN1bHQ7CiB9CiAgICB9CiMg
NjY5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0
cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcjEsIHR5
cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IyPgogICAgaW5saW5lIF9Gb3J3YXJkSXRlcmF0b3IxCiAg
ICBmaW5kX2VuZChfRm9yd2FyZEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0ZvcndhcmRJdGVyYXRvcjEg
X19sYXN0MSwKICAgICAgX0ZvcndhcmRJdGVyYXRvcjIgX19maXJzdDIsIF9Gb3J3YXJkSXRlcmF0
b3IyIF9fbGFzdDIpCiAgICB7CgogICAgIAogICAgIAogICAgIAoKCiAgICAgIDsKICAgICAgOwoK
ICAgICAgcmV0dXJuIHN0ZDo6X19maW5kX2VuZChfX2ZpcnN0MSwgX19sYXN0MSwgX19maXJzdDIs
IF9fbGFzdDIsCiAgICAgICAgc3RkOjpfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QxKSwKICAg
ICAgICBzdGQ6Ol9faXRlcmF0b3JfY2F0ZWdvcnkoX19maXJzdDIpKTsKICAgIH0KIyA3MTYgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9h
bGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yMSwgdHlwZW5hbWUg
X0ZvcndhcmRJdGVyYXRvcjIsCiAgICB0eXBlbmFtZSBfQmluYXJ5UHJlZGljYXRlPgogICAgaW5s
aW5lIF9Gb3J3YXJkSXRlcmF0b3IxCiAgICBmaW5kX2VuZChfRm9yd2FyZEl0ZXJhdG9yMSBfX2Zp
cnN0MSwgX0ZvcndhcmRJdGVyYXRvcjEgX19sYXN0MSwKICAgICAgX0ZvcndhcmRJdGVyYXRvcjIg
X19maXJzdDIsIF9Gb3J3YXJkSXRlcmF0b3IyIF9fbGFzdDIsCiAgICAgIF9CaW5hcnlQcmVkaWNh
dGUgX19jb21wKQogICAgewoKICAgICAKICAgICAKICAgICAKCgogICAgICA7CiAgICAgIDsKCiAg
ICAgIHJldHVybiBzdGQ6Ol9fZmluZF9lbmQoX19maXJzdDEsIF9fbGFzdDEsIF9fZmlyc3QyLCBf
X2xhc3QyLAogICAgICAgIHN0ZDo6X19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0MSksCiAgICAg
ICAgc3RkOjpfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QyKSwKICAgICAgICBfX2NvbXApOwog
ICAgfQojIDc1MSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OC4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9y
LCB0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgaW5saW5lIGJvb2wKICAgIGFsbF9vZihfSW5wdXRJ
dGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsIF9QcmVkaWNhdGUgX19wcmVk
KQogICAgeyByZXR1cm4gX19sYXN0ID09IHN0ZDo6ZmluZF9pZl9ub3QoX19maXJzdCwgX19sYXN0
LCBfX3ByZWQpOyB9CiMgNzY4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC44LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0
SXRlcmF0b3IsIHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgICBpbmxpbmUgYm9vbAogICAgbm9uZV9v
ZihfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsIF9QcmVkaWNh
dGUgX19wcmVkKQogICAgeyByZXR1cm4gX19sYXN0ID09IHN0ZDo6ZmluZF9pZihfX2ZpcnN0LCBf
X2xhc3QsIF9fcHJlZCk7IH0KIyA3ODYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
SW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIGlubGluZSBib29sCiAgICBh
bnlfb2YoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LCBfUHJl
ZGljYXRlIF9fcHJlZCkKICAgIHsgcmV0dXJuICFzdGQ6Om5vbmVfb2YoX19maXJzdCwgX19sYXN0
LCBfX3ByZWQpOyB9CiMgODAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC44LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0
SXRlcmF0b3IsIHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgICBpbmxpbmUgX0lucHV0SXRlcmF0b3IK
ICAgIGZpbmRfaWZfbm90KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9f
bGFzdCwKICBfUHJlZGljYXRlIF9fcHJlZCkKICAgIHsKCiAgICAgCiAgICAgCgogICAgICA7CiAg
ICAgIHJldHVybiBzdGQ6Ol9fZmluZF9pZl9ub3QoX19maXJzdCwgX19sYXN0LCBfX3ByZWQpOwog
ICAgfQojIDgyNCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQu
OC4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9y
LCB0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgaW5saW5lIGJvb2wKICAgIGlzX3BhcnRpdGlvbmVk
KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICBfUHJl
ZGljYXRlIF9fcHJlZCkKICAgIHsKICAgICAgX19maXJzdCA9IHN0ZDo6ZmluZF9pZl9ub3QoX19m
aXJzdCwgX19sYXN0LCBfX3ByZWQpOwogICAgICByZXR1cm4gc3RkOjpub25lX29mKF9fZmlyc3Qs
IF9fbGFzdCwgX19wcmVkKTsKICAgIH0KIyA4NDIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgX0ZvcndhcmRJ
dGVyYXRvcgogICAgcGFydGl0aW9uX3BvaW50KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0Zv
cndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgIF9QcmVkaWNhdGUgX19wcmVkKQogICAgewoKICAg
ICAKICAgICAKCgoKICAgICAgOwoKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFp
dHM8X0ZvcndhcmRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogX0Rpc3RhbmNlVHlwZTsKCiAg
ICAgIF9EaXN0YW5jZVR5cGUgX19sZW4gPSBzdGQ6OmRpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCk7
CiAgICAgIF9EaXN0YW5jZVR5cGUgX19oYWxmOwogICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fbWlk
ZGxlOwoKICAgICAgd2hpbGUgKF9fbGVuID4gMCkKIHsKICAgX19oYWxmID0gX19sZW4gPj4gMTsK
ICAgX19taWRkbGUgPSBfX2ZpcnN0OwogICBzdGQ6OmFkdmFuY2UoX19taWRkbGUsIF9faGFsZik7
CiAgIGlmIChfX3ByZWQoKl9fbWlkZGxlKSkKICAgICB7CiAgICAgICBfX2ZpcnN0ID0gX19taWRk
bGU7CiAgICAgICArK19fZmlyc3Q7CiAgICAgICBfX2xlbiA9IF9fbGVuIC0gX19oYWxmIC0gMTsK
ICAgICB9CiAgIGVsc2UKICAgICBfX2xlbiA9IF9faGFsZjsKIH0KICAgICAgcmV0dXJuIF9fZmly
c3Q7CiAgICB9CiMgODk1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC44LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRl
cmF0b3IsIHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgX1RwPgogICAgX091dHB1
dEl0ZXJhdG9yCiAgICByZW1vdmVfY29weShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJ
dGVyYXRvciBfX2xhc3QsCiAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0LCBjb25zdCBfVHAmIF9f
dmFsdWUpCiAgICB7CgogICAgIAogICAgIAoKICAgICAKCiAgICAgIDsKCiAgICAgIGZvciAoOyBf
X2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogaWYgKCEoKl9fZmlyc3QgPT0gX192YWx1ZSkp
CiAgIHsKICAgICAqX19yZXN1bHQgPSAqX19maXJzdDsKICAgICArK19fcmVzdWx0OwogICB9CiAg
ICAgIHJldHVybiBfX3Jlc3VsdDsKICAgIH0KIyA5MzIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX091dHB1dEl0ZXJhdG9yLAogICAgdHlw
ZW5hbWUgX1ByZWRpY2F0ZT4KICAgIF9PdXRwdXRJdGVyYXRvcgogICAgcmVtb3ZlX2NvcHlfaWYo
X0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgIF9PdXRw
dXRJdGVyYXRvciBfX3Jlc3VsdCwgX1ByZWRpY2F0ZSBfX3ByZWQpCiAgICB7CgogICAgIAogICAg
IAoKICAgICAKCiAgICAgIDsKCiAgICAgIGZvciAoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2Zp
cnN0KQogaWYgKCFib29sKF9fcHJlZCgqX19maXJzdCkpKQogICB7CiAgICAgKl9fcmVzdWx0ID0g
Kl9fZmlyc3Q7CiAgICAgKytfX3Jlc3VsdDsKICAgfQogICAgICByZXR1cm4gX19yZXN1bHQ7CiAg
ICB9CiMgOTcxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44
LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3Is
IHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvciwKICAgIHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgICBf
T3V0cHV0SXRlcmF0b3IKICAgIGNvcHlfaWYoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0
SXRlcmF0b3IgX19sYXN0LAogICAgIF9PdXRwdXRJdGVyYXRvciBfX3Jlc3VsdCwgX1ByZWRpY2F0
ZSBfX3ByZWQpCiAgICB7CgogICAgIAogICAgIAoKICAgICAKCiAgICAgIDsKCiAgICAgIGZvciAo
OyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogaWYgKF9fcHJlZCgqX19maXJzdCkpCiAg
IHsKICAgICAqX19yZXN1bHQgPSAqX19maXJzdDsKICAgICArK19fcmVzdWx0OwogICB9CiAgICAg
IHJldHVybiBfX3Jlc3VsdDsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJh
dG9yLCB0eXBlbmFtZSBfU2l6ZSwgdHlwZW5hbWUgX091dHB1dEl0ZXJhdG9yPgogICAgX091dHB1
dEl0ZXJhdG9yCiAgICBfX2NvcHlfbihfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfU2l6ZSBfX24s
CiAgICAgIF9PdXRwdXRJdGVyYXRvciBfX3Jlc3VsdCwgaW5wdXRfaXRlcmF0b3JfdGFnKQogICAg
ewogICAgICBpZiAoX19uID4gMCkKIHsKICAgd2hpbGUgKHRydWUpCiAgICAgewogICAgICAgKl9f
cmVzdWx0ID0gKl9fZmlyc3Q7CiAgICAgICArK19fcmVzdWx0OwogICAgICAgaWYgKC0tX19uID4g
MCkKICArK19fZmlyc3Q7CiAgICAgICBlbHNlCiAgYnJlYWs7CiAgICAgfQogfQogICAgICByZXR1
cm4gX19yZXN1bHQ7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVy
YXRvciwgdHlwZW5hbWUgX1NpemUsCiAgICB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3I+CiAgICBp
bmxpbmUgX091dHB1dEl0ZXJhdG9yCiAgICBfX2NvcHlfbihfUmFuZG9tQWNjZXNzSXRlcmF0b3Ig
X19maXJzdCwgX1NpemUgX19uLAogICAgICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQsIHJhbmRv
bV9hY2Nlc3NfaXRlcmF0b3JfdGFnKQogICAgeyByZXR1cm4gc3RkOjpjb3B5KF9fZmlyc3QsIF9f
Zmlyc3QgKyBfX24sIF9fcmVzdWx0KTsgfQojIDEwMzUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX1NpemUsIHR5cGVuYW1lIF9PdXRwdXRJ
dGVyYXRvcj4KICAgIGlubGluZSBfT3V0cHV0SXRlcmF0b3IKICAgIGNvcHlfbihfSW5wdXRJdGVy
YXRvciBfX2ZpcnN0LCBfU2l6ZSBfX24sIF9PdXRwdXRJdGVyYXRvciBfX3Jlc3VsdCkKICAgIHsK
CiAgICAgCiAgICAgCgoKICAgICAgcmV0dXJuIHN0ZDo6X19jb3B5X24oX19maXJzdCwgX19uLCBf
X3Jlc3VsdCwKICAgICAgc3RkOjpfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsKICAgIH0K
IyAxMDYzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEv
Yml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5
cGVuYW1lIF9PdXRwdXRJdGVyYXRvcjEsCiAgICB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3IyLCB0
eXBlbmFtZSBfUHJlZGljYXRlPgogICAgcGFpcjxfT3V0cHV0SXRlcmF0b3IxLCBfT3V0cHV0SXRl
cmF0b3IyPgogICAgcGFydGl0aW9uX2NvcHkoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0
SXRlcmF0b3IgX19sYXN0LAogICAgIF9PdXRwdXRJdGVyYXRvcjEgX19vdXRfdHJ1ZSwgX091dHB1
dEl0ZXJhdG9yMiBfX291dF9mYWxzZSwKICAgICBfUHJlZGljYXRlIF9fcHJlZCkKICAgIHsKCiAg
ICAgCiAgICAgCgogICAgIAoKICAgICAKCiAgICAgIDsKCiAgICAgIGZvciAoOyBfX2ZpcnN0ICE9
IF9fbGFzdDsgKytfX2ZpcnN0KQogaWYgKF9fcHJlZCgqX19maXJzdCkpCiAgIHsKICAgICAqX19v
dXRfdHJ1ZSA9ICpfX2ZpcnN0OwogICAgICsrX19vdXRfdHJ1ZTsKICAgfQogZWxzZQogICB7CiAg
ICAgKl9fb3V0X2ZhbHNlID0gKl9fZmlyc3Q7CiAgICAgKytfX291dF9mYWxzZTsKICAgfQoKICAg
ICAgcmV0dXJuIHBhaXI8X091dHB1dEl0ZXJhdG9yMSwgX091dHB1dEl0ZXJhdG9yMj4oX19vdXRf
dHJ1ZSwgX19vdXRfZmFsc2UpOwogICAgfQojIDExMTMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFp
bi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgt
Z251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfVHA+CiAgICBfRm9yd2FyZEl0ZXJh
dG9yCiAgICByZW1vdmUoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9y
IF9fbGFzdCwKICAgIGNvbnN0IF9UcCYgX192YWx1ZSkKICAgIHsKCiAgICAgCgogICAgIAoKICAg
ICAgOwoKICAgICAgX19maXJzdCA9IHN0ZDo6ZmluZChfX2ZpcnN0LCBfX2xhc3QsIF9fdmFsdWUp
OwogICAgICBpZihfX2ZpcnN0ID09IF9fbGFzdCkKICAgICAgICByZXR1cm4gX19maXJzdDsKICAg
ICAgX0ZvcndhcmRJdGVyYXRvciBfX3Jlc3VsdCA9IF9fZmlyc3Q7CiAgICAgICsrX19maXJzdDsK
ICAgICAgZm9yKDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICAgICAgICBpZighKCpf
X2ZpcnN0ID09IF9fdmFsdWUpKQogICAgICAgICAgewogICAgICAgICAgICAqX19yZXN1bHQgPSBz
dGQ6Om1vdmUoKl9fZmlyc3QpOwogICAgICAgICAgICArK19fcmVzdWx0OwogICAgICAgICAgfQog
ICAgICByZXR1cm4gX19yZXN1bHQ7CiAgICB9CiMgMTE1NiAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRl
PHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgICBfRm9y
d2FyZEl0ZXJhdG9yCiAgICByZW1vdmVfaWYoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9y
d2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgIF9QcmVkaWNhdGUgX19wcmVkKQogICAgewoKICAg
ICAKCiAgICAgCgogICAgICA7CgogICAgICBfX2ZpcnN0ID0gc3RkOjpmaW5kX2lmKF9fZmlyc3Qs
IF9fbGFzdCwgX19wcmVkKTsKICAgICAgaWYoX19maXJzdCA9PSBfX2xhc3QpCiAgICAgICAgcmV0
dXJuIF9fZmlyc3Q7CiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19yZXN1bHQgPSBfX2ZpcnN0Owog
ICAgICArK19fZmlyc3Q7CiAgICAgIGZvcig7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3Qp
CiAgICAgICAgaWYoIWJvb2woX19wcmVkKCpfX2ZpcnN0KSkpCiAgICAgICAgICB7CiAgICAgICAg
ICAgICpfX3Jlc3VsdCA9IHN0ZDo6bW92ZSgqX19maXJzdCk7CiAgICAgICAgICAgICsrX19yZXN1
bHQ7CiAgICAgICAgICB9CiAgICAgIHJldHVybiBfX3Jlc3VsdDsKICAgIH0KIyAxMTk2ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljgu
MS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfYWxn
by5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcj4KICAgIF9Gb3J3YXJk
SXRlcmF0b3IKICAgIHVuaXF1ZShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRl
cmF0b3IgX19sYXN0KQogICAgewoKICAgICAKCiAgICAgCgogICAgICA7CgoKICAgICAgX19maXJz
dCA9IHN0ZDo6YWRqYWNlbnRfZmluZChfX2ZpcnN0LCBfX2xhc3QpOwogICAgICBpZiAoX19maXJz
dCA9PSBfX2xhc3QpCiByZXR1cm4gX19sYXN0OwoKCiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19k
ZXN0ID0gX19maXJzdDsKICAgICAgKytfX2ZpcnN0OwogICAgICB3aGlsZSAoKytfX2ZpcnN0ICE9
IF9fbGFzdCkKIGlmICghKCpfX2Rlc3QgPT0gKl9fZmlyc3QpKQogICAqKytfX2Rlc3QgPSBzdGQ6
Om1vdmUoKl9fZmlyc3QpOwogICAgICByZXR1cm4gKytfX2Rlc3Q7CiAgICB9CiMgMTIzNiAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44
LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2Fs
Z28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9C
aW5hcnlQcmVkaWNhdGU+CiAgICBfRm9yd2FyZEl0ZXJhdG9yCiAgICB1bmlxdWUoX0ZvcndhcmRJ
dGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgICAgICBfQmlu
YXJ5UHJlZGljYXRlIF9fYmluYXJ5X3ByZWQpCiAgICB7CgogICAgIAoKICAgICAKCgogICAgICA7
CgoKICAgICAgX19maXJzdCA9IHN0ZDo6YWRqYWNlbnRfZmluZChfX2ZpcnN0LCBfX2xhc3QsIF9f
YmluYXJ5X3ByZWQpOwogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiByZXR1cm4gX19sYXN0
OwoKCiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19kZXN0ID0gX19maXJzdDsKICAgICAgKytfX2Zp
cnN0OwogICAgICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFzdCkKIGlmICghYm9vbChfX2JpbmFy
eV9wcmVkKCpfX2Rlc3QsICpfX2ZpcnN0KSkpCiAgICorK19fZGVzdCA9IHN0ZDo6bW92ZSgqX19m
aXJzdCk7CiAgICAgIHJldHVybiArK19fZGVzdDsKICAgIH0KCgoKCgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3I+CiAgICBfT3V0
cHV0SXRlcmF0b3IKICAgIF9fdW5pcXVlX2NvcHkoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBf
Rm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgIF9PdXRwdXRJdGVyYXRvciBfX3Jlc3VsdCwKICAg
IGZvcndhcmRfaXRlcmF0b3JfdGFnLCBvdXRwdXRfaXRlcmF0b3JfdGFnKQogICAgewoKICAgICAg
X0ZvcndhcmRJdGVyYXRvciBfX25leHQgPSBfX2ZpcnN0OwogICAgICAqX19yZXN1bHQgPSAqX19m
aXJzdDsKICAgICAgd2hpbGUgKCsrX19uZXh0ICE9IF9fbGFzdCkKIGlmICghKCpfX2ZpcnN0ID09
ICpfX25leHQpKQogICB7CiAgICAgX19maXJzdCA9IF9fbmV4dDsKICAgICAqKytfX3Jlc3VsdCA9
ICpfX2ZpcnN0OwogICB9CiAgICAgIHJldHVybiArK19fcmVzdWx0OwogICAgfQoKCgoKCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3I+
CiAgICBfT3V0cHV0SXRlcmF0b3IKICAgIF9fdW5pcXVlX2NvcHkoX0lucHV0SXRlcmF0b3IgX19m
aXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0
LAogICAgaW5wdXRfaXRlcmF0b3JfdGFnLCBvdXRwdXRfaXRlcmF0b3JfdGFnKQogICAgewoKICAg
ICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSBf
X3ZhbHVlID0gKl9fZmlyc3Q7CiAgICAgICpfX3Jlc3VsdCA9IF9fdmFsdWU7CiAgICAgIHdoaWxl
ICgrK19fZmlyc3QgIT0gX19sYXN0KQogaWYgKCEoX192YWx1ZSA9PSAqX19maXJzdCkpCiAgIHsK
ICAgICBfX3ZhbHVlID0gKl9fZmlyc3Q7CiAgICAgKisrX19yZXN1bHQgPSBfX3ZhbHVlOwogICB9
CiAgICAgIHJldHVybiArK19fcmVzdWx0OwogICAgfQoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yPgogICAgX0ZvcndhcmRJ
dGVyYXRvcgogICAgX191bmlxdWVfY29weShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJ
dGVyYXRvciBfX2xhc3QsCiAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fcmVzdWx0LAogICAgaW5wdXRf
aXRlcmF0b3JfdGFnLCBmb3J3YXJkX2l0ZXJhdG9yX3RhZykKICAgIHsKCiAgICAgICpfX3Jlc3Vs
dCA9ICpfX2ZpcnN0OwogICAgICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFzdCkKIGlmICghKCpf
X3Jlc3VsdCA9PSAqX19maXJzdCkpCiAgICorK19fcmVzdWx0ID0gKl9fZmlyc3Q7CiAgICAgIHJl
dHVybiArK19fcmVzdWx0OwogICAgfQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2Fy
ZEl0ZXJhdG9yLCB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3IsCiAgICB0eXBlbmFtZSBfQmluYXJ5
UHJlZGljYXRlPgogICAgX091dHB1dEl0ZXJhdG9yCiAgICBfX3VuaXF1ZV9jb3B5KF9Gb3J3YXJk
SXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICBfT3V0cHV0SXRl
cmF0b3IgX19yZXN1bHQsIF9CaW5hcnlQcmVkaWNhdGUgX19iaW5hcnlfcHJlZCwKICAgIGZvcndh
cmRfaXRlcmF0b3JfdGFnLCBvdXRwdXRfaXRlcmF0b3JfdGFnKQogICAgewoKICAgICAKCgoKICAg
ICAgX0ZvcndhcmRJdGVyYXRvciBfX25leHQgPSBfX2ZpcnN0OwogICAgICAqX19yZXN1bHQgPSAq
X19maXJzdDsKICAgICAgd2hpbGUgKCsrX19uZXh0ICE9IF9fbGFzdCkKIGlmICghYm9vbChfX2Jp
bmFyeV9wcmVkKCpfX2ZpcnN0LCAqX19uZXh0KSkpCiAgIHsKICAgICBfX2ZpcnN0ID0gX19uZXh0
OwogICAgICorK19fcmVzdWx0ID0gKl9fZmlyc3Q7CiAgIH0KICAgICAgcmV0dXJuICsrX19yZXN1
bHQ7CiAgICB9CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBl
bmFtZSBfT3V0cHV0SXRlcmF0b3IsCiAgICB0eXBlbmFtZSBfQmluYXJ5UHJlZGljYXRlPgogICAg
X091dHB1dEl0ZXJhdG9yCiAgICBfX3VuaXF1ZV9jb3B5KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3Qs
IF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgIF9PdXRwdXRJdGVyYXRvciBfX3Jlc3VsdCwgX0Jp
bmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkLAogICAgaW5wdXRfaXRlcmF0b3JfdGFnLCBvdXRw
dXRfaXRlcmF0b3JfdGFnKQogICAgewoKICAgICAKCgoKICAgICAgdHlwZW5hbWUgaXRlcmF0b3Jf
dHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSBfX3ZhbHVlID0gKl9fZmlyc3Q7CiAg
ICAgICpfX3Jlc3VsdCA9IF9fdmFsdWU7CiAgICAgIHdoaWxlICgrK19fZmlyc3QgIT0gX19sYXN0
KQogaWYgKCFib29sKF9fYmluYXJ5X3ByZWQoX192YWx1ZSwgKl9fZmlyc3QpKSkKICAgewogICAg
IF9fdmFsdWUgPSAqX19maXJzdDsKICAgICAqKytfX3Jlc3VsdCA9IF9fdmFsdWU7CiAgIH0KICAg
ICAgcmV0dXJuICsrX19yZXN1bHQ7CiAgICB9CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9J
bnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLAogICAgdHlwZW5hbWUgX0Jp
bmFyeVByZWRpY2F0ZT4KICAgIF9Gb3J3YXJkSXRlcmF0b3IKICAgIF9fdW5pcXVlX2NvcHkoX0lu
cHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgX0ZvcndhcmRJ
dGVyYXRvciBfX3Jlc3VsdCwgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkLAogICAgaW5w
dXRfaXRlcmF0b3JfdGFnLCBmb3J3YXJkX2l0ZXJhdG9yX3RhZykKICAgIHsKCiAgICAgCgoKCiAg
ICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogICAgICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFz
dCkKIGlmICghYm9vbChfX2JpbmFyeV9wcmVkKCpfX3Jlc3VsdCwgKl9fZmlyc3QpKSkKICAgKisr
X19yZXN1bHQgPSAqX19maXJzdDsKICAgICAgcmV0dXJuICsrX19yZXN1bHQ7CiAgICB9CgoKCgoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcj4KICAgIHZvaWQKICAg
IF9fcmV2ZXJzZShfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fZmlyc3QsIF9CaWRpcmVjdGlvbmFs
SXRlcmF0b3IgX19sYXN0LAogICAgICAgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcpCiAgICB7
CiAgICAgIHdoaWxlICh0cnVlKQogaWYgKF9fZmlyc3QgPT0gX19sYXN0IHx8IF9fZmlyc3QgPT0g
LS1fX2xhc3QpCiAgIHJldHVybjsKIGVsc2UKICAgewogICAgIHN0ZDo6aXRlcl9zd2FwKF9fZmly
c3QsIF9fbGFzdCk7CiAgICAgKytfX2ZpcnN0OwogICB9CiAgICB9CgoKCgoKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPgogICAgdm9pZAogICAgX19yZXZlcnNlKF9S
YW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0
LAogICAgICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcpCiAgICB7CiAgICAgIGlmIChfX2Zp
cnN0ID09IF9fbGFzdCkKIHJldHVybjsKICAgICAgLS1fX2xhc3Q7CiAgICAgIHdoaWxlIChfX2Zp
cnN0IDwgX19sYXN0KQogewogICBzdGQ6Oml0ZXJfc3dhcChfX2ZpcnN0LCBfX2xhc3QpOwogICAr
K19fZmlyc3Q7CiAgIC0tX19sYXN0OwogfQogICAgfQojIDE0NjQgIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yPgogICAgaW5saW5lIHZvaWQKICAg
IHJldmVyc2UoX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX2ZpcnN0LCBfQmlkaXJlY3Rpb25hbEl0
ZXJhdG9yIF9fbGFzdCkKICAgIHsKCiAgICAgCgogICAgICA7CiAgICAgIHN0ZDo6X19yZXZlcnNl
KF9fZmlyc3QsIF9fbGFzdCwgc3RkOjpfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsKICAg
IH0KIyAxNDkxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44
LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJ
dGVyYXRvciwgdHlwZW5hbWUgX091dHB1dEl0ZXJhdG9yPgogICAgX091dHB1dEl0ZXJhdG9yCiAg
ICByZXZlcnNlX2NvcHkoX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX2ZpcnN0LCBfQmlkaXJlY3Rp
b25hbEl0ZXJhdG9yIF9fbGFzdCwKICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0KQogICAgewoK
ICAgICAKCiAgICAgCgogICAgICA7CgogICAgICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3QpCiB7
CiAgIC0tX19sYXN0OwogICAqX19yZXN1bHQgPSAqX19sYXN0OwogICArK19fcmVzdWx0OwogfQog
ICAgICByZXR1cm4gX19yZXN1bHQ7CiAgICB9CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRXVj
bGlkZWFuUmluZ0VsZW1lbnQ+CiAgICBfRXVjbGlkZWFuUmluZ0VsZW1lbnQKICAgIF9fZ2NkKF9F
dWNsaWRlYW5SaW5nRWxlbWVudCBfX20sIF9FdWNsaWRlYW5SaW5nRWxlbWVudCBfX24pCiAgICB7
CiAgICAgIHdoaWxlIChfX24gIT0gMCkKIHsKICAgX0V1Y2xpZGVhblJpbmdFbGVtZW50IF9fdCA9
IF9fbSAlIF9fbjsKICAgX19tID0gX19uOwogICBfX24gPSBfX3Q7CiB9CiAgICAgIHJldHVybiBf
X207CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yPgogICAgdm9p
ZAogICAgX19yb3RhdGUoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LAogICAgICBfRm9yd2FyZEl0
ZXJhdG9yIF9fbWlkZGxlLAogICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgZm9y
d2FyZF9pdGVyYXRvcl90YWcpCiAgICB7CiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbWlkZGxlIHx8
IF9fbGFzdCA9PSBfX21pZGRsZSkKIHJldHVybjsKCiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19m
aXJzdDIgPSBfX21pZGRsZTsKICAgICAgZG8KIHsKICAgc3RkOjppdGVyX3N3YXAoX19maXJzdCwg
X19maXJzdDIpOwogICArK19fZmlyc3Q7CiAgICsrX19maXJzdDI7CiAgIGlmIChfX2ZpcnN0ID09
IF9fbWlkZGxlKQogICAgIF9fbWlkZGxlID0gX19maXJzdDI7CiB9CiAgICAgIHdoaWxlIChfX2Zp
cnN0MiAhPSBfX2xhc3QpOwoKICAgICAgX19maXJzdDIgPSBfX21pZGRsZTsKCiAgICAgIHdoaWxl
IChfX2ZpcnN0MiAhPSBfX2xhc3QpCiB7CiAgIHN0ZDo6aXRlcl9zd2FwKF9fZmlyc3QsIF9fZmly
c3QyKTsKICAgKytfX2ZpcnN0OwogICArK19fZmlyc3QyOwogICBpZiAoX19maXJzdCA9PSBfX21p
ZGRsZSkKICAgICBfX21pZGRsZSA9IF9fZmlyc3QyOwogICBlbHNlIGlmIChfX2ZpcnN0MiA9PSBf
X2xhc3QpCiAgICAgX19maXJzdDIgPSBfX21pZGRsZTsKIH0KICAgIH0KCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3I+CiAgICB2b2lkCiAgICBfX3JvdGF0ZShfQmlk
aXJlY3Rpb25hbEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3Ig
X19taWRkbGUsCiAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19sYXN0LAogICAgICAgYmlk
aXJlY3Rpb25hbF9pdGVyYXRvcl90YWcpCiAgICB7CgogICAgIAoKCiAgICAgIGlmIChfX2ZpcnN0
ID09IF9fbWlkZGxlIHx8IF9fbGFzdCA9PSBfX21pZGRsZSkKIHJldHVybjsKCiAgICAgIHN0ZDo6
X19yZXZlcnNlKF9fZmlyc3QsIF9fbWlkZGxlLCBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZygp
KTsKICAgICAgc3RkOjpfX3JldmVyc2UoX19taWRkbGUsIF9fbGFzdCwgYmlkaXJlY3Rpb25hbF9p
dGVyYXRvcl90YWcoKSk7CgogICAgICB3aGlsZSAoX19maXJzdCAhPSBfX21pZGRsZSAmJiBfX21p
ZGRsZSAhPSBfX2xhc3QpCiB7CiAgIHN0ZDo6aXRlcl9zd2FwKF9fZmlyc3QsIC0tX19sYXN0KTsK
ICAgKytfX2ZpcnN0OwogfQoKICAgICAgaWYgKF9fZmlyc3QgPT0gX19taWRkbGUpCiBzdGQ6Ol9f
cmV2ZXJzZShfX21pZGRsZSwgX19sYXN0LCBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZygpKTsK
ICAgICAgZWxzZQogc3RkOjpfX3JldmVyc2UoX19maXJzdCwgX19taWRkbGUsIGJpZGlyZWN0aW9u
YWxfaXRlcmF0b3JfdGFnKCkpOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yPgogICAgdm9pZAogICAgX19yb3RhdGUoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9y
IF9fZmlyc3QsCiAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX21pZGRsZSwKICAgICAgX1Jh
bmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICAgICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90
YWcpCiAgICB7CgogICAgIAoKCiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbWlkZGxlIHx8IF9fbGFz
dCA9PSBfX21pZGRsZSkKIHJldHVybjsKCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3Jf
dHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogX0Rpc3RhbmNl
OwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRl
cmF0b3I+Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBlOwoKICAgICAgX0Rpc3RhbmNlIF9fbiA9IF9f
bGFzdCAtIF9fZmlyc3Q7CiAgICAgIF9EaXN0YW5jZSBfX2sgPSBfX21pZGRsZSAtIF9fZmlyc3Q7
CgogICAgICBpZiAoX19rID09IF9fbiAtIF9faykKIHsKICAgc3RkOjpzd2FwX3JhbmdlcyhfX2Zp
cnN0LCBfX21pZGRsZSwgX19taWRkbGUpOwogICByZXR1cm47CiB9CgogICAgICBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IgX19wID0gX19maXJzdDsKCiAgICAgIGZvciAoOzspCiB7CiAgIGlmIChfX2sg
PCBfX24gLSBfX2spCiAgICAgewogICAgICAgaWYgKF9faXNfcG9kKF9WYWx1ZVR5cGUpICYmIF9f
ayA9PSAxKQogIHsKICAgIF9WYWx1ZVR5cGUgX190ID0gc3RkOjptb3ZlKCpfX3ApOwogICAgc3Rk
Ojptb3ZlKF9fcCArIDEsIF9fcCArIF9fbiwgX19wKTsKICAgICooX19wICsgX19uIC0gMSkgPSBz
dGQ6Om1vdmUoX190KTsKICAgIHJldHVybjsKICB9CiAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0
b3IgX19xID0gX19wICsgX19rOwogICAgICAgZm9yIChfRGlzdGFuY2UgX19pID0gMDsgX19pIDwg
X19uIC0gX19rOyArKyBfX2kpCiAgewogICAgc3RkOjppdGVyX3N3YXAoX19wLCBfX3EpOwogICAg
KytfX3A7CiAgICArK19fcTsKICB9CiAgICAgICBfX24gJT0gX19rOwogICAgICAgaWYgKF9fbiA9
PSAwKQogIHJldHVybjsKICAgICAgIHN0ZDo6c3dhcChfX24sIF9fayk7CiAgICAgICBfX2sgPSBf
X24gLSBfX2s7CiAgICAgfQogICBlbHNlCiAgICAgewogICAgICAgX19rID0gX19uIC0gX19rOwog
ICAgICAgaWYgKF9faXNfcG9kKF9WYWx1ZVR5cGUpICYmIF9fayA9PSAxKQogIHsKICAgIF9WYWx1
ZVR5cGUgX190ID0gc3RkOjptb3ZlKCooX19wICsgX19uIC0gMSkpOwogICAgc3RkOjptb3ZlX2Jh
Y2t3YXJkKF9fcCwgX19wICsgX19uIC0gMSwgX19wICsgX19uKTsKICAgICpfX3AgPSBzdGQ6Om1v
dmUoX190KTsKICAgIHJldHVybjsKICB9CiAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19x
ID0gX19wICsgX19uOwogICAgICAgX19wID0gX19xIC0gX19rOwogICAgICAgZm9yIChfRGlzdGFu
Y2UgX19pID0gMDsgX19pIDwgX19uIC0gX19rOyArKyBfX2kpCiAgewogICAgLS1fX3A7CiAgICAt
LV9fcTsKICAgIHN0ZDo6aXRlcl9zd2FwKF9fcCwgX19xKTsKICB9CiAgICAgICBfX24gJT0gX19r
OwogICAgICAgaWYgKF9fbiA9PSAwKQogIHJldHVybjsKICAgICAgIHN0ZDo6c3dhcChfX24sIF9f
ayk7CiAgICAgfQogfQogICAgfQojIDE2OTcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRm9yd2FyZEl0ZXJhdG9yPgogICAgaW5saW5lIHZvaWQKICAgIHJvdGF0ZShfRm9yd2FyZEl0
ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19taWRkbGUsCiAgICBfRm9yd2FyZEl0
ZXJhdG9yIF9fbGFzdCkKICAgIHsKCiAgICAgCgogICAgICA7CiAgICAgIDsKCiAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcmF0b3I+OjppdGVyYXRvcl9j
YXRlZ29yeQogX0l0ZXJUeXBlOwogICAgICBzdGQ6Ol9fcm90YXRlKF9fZmlyc3QsIF9fbWlkZGxl
LCBfX2xhc3QsIF9JdGVyVHlwZSgpKTsKICAgIH0KIyAxNzMzICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX091dHB1dEl0ZXJhdG9yPgog
ICAgX091dHB1dEl0ZXJhdG9yCiAgICByb3RhdGVfY29weShfRm9yd2FyZEl0ZXJhdG9yIF9fZmly
c3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19taWRkbGUsCiAgICAgICAgICAgICAgICBfRm9yd2FyZEl0
ZXJhdG9yIF9fbGFzdCwgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0KQogICAgewoKICAgICAKICAg
ICAKCiAgICAgIDsKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6Y29weShfX2ZpcnN0LCBfX21p
ZGRsZSwKICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmNvcHkoX19taWRkbGUsIF9fbGFzdCwg
X19yZXN1bHQpKTsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3Is
IHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgICBfRm9yd2FyZEl0ZXJhdG9yCiAgICBfX3BhcnRpdGlv
bihfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogIF9Q
cmVkaWNhdGUgX19wcmVkLCBmb3J3YXJkX2l0ZXJhdG9yX3RhZykKICAgIHsKICAgICAgaWYgKF9f
Zmlyc3QgPT0gX19sYXN0KQogcmV0dXJuIF9fZmlyc3Q7CgogICAgICB3aGlsZSAoX19wcmVkKCpf
X2ZpcnN0KSkKIGlmICgrK19fZmlyc3QgPT0gX19sYXN0KQogICByZXR1cm4gX19maXJzdDsKCiAg
ICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19uZXh0ID0gX19maXJzdDsKCiAgICAgIHdoaWxlICgrK19f
bmV4dCAhPSBfX2xhc3QpCiBpZiAoX19wcmVkKCpfX25leHQpKQogICB7CiAgICAgc3RkOjppdGVy
X3N3YXAoX19maXJzdCwgX19uZXh0KTsKICAgICArK19fZmlyc3Q7CiAgIH0KCiAgICAgIHJldHVy
biBfX2ZpcnN0OwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVy
YXRvciwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IKICAg
IF9fcGFydGl0aW9uKF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19maXJzdCwgX0JpZGlyZWN0aW9u
YWxJdGVyYXRvciBfX2xhc3QsCiAgX1ByZWRpY2F0ZSBfX3ByZWQsIGJpZGlyZWN0aW9uYWxfaXRl
cmF0b3JfdGFnKQogICAgewogICAgICB3aGlsZSAodHJ1ZSkKIHsKICAgd2hpbGUgKHRydWUpCiAg
ICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KQogICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICAgZWxz
ZSBpZiAoX19wcmVkKCpfX2ZpcnN0KSkKICAgICAgICsrX19maXJzdDsKICAgICBlbHNlCiAgICAg
ICBicmVhazsKICAgLS1fX2xhc3Q7CiAgIHdoaWxlICh0cnVlKQogICAgIGlmIChfX2ZpcnN0ID09
IF9fbGFzdCkKICAgICAgIHJldHVybiBfX2ZpcnN0OwogICAgIGVsc2UgaWYgKCFib29sKF9fcHJl
ZCgqX19sYXN0KSkpCiAgICAgICAtLV9fbGFzdDsKICAgICBlbHNlCiAgICAgICBicmVhazsKICAg
c3RkOjppdGVyX3N3YXAoX19maXJzdCwgX19sYXN0KTsKICAgKytfX2ZpcnN0OwogfQogICAgfQoK
CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9QcmVk
aWNhdGUsIHR5cGVuYW1lIF9EaXN0YW5jZT4KICAgIF9Gb3J3YXJkSXRlcmF0b3IKICAgIF9faW5w
bGFjZV9zdGFibGVfcGFydGl0aW9uKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwKICAgICAgICAg
IF9QcmVkaWNhdGUgX19wcmVkLCBfRGlzdGFuY2UgX19sZW4pCiAgICB7CiAgICAgIGlmIChfX2xl
biA9PSAxKQogcmV0dXJuIF9fZmlyc3Q7CiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19taWRkbGUg
PSBfX2ZpcnN0OwogICAgICBzdGQ6OmFkdmFuY2UoX19taWRkbGUsIF9fbGVuIC8gMik7CiAgICAg
IF9Gb3J3YXJkSXRlcmF0b3IgX19sZWZ0X3NwbGl0ID0KIHN0ZDo6X19pbnBsYWNlX3N0YWJsZV9w
YXJ0aXRpb24oX19maXJzdCwgX19wcmVkLCBfX2xlbiAvIDIpOwoKCiAgICAgIF9EaXN0YW5jZSBf
X3JpZ2h0X2xlbiA9IF9fbGVuIC0gX19sZW4gLyAyOwogICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9f
cmlnaHRfc3BsaXQgPQogc3RkOjpfX2ZpbmRfaWZfbm90X24oX19taWRkbGUsIF9fcmlnaHRfbGVu
LCBfX3ByZWQpOwogICAgICBpZiAoX19yaWdodF9sZW4pCiBfX3JpZ2h0X3NwbGl0ID0gc3RkOjpf
X2lucGxhY2Vfc3RhYmxlX3BhcnRpdGlvbihfX21pZGRsZSwKICAgICAgIF9fcHJlZCwKICAgICAg
IF9fcmlnaHRfbGVuKTsKICAgICAgc3RkOjpyb3RhdGUoX19sZWZ0X3NwbGl0LCBfX21pZGRsZSwg
X19yaWdodF9zcGxpdCk7CiAgICAgIHN0ZDo6YWR2YW5jZShfX2xlZnRfc3BsaXQsIHN0ZDo6ZGlz
dGFuY2UoX19taWRkbGUsIF9fcmlnaHRfc3BsaXQpKTsKICAgICAgcmV0dXJuIF9fbGVmdF9zcGxp
dDsKICAgIH0KCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlw
ZW5hbWUgX1BvaW50ZXIsIHR5cGVuYW1lIF9QcmVkaWNhdGUsCiAgICB0eXBlbmFtZSBfRGlzdGFu
Y2U+CiAgICBfRm9yd2FyZEl0ZXJhdG9yCiAgICBfX3N0YWJsZV9wYXJ0aXRpb25fYWRhcHRpdmUo
X0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LAogICAgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAg
ICBfUHJlZGljYXRlIF9fcHJlZCwgX0Rpc3RhbmNlIF9fbGVuLAogICAgX1BvaW50ZXIgX19idWZm
ZXIsCiAgICBfRGlzdGFuY2UgX19idWZmZXJfc2l6ZSkKICAgIHsKICAgICAgaWYgKF9fbGVuIDw9
IF9fYnVmZmVyX3NpemUpCiB7CiAgIF9Gb3J3YXJkSXRlcmF0b3IgX19yZXN1bHQxID0gX19maXJz
dDsKICAgX1BvaW50ZXIgX19yZXN1bHQyID0gX19idWZmZXI7CgoKCiAgICpfX3Jlc3VsdDIgPSBz
dGQ6Om1vdmUoKl9fZmlyc3QpOwogICArK19fcmVzdWx0MjsKICAgKytfX2ZpcnN0OwogICBmb3Ig
KDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICAgICBpZiAoX19wcmVkKCpfX2ZpcnN0
KSkKICAgICAgIHsKICAqX19yZXN1bHQxID0gc3RkOjptb3ZlKCpfX2ZpcnN0KTsKICArK19fcmVz
dWx0MTsKICAgICAgIH0KICAgICBlbHNlCiAgICAgICB7CiAgKl9fcmVzdWx0MiA9IHN0ZDo6bW92
ZSgqX19maXJzdCk7CiAgKytfX3Jlc3VsdDI7CiAgICAgICB9CiAgIHN0ZDo6bW92ZShfX2J1ZmZl
ciwgX19yZXN1bHQyLCBfX3Jlc3VsdDEpOwogICByZXR1cm4gX19yZXN1bHQxOwogfQogICAgICBl
bHNlCiB7CiAgIF9Gb3J3YXJkSXRlcmF0b3IgX19taWRkbGUgPSBfX2ZpcnN0OwogICBzdGQ6OmFk
dmFuY2UoX19taWRkbGUsIF9fbGVuIC8gMik7CiAgIF9Gb3J3YXJkSXRlcmF0b3IgX19sZWZ0X3Nw
bGl0ID0KICAgICBzdGQ6Ol9fc3RhYmxlX3BhcnRpdGlvbl9hZGFwdGl2ZShfX2ZpcnN0LCBfX21p
ZGRsZSwgX19wcmVkLAogICAgICAgICAgX19sZW4gLyAyLCBfX2J1ZmZlciwKICAgICAgICAgIF9f
YnVmZmVyX3NpemUpOwoKCiAgIF9EaXN0YW5jZSBfX3JpZ2h0X2xlbiA9IF9fbGVuIC0gX19sZW4g
LyAyOwogICBfRm9yd2FyZEl0ZXJhdG9yIF9fcmlnaHRfc3BsaXQgPQogICAgIHN0ZDo6X19maW5k
X2lmX25vdF9uKF9fbWlkZGxlLCBfX3JpZ2h0X2xlbiwgX19wcmVkKTsKICAgaWYgKF9fcmlnaHRf
bGVuKQogICAgIF9fcmlnaHRfc3BsaXQgPQogICAgICAgc3RkOjpfX3N0YWJsZV9wYXJ0aXRpb25f
YWRhcHRpdmUoX19yaWdodF9zcGxpdCwgX19sYXN0LCBfX3ByZWQsCiAgICAgICAgICAgIF9fcmln
aHRfbGVuLAogICAgICAgICAgICBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSk7CiAgIHN0ZDo6cm90
YXRlKF9fbGVmdF9zcGxpdCwgX19taWRkbGUsIF9fcmlnaHRfc3BsaXQpOwogICBzdGQ6OmFkdmFu
Y2UoX19sZWZ0X3NwbGl0LCBzdGQ6OmRpc3RhbmNlKF9fbWlkZGxlLCBfX3JpZ2h0X3NwbGl0KSk7
CiAgIHJldHVybiBfX2xlZnRfc3BsaXQ7CiB9CiAgICB9CiMgMTkxMiAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRl
bXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAg
ICBfRm9yd2FyZEl0ZXJhdG9yCiAgICBzdGFibGVfcGFydGl0aW9uKF9Gb3J3YXJkSXRlcmF0b3Ig
X19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgICBfUHJlZGljYXRlIF9fcHJl
ZCkKICAgIHsKCiAgICAgCgogICAgIAoKICAgICAgOwoKICAgICAgX19maXJzdCA9IHN0ZDo6X19m
aW5kX2lmX25vdChfX2ZpcnN0LCBfX2xhc3QsIF9fcHJlZCk7CgogICAgICBpZiAoX19maXJzdCA9
PSBfX2xhc3QpCiByZXR1cm4gX19maXJzdDsKICAgICAgZWxzZQogewogICB0eXBlZGVmIHR5cGVu
YW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZQogICAgIF9W
YWx1ZVR5cGU7CiAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRl
cmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUKICAgICBfRGlzdGFuY2VUeXBlOwoKICAgX1RlbXBvcmFy
eV9idWZmZXI8X0ZvcndhcmRJdGVyYXRvciwgX1ZhbHVlVHlwZT4gX19idWYoX19maXJzdCwKICAg
ICAgICBfX2xhc3QpOwogaWYgKF9fYnVmLnNpemUoKSA+IDApCiAgIHJldHVybgogICAgIHN0ZDo6
X19zdGFibGVfcGFydGl0aW9uX2FkYXB0aXZlKF9fZmlyc3QsIF9fbGFzdCwgX19wcmVkLAogICAg
ICAgX0Rpc3RhbmNlVHlwZShfX2J1Zi5yZXF1ZXN0ZWRfc2l6ZSgpKSwKICAgICAgIF9fYnVmLmJl
Z2luKCksCiAgICAgICBfRGlzdGFuY2VUeXBlKF9fYnVmLnNpemUoKSkpOwogZWxzZQogICByZXR1
cm4KICAgICBzdGQ6Ol9faW5wbGFjZV9zdGFibGVfcGFydGl0aW9uKF9fZmlyc3QsIF9fcHJlZCwK
ICAgICAgX0Rpc3RhbmNlVHlwZShfX2J1Zi5yZXF1ZXN0ZWRfc2l6ZSgpKSk7CiB9CiAgICB9CgoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+CiAgICB2b2lkCiAgICBf
X2hlYXBfc2VsZWN0KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAgX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIF9fbWlkZGxlLAogICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkK
ICAgIHsKICAgICAgc3RkOjptYWtlX2hlYXAoX19maXJzdCwgX19taWRkbGUpOwogICAgICBmb3Ig
KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2kgPSBfX21pZGRsZTsgX19pIDwgX19sYXN0OyArK19f
aSkKIGlmICgqX19pIDwgKl9fZmlyc3QpCiAgIHN0ZDo6X19wb3BfaGVhcChfX2ZpcnN0LCBfX21p
ZGRsZSwgX19pKTsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVy
YXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBfX2hlYXBfc2VsZWN0KF9SYW5k
b21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbWlk
ZGxlLAogICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwgX0NvbXBhcmUgX19jb21wKQog
ICAgewogICAgICBzdGQ6Om1ha2VfaGVhcChfX2ZpcnN0LCBfX21pZGRsZSwgX19jb21wKTsKICAg
ICAgZm9yIChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19pID0gX19taWRkbGU7IF9faSA8IF9fbGFz
dDsgKytfX2kpCiBpZiAoX19jb21wKCpfX2ksICpfX2ZpcnN0KSkKICAgc3RkOjpfX3BvcF9oZWFw
KF9fZmlyc3QsIF9fbWlkZGxlLCBfX2ksIF9fY29tcCk7CiAgICB9CiMgMTk5NiAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2FsZ28uaCIg
MwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3I+CiAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IKICAgIHBhcnRpYWxfc29ydF9j
b3B5KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAg
ICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19yZXN1bHRfZmlyc3QsCiAgICAgICAgX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIF9fcmVzdWx0X2xhc3QpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
aXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6dmFsdWVfdHlwZQogX0lucHV0VmFsdWVU
eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNz
SXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiBfT3V0cHV0VmFsdWVUeXBlOwogICAgICB0eXBlZGVmIHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNl
X3R5cGUKIF9EaXN0YW5jZVR5cGU7CgoKICAgICAKICAgICAKCiAgICAgCgogICAgIAogICAgICA7
CiAgICAgIDsKCiAgICAgIGlmIChfX3Jlc3VsdF9maXJzdCA9PSBfX3Jlc3VsdF9sYXN0KQogcmV0
dXJuIF9fcmVzdWx0X2xhc3Q7CiAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX3Jlc3VsdF9y
ZWFsX2xhc3QgPSBfX3Jlc3VsdF9maXJzdDsKICAgICAgd2hpbGUoX19maXJzdCAhPSBfX2xhc3Qg
JiYgX19yZXN1bHRfcmVhbF9sYXN0ICE9IF9fcmVzdWx0X2xhc3QpCiB7CiAgICpfX3Jlc3VsdF9y
ZWFsX2xhc3QgPSAqX19maXJzdDsKICAgKytfX3Jlc3VsdF9yZWFsX2xhc3Q7CiAgICsrX19maXJz
dDsKIH0KICAgICAgc3RkOjptYWtlX2hlYXAoX19yZXN1bHRfZmlyc3QsIF9fcmVzdWx0X3JlYWxf
bGFzdCk7CiAgICAgIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkKIHsKICAgaWYgKCpfX2ZpcnN0
IDwgKl9fcmVzdWx0X2ZpcnN0KQogICAgIHN0ZDo6X19hZGp1c3RfaGVhcChfX3Jlc3VsdF9maXJz
dCwgX0Rpc3RhbmNlVHlwZSgwKSwKICAgICAgICAgIF9EaXN0YW5jZVR5cGUoX19yZXN1bHRfcmVh
bF9sYXN0CiAgICAgICAgICAtIF9fcmVzdWx0X2ZpcnN0KSwKICAgICAgICAgIF9JbnB1dFZhbHVl
VHlwZSgqX19maXJzdCkpOwogICArK19fZmlyc3Q7CiB9CiAgICAgIHN0ZDo6c29ydF9oZWFwKF9f
cmVzdWx0X2ZpcnN0LCBfX3Jlc3VsdF9yZWFsX2xhc3QpOwogICAgICByZXR1cm4gX19yZXN1bHRf
cmVhbF9sYXN0OwogICAgfQojIDIwNjIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9p
bmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
SW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBf
Q29tcGFyZT4KICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvcgogICAgcGFydGlhbF9zb3J0X2NvcHko
X0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgICAgIF9S
YW5kb21BY2Nlc3NJdGVyYXRvciBfX3Jlc3VsdF9maXJzdCwKICAgICAgICBfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19yZXN1bHRfbGFzdCwKICAgICAgICBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6dmFs
dWVfdHlwZQogX0lucHV0VmFsdWVUeXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9y
X3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiBfT3V0cHV0VmFsdWVU
eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNz
SXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUKIF9EaXN0YW5jZVR5cGU7CgoKICAgICAKICAgICAK
CiAgICAgCgogICAgIAoKICAgICAKCiAgICAgIDsKICAgICAgOwoKICAgICAgaWYgKF9fcmVzdWx0
X2ZpcnN0ID09IF9fcmVzdWx0X2xhc3QpCiByZXR1cm4gX19yZXN1bHRfbGFzdDsKICAgICAgX1Jh
bmRvbUFjY2Vzc0l0ZXJhdG9yIF9fcmVzdWx0X3JlYWxfbGFzdCA9IF9fcmVzdWx0X2ZpcnN0Owog
ICAgICB3aGlsZShfX2ZpcnN0ICE9IF9fbGFzdCAmJiBfX3Jlc3VsdF9yZWFsX2xhc3QgIT0gX19y
ZXN1bHRfbGFzdCkKIHsKICAgKl9fcmVzdWx0X3JlYWxfbGFzdCA9ICpfX2ZpcnN0OwogICArK19f
cmVzdWx0X3JlYWxfbGFzdDsKICAgKytfX2ZpcnN0OwogfQogICAgICBzdGQ6Om1ha2VfaGVhcChf
X3Jlc3VsdF9maXJzdCwgX19yZXN1bHRfcmVhbF9sYXN0LCBfX2NvbXApOwogICAgICB3aGlsZSAo
X19maXJzdCAhPSBfX2xhc3QpCiB7CiAgIGlmIChfX2NvbXAoKl9fZmlyc3QsICpfX3Jlc3VsdF9m
aXJzdCkpCiAgICAgc3RkOjpfX2FkanVzdF9oZWFwKF9fcmVzdWx0X2ZpcnN0LCBfRGlzdGFuY2VU
eXBlKDApLAogICAgICAgICAgX0Rpc3RhbmNlVHlwZShfX3Jlc3VsdF9yZWFsX2xhc3QKICAgICAg
ICAgIC0gX19yZXN1bHRfZmlyc3QpLAogICAgICAgICAgX0lucHV0VmFsdWVUeXBlKCpfX2ZpcnN0
KSwKICAgICAgICAgIF9fY29tcCk7CiAgICsrX19maXJzdDsKIH0KICAgICAgc3RkOjpzb3J0X2hl
YXAoX19yZXN1bHRfZmlyc3QsIF9fcmVzdWx0X3JlYWxfbGFzdCwgX19jb21wKTsKICAgICAgcmV0
dXJuIF9fcmVzdWx0X3JlYWxfbGFzdDsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5k
b21BY2Nlc3NJdGVyYXRvcj4KICAgIHZvaWQKICAgIF9fdW5ndWFyZGVkX2xpbmVhcl9pbnNlcnQo
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkKICAgIHsKICAgICAgdHlwZW5hbWUgaXRlcmF0
b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUKIF9fdmFsID0gc3Rk
Ojptb3ZlKCpfX2xhc3QpOwogICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19uZXh0ID0gX19s
YXN0OwogICAgICAtLV9fbmV4dDsKICAgICAgd2hpbGUgKF9fdmFsIDwgKl9fbmV4dCkKIHsKICAg
Kl9fbGFzdCA9IHN0ZDo6bW92ZSgqX19uZXh0KTsKICAgX19sYXN0ID0gX19uZXh0OwogICAtLV9f
bmV4dDsKIH0KICAgICAgKl9fbGFzdCA9IHN0ZDo6bW92ZShfX3ZhbCk7CiAgICB9CgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgog
ICAgdm9pZAogICAgX191bmd1YXJkZWRfbGluZWFyX2luc2VydChfUmFuZG9tQWNjZXNzSXRlcmF0
b3IgX19sYXN0LAogICAgICAgICBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIHR5cGVuYW1l
IGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiBfX3Zh
bCA9IHN0ZDo6bW92ZSgqX19sYXN0KTsKICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbmV4
dCA9IF9fbGFzdDsKICAgICAgLS1fX25leHQ7CiAgICAgIHdoaWxlIChfX2NvbXAoX192YWwsICpf
X25leHQpKQogewogICAqX19sYXN0ID0gc3RkOjptb3ZlKCpfX25leHQpOwogICBfX2xhc3QgPSBf
X25leHQ7CiAgIC0tX19uZXh0OwogfQogICAgICAqX19sYXN0ID0gc3RkOjptb3ZlKF9fdmFsKTsK
ICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4KICAgIHZv
aWQKICAgIF9faW5zZXJ0aW9uX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsCiAg
ICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQogICAgewogICAgICBpZiAoX19maXJz
dCA9PSBfX2xhc3QpCiByZXR1cm47CgogICAgICBmb3IgKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBf
X2kgPSBfX2ZpcnN0ICsgMTsgX19pICE9IF9fbGFzdDsgKytfX2kpCiB7CiAgIGlmICgqX19pIDwg
Kl9fZmlyc3QpCiAgICAgewogICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21B
Y2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUKICBfX3ZhbCA9IHN0ZDo6bW92ZSgqX19pKTsKICAg
ICAgIHN0ZDo6bW92ZV9iYWNrd2FyZChfX2ZpcnN0LCBfX2ksIF9faSArIDEpOwogICAgICAgKl9f
Zmlyc3QgPSBzdGQ6Om1vdmUoX192YWwpOwogICAgIH0KICAgZWxzZQogICAgIHN0ZDo6X191bmd1
YXJkZWRfbGluZWFyX2luc2VydChfX2kpOwogfQogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIHZvaWQKICAgIF9f
aW5zZXJ0aW9uX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICBfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIGlm
IChfX2ZpcnN0ID09IF9fbGFzdCkgcmV0dXJuOwoKICAgICAgZm9yIChfUmFuZG9tQWNjZXNzSXRl
cmF0b3IgX19pID0gX19maXJzdCArIDE7IF9faSAhPSBfX2xhc3Q7ICsrX19pKQogewogICBpZiAo
X19jb21wKCpfX2ksICpfX2ZpcnN0KSkKICAgICB7CiAgICAgICB0eXBlbmFtZSBpdGVyYXRvcl90
cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZQogIF9fdmFsID0gc3RkOjpt
b3ZlKCpfX2kpOwogICAgICAgc3RkOjptb3ZlX2JhY2t3YXJkKF9fZmlyc3QsIF9faSwgX19pICsg
MSk7CiAgICAgICAqX19maXJzdCA9IHN0ZDo6bW92ZShfX3ZhbCk7CiAgICAgfQogICBlbHNlCiAg
ICAgc3RkOjpfX3VuZ3VhcmRlZF9saW5lYXJfaW5zZXJ0KF9faSwgX19jb21wKTsKIH0KICAgIH0K
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4KICAgIGlubGluZSB2
b2lkCiAgICBfX3VuZ3VhcmRlZF9pbnNlcnRpb25fc29ydChfUmFuZG9tQWNjZXNzSXRlcmF0b3Ig
X19maXJzdCwKICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QpCiAgICB7CiAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRv
cj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGU7CgogICAgICBmb3IgKF9SYW5kb21BY2Nlc3NJdGVy
YXRvciBfX2kgPSBfX2ZpcnN0OyBfX2kgIT0gX19sYXN0OyArK19faSkKIHN0ZDo6X191bmd1YXJk
ZWRfbGluZWFyX2luc2VydChfX2kpOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGlubGluZSB2b2lkCiAgICBf
X3VuZ3VhcmRlZF9pbnNlcnRpb25fc29ydChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwK
ICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsIF9Db21wYXJlIF9fY29tcCkK
ICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTsKCiAgICAgIGZvciAoX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIF9faSA9IF9fZmlyc3Q7IF9faSAhPSBfX2xhc3Q7ICsrX19pKQogc3RkOjpf
X3VuZ3VhcmRlZF9saW5lYXJfaW5zZXJ0KF9faSwgX19jb21wKTsKICAgIH0KCgoKCgogIGVudW0g
eyBfU190aHJlc2hvbGQgPSAxNiB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yPgogICAgdm9pZAogICAgX19maW5hbF9pbnNlcnRpb25fc29ydChfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IgX19maXJzdCwKICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkK
ICAgIHsKICAgICAgaWYgKF9fbGFzdCAtIF9fZmlyc3QgPiBpbnQoX1NfdGhyZXNob2xkKSkKIHsK
ICAgc3RkOjpfX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fZmlyc3QgKyBpbnQoX1NfdGhyZXNo
b2xkKSk7CiAgIHN0ZDo6X191bmd1YXJkZWRfaW5zZXJ0aW9uX3NvcnQoX19maXJzdCArIGludChf
U190aHJlc2hvbGQpLCBfX2xhc3QpOwogfQogICAgICBlbHNlCiBzdGQ6Ol9faW5zZXJ0aW9uX3Nv
cnQoX19maXJzdCwgX19sYXN0KTsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBfX2ZpbmFsX2lu
c2VydGlvbl9zb3J0KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAgICBfUmFuZG9t
QWNjZXNzSXRlcmF0b3IgX19sYXN0LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIGlmIChf
X2xhc3QgLSBfX2ZpcnN0ID4gaW50KF9TX3RocmVzaG9sZCkpCiB7CiAgIHN0ZDo6X19pbnNlcnRp
b25fc29ydChfX2ZpcnN0LCBfX2ZpcnN0ICsgaW50KF9TX3RocmVzaG9sZCksIF9fY29tcCk7CiAg
IHN0ZDo6X191bmd1YXJkZWRfaW5zZXJ0aW9uX3NvcnQoX19maXJzdCArIGludChfU190aHJlc2hv
bGQpLCBfX2xhc3QsCiAgICAgICBfX2NvbXApOwogfQogICAgICBlbHNlCiBzdGQ6Ol9faW5zZXJ0
aW9uX3NvcnQoX19maXJzdCwgX19sYXN0LCBfX2NvbXApOwogICAgfQoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfVHA+CiAgICBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IKICAgIF9fdW5ndWFyZGVkX3BhcnRpdGlvbihfUmFuZG9tQWNjZXNzSXRlcmF0
b3IgX19maXJzdCwKICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LCBjb25zdCBfVHAm
IF9fcGl2b3QpCiAgICB7CiAgICAgIHdoaWxlICh0cnVlKQogewogICB3aGlsZSAoKl9fZmlyc3Qg
PCBfX3Bpdm90KQogICAgICsrX19maXJzdDsKICAgLS1fX2xhc3Q7CiAgIHdoaWxlIChfX3Bpdm90
IDwgKl9fbGFzdCkKICAgICAtLV9fbGFzdDsKICAgaWYgKCEoX19maXJzdCA8IF9fbGFzdCkpCiAg
ICAgcmV0dXJuIF9fZmlyc3Q7CiAgIHN0ZDo6aXRlcl9zd2FwKF9fZmlyc3QsIF9fbGFzdCk7CiAg
ICsrX19maXJzdDsKIH0KICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJ
dGVyYXRvciwgdHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIF9SYW5kb21BY2Nl
c3NJdGVyYXRvcgogICAgX191bmd1YXJkZWRfcGFydGl0aW9uKF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciBfX2ZpcnN0LAogICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsCiAgICAgY29uc3Qg
X1RwJiBfX3Bpdm90LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIHdoaWxlICh0cnVlKQog
ewogICB3aGlsZSAoX19jb21wKCpfX2ZpcnN0LCBfX3Bpdm90KSkKICAgICArK19fZmlyc3Q7CiAg
IC0tX19sYXN0OwogICB3aGlsZSAoX19jb21wKF9fcGl2b3QsICpfX2xhc3QpKQogICAgIC0tX19s
YXN0OwogICBpZiAoIShfX2ZpcnN0IDwgX19sYXN0KSkKICAgICByZXR1cm4gX19maXJzdDsKICAg
c3RkOjppdGVyX3N3YXAoX19maXJzdCwgX19sYXN0KTsKICAgKytfX2ZpcnN0OwogfQogICAgfQoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPgogICAgaW5saW5lIF9S
YW5kb21BY2Nlc3NJdGVyYXRvcgogICAgX191bmd1YXJkZWRfcGFydGl0aW9uX3Bpdm90KF9SYW5k
b21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFz
dCkKICAgIHsKICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbWlkID0gX19maXJzdCArIChf
X2xhc3QgLSBfX2ZpcnN0KSAvIDI7CiAgICAgIHN0ZDo6X19tb3ZlX21lZGlhbl9maXJzdChfX2Zp
cnN0LCBfX21pZCwgKF9fbGFzdCAtIDEpKTsKICAgICAgcmV0dXJuIHN0ZDo6X191bmd1YXJkZWRf
cGFydGl0aW9uKF9fZmlyc3QgKyAxLCBfX2xhc3QsICpfX2ZpcnN0KTsKICAgIH0KCgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgog
ICAgaW5saW5lIF9SYW5kb21BY2Nlc3NJdGVyYXRvcgogICAgX191bmd1YXJkZWRfcGFydGl0aW9u
X3Bpdm90KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAgX1JhbmRvbUFjY2Vzc0l0
ZXJhdG9yIF9fbGFzdCwgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICBfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19taWQgPSBfX2ZpcnN0ICsgKF9fbGFzdCAtIF9fZmlyc3QpIC8gMjsKICAgICAg
c3RkOjpfX21vdmVfbWVkaWFuX2ZpcnN0KF9fZmlyc3QsIF9fbWlkLCAoX19sYXN0IC0gMSksIF9f
Y29tcCk7CiAgICAgIHJldHVybiBzdGQ6Ol9fdW5ndWFyZGVkX3BhcnRpdGlvbihfX2ZpcnN0ICsg
MSwgX19sYXN0LCAqX19maXJzdCwgX19jb21wKTsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX1NpemU+CiAgICB2b2lkCiAgICBfX2lu
dHJvc29ydF9sb29wKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAgICAgX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICAgICAgIF9TaXplIF9fZGVwdGhfbGltaXQpCiAgICB7
CiAgICAgIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0ID4gaW50KF9TX3RocmVzaG9sZCkpCiB7CiAg
IGlmIChfX2RlcHRoX2xpbWl0ID09IDApCiAgICAgewogICAgICAgc3RkOjpwYXJ0aWFsX3NvcnQo
X19maXJzdCwgX19sYXN0LCBfX2xhc3QpOwogICAgICAgcmV0dXJuOwogICAgIH0KICAgLS1fX2Rl
cHRoX2xpbWl0OwogICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19jdXQgPQogICAgIHN0ZDo6X191
bmd1YXJkZWRfcGFydGl0aW9uX3Bpdm90KF9fZmlyc3QsIF9fbGFzdCk7CiAgIHN0ZDo6X19pbnRy
b3NvcnRfbG9vcChfX2N1dCwgX19sYXN0LCBfX2RlcHRoX2xpbWl0KTsKICAgX19sYXN0ID0gX19j
dXQ7CiB9CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3Is
IHR5cGVuYW1lIF9TaXplLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIHZvaWQKICAgIF9faW50cm9z
b3J0X2xvb3AoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICAgX1NpemUgX19kZXB0aF9saW1pdCwgX0NvbXBhcmUg
X19jb21wKQogICAgewogICAgICB3aGlsZSAoX19sYXN0IC0gX19maXJzdCA+IGludChfU190aHJl
c2hvbGQpKQogewogICBpZiAoX19kZXB0aF9saW1pdCA9PSAwKQogICAgIHsKICAgICAgIHN0ZDo6
cGFydGlhbF9zb3J0KF9fZmlyc3QsIF9fbGFzdCwgX19sYXN0LCBfX2NvbXApOwogICAgICAgcmV0
dXJuOwogICAgIH0KICAgLS1fX2RlcHRoX2xpbWl0OwogICBfUmFuZG9tQWNjZXNzSXRlcmF0b3Ig
X19jdXQgPQogICAgIHN0ZDo6X191bmd1YXJkZWRfcGFydGl0aW9uX3Bpdm90KF9fZmlyc3QsIF9f
bGFzdCwgX19jb21wKTsKICAgc3RkOjpfX2ludHJvc29ydF9sb29wKF9fY3V0LCBfX2xhc3QsIF9f
ZGVwdGhfbGltaXQsIF9fY29tcCk7CiAgIF9fbGFzdCA9IF9fY3V0OwogfQogICAgfQoKCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX1NpemU+CiAg
ICB2b2lkCiAgICBfX2ludHJvc2VsZWN0KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBf
UmFuZG9tQWNjZXNzSXRlcmF0b3IgX19udGgsCiAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19s
YXN0LCBfU2l6ZSBfX2RlcHRoX2xpbWl0KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiBfVmFsdWVU
eXBlOwoKICAgICAgd2hpbGUgKF9fbGFzdCAtIF9fZmlyc3QgPiAzKQogewogICBpZiAoX19kZXB0
aF9saW1pdCA9PSAwKQogICAgIHsKICAgICAgIHN0ZDo6X19oZWFwX3NlbGVjdChfX2ZpcnN0LCBf
X250aCArIDEsIF9fbGFzdCk7CgoKICAgICAgIHN0ZDo6aXRlcl9zd2FwKF9fZmlyc3QsIF9fbnRo
KTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIC0tX19kZXB0aF9saW1pdDsKICAgX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIF9fY3V0ID0KICAgICBzdGQ6Ol9fdW5ndWFyZGVkX3BhcnRpdGlvbl9waXZv
dChfX2ZpcnN0LCBfX2xhc3QpOwogICBpZiAoX19jdXQgPD0gX19udGgpCiAgICAgX19maXJzdCA9
IF9fY3V0OwogICBlbHNlCiAgICAgX19sYXN0ID0gX19jdXQ7CiB9CiAgICAgIHN0ZDo6X19pbnNl
cnRpb25fc29ydChfX2ZpcnN0LCBfX2xhc3QpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
UmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9TaXplLCB0eXBlbmFtZSBfQ29tcGFyZT4K
ICAgIHZvaWQKICAgIF9faW50cm9zZWxlY3QoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3Qs
IF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX250aCwKICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBf
X2xhc3QsIF9TaXplIF9fZGVwdGhfbGltaXQsCiAgICBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRv
cj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGU7CgogICAgICB3aGlsZSAoX19sYXN0IC0gX19maXJz
dCA+IDMpCiB7CiAgIGlmIChfX2RlcHRoX2xpbWl0ID09IDApCiAgICAgewogICAgICAgc3RkOjpf
X2hlYXBfc2VsZWN0KF9fZmlyc3QsIF9fbnRoICsgMSwgX19sYXN0LCBfX2NvbXApOwoKICAgICAg
IHN0ZDo6aXRlcl9zd2FwKF9fZmlyc3QsIF9fbnRoKTsKICAgICAgIHJldHVybjsKICAgICB9CiAg
IC0tX19kZXB0aF9saW1pdDsKICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fY3V0ID0KICAgICBz
dGQ6Ol9fdW5ndWFyZGVkX3BhcnRpdGlvbl9waXZvdChfX2ZpcnN0LCBfX2xhc3QsIF9fY29tcCk7
CiAgIGlmIChfX2N1dCA8PSBfX250aCkKICAgICBfX2ZpcnN0ID0gX19jdXQ7CiAgIGVsc2UKICAg
ICBfX2xhc3QgPSBfX2N1dDsKIH0KICAgICAgc3RkOjpfX2luc2VydGlvbl9zb3J0KF9fZmlyc3Qs
IF9fbGFzdCwgX19jb21wKTsKICAgIH0KIyAyNDQ2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ29tcGFyZT4K
ICAgIF9Gb3J3YXJkSXRlcmF0b3IKICAgIGxvd2VyX2JvdW5kKF9Gb3J3YXJkSXRlcmF0b3IgX19m
aXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgY29uc3QgX1RwJiBfX3ZhbCwgX0NvbXBh
cmUgX19jb21wKQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxf
Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTsKICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlw
ZQogX0Rpc3RhbmNlVHlwZTsKCgogICAgIAogICAgIAoKICAgICAKICAgICAgICAgICAgICAgICAg
ICA7CgogICAgICBfRGlzdGFuY2VUeXBlIF9fbGVuID0gc3RkOjpkaXN0YW5jZShfX2ZpcnN0LCBf
X2xhc3QpOwoKICAgICAgd2hpbGUgKF9fbGVuID4gMCkKIHsKICAgX0Rpc3RhbmNlVHlwZSBfX2hh
bGYgPSBfX2xlbiA+PiAxOwogICBfRm9yd2FyZEl0ZXJhdG9yIF9fbWlkZGxlID0gX19maXJzdDsK
ICAgc3RkOjphZHZhbmNlKF9fbWlkZGxlLCBfX2hhbGYpOwogICBpZiAoX19jb21wKCpfX21pZGRs
ZSwgX192YWwpKQogICAgIHsKICAgICAgIF9fZmlyc3QgPSBfX21pZGRsZTsKICAgICAgICsrX19m
aXJzdDsKICAgICAgIF9fbGVuID0gX19sZW4gLSBfX2hhbGYgLSAxOwogICAgIH0KICAgZWxzZQog
ICAgIF9fbGVuID0gX19oYWxmOwogfQogICAgICByZXR1cm4gX19maXJzdDsKICAgIH0KIyAyNDkz
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9z
dGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5h
bWUgX1RwPgogICAgX0ZvcndhcmRJdGVyYXRvcgogICAgdXBwZXJfYm91bmQoX0ZvcndhcmRJdGVy
YXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICBjb25zdCBfVHAmIF9fdmFs
KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0
ZXJhdG9yPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBp
dGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogX0Rpc3Rh
bmNlVHlwZTsKCgogICAgIAogICAgIAogICAgICA7CgogICAgICBfRGlzdGFuY2VUeXBlIF9fbGVu
ID0gc3RkOjpkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QpOwoKICAgICAgd2hpbGUgKF9fbGVuID4g
MCkKIHsKICAgX0Rpc3RhbmNlVHlwZSBfX2hhbGYgPSBfX2xlbiA+PiAxOwogICBfRm9yd2FyZEl0
ZXJhdG9yIF9fbWlkZGxlID0gX19maXJzdDsKICAgc3RkOjphZHZhbmNlKF9fbWlkZGxlLCBfX2hh
bGYpOwogICBpZiAoX192YWwgPCAqX19taWRkbGUpCiAgICAgX19sZW4gPSBfX2hhbGY7CiAgIGVs
c2UKICAgICB7CiAgICAgICBfX2ZpcnN0ID0gX19taWRkbGU7CiAgICAgICArK19fZmlyc3Q7CiAg
ICAgICBfX2xlbiA9IF9fbGVuIC0gX19oYWxmIC0gMTsKICAgICB9CiB9CiAgICAgIHJldHVybiBf
X2ZpcnN0OwogICAgfQojIDI1NDIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNs
dWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9y
d2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgX0Zvcndh
cmRJdGVyYXRvcgogICAgdXBwZXJfYm91bmQoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9y
d2FyZEl0ZXJhdG9yIF9fbGFzdCwKICBjb25zdCBfVHAmIF9fdmFsLCBfQ29tcGFyZSBfX2NvbXAp
CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRl
cmF0b3I+Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCiBfRGlzdGFu
Y2VUeXBlOwoKCiAgICAgCiAgICAgCgogICAgIAogICAgICAgICAgICAgICAgICAgIDsKCiAgICAg
IF9EaXN0YW5jZVR5cGUgX19sZW4gPSBzdGQ6OmRpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCk7Cgog
ICAgICB3aGlsZSAoX19sZW4gPiAwKQogewogICBfRGlzdGFuY2VUeXBlIF9faGFsZiA9IF9fbGVu
ID4+IDE7CiAgIF9Gb3J3YXJkSXRlcmF0b3IgX19taWRkbGUgPSBfX2ZpcnN0OwogICBzdGQ6OmFk
dmFuY2UoX19taWRkbGUsIF9faGFsZik7CiAgIGlmIChfX2NvbXAoX192YWwsICpfX21pZGRsZSkp
CiAgICAgX19sZW4gPSBfX2hhbGY7CiAgIGVsc2UKICAgICB7CiAgICAgICBfX2ZpcnN0ID0gX19t
aWRkbGU7CiAgICAgICArK19fZmlyc3Q7CiAgICAgICBfX2xlbiA9IF9fbGVuIC0gX19oYWxmIC0g
MTsKICAgICB9CiB9CiAgICAgIHJldHVybiBfX2ZpcnN0OwogICAgfQojIDI1OTUgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfVHA+CiAg
ICBwYWlyPF9Gb3J3YXJkSXRlcmF0b3IsIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICBlcXVhbF9yYW5n
ZShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogIGNv
bnN0IF9UcCYgX192YWwpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJh
aXRzPF9Gb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBlOwogICAgICB0eXBl
ZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXJhdG9yPjo6ZGlmZmVyZW5j
ZV90eXBlCiBfRGlzdGFuY2VUeXBlOwoKCiAgICAgCiAgICAgCiAgICAgCiAgICAgIDsKICAgICAg
OwoKICAgICAgX0Rpc3RhbmNlVHlwZSBfX2xlbiA9IHN0ZDo6ZGlzdGFuY2UoX19maXJzdCwgX19s
YXN0KTsKCiAgICAgIHdoaWxlIChfX2xlbiA+IDApCiB7CiAgIF9EaXN0YW5jZVR5cGUgX19oYWxm
ID0gX19sZW4gPj4gMTsKICAgX0ZvcndhcmRJdGVyYXRvciBfX21pZGRsZSA9IF9fZmlyc3Q7CiAg
IHN0ZDo6YWR2YW5jZShfX21pZGRsZSwgX19oYWxmKTsKICAgaWYgKCpfX21pZGRsZSA8IF9fdmFs
KQogICAgIHsKICAgICAgIF9fZmlyc3QgPSBfX21pZGRsZTsKICAgICAgICsrX19maXJzdDsKICAg
ICAgIF9fbGVuID0gX19sZW4gLSBfX2hhbGYgLSAxOwogICAgIH0KICAgZWxzZSBpZiAoX192YWwg
PCAqX19taWRkbGUpCiAgICAgX19sZW4gPSBfX2hhbGY7CiAgIGVsc2UKICAgICB7CiAgICAgICBf
Rm9yd2FyZEl0ZXJhdG9yIF9fbGVmdCA9IHN0ZDo6bG93ZXJfYm91bmQoX19maXJzdCwgX19taWRk
bGUsCiAgICAgICAgX192YWwpOwogICAgICAgc3RkOjphZHZhbmNlKF9fZmlyc3QsIF9fbGVuKTsK
ICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19yaWdodCA9IHN0ZDo6dXBwZXJfYm91bmQoKytfX21p
ZGRsZSwgX19maXJzdCwKICAgICAgICAgX192YWwpOwogICAgICAgcmV0dXJuIHBhaXI8X0Zvcndh
cmRJdGVyYXRvciwgX0ZvcndhcmRJdGVyYXRvcj4oX19sZWZ0LCBfX3JpZ2h0KTsKICAgICB9CiB9
CiAgICAgIHJldHVybiBwYWlyPF9Gb3J3YXJkSXRlcmF0b3IsIF9Gb3J3YXJkSXRlcmF0b3I+KF9f
Zmlyc3QsIF9fZmlyc3QpOwogICAgfQojIDI2NTcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Db21wYXJlPgog
ICAgcGFpcjxfRm9yd2FyZEl0ZXJhdG9yLCBfRm9yd2FyZEl0ZXJhdG9yPgogICAgZXF1YWxfcmFu
Z2UoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICBj
b25zdCBfVHAmIF9fdmFsLCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiBfVmFs
dWVUeXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0
ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCiBfRGlzdGFuY2VUeXBlOwoKCiAgICAgCiAgICAgCgog
ICAgIAoKICAgICAKICAgICAgICAgICAgICAgICAgICA7CiAgICAgCiAgICAgICAgICAgICAgICAg
ICAgOwoKICAgICAgX0Rpc3RhbmNlVHlwZSBfX2xlbiA9IHN0ZDo6ZGlzdGFuY2UoX19maXJzdCwg
X19sYXN0KTsKCiAgICAgIHdoaWxlIChfX2xlbiA+IDApCiB7CiAgIF9EaXN0YW5jZVR5cGUgX19o
YWxmID0gX19sZW4gPj4gMTsKICAgX0ZvcndhcmRJdGVyYXRvciBfX21pZGRsZSA9IF9fZmlyc3Q7
CiAgIHN0ZDo6YWR2YW5jZShfX21pZGRsZSwgX19oYWxmKTsKICAgaWYgKF9fY29tcCgqX19taWRk
bGUsIF9fdmFsKSkKICAgICB7CiAgICAgICBfX2ZpcnN0ID0gX19taWRkbGU7CiAgICAgICArK19f
Zmlyc3Q7CiAgICAgICBfX2xlbiA9IF9fbGVuIC0gX19oYWxmIC0gMTsKICAgICB9CiAgIGVsc2Ug
aWYgKF9fY29tcChfX3ZhbCwgKl9fbWlkZGxlKSkKICAgICBfX2xlbiA9IF9faGFsZjsKICAgZWxz
ZQogICAgIHsKICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19sZWZ0ID0gc3RkOjpsb3dlcl9ib3Vu
ZChfX2ZpcnN0LCBfX21pZGRsZSwKICAgICAgICBfX3ZhbCwgX19jb21wKTsKICAgICAgIHN0ZDo6
YWR2YW5jZShfX2ZpcnN0LCBfX2xlbik7CiAgICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fcmlnaHQg
PSBzdGQ6OnVwcGVyX2JvdW5kKCsrX19taWRkbGUsIF9fZmlyc3QsCiAgICAgICAgIF9fdmFsLCBf
X2NvbXApOwogICAgICAgcmV0dXJuIHBhaXI8X0ZvcndhcmRJdGVyYXRvciwgX0ZvcndhcmRJdGVy
YXRvcj4oX19sZWZ0LCBfX3JpZ2h0KTsKICAgICB9CiB9CiAgICAgIHJldHVybiBwYWlyPF9Gb3J3
YXJkSXRlcmF0b3IsIF9Gb3J3YXJkSXRlcmF0b3I+KF9fZmlyc3QsIF9fZmlyc3QpOwogICAgfQoj
IDI3MTggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9i
aXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0
eXBlbmFtZSBfVHA+CiAgICBib29sCiAgICBiaW5hcnlfc2VhcmNoKF9Gb3J3YXJkSXRlcmF0b3Ig
X19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgIGNvbnN0
IF9UcCYgX192YWwpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRz
PF9Gb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBlOwoKCiAgICAgCiAgICAg
CiAgICAgIDsKICAgICAgOwoKICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX2kgPSBzdGQ6Omxvd2Vy
X2JvdW5kKF9fZmlyc3QsIF9fbGFzdCwgX192YWwpOwogICAgICByZXR1cm4gX19pICE9IF9fbGFz
dCAmJiAhKF9fdmFsIDwgKl9faSk7CiAgICB9CiMgMjc1MSAiL21udC9zdG9yZS9BUk0vdG9vbGNo
YWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRl
PHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NvbXBh
cmU+CiAgICBib29sCiAgICBiaW5hcnlfc2VhcmNoKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwg
X0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX192
YWwsIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRv
cl90cmFpdHM8X0ZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGU7CgoKICAg
ICAKICAgICAKCiAgICAgCiAgICAgICAgICAgICAgICAgICAgOwogICAgIAogICAgICAgICAgICAg
ICAgICAgIDsKCiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19pID0gc3RkOjpsb3dlcl9ib3VuZChf
X2ZpcnN0LCBfX2xhc3QsIF9fdmFsLCBfX2NvbXApOwogICAgICByZXR1cm4gX19pICE9IF9fbGFz
dCAmJiAhYm9vbChfX2NvbXAoX192YWwsICpfX2kpKTsKICAgIH0KCgoKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0lucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjIsCiAgICB0eXBl
bmFtZSBfT3V0cHV0SXRlcmF0b3I+CiAgICB2b2lkCiAgICBfX21vdmVfbWVyZ2VfYWRhcHRpdmUo
X0lucHV0SXRlcmF0b3IxIF9fZmlyc3QxLCBfSW5wdXRJdGVyYXRvcjEgX19sYXN0MSwKICAgICBf
SW5wdXRJdGVyYXRvcjIgX19maXJzdDIsIF9JbnB1dEl0ZXJhdG9yMiBfX2xhc3QyLAogICAgIF9P
dXRwdXRJdGVyYXRvciBfX3Jlc3VsdCkKICAgIHsKICAgICAgd2hpbGUgKF9fZmlyc3QxICE9IF9f
bGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0MikKIHsKICAgaWYgKCpfX2ZpcnN0MiA8ICpfX2Zp
cnN0MSkKICAgICB7CiAgICAgICAqX19yZXN1bHQgPSBzdGQ6Om1vdmUoKl9fZmlyc3QyKTsKICAg
ICAgICsrX19maXJzdDI7CiAgICAgfQogICBlbHNlCiAgICAgewogICAgICAgKl9fcmVzdWx0ID0g
c3RkOjptb3ZlKCpfX2ZpcnN0MSk7CiAgICAgICArK19fZmlyc3QxOwogICAgIH0KICAgKytfX3Jl
c3VsdDsKIH0KICAgICAgaWYgKF9fZmlyc3QxICE9IF9fbGFzdDEpCiBzdGQ6Om1vdmUoX19maXJz
dDEsIF9fbGFzdDEsIF9fcmVzdWx0KTsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1
dEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0lucHV0SXRlcmF0b3IyLAogICAgdHlwZW5hbWUgX091dHB1
dEl0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIHZvaWQKICAgIF9fbW92ZV9tZXJnZV9h
ZGFwdGl2ZShfSW5wdXRJdGVyYXRvcjEgX19maXJzdDEsIF9JbnB1dEl0ZXJhdG9yMSBfX2xhc3Qx
LAogICAgIF9JbnB1dEl0ZXJhdG9yMiBfX2ZpcnN0MiwgX0lucHV0SXRlcmF0b3IyIF9fbGFzdDIs
CiAgICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAg
ICAgIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpCiB7
CiAgIGlmIChfX2NvbXAoKl9fZmlyc3QyLCAqX19maXJzdDEpKQogICAgIHsKICAgICAgICpfX3Jl
c3VsdCA9IHN0ZDo6bW92ZSgqX19maXJzdDIpOwogICAgICAgKytfX2ZpcnN0MjsKICAgICB9CiAg
IGVsc2UKICAgICB7CiAgICAgICAqX19yZXN1bHQgPSBzdGQ6Om1vdmUoKl9fZmlyc3QxKTsKICAg
ICAgICsrX19maXJzdDE7CiAgICAgfQogICArK19fcmVzdWx0OwogfQogICAgICBpZiAoX19maXJz
dDEgIT0gX19sYXN0MSkKIHN0ZDo6bW92ZShfX2ZpcnN0MSwgX19sYXN0MSwgX19yZXN1bHQpOwog
ICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjEsIHR5cGVu
YW1lIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IyLAogICAgdHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJ
dGVyYXRvcjM+CiAgICB2b2lkCiAgICBfX21vdmVfbWVyZ2VfYWRhcHRpdmVfYmFja3dhcmQoX0Jp
ZGlyZWN0aW9uYWxJdGVyYXRvcjEgX19maXJzdDEsCiAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJh
dG9yMSBfX2xhc3QxLAogICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjIgX19maXJzdDIsCiAg
ICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMiBfX2xhc3QyLAogICAgICAgX0JpZGlyZWN0aW9u
YWxJdGVyYXRvcjMgX19yZXN1bHQpCiAgICB7CiAgICAgIGlmIChfX2ZpcnN0MSA9PSBfX2xhc3Qx
KQogewogICBzdGQ6Om1vdmVfYmFja3dhcmQoX19maXJzdDIsIF9fbGFzdDIsIF9fcmVzdWx0KTsK
ICAgcmV0dXJuOwogfQogICAgICBlbHNlIGlmIChfX2ZpcnN0MiA9PSBfX2xhc3QyKQogcmV0dXJu
OwoKICAgICAgLS1fX2xhc3QxOwogICAgICAtLV9fbGFzdDI7CiAgICAgIHdoaWxlICh0cnVlKQog
ewogICBpZiAoKl9fbGFzdDIgPCAqX19sYXN0MSkKICAgICB7CiAgICAgICAqLS1fX3Jlc3VsdCA9
IHN0ZDo6bW92ZSgqX19sYXN0MSk7CiAgICAgICBpZiAoX19maXJzdDEgPT0gX19sYXN0MSkKICB7
CiAgICBzdGQ6Om1vdmVfYmFja3dhcmQoX19maXJzdDIsICsrX19sYXN0MiwgX19yZXN1bHQpOwog
ICAgcmV0dXJuOwogIH0KICAgICAgIC0tX19sYXN0MTsKICAgICB9CiAgIGVsc2UKICAgICB7CiAg
ICAgICAqLS1fX3Jlc3VsdCA9IHN0ZDo6bW92ZSgqX19sYXN0Mik7CiAgICAgICBpZiAoX19maXJz
dDIgPT0gX19sYXN0MikKICByZXR1cm47CiAgICAgICAtLV9fbGFzdDI7CiAgICAgfQogfQogICAg
fQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjEsIHR5cGVuYW1l
IF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IyLAogICAgdHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVy
YXRvcjMsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgdm9pZAogICAgX19tb3ZlX21lcmdlX2FkYXB0
aXZlX2JhY2t3YXJkKF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IxIF9fZmlyc3QxLAogICAgICAgX0Jp
ZGlyZWN0aW9uYWxJdGVyYXRvcjEgX19sYXN0MSwKICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0
b3IyIF9fZmlyc3QyLAogICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjIgX19sYXN0MiwKICAg
ICAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IzIF9fcmVzdWx0LAogICAgICAgX0NvbXBhcmUgX19j
b21wKQogICAgewogICAgICBpZiAoX19maXJzdDEgPT0gX19sYXN0MSkKIHsKICAgc3RkOjptb3Zl
X2JhY2t3YXJkKF9fZmlyc3QyLCBfX2xhc3QyLCBfX3Jlc3VsdCk7CiAgIHJldHVybjsKIH0KICAg
ICAgZWxzZSBpZiAoX19maXJzdDIgPT0gX19sYXN0MikKIHJldHVybjsKCiAgICAgIC0tX19sYXN0
MTsKICAgICAgLS1fX2xhc3QyOwogICAgICB3aGlsZSAodHJ1ZSkKIHsKICAgaWYgKF9fY29tcCgq
X19sYXN0MiwgKl9fbGFzdDEpKQogICAgIHsKICAgICAgICotLV9fcmVzdWx0ID0gc3RkOjptb3Zl
KCpfX2xhc3QxKTsKICAgICAgIGlmIChfX2ZpcnN0MSA9PSBfX2xhc3QxKQogIHsKICAgIHN0ZDo6
bW92ZV9iYWNrd2FyZChfX2ZpcnN0MiwgKytfX2xhc3QyLCBfX3Jlc3VsdCk7CiAgICByZXR1cm47
CiAgfQogICAgICAgLS1fX2xhc3QxOwogICAgIH0KICAgZWxzZQogICAgIHsKICAgICAgICotLV9f
cmVzdWx0ID0gc3RkOjptb3ZlKCpfX2xhc3QyKTsKICAgICAgIGlmIChfX2ZpcnN0MiA9PSBfX2xh
c3QyKQogIHJldHVybjsKICAgICAgIC0tX19sYXN0MjsKICAgICB9CiB9CiAgICB9CgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0JpZGlyZWN0
aW9uYWxJdGVyYXRvcjIsCiAgICB0eXBlbmFtZSBfRGlzdGFuY2U+CiAgICBfQmlkaXJlY3Rpb25h
bEl0ZXJhdG9yMQogICAgX19yb3RhdGVfYWRhcHRpdmUoX0JpZGlyZWN0aW9uYWxJdGVyYXRvcjEg
X19maXJzdCwKICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSBfX21pZGRsZSwKICAgICAg
ICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSBfX2xhc3QsCiAgICAgICAgX0Rpc3RhbmNlIF9fbGVu
MSwgX0Rpc3RhbmNlIF9fbGVuMiwKICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMiBfX2J1
ZmZlciwKICAgICAgICBfRGlzdGFuY2UgX19idWZmZXJfc2l6ZSkKICAgIHsKICAgICAgX0JpZGly
ZWN0aW9uYWxJdGVyYXRvcjIgX19idWZmZXJfZW5kOwogICAgICBpZiAoX19sZW4xID4gX19sZW4y
ICYmIF9fbGVuMiA8PSBfX2J1ZmZlcl9zaXplKQogewogICBpZiAoX19sZW4yKQogICAgIHsKICAg
ICAgIF9fYnVmZmVyX2VuZCA9IHN0ZDo6bW92ZShfX21pZGRsZSwgX19sYXN0LCBfX2J1ZmZlcik7
CiAgICAgICBzdGQ6Om1vdmVfYmFja3dhcmQoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCk7CiAg
ICAgICByZXR1cm4gc3RkOjptb3ZlKF9fYnVmZmVyLCBfX2J1ZmZlcl9lbmQsIF9fZmlyc3QpOwog
ICAgIH0KICAgZWxzZQogICAgIHJldHVybiBfX2ZpcnN0OwogfQogICAgICBlbHNlIGlmIChfX2xl
bjEgPD0gX19idWZmZXJfc2l6ZSkKIHsKICAgaWYgKF9fbGVuMSkKICAgICB7CiAgICAgICBfX2J1
ZmZlcl9lbmQgPSBzdGQ6Om1vdmUoX19maXJzdCwgX19taWRkbGUsIF9fYnVmZmVyKTsKICAgICAg
IHN0ZDo6bW92ZShfX21pZGRsZSwgX19sYXN0LCBfX2ZpcnN0KTsKICAgICAgIHJldHVybiBzdGQ6
Om1vdmVfYmFja3dhcmQoX19idWZmZXIsIF9fYnVmZmVyX2VuZCwgX19sYXN0KTsKICAgICB9CiAg
IGVsc2UKICAgICByZXR1cm4gX19sYXN0OwogfQogICAgICBlbHNlCiB7CiAgIHN0ZDo6cm90YXRl
KF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QpOwogICBzdGQ6OmFkdmFuY2UoX19maXJzdCwgc3Rk
OjpkaXN0YW5jZShfX21pZGRsZSwgX19sYXN0KSk7CiAgIHJldHVybiBfX2ZpcnN0OwogfQogICAg
fQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciwgdHlwZW5hbWUg
X0Rpc3RhbmNlLAogICAgdHlwZW5hbWUgX1BvaW50ZXI+CiAgICB2b2lkCiAgICBfX21lcmdlX2Fk
YXB0aXZlKF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19maXJzdCwKICAgICAgICAgICAgICAgICAg
ICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX21pZGRsZSwKICAgICAgIF9CaWRpcmVjdGlvbmFs
SXRlcmF0b3IgX19sYXN0LAogICAgICAgX0Rpc3RhbmNlIF9fbGVuMSwgX0Rpc3RhbmNlIF9fbGVu
MiwKICAgICAgIF9Qb2ludGVyIF9fYnVmZmVyLCBfRGlzdGFuY2UgX19idWZmZXJfc2l6ZSkKICAg
IHsKICAgICAgaWYgKF9fbGVuMSA8PSBfX2xlbjIgJiYgX19sZW4xIDw9IF9fYnVmZmVyX3NpemUp
CiB7CiAgIF9Qb2ludGVyIF9fYnVmZmVyX2VuZCA9IHN0ZDo6bW92ZShfX2ZpcnN0LCBfX21pZGRs
ZSwgX19idWZmZXIpOwogICBzdGQ6Ol9fbW92ZV9tZXJnZV9hZGFwdGl2ZShfX2J1ZmZlciwgX19i
dWZmZXJfZW5kLCBfX21pZGRsZSwgX19sYXN0LAogICAgICAgICBfX2ZpcnN0KTsKIH0KICAgICAg
ZWxzZSBpZiAoX19sZW4yIDw9IF9fYnVmZmVyX3NpemUpCiB7CiAgIF9Qb2ludGVyIF9fYnVmZmVy
X2VuZCA9IHN0ZDo6bW92ZShfX21pZGRsZSwgX19sYXN0LCBfX2J1ZmZlcik7CiAgIHN0ZDo6X19t
b3ZlX21lcmdlX2FkYXB0aXZlX2JhY2t3YXJkKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2J1ZmZlciwK
ICAgICAgICAgICBfX2J1ZmZlcl9lbmQsIF9fbGFzdCk7CiB9CiAgICAgIGVsc2UKIHsKICAgX0Jp
ZGlyZWN0aW9uYWxJdGVyYXRvciBfX2ZpcnN0X2N1dCA9IF9fZmlyc3Q7CiAgIF9CaWRpcmVjdGlv
bmFsSXRlcmF0b3IgX19zZWNvbmRfY3V0ID0gX19taWRkbGU7CiAgIF9EaXN0YW5jZSBfX2xlbjEx
ID0gMDsKICAgX0Rpc3RhbmNlIF9fbGVuMjIgPSAwOwogICBpZiAoX19sZW4xID4gX19sZW4yKQog
ICAgIHsKICAgICAgIF9fbGVuMTEgPSBfX2xlbjEgLyAyOwogICAgICAgc3RkOjphZHZhbmNlKF9f
Zmlyc3RfY3V0LCBfX2xlbjExKTsKICAgICAgIF9fc2Vjb25kX2N1dCA9IHN0ZDo6bG93ZXJfYm91
bmQoX19taWRkbGUsIF9fbGFzdCwKICAgICAgICAgICAqX19maXJzdF9jdXQpOwogICAgICAgX19s
ZW4yMiA9IHN0ZDo6ZGlzdGFuY2UoX19taWRkbGUsIF9fc2Vjb25kX2N1dCk7CiAgICAgfQogICBl
bHNlCiAgICAgewogICAgICAgX19sZW4yMiA9IF9fbGVuMiAvIDI7CiAgICAgICBzdGQ6OmFkdmFu
Y2UoX19zZWNvbmRfY3V0LCBfX2xlbjIyKTsKICAgICAgIF9fZmlyc3RfY3V0ID0gc3RkOjp1cHBl
cl9ib3VuZChfX2ZpcnN0LCBfX21pZGRsZSwKICAgICAgICAgICpfX3NlY29uZF9jdXQpOwogICAg
ICAgX19sZW4xMSA9IHN0ZDo6ZGlzdGFuY2UoX19maXJzdCwgX19maXJzdF9jdXQpOwogICAgIH0K
ICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX25ld19taWRkbGUgPQogICAgIHN0ZDo6X19yb3Rh
dGVfYWRhcHRpdmUoX19maXJzdF9jdXQsIF9fbWlkZGxlLCBfX3NlY29uZF9jdXQsCiAgICAgICBf
X2xlbjEgLSBfX2xlbjExLCBfX2xlbjIyLCBfX2J1ZmZlciwKICAgICAgIF9fYnVmZmVyX3NpemUp
OwogICBzdGQ6Ol9fbWVyZ2VfYWRhcHRpdmUoX19maXJzdCwgX19maXJzdF9jdXQsIF9fbmV3X21p
ZGRsZSwgX19sZW4xMSwKICAgIF9fbGVuMjIsIF9fYnVmZmVyLCBfX2J1ZmZlcl9zaXplKTsKICAg
c3RkOjpfX21lcmdlX2FkYXB0aXZlKF9fbmV3X21pZGRsZSwgX19zZWNvbmRfY3V0LCBfX2xhc3Qs
CiAgICBfX2xlbjEgLSBfX2xlbjExLAogICAgX19sZW4yIC0gX19sZW4yMiwgX19idWZmZXIsIF9f
YnVmZmVyX3NpemUpOwogfQogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9u
YWxJdGVyYXRvciwgdHlwZW5hbWUgX0Rpc3RhbmNlLAogICAgdHlwZW5hbWUgX1BvaW50ZXIsIHR5
cGVuYW1lIF9Db21wYXJlPgogICAgdm9pZAogICAgX19tZXJnZV9hZGFwdGl2ZShfQmlkaXJlY3Rp
b25hbEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFs
SXRlcmF0b3IgX19taWRkbGUsCiAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fbGFzdCwK
ICAgICAgIF9EaXN0YW5jZSBfX2xlbjEsIF9EaXN0YW5jZSBfX2xlbjIsCiAgICAgICBfUG9pbnRl
ciBfX2J1ZmZlciwgX0Rpc3RhbmNlIF9fYnVmZmVyX3NpemUsCiAgICAgICBfQ29tcGFyZSBfX2Nv
bXApCiAgICB7CiAgICAgIGlmIChfX2xlbjEgPD0gX19sZW4yICYmIF9fbGVuMSA8PSBfX2J1ZmZl
cl9zaXplKQogewogICBfUG9pbnRlciBfX2J1ZmZlcl9lbmQgPSBzdGQ6Om1vdmUoX19maXJzdCwg
X19taWRkbGUsIF9fYnVmZmVyKTsKICAgc3RkOjpfX21vdmVfbWVyZ2VfYWRhcHRpdmUoX19idWZm
ZXIsIF9fYnVmZmVyX2VuZCwgX19taWRkbGUsIF9fbGFzdCwKICAgICAgICAgX19maXJzdCwgX19j
b21wKTsKIH0KICAgICAgZWxzZSBpZiAoX19sZW4yIDw9IF9fYnVmZmVyX3NpemUpCiB7CiAgIF9Q
b2ludGVyIF9fYnVmZmVyX2VuZCA9IHN0ZDo6bW92ZShfX21pZGRsZSwgX19sYXN0LCBfX2J1ZmZl
cik7CiAgIHN0ZDo6X19tb3ZlX21lcmdlX2FkYXB0aXZlX2JhY2t3YXJkKF9fZmlyc3QsIF9fbWlk
ZGxlLCBfX2J1ZmZlciwKICAgICAgICAgICBfX2J1ZmZlcl9lbmQsIF9fbGFzdCwgX19jb21wKTsK
IH0KICAgICAgZWxzZQogewogICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fZmlyc3RfY3V0ID0g
X19maXJzdDsKICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX3NlY29uZF9jdXQgPSBfX21pZGRs
ZTsKICAgX0Rpc3RhbmNlIF9fbGVuMTEgPSAwOwogICBfRGlzdGFuY2UgX19sZW4yMiA9IDA7CiAg
IGlmIChfX2xlbjEgPiBfX2xlbjIpCiAgICAgewogICAgICAgX19sZW4xMSA9IF9fbGVuMSAvIDI7
CiAgICAgICBzdGQ6OmFkdmFuY2UoX19maXJzdF9jdXQsIF9fbGVuMTEpOwogICAgICAgX19zZWNv
bmRfY3V0ID0gc3RkOjpsb3dlcl9ib3VuZChfX21pZGRsZSwgX19sYXN0LCAqX19maXJzdF9jdXQs
CiAgICAgICAgICAgX19jb21wKTsKICAgICAgIF9fbGVuMjIgPSBzdGQ6OmRpc3RhbmNlKF9fbWlk
ZGxlLCBfX3NlY29uZF9jdXQpOwogICAgIH0KICAgZWxzZQogICAgIHsKICAgICAgIF9fbGVuMjIg
PSBfX2xlbjIgLyAyOwogICAgICAgc3RkOjphZHZhbmNlKF9fc2Vjb25kX2N1dCwgX19sZW4yMik7
CiAgICAgICBfX2ZpcnN0X2N1dCA9IHN0ZDo6dXBwZXJfYm91bmQoX19maXJzdCwgX19taWRkbGUs
ICpfX3NlY29uZF9jdXQsCiAgICAgICAgICBfX2NvbXApOwogICAgICAgX19sZW4xMSA9IHN0ZDo6
ZGlzdGFuY2UoX19maXJzdCwgX19maXJzdF9jdXQpOwogICAgIH0KICAgX0JpZGlyZWN0aW9uYWxJ
dGVyYXRvciBfX25ld19taWRkbGUgPQogICAgIHN0ZDo6X19yb3RhdGVfYWRhcHRpdmUoX19maXJz
dF9jdXQsIF9fbWlkZGxlLCBfX3NlY29uZF9jdXQsCiAgICAgICBfX2xlbjEgLSBfX2xlbjExLCBf
X2xlbjIyLCBfX2J1ZmZlciwKICAgICAgIF9fYnVmZmVyX3NpemUpOwogICBzdGQ6Ol9fbWVyZ2Vf
YWRhcHRpdmUoX19maXJzdCwgX19maXJzdF9jdXQsIF9fbmV3X21pZGRsZSwgX19sZW4xMSwKICAg
IF9fbGVuMjIsIF9fYnVmZmVyLCBfX2J1ZmZlcl9zaXplLCBfX2NvbXApOwogICBzdGQ6Ol9fbWVy
Z2VfYWRhcHRpdmUoX19uZXdfbWlkZGxlLCBfX3NlY29uZF9jdXQsIF9fbGFzdCwKICAgIF9fbGVu
MSAtIF9fbGVuMTEsCiAgICBfX2xlbjIgLSBfX2xlbjIyLCBfX2J1ZmZlciwKICAgIF9fYnVmZmVy
X3NpemUsIF9fY29tcCk7CiB9CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rp
b25hbEl0ZXJhdG9yLCB0eXBlbmFtZSBfRGlzdGFuY2U+CiAgICB2b2lkCiAgICBfX21lcmdlX3dp
dGhvdXRfYnVmZmVyKF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19maXJzdCwKICAgICAgX0JpZGly
ZWN0aW9uYWxJdGVyYXRvciBfX21pZGRsZSwKICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBf
X2xhc3QsCiAgICAgIF9EaXN0YW5jZSBfX2xlbjEsIF9EaXN0YW5jZSBfX2xlbjIpCiAgICB7CiAg
ICAgIGlmIChfX2xlbjEgPT0gMCB8fCBfX2xlbjIgPT0gMCkKIHJldHVybjsKICAgICAgaWYgKF9f
bGVuMSArIF9fbGVuMiA9PSAyKQogewogICBpZiAoKl9fbWlkZGxlIDwgKl9fZmlyc3QpCiAgICAg
c3RkOjppdGVyX3N3YXAoX19maXJzdCwgX19taWRkbGUpOwogICByZXR1cm47CiB9CiAgICAgIF9C
aWRpcmVjdGlvbmFsSXRlcmF0b3IgX19maXJzdF9jdXQgPSBfX2ZpcnN0OwogICAgICBfQmlkaXJl
Y3Rpb25hbEl0ZXJhdG9yIF9fc2Vjb25kX2N1dCA9IF9fbWlkZGxlOwogICAgICBfRGlzdGFuY2Ug
X19sZW4xMSA9IDA7CiAgICAgIF9EaXN0YW5jZSBfX2xlbjIyID0gMDsKICAgICAgaWYgKF9fbGVu
MSA+IF9fbGVuMikKIHsKICAgX19sZW4xMSA9IF9fbGVuMSAvIDI7CiAgIHN0ZDo6YWR2YW5jZShf
X2ZpcnN0X2N1dCwgX19sZW4xMSk7CiAgIF9fc2Vjb25kX2N1dCA9IHN0ZDo6bG93ZXJfYm91bmQo
X19taWRkbGUsIF9fbGFzdCwgKl9fZmlyc3RfY3V0KTsKICAgX19sZW4yMiA9IHN0ZDo6ZGlzdGFu
Y2UoX19taWRkbGUsIF9fc2Vjb25kX2N1dCk7CiB9CiAgICAgIGVsc2UKIHsKICAgX19sZW4yMiA9
IF9fbGVuMiAvIDI7CiAgIHN0ZDo6YWR2YW5jZShfX3NlY29uZF9jdXQsIF9fbGVuMjIpOwogICBf
X2ZpcnN0X2N1dCA9IHN0ZDo6dXBwZXJfYm91bmQoX19maXJzdCwgX19taWRkbGUsICpfX3NlY29u
ZF9jdXQpOwogICBfX2xlbjExID0gc3RkOjpkaXN0YW5jZShfX2ZpcnN0LCBfX2ZpcnN0X2N1dCk7
CiB9CiAgICAgIHN0ZDo6cm90YXRlKF9fZmlyc3RfY3V0LCBfX21pZGRsZSwgX19zZWNvbmRfY3V0
KTsKICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX25ld19taWRkbGUgPSBfX2ZpcnN0X2N1
dDsKICAgICAgc3RkOjphZHZhbmNlKF9fbmV3X21pZGRsZSwgc3RkOjpkaXN0YW5jZShfX21pZGRs
ZSwgX19zZWNvbmRfY3V0KSk7CiAgICAgIHN0ZDo6X19tZXJnZV93aXRob3V0X2J1ZmZlcihfX2Zp
cnN0LCBfX2ZpcnN0X2N1dCwgX19uZXdfbWlkZGxlLAogICAgICBfX2xlbjExLCBfX2xlbjIyKTsK
ICAgICAgc3RkOjpfX21lcmdlX3dpdGhvdXRfYnVmZmVyKF9fbmV3X21pZGRsZSwgX19zZWNvbmRf
Y3V0LCBfX2xhc3QsCiAgICAgIF9fbGVuMSAtIF9fbGVuMTEsIF9fbGVuMiAtIF9fbGVuMjIpOwog
ICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciwgdHlwZW5h
bWUgX0Rpc3RhbmNlLAogICAgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBfX21lcmdl
X3dpdGhvdXRfYnVmZmVyKF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19maXJzdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX21pZGRsZSwKICAgICAg
X0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX2xhc3QsCiAgICAgIF9EaXN0YW5jZSBfX2xlbjEsIF9E
aXN0YW5jZSBfX2xlbjIsCiAgICAgIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAgaWYgKF9f
bGVuMSA9PSAwIHx8IF9fbGVuMiA9PSAwKQogcmV0dXJuOwogICAgICBpZiAoX19sZW4xICsgX19s
ZW4yID09IDIpCiB7CiAgIGlmIChfX2NvbXAoKl9fbWlkZGxlLCAqX19maXJzdCkpCiAgICAgc3Rk
OjppdGVyX3N3YXAoX19maXJzdCwgX19taWRkbGUpOwogICByZXR1cm47CiB9CiAgICAgIF9CaWRp
cmVjdGlvbmFsSXRlcmF0b3IgX19maXJzdF9jdXQgPSBfX2ZpcnN0OwogICAgICBfQmlkaXJlY3Rp
b25hbEl0ZXJhdG9yIF9fc2Vjb25kX2N1dCA9IF9fbWlkZGxlOwogICAgICBfRGlzdGFuY2UgX19s
ZW4xMSA9IDA7CiAgICAgIF9EaXN0YW5jZSBfX2xlbjIyID0gMDsKICAgICAgaWYgKF9fbGVuMSA+
IF9fbGVuMikKIHsKICAgX19sZW4xMSA9IF9fbGVuMSAvIDI7CiAgIHN0ZDo6YWR2YW5jZShfX2Zp
cnN0X2N1dCwgX19sZW4xMSk7CiAgIF9fc2Vjb25kX2N1dCA9IHN0ZDo6bG93ZXJfYm91bmQoX19t
aWRkbGUsIF9fbGFzdCwgKl9fZmlyc3RfY3V0LAogICAgICAgX19jb21wKTsKICAgX19sZW4yMiA9
IHN0ZDo6ZGlzdGFuY2UoX19taWRkbGUsIF9fc2Vjb25kX2N1dCk7CiB9CiAgICAgIGVsc2UKIHsK
ICAgX19sZW4yMiA9IF9fbGVuMiAvIDI7CiAgIHN0ZDo6YWR2YW5jZShfX3NlY29uZF9jdXQsIF9f
bGVuMjIpOwogICBfX2ZpcnN0X2N1dCA9IHN0ZDo6dXBwZXJfYm91bmQoX19maXJzdCwgX19taWRk
bGUsICpfX3NlY29uZF9jdXQsCiAgICAgIF9fY29tcCk7CiAgIF9fbGVuMTEgPSBzdGQ6OmRpc3Rh
bmNlKF9fZmlyc3QsIF9fZmlyc3RfY3V0KTsKIH0KICAgICAgc3RkOjpyb3RhdGUoX19maXJzdF9j
dXQsIF9fbWlkZGxlLCBfX3NlY29uZF9jdXQpOwogICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9y
IF9fbmV3X21pZGRsZSA9IF9fZmlyc3RfY3V0OwogICAgICBzdGQ6OmFkdmFuY2UoX19uZXdfbWlk
ZGxlLCBzdGQ6OmRpc3RhbmNlKF9fbWlkZGxlLCBfX3NlY29uZF9jdXQpKTsKICAgICAgc3RkOjpf
X21lcmdlX3dpdGhvdXRfYnVmZmVyKF9fZmlyc3QsIF9fZmlyc3RfY3V0LCBfX25ld19taWRkbGUs
CiAgICAgIF9fbGVuMTEsIF9fbGVuMjIsIF9fY29tcCk7CiAgICAgIHN0ZDo6X19tZXJnZV93aXRo
b3V0X2J1ZmZlcihfX25ld19taWRkbGUsIF9fc2Vjb25kX2N1dCwgX19sYXN0LAogICAgICBfX2xl
bjEgLSBfX2xlbjExLCBfX2xlbjIgLSBfX2xlbjIyLCBfX2NvbXApOwogICAgfQojIDMxNzUgIi9t
bnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQu
OC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9h
bGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yPgogICAg
dm9pZAogICAgaW5wbGFjZV9tZXJnZShfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fZmlyc3QsCiAg
ICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fbWlkZGxlLAogICAgX0JpZGlyZWN0aW9uYWxJdGVy
YXRvciBfX2xhc3QpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRz
PF9CaWRpcmVjdGlvbmFsSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiAgICAgICAgICBfVmFsdWVUeXBl
OwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfQmlkaXJlY3Rpb25hbEl0
ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCiAgICAgICAgICBfRGlzdGFuY2VUeXBlOwoKCiAgICAg
CgogICAgIAogICAgICA7CiAgICAgIDsKCiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbWlkZGxlIHx8
IF9fbWlkZGxlID09IF9fbGFzdCkKIHJldHVybjsKCiAgICAgIF9EaXN0YW5jZVR5cGUgX19sZW4x
ID0gc3RkOjpkaXN0YW5jZShfX2ZpcnN0LCBfX21pZGRsZSk7CiAgICAgIF9EaXN0YW5jZVR5cGUg
X19sZW4yID0gc3RkOjpkaXN0YW5jZShfX21pZGRsZSwgX19sYXN0KTsKCiAgICAgIF9UZW1wb3Jh
cnlfYnVmZmVyPF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IsIF9WYWx1ZVR5cGU+IF9fYnVmKF9fZmly
c3QsCiAgICAgICAgICBfX2xhc3QpOwogICAgICBpZiAoX19idWYuYmVnaW4oKSA9PSAwKQogc3Rk
OjpfX21lcmdlX3dpdGhvdXRfYnVmZmVyKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QsIF9fbGVu
MSwgX19sZW4yKTsKICAgICAgZWxzZQogc3RkOjpfX21lcmdlX2FkYXB0aXZlKF9fZmlyc3QsIF9f
bWlkZGxlLCBfX2xhc3QsIF9fbGVuMSwgX19sZW4yLAogICAgICAgICBfX2J1Zi5iZWdpbigpLCBf
RGlzdGFuY2VUeXBlKF9fYnVmLnNpemUoKSkpOwogICAgfQojIDMyMzAgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFy
ZT4KICAgIHZvaWQKICAgIGlucGxhY2VfbWVyZ2UoX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX2Zp
cnN0LAogICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX21pZGRsZSwKICAgIF9CaWRpcmVjdGlv
bmFsSXRlcmF0b3IgX19sYXN0LAogICAgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICB0eXBl
ZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yPjo6dmFs
dWVfdHlwZQogICAgICAgICAgX1ZhbHVlVHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVy
YXRvcl90cmFpdHM8X0JpZGlyZWN0aW9uYWxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogICAg
ICAgICAgX0Rpc3RhbmNlVHlwZTsKCgogICAgIAoKICAgICAKCiAgICAgIDsKICAgICAgOwoKICAg
ICAgaWYgKF9fZmlyc3QgPT0gX19taWRkbGUgfHwgX19taWRkbGUgPT0gX19sYXN0KQogcmV0dXJu
OwoKICAgICAgY29uc3QgX0Rpc3RhbmNlVHlwZSBfX2xlbjEgPSBzdGQ6OmRpc3RhbmNlKF9fZmly
c3QsIF9fbWlkZGxlKTsKICAgICAgY29uc3QgX0Rpc3RhbmNlVHlwZSBfX2xlbjIgPSBzdGQ6OmRp
c3RhbmNlKF9fbWlkZGxlLCBfX2xhc3QpOwoKICAgICAgX1RlbXBvcmFyeV9idWZmZXI8X0JpZGly
ZWN0aW9uYWxJdGVyYXRvciwgX1ZhbHVlVHlwZT4gX19idWYoX19maXJzdCwKICAgICAgICAgIF9f
bGFzdCk7CiAgICAgIGlmIChfX2J1Zi5iZWdpbigpID09IDApCiBzdGQ6Ol9fbWVyZ2Vfd2l0aG91
dF9idWZmZXIoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCwgX19sZW4xLAogICAgICAgIF9fbGVu
MiwgX19jb21wKTsKICAgICAgZWxzZQogc3RkOjpfX21lcmdlX2FkYXB0aXZlKF9fZmlyc3QsIF9f
bWlkZGxlLCBfX2xhc3QsIF9fbGVuMSwgX19sZW4yLAogICAgICAgICBfX2J1Zi5iZWdpbigpLCBf
RGlzdGFuY2VUeXBlKF9fYnVmLnNpemUoKSksCiAgICAgICAgIF9fY29tcCk7CiAgICB9CgoKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBfSW5wdXRJdGVyYXRv
cjIsCiAgICB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3I+CiAgICBfT3V0cHV0SXRlcmF0b3IKICAg
IF9fbW92ZV9tZXJnZShfSW5wdXRJdGVyYXRvcjEgX19maXJzdDEsIF9JbnB1dEl0ZXJhdG9yMSBf
X2xhc3QxLAogICBfSW5wdXRJdGVyYXRvcjIgX19maXJzdDIsIF9JbnB1dEl0ZXJhdG9yMiBfX2xh
c3QyLAogICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQpCiAgICB7CiAgICAgIHdoaWxlIChfX2Zp
cnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpCiB7CiAgIGlmICgqX19maXJz
dDIgPCAqX19maXJzdDEpCiAgICAgewogICAgICAgKl9fcmVzdWx0ID0gc3RkOjptb3ZlKCpfX2Zp
cnN0Mik7CiAgICAgICArK19fZmlyc3QyOwogICAgIH0KICAgZWxzZQogICAgIHsKICAgICAgICpf
X3Jlc3VsdCA9IHN0ZDo6bW92ZSgqX19maXJzdDEpOwogICAgICAgKytfX2ZpcnN0MTsKICAgICB9
CiAgICsrX19yZXN1bHQ7CiB9CiAgICAgIHJldHVybiBzdGQ6Om1vdmUoX19maXJzdDIsIF9fbGFz
dDIsIHN0ZDo6bW92ZShfX2ZpcnN0MSwgX19sYXN0MSwgX19yZXN1bHQpKQoKICAgICAgICAgICAg
ICAgICAgOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IxLCB0eXBl
bmFtZSBfSW5wdXRJdGVyYXRvcjIsCiAgICB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3IsIHR5cGVu
YW1lIF9Db21wYXJlPgogICAgX091dHB1dEl0ZXJhdG9yCiAgICBfX21vdmVfbWVyZ2UoX0lucHV0
SXRlcmF0b3IxIF9fZmlyc3QxLCBfSW5wdXRJdGVyYXRvcjEgX19sYXN0MSwKICAgX0lucHV0SXRl
cmF0b3IyIF9fZmlyc3QyLCBfSW5wdXRJdGVyYXRvcjIgX19sYXN0MiwKICAgX091dHB1dEl0ZXJh
dG9yIF9fcmVzdWx0LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIHdoaWxlIChfX2ZpcnN0
MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpCiB7CiAgIGlmIChfX2NvbXAoKl9f
Zmlyc3QyLCAqX19maXJzdDEpKQogICAgIHsKICAgICAgICpfX3Jlc3VsdCA9IHN0ZDo6bW92ZSgq
X19maXJzdDIpOwogICAgICAgKytfX2ZpcnN0MjsKICAgICB9CiAgIGVsc2UKICAgICB7CiAgICAg
ICAqX19yZXN1bHQgPSBzdGQ6Om1vdmUoKl9fZmlyc3QxKTsKICAgICAgICsrX19maXJzdDE7CiAg
ICAgfQogICArK19fcmVzdWx0OwogfQogICAgICByZXR1cm4gc3RkOjptb3ZlKF9fZmlyc3QyLCBf
X2xhc3QyLCBzdGQ6Om1vdmUoX19maXJzdDEsIF9fbGFzdDEsIF9fcmVzdWx0KSkKCiAgICAgICAg
ICAgICAgICAgIDsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yMSwgdHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yMiwKICAgIHR5cGVuYW1lIF9EaXN0
YW5jZT4KICAgIHZvaWQKICAgIF9fbWVyZ2Vfc29ydF9sb29wKF9SYW5kb21BY2Nlc3NJdGVyYXRv
cjEgX19maXJzdCwKICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IxIF9fbGFzdCwKICAgICAg
ICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IyIF9fcmVzdWx0LAogICAgICAgIF9EaXN0YW5jZSBfX3N0
ZXBfc2l6ZSkKICAgIHsKICAgICAgY29uc3QgX0Rpc3RhbmNlIF9fdHdvX3N0ZXAgPSAyICogX19z
dGVwX3NpemU7CgogICAgICB3aGlsZSAoX19sYXN0IC0gX19maXJzdCA+PSBfX3R3b19zdGVwKQog
ewogICBfX3Jlc3VsdCA9IHN0ZDo6X19tb3ZlX21lcmdlKF9fZmlyc3QsIF9fZmlyc3QgKyBfX3N0
ZXBfc2l6ZSwKICAgICAgICAgICBfX2ZpcnN0ICsgX19zdGVwX3NpemUsCiAgICAgICAgICAgX19m
aXJzdCArIF9fdHdvX3N0ZXAsIF9fcmVzdWx0KTsKICAgX19maXJzdCArPSBfX3R3b19zdGVwOwog
fQoKICAgICAgX19zdGVwX3NpemUgPSBzdGQ6Om1pbihfRGlzdGFuY2UoX19sYXN0IC0gX19maXJz
dCksIF9fc3RlcF9zaXplKTsKICAgICAgc3RkOjpfX21vdmVfbWVyZ2UoX19maXJzdCwgX19maXJz
dCArIF9fc3RlcF9zaXplLAogICBfX2ZpcnN0ICsgX19zdGVwX3NpemUsIF9fbGFzdCwgX19yZXN1
bHQpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IxLCB0
eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IyLAogICAgdHlwZW5hbWUgX0Rpc3RhbmNlLCB0
eXBlbmFtZSBfQ29tcGFyZT4KICAgIHZvaWQKICAgIF9fbWVyZ2Vfc29ydF9sb29wKF9SYW5kb21B
Y2Nlc3NJdGVyYXRvcjEgX19maXJzdCwKICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IxIF9f
bGFzdCwKICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IyIF9fcmVzdWx0LCBfRGlzdGFuY2Ug
X19zdGVwX3NpemUsCiAgICAgICAgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICBjb25zdCBf
RGlzdGFuY2UgX190d29fc3RlcCA9IDIgKiBfX3N0ZXBfc2l6ZTsKCiAgICAgIHdoaWxlIChfX2xh
c3QgLSBfX2ZpcnN0ID49IF9fdHdvX3N0ZXApCiB7CiAgIF9fcmVzdWx0ID0gc3RkOjpfX21vdmVf
bWVyZ2UoX19maXJzdCwgX19maXJzdCArIF9fc3RlcF9zaXplLAogICAgICAgICAgIF9fZmlyc3Qg
KyBfX3N0ZXBfc2l6ZSwKICAgICAgICAgICBfX2ZpcnN0ICsgX190d29fc3RlcCwKICAgICAgICAg
ICBfX3Jlc3VsdCwgX19jb21wKTsKICAgX19maXJzdCArPSBfX3R3b19zdGVwOwogfQogICAgICBf
X3N0ZXBfc2l6ZSA9IHN0ZDo6bWluKF9EaXN0YW5jZShfX2xhc3QgLSBfX2ZpcnN0KSwgX19zdGVw
X3NpemUpOwoKICAgICAgc3RkOjpfX21vdmVfbWVyZ2UoX19maXJzdCxfX2ZpcnN0ICsgX19zdGVw
X3NpemUsCiAgIF9fZmlyc3QgKyBfX3N0ZXBfc2l6ZSwgX19sYXN0LCBfX3Jlc3VsdCwgX19jb21w
KTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBl
bmFtZSBfRGlzdGFuY2U+CiAgICB2b2lkCiAgICBfX2NodW5rX2luc2VydGlvbl9zb3J0KF9SYW5k
b21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19s
YXN0LAogICAgICBfRGlzdGFuY2UgX19jaHVua19zaXplKQogICAgewogICAgICB3aGlsZSAoX19s
YXN0IC0gX19maXJzdCA+PSBfX2NodW5rX3NpemUpCiB7CiAgIHN0ZDo6X19pbnNlcnRpb25fc29y
dChfX2ZpcnN0LCBfX2ZpcnN0ICsgX19jaHVua19zaXplKTsKICAgX19maXJzdCArPSBfX2NodW5r
X3NpemU7CiB9CiAgICAgIHN0ZDo6X19pbnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2xhc3QpOwog
ICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1l
IF9EaXN0YW5jZSwKICAgIHR5cGVuYW1lIF9Db21wYXJlPgogICAgdm9pZAogICAgX19jaHVua19p
bnNlcnRpb25fc29ydChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwKICAgICAgX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICAgICAgX0Rpc3RhbmNlIF9fY2h1bmtfc2l6ZSwgX0Nv
bXBhcmUgX19jb21wKQogICAgewogICAgICB3aGlsZSAoX19sYXN0IC0gX19maXJzdCA+PSBfX2No
dW5rX3NpemUpCiB7CiAgIHN0ZDo6X19pbnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2ZpcnN0ICsg
X19jaHVua19zaXplLCBfX2NvbXApOwogICBfX2ZpcnN0ICs9IF9fY2h1bmtfc2l6ZTsKIH0KICAg
ICAgc3RkOjpfX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fbGFzdCwgX19jb21wKTsKICAgIH0K
CiAgZW51bSB7IF9TX2NodW5rX3NpemUgPSA3IH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5k
b21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX1BvaW50ZXI+CiAgICB2b2lkCiAgICBfX21lcmdl
X3NvcnRfd2l0aF9idWZmZXIoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICAg
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfUG9pbnRlciBfX2J1ZmZlcikKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRv
cl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCiBfRGlzdGFu
Y2U7CgogICAgICBjb25zdCBfRGlzdGFuY2UgX19sZW4gPSBfX2xhc3QgLSBfX2ZpcnN0OwogICAg
ICBjb25zdCBfUG9pbnRlciBfX2J1ZmZlcl9sYXN0ID0gX19idWZmZXIgKyBfX2xlbjsKCiAgICAg
IF9EaXN0YW5jZSBfX3N0ZXBfc2l6ZSA9IF9TX2NodW5rX3NpemU7CiAgICAgIHN0ZDo6X19jaHVu
a19pbnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2xhc3QsIF9fc3RlcF9zaXplKTsKCiAgICAgIHdo
aWxlIChfX3N0ZXBfc2l6ZSA8IF9fbGVuKQogewogICBzdGQ6Ol9fbWVyZ2Vfc29ydF9sb29wKF9f
Zmlyc3QsIF9fbGFzdCwgX19idWZmZXIsIF9fc3RlcF9zaXplKTsKICAgX19zdGVwX3NpemUgKj0g
MjsKICAgc3RkOjpfX21lcmdlX3NvcnRfbG9vcChfX2J1ZmZlciwgX19idWZmZXJfbGFzdCwgX19m
aXJzdCwgX19zdGVwX3NpemUpOwogICBfX3N0ZXBfc2l6ZSAqPSAyOwogfQogICAgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9Qb2ludGVyLCB0
eXBlbmFtZSBfQ29tcGFyZT4KICAgIHZvaWQKICAgIF9fbWVyZ2Vfc29ydF93aXRoX2J1ZmZlcihf
UmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwKICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0
b3IgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Qb2ludGVyIF9fYnVmZmVy
LCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3Jf
dHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogX0Rpc3RhbmNl
OwoKICAgICAgY29uc3QgX0Rpc3RhbmNlIF9fbGVuID0gX19sYXN0IC0gX19maXJzdDsKICAgICAg
Y29uc3QgX1BvaW50ZXIgX19idWZmZXJfbGFzdCA9IF9fYnVmZmVyICsgX19sZW47CgogICAgICBf
RGlzdGFuY2UgX19zdGVwX3NpemUgPSBfU19jaHVua19zaXplOwogICAgICBzdGQ6Ol9fY2h1bmtf
aW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19sYXN0LCBfX3N0ZXBfc2l6ZSwgX19jb21wKTsKCiAg
ICAgIHdoaWxlIChfX3N0ZXBfc2l6ZSA8IF9fbGVuKQogewogICBzdGQ6Ol9fbWVyZ2Vfc29ydF9s
b29wKF9fZmlyc3QsIF9fbGFzdCwgX19idWZmZXIsCiAgICAgX19zdGVwX3NpemUsIF9fY29tcCk7
CiAgIF9fc3RlcF9zaXplICo9IDI7CiAgIHN0ZDo6X19tZXJnZV9zb3J0X2xvb3AoX19idWZmZXIs
IF9fYnVmZmVyX2xhc3QsIF9fZmlyc3QsCiAgICAgX19zdGVwX3NpemUsIF9fY29tcCk7CiAgIF9f
c3RlcF9zaXplICo9IDI7CiB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nl
c3NJdGVyYXRvciwgdHlwZW5hbWUgX1BvaW50ZXIsCiAgICB0eXBlbmFtZSBfRGlzdGFuY2U+CiAg
ICB2b2lkCiAgICBfX3N0YWJsZV9zb3J0X2FkYXB0aXZlKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBf
X2ZpcnN0LAogICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBfUG9pbnRlciBfX2J1ZmZlciwgX0Rpc3RhbmNlIF9fYnVmZmVyX3NpemUp
CiAgICB7CiAgICAgIGNvbnN0IF9EaXN0YW5jZSBfX2xlbiA9IChfX2xhc3QgLSBfX2ZpcnN0ICsg
MSkgLyAyOwogICAgICBjb25zdCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19taWRkbGUgPSBfX2Zp
cnN0ICsgX19sZW47CiAgICAgIGlmIChfX2xlbiA+IF9fYnVmZmVyX3NpemUpCiB7CiAgIHN0ZDo6
X19zdGFibGVfc29ydF9hZGFwdGl2ZShfX2ZpcnN0LCBfX21pZGRsZSwKICAgICAgICAgIF9fYnVm
ZmVyLCBfX2J1ZmZlcl9zaXplKTsKICAgc3RkOjpfX3N0YWJsZV9zb3J0X2FkYXB0aXZlKF9fbWlk
ZGxlLCBfX2xhc3QsCiAgICAgICAgICBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSk7CiB9CiAgICAg
IGVsc2UKIHsKICAgc3RkOjpfX21lcmdlX3NvcnRfd2l0aF9idWZmZXIoX19maXJzdCwgX19taWRk
bGUsIF9fYnVmZmVyKTsKICAgc3RkOjpfX21lcmdlX3NvcnRfd2l0aF9idWZmZXIoX19taWRkbGUs
IF9fbGFzdCwgX19idWZmZXIpOwogfQogICAgICBzdGQ6Ol9fbWVyZ2VfYWRhcHRpdmUoX19maXJz
dCwgX19taWRkbGUsIF9fbGFzdCwKICAgICAgIF9EaXN0YW5jZShfX21pZGRsZSAtIF9fZmlyc3Qp
LAogICAgICAgX0Rpc3RhbmNlKF9fbGFzdCAtIF9fbWlkZGxlKSwKICAgICAgIF9fYnVmZmVyLCBf
X2J1ZmZlcl9zaXplKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0
ZXJhdG9yLCB0eXBlbmFtZSBfUG9pbnRlciwKICAgIHR5cGVuYW1lIF9EaXN0YW5jZSwgdHlwZW5h
bWUgX0NvbXBhcmU+CiAgICB2b2lkCiAgICBfX3N0YWJsZV9zb3J0X2FkYXB0aXZlKF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBfUG9pbnRlciBfX2J1ZmZlciwgX0Rpc3RhbmNl
IF9fYnVmZmVyX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Db21wYXJlIF9fY29t
cCkKICAgIHsKICAgICAgY29uc3QgX0Rpc3RhbmNlIF9fbGVuID0gKF9fbGFzdCAtIF9fZmlyc3Qg
KyAxKSAvIDI7CiAgICAgIGNvbnN0IF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX21pZGRsZSA9IF9f
Zmlyc3QgKyBfX2xlbjsKICAgICAgaWYgKF9fbGVuID4gX19idWZmZXJfc2l6ZSkKIHsKICAgc3Rk
OjpfX3N0YWJsZV9zb3J0X2FkYXB0aXZlKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2J1ZmZlciwKICAg
ICAgICAgIF9fYnVmZmVyX3NpemUsIF9fY29tcCk7CiAgIHN0ZDo6X19zdGFibGVfc29ydF9hZGFw
dGl2ZShfX21pZGRsZSwgX19sYXN0LCBfX2J1ZmZlciwKICAgICAgICAgIF9fYnVmZmVyX3NpemUs
IF9fY29tcCk7CiB9CiAgICAgIGVsc2UKIHsKICAgc3RkOjpfX21lcmdlX3NvcnRfd2l0aF9idWZm
ZXIoX19maXJzdCwgX19taWRkbGUsIF9fYnVmZmVyLCBfX2NvbXApOwogICBzdGQ6Ol9fbWVyZ2Vf
c29ydF93aXRoX2J1ZmZlcihfX21pZGRsZSwgX19sYXN0LCBfX2J1ZmZlciwgX19jb21wKTsKIH0K
ICAgICAgc3RkOjpfX21lcmdlX2FkYXB0aXZlKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QsCiAg
ICAgICBfRGlzdGFuY2UoX19taWRkbGUgLSBfX2ZpcnN0KSwKICAgICAgIF9EaXN0YW5jZShfX2xh
c3QgLSBfX21pZGRsZSksCiAgICAgICBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSwKICAgICAgIF9f
Y29tcCk7CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+
CiAgICB2b2lkCiAgICBfX2lucGxhY2Vfc3RhYmxlX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9y
IF9fZmlyc3QsCiAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkKICAgIHsKICAgICAg
aWYgKF9fbGFzdCAtIF9fZmlyc3QgPCAxNSkKIHsKICAgc3RkOjpfX2luc2VydGlvbl9zb3J0KF9f
Zmlyc3QsIF9fbGFzdCk7CiAgIHJldHVybjsKIH0KICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9y
IF9fbWlkZGxlID0gX19maXJzdCArIChfX2xhc3QgLSBfX2ZpcnN0KSAvIDI7CiAgICAgIHN0ZDo6
X19pbnBsYWNlX3N0YWJsZV9zb3J0KF9fZmlyc3QsIF9fbWlkZGxlKTsKICAgICAgc3RkOjpfX2lu
cGxhY2Vfc3RhYmxlX3NvcnQoX19taWRkbGUsIF9fbGFzdCk7CiAgICAgIHN0ZDo6X19tZXJnZV93
aXRob3V0X2J1ZmZlcihfX2ZpcnN0LCBfX21pZGRsZSwgX19sYXN0LAogICAgICBfX21pZGRsZSAt
IF9fZmlyc3QsCiAgICAgIF9fbGFzdCAtIF9fbWlkZGxlKTsKICAgIH0KCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICB2b2lk
CiAgICBfX2lucGxhY2Vfc3RhYmxlX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3Qs
CiAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwgX0NvbXBhcmUgX19jb21wKQogICAg
ewogICAgICBpZiAoX19sYXN0IC0gX19maXJzdCA8IDE1KQogewogICBzdGQ6Ol9faW5zZXJ0aW9u
X3NvcnQoX19maXJzdCwgX19sYXN0LCBfX2NvbXApOwogICByZXR1cm47CiB9CiAgICAgIF9SYW5k
b21BY2Nlc3NJdGVyYXRvciBfX21pZGRsZSA9IF9fZmlyc3QgKyAoX19sYXN0IC0gX19maXJzdCkg
LyAyOwogICAgICBzdGQ6Ol9faW5wbGFjZV9zdGFibGVfc29ydChfX2ZpcnN0LCBfX21pZGRsZSwg
X19jb21wKTsKICAgICAgc3RkOjpfX2lucGxhY2Vfc3RhYmxlX3NvcnQoX19taWRkbGUsIF9fbGFz
dCwgX19jb21wKTsKICAgICAgc3RkOjpfX21lcmdlX3dpdGhvdXRfYnVmZmVyKF9fZmlyc3QsIF9f
bWlkZGxlLCBfX2xhc3QsCiAgICAgIF9fbWlkZGxlIC0gX19maXJzdCwKICAgICAgX19sYXN0IC0g
X19taWRkbGUsCiAgICAgIF9fY29tcCk7CiAgICB9CiMgMzU3MCAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBs
YXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0lucHV0SXRlcmF0b3IyPgog
ICAgYm9vbAogICAgaW5jbHVkZXMoX0lucHV0SXRlcmF0b3IxIF9fZmlyc3QxLCBfSW5wdXRJdGVy
YXRvcjEgX19sYXN0MSwKICAgICAgX0lucHV0SXRlcmF0b3IyIF9fZmlyc3QyLCBfSW5wdXRJdGVy
YXRvcjIgX19sYXN0MikKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFp
dHM8X0lucHV0SXRlcmF0b3IxPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTE7CiAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yMj46OnZhbHVlX3R5cGUK
IF9WYWx1ZVR5cGUyOwoKCiAgICAgCiAgICAgCiAgICAgCiAgICAgCiAgICAgIDsKICAgICAgOwoK
ICAgICAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0MikK
IGlmICgqX19maXJzdDIgPCAqX19maXJzdDEpCiAgIHJldHVybiBmYWxzZTsKIGVsc2UgaWYoKl9f
Zmlyc3QxIDwgKl9fZmlyc3QyKQogICArK19fZmlyc3QxOwogZWxzZQogICArK19fZmlyc3QxLCAr
K19fZmlyc3QyOwoKICAgICAgcmV0dXJuIF9fZmlyc3QyID09IF9fbGFzdDI7CiAgICB9CiMgMzYy
MCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMv
c3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMSwgdHlwZW5h
bWUgX0lucHV0SXRlcmF0b3IyLAogICAgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBib29sCiAgICBp
bmNsdWRlcyhfSW5wdXRJdGVyYXRvcjEgX19maXJzdDEsIF9JbnB1dEl0ZXJhdG9yMSBfX2xhc3Qx
LAogICAgICBfSW5wdXRJdGVyYXRvcjIgX19maXJzdDIsIF9JbnB1dEl0ZXJhdG9yMiBfX2xhc3Qy
LAogICAgICBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRl
cmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yMT46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGUxOwog
ICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcjI+Ojp2
YWx1ZV90eXBlCiBfVmFsdWVUeXBlMjsKCgogICAgIAogICAgIAogICAgIAoKICAgICAKCiAgICAg
IDsKICAgICAgOwoKICAgICAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19maXJzdDIg
IT0gX19sYXN0MikKIGlmIChfX2NvbXAoKl9fZmlyc3QyLCAqX19maXJzdDEpKQogICByZXR1cm4g
ZmFsc2U7CiBlbHNlIGlmKF9fY29tcCgqX19maXJzdDEsICpfX2ZpcnN0MikpCiAgICsrX19maXJz
dDE7CiBlbHNlCiAgICsrX19maXJzdDEsICsrX19maXJzdDI7CgogICAgICByZXR1cm4gX19maXJz
dDIgPT0gX19sYXN0MjsKICAgIH0KIyAzNjc1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcj4KICAgIGJvb2wKICAgIG5leHRfcGVybXV0YXRpb24o
X0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX2ZpcnN0LAogICAgICAgX0JpZGlyZWN0aW9uYWxJdGVy
YXRvciBfX2xhc3QpCiAgICB7CgogICAgIAoKICAgICAKCiAgICAgIDsKCiAgICAgIGlmIChfX2Zp
cnN0ID09IF9fbGFzdCkKIHJldHVybiBmYWxzZTsKICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRv
ciBfX2kgPSBfX2ZpcnN0OwogICAgICArK19faTsKICAgICAgaWYgKF9faSA9PSBfX2xhc3QpCiBy
ZXR1cm4gZmFsc2U7CiAgICAgIF9faSA9IF9fbGFzdDsKICAgICAgLS1fX2k7CgogICAgICBmb3Io
OzspCiB7CiAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19paSA9IF9faTsKICAgLS1fX2k7CiAg
IGlmICgqX19pIDwgKl9faWkpCiAgICAgewogICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBf
X2ogPSBfX2xhc3Q7CiAgICAgICB3aGlsZSAoISgqX19pIDwgKi0tX19qKSkKICB7fQogICAgICAg
c3RkOjppdGVyX3N3YXAoX19pLCBfX2opOwogICAgICAgc3RkOjpyZXZlcnNlKF9faWksIF9fbGFz
dCk7CiAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgIGlmIChfX2kgPT0gX19maXJzdCkKICAg
ICB7CiAgICAgICBzdGQ6OnJldmVyc2UoX19maXJzdCwgX19sYXN0KTsKICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiB9CiAgICB9CiMgMzczMiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVu
YW1lIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgYm9vbAog
ICAgbmV4dF9wZXJtdXRhdGlvbihfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAg
ICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fbGFzdCwgX0NvbXBhcmUgX19jb21wKQogICAgewoK
ICAgICAKCiAgICAgCgoKICAgICAgOwoKICAgICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KQogcmV0
dXJuIGZhbHNlOwogICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9faSA9IF9fZmlyc3Q7CiAg
ICAgICsrX19pOwogICAgICBpZiAoX19pID09IF9fbGFzdCkKIHJldHVybiBmYWxzZTsKICAgICAg
X19pID0gX19sYXN0OwogICAgICAtLV9faTsKCiAgICAgIGZvcig7OykKIHsKICAgX0JpZGlyZWN0
aW9uYWxJdGVyYXRvciBfX2lpID0gX19pOwogICAtLV9faTsKICAgaWYgKF9fY29tcCgqX19pLCAq
X19paSkpCiAgICAgewogICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX2ogPSBfX2xhc3Q7
CiAgICAgICB3aGlsZSAoIWJvb2woX19jb21wKCpfX2ksICotLV9faikpKQogIHt9CiAgICAgICBz
dGQ6Oml0ZXJfc3dhcChfX2ksIF9faik7CiAgICAgICBzdGQ6OnJldmVyc2UoX19paSwgX19sYXN0
KTsKICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgaWYgKF9faSA9PSBfX2ZpcnN0KQogICAg
IHsKICAgICAgIHN0ZDo6cmV2ZXJzZShfX2ZpcnN0LCBfX2xhc3QpOwogICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIH0KICAgIH0KIyAzNzg4ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcj4KICAgIGJvb2wKICAgIHByZXZfcGVybXV0YXRpb24o
X0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX2ZpcnN0LAogICAgICAgX0JpZGlyZWN0aW9uYWxJdGVy
YXRvciBfX2xhc3QpCiAgICB7CgogICAgIAoKICAgICAKCiAgICAgIDsKCiAgICAgIGlmIChfX2Zp
cnN0ID09IF9fbGFzdCkKIHJldHVybiBmYWxzZTsKICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRv
ciBfX2kgPSBfX2ZpcnN0OwogICAgICArK19faTsKICAgICAgaWYgKF9faSA9PSBfX2xhc3QpCiBy
ZXR1cm4gZmFsc2U7CiAgICAgIF9faSA9IF9fbGFzdDsKICAgICAgLS1fX2k7CgogICAgICBmb3Io
OzspCiB7CiAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX19paSA9IF9faTsKICAgLS1fX2k7CiAg
IGlmICgqX19paSA8ICpfX2kpCiAgICAgewogICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBf
X2ogPSBfX2xhc3Q7CiAgICAgICB3aGlsZSAoISgqLS1fX2ogPCAqX19pKSkKICB7fQogICAgICAg
c3RkOjppdGVyX3N3YXAoX19pLCBfX2opOwogICAgICAgc3RkOjpyZXZlcnNlKF9faWksIF9fbGFz
dCk7CiAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgIGlmIChfX2kgPT0gX19maXJzdCkKICAg
ICB7CiAgICAgICBzdGQ6OnJldmVyc2UoX19maXJzdCwgX19sYXN0KTsKICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiB9CiAgICB9CiMgMzg0NSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hh
cmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVu
YW1lIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgYm9vbAog
ICAgcHJldl9wZXJtdXRhdGlvbihfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fZmlyc3QsCiAgICAg
ICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fbGFzdCwgX0NvbXBhcmUgX19jb21wKQogICAgewoK
ICAgICAKCiAgICAgCgoKICAgICAgOwoKICAgICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KQogcmV0
dXJuIGZhbHNlOwogICAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9faSA9IF9fZmlyc3Q7CiAg
ICAgICsrX19pOwogICAgICBpZiAoX19pID09IF9fbGFzdCkKIHJldHVybiBmYWxzZTsKICAgICAg
X19pID0gX19sYXN0OwogICAgICAtLV9faTsKCiAgICAgIGZvcig7OykKIHsKICAgX0JpZGlyZWN0
aW9uYWxJdGVyYXRvciBfX2lpID0gX19pOwogICAtLV9faTsKICAgaWYgKF9fY29tcCgqX19paSwg
Kl9faSkpCiAgICAgewogICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX2ogPSBfX2xhc3Q7
CiAgICAgICB3aGlsZSAoIWJvb2woX19jb21wKCotLV9faiwgKl9faSkpKQogIHt9CiAgICAgICBz
dGQ6Oml0ZXJfc3dhcChfX2ksIF9faik7CiAgICAgICBzdGQ6OnJldmVyc2UoX19paSwgX19sYXN0
KTsKICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgaWYgKF9faSA9PSBfX2ZpcnN0KQogICAg
IHsKICAgICAgIHN0ZDo6cmV2ZXJzZShfX2ZpcnN0LCBfX2xhc3QpOwogICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIH0KICAgIH0KIyAzOTA1ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0lucHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgX1Rw
PgogICAgX091dHB1dEl0ZXJhdG9yCiAgICByZXBsYWNlX2NvcHkoX0lucHV0SXRlcmF0b3IgX19m
aXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQs
CiAgIGNvbnN0IF9UcCYgX19vbGRfdmFsdWUsIGNvbnN0IF9UcCYgX19uZXdfdmFsdWUpCiAgICB7
CgogICAgIAogICAgIAoKICAgICAKCiAgICAgIDsKCiAgICAgIGZvciAoOyBfX2ZpcnN0ICE9IF9f
bGFzdDsgKytfX2ZpcnN0LCArK19fcmVzdWx0KQogaWYgKCpfX2ZpcnN0ID09IF9fb2xkX3ZhbHVl
KQogICAqX19yZXN1bHQgPSBfX25ld192YWx1ZTsKIGVsc2UKICAgKl9fcmVzdWx0ID0gKl9fZmly
c3Q7CiAgICAgIHJldHVybiBfX3Jlc3VsdDsKICAgIH0KIyAzOTQyICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvciwK
ICAgIHR5cGVuYW1lIF9QcmVkaWNhdGUsIHR5cGVuYW1lIF9UcD4KICAgIF9PdXRwdXRJdGVyYXRv
cgogICAgcmVwbGFjZV9jb3B5X2lmKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJh
dG9yIF9fbGFzdCwKICAgICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0LAogICAgICBfUHJlZGlj
YXRlIF9fcHJlZCwgY29uc3QgX1RwJiBfX25ld192YWx1ZSkKICAgIHsKCiAgICAgCiAgICAgCgog
ICAgIAoKICAgICAgOwoKICAgICAgZm9yICg7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3Qs
ICsrX19yZXN1bHQpCiBpZiAoX19wcmVkKCpfX2ZpcnN0KSkKICAgKl9fcmVzdWx0ID0gX19uZXdf
dmFsdWU7CiBlbHNlCiAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogICAgICByZXR1cm4gX19yZXN1
bHQ7CiAgICB9CiMgMzk3MyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3pl
Z2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUv
YysrLzQuOC4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJk
SXRlcmF0b3I+CiAgICBpbmxpbmUgYm9vbAogICAgaXNfc29ydGVkKF9Gb3J3YXJkSXRlcmF0b3Ig
X19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QpCiAgICB7IHJldHVybiBzdGQ6OmlzX3Nv
cnRlZF91bnRpbChfX2ZpcnN0LCBfX2xhc3QpID09IF9fbGFzdDsgfQojIDM5ODcgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFy
ZT4KICAgIGlubGluZSBib29sCiAgICBpc19zb3J0ZWQoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0
LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgIF9Db21wYXJlIF9fY29tcCkKICAgIHsg
cmV0dXJuIHN0ZDo6aXNfc29ydGVkX3VudGlsKF9fZmlyc3QsIF9fbGFzdCwgX19jb21wKSA9PSBf
X2xhc3Q7IH0KIyA0MDAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9j
KysvNC44LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJ
dGVyYXRvcj4KICAgIF9Gb3J3YXJkSXRlcmF0b3IKICAgIGlzX3NvcnRlZF91bnRpbChfRm9yd2Fy
ZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0KQogICAgewoKICAgICAK
ICAgICAKCiAgICAgIDsKCiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKIHJldHVybiBfX2xh
c3Q7CgogICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fbmV4dCA9IF9fZmlyc3Q7CiAgICAgIGZvciAo
KytfX25leHQ7IF9fbmV4dCAhPSBfX2xhc3Q7IF9fZmlyc3QgPSBfX25leHQsICsrX19uZXh0KQog
aWYgKCpfX25leHQgPCAqX19maXJzdCkKICAgcmV0dXJuIF9fbmV4dDsKICAgICAgcmV0dXJuIF9f
bmV4dDsKICAgIH0KIyA0MDMwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC44LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zvcndh
cmRJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBfRm9yd2FyZEl0ZXJhdG9yCiAgICBp
c19zb3J0ZWRfdW50aWwoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9y
IF9fbGFzdCwKICAgICAgX0NvbXBhcmUgX19jb21wKQogICAgewoKICAgICAKICAgICAKCgogICAg
ICA7CgogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiByZXR1cm4gX19sYXN0OwoKICAgICAg
X0ZvcndhcmRJdGVyYXRvciBfX25leHQgPSBfX2ZpcnN0OwogICAgICBmb3IgKCsrX19uZXh0OyBf
X25leHQgIT0gX19sYXN0OyBfX2ZpcnN0ID0gX19uZXh0LCArK19fbmV4dCkKIGlmIChfX2NvbXAo
Kl9fbmV4dCwgKl9fZmlyc3QpKQogICByZXR1cm4gX19uZXh0OwogICAgICByZXR1cm4gX19uZXh0
OwogICAgfQojIDQwNjAgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2Mr
Ky80LjguMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBp
bmxpbmUgcGFpcjxjb25zdCBfVHAmLCBjb25zdCBfVHAmPgogICAgbWlubWF4KGNvbnN0IF9UcCYg
X19hLCBjb25zdCBfVHAmIF9fYikKICAgIHsKCiAgICAgCgogICAgICByZXR1cm4gX19iIDwgX19h
ID8gcGFpcjxjb25zdCBfVHAmLCBjb25zdCBfVHAmPihfX2IsIF9fYSkKICAgICAgICAgICAgICAg
IDogcGFpcjxjb25zdCBfVHAmLCBjb25zdCBfVHAmPihfX2EsIF9fYik7CiAgICB9CiMgNDA4MCAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3Rs
X2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NvbXBhcmU+CiAg
ICBpbmxpbmUgcGFpcjxjb25zdCBfVHAmLCBjb25zdCBfVHAmPgogICAgbWlubWF4KGNvbnN0IF9U
cCYgX19hLCBjb25zdCBfVHAmIF9fYiwgX0NvbXBhcmUgX19jb21wKQogICAgewogICAgICByZXR1
cm4gX19jb21wKF9fYiwgX19hKSA/IHBhaXI8Y29uc3QgX1RwJiwgY29uc3QgX1RwJj4oX19iLCBf
X2EpCiAgICAgICAgICAgICAgICAgICAgICAgOiBwYWlyPGNvbnN0IF9UcCYsIGNvbnN0IF9UcCY+
KF9fYSwgX19iKTsKICAgIH0KIyA0MDk5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZw
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkv
aW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0ZvcndhcmRJdGVyYXRvcj4KICAgIHBhaXI8X0ZvcndhcmRJdGVyYXRvciwgX0ZvcndhcmRJdGVy
YXRvcj4KICAgIG1pbm1heF9lbGVtZW50KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0Zvcndh
cmRJdGVyYXRvciBfX2xhc3QpCiAgICB7CgogICAgIAogICAgIAoKICAgICAgOwoKICAgICAgX0Zv
cndhcmRJdGVyYXRvciBfX25leHQgPSBfX2ZpcnN0OwogICAgICBpZiAoX19maXJzdCA9PSBfX2xh
c3QKICAgfHwgKytfX25leHQgPT0gX19sYXN0KQogcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKF9fZmly
c3QsIF9fZmlyc3QpOwoKICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX21pbiwgX19tYXg7CiAgICAg
IGlmICgqX19uZXh0IDwgKl9fZmlyc3QpCiB7CiAgIF9fbWluID0gX19uZXh0OwogICBfX21heCA9
IF9fZmlyc3Q7CiB9CiAgICAgIGVsc2UKIHsKICAgX19taW4gPSBfX2ZpcnN0OwogICBfX21heCA9
IF9fbmV4dDsKIH0KCiAgICAgIF9fZmlyc3QgPSBfX25leHQ7CiAgICAgICsrX19maXJzdDsKCiAg
ICAgIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkKIHsKICAgX19uZXh0ID0gX19maXJzdDsKICAg
aWYgKCsrX19uZXh0ID09IF9fbGFzdCkKICAgICB7CiAgICAgICBpZiAoKl9fZmlyc3QgPCAqX19t
aW4pCiAgX19taW4gPSBfX2ZpcnN0OwogICAgICAgZWxzZSBpZiAoISgqX19maXJzdCA8ICpfX21h
eCkpCiAgX19tYXggPSBfX2ZpcnN0OwogICAgICAgYnJlYWs7CiAgICAgfQoKICAgaWYgKCpfX25l
eHQgPCAqX19maXJzdCkKICAgICB7CiAgICAgICBpZiAoKl9fbmV4dCA8ICpfX21pbikKICBfX21p
biA9IF9fbmV4dDsKICAgICAgIGlmICghKCpfX2ZpcnN0IDwgKl9fbWF4KSkKICBfX21heCA9IF9f
Zmlyc3Q7CiAgICAgfQogICBlbHNlCiAgICAgewogICAgICAgaWYgKCpfX2ZpcnN0IDwgKl9fbWlu
KQogIF9fbWluID0gX19maXJzdDsKICAgICAgIGlmICghKCpfX25leHQgPCAqX19tYXgpKQogIF9f
bWF4ID0gX19uZXh0OwogICAgIH0KCiAgIF9fZmlyc3QgPSBfX25leHQ7CiAgICsrX19maXJzdDsK
IH0KCiAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihfX21pbiwgX19tYXgpOwogICAgfQojIDQx
NzUgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRz
L3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBl
bmFtZSBfQ29tcGFyZT4KICAgIHBhaXI8X0ZvcndhcmRJdGVyYXRvciwgX0ZvcndhcmRJdGVyYXRv
cj4KICAgIG1pbm1heF9lbGVtZW50KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJ
dGVyYXRvciBfX2xhc3QsCiAgICAgX0NvbXBhcmUgX19jb21wKQogICAgewoKICAgICAKICAgICAK
CgogICAgICA7CgogICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fbmV4dCA9IF9fZmlyc3Q7CiAgICAg
IGlmIChfX2ZpcnN0ID09IF9fbGFzdAogICB8fCArK19fbmV4dCA9PSBfX2xhc3QpCiByZXR1cm4g
c3RkOjptYWtlX3BhaXIoX19maXJzdCwgX19maXJzdCk7CgogICAgICBfRm9yd2FyZEl0ZXJhdG9y
IF9fbWluLCBfX21heDsKICAgICAgaWYgKF9fY29tcCgqX19uZXh0LCAqX19maXJzdCkpCiB7CiAg
IF9fbWluID0gX19uZXh0OwogICBfX21heCA9IF9fZmlyc3Q7CiB9CiAgICAgIGVsc2UKIHsKICAg
X19taW4gPSBfX2ZpcnN0OwogICBfX21heCA9IF9fbmV4dDsKIH0KCiAgICAgIF9fZmlyc3QgPSBf
X25leHQ7CiAgICAgICsrX19maXJzdDsKCiAgICAgIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkK
IHsKICAgX19uZXh0ID0gX19maXJzdDsKICAgaWYgKCsrX19uZXh0ID09IF9fbGFzdCkKICAgICB7
CiAgICAgICBpZiAoX19jb21wKCpfX2ZpcnN0LCAqX19taW4pKQogIF9fbWluID0gX19maXJzdDsK
ICAgICAgIGVsc2UgaWYgKCFfX2NvbXAoKl9fZmlyc3QsICpfX21heCkpCiAgX19tYXggPSBfX2Zp
cnN0OwogICAgICAgYnJlYWs7CiAgICAgfQoKICAgaWYgKF9fY29tcCgqX19uZXh0LCAqX19maXJz
dCkpCiAgICAgewogICAgICAgaWYgKF9fY29tcCgqX19uZXh0LCAqX19taW4pKQogIF9fbWluID0g
X19uZXh0OwogICAgICAgaWYgKCFfX2NvbXAoKl9fZmlyc3QsICpfX21heCkpCiAgX19tYXggPSBf
X2ZpcnN0OwogICAgIH0KICAgZWxzZQogICAgIHsKICAgICAgIGlmIChfX2NvbXAoKl9fZmlyc3Qs
ICpfX21pbikpCiAgX19taW4gPSBfX2ZpcnN0OwogICAgICAgaWYgKCFfX2NvbXAoKl9fbmV4dCwg
Kl9fbWF4KSkKICBfX21heCA9IF9fbmV4dDsKICAgICB9CgogICBfX2ZpcnN0ID0gX19uZXh0Owog
ICArK19fZmlyc3Q7CiB9CgogICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoX19taW4sIF9fbWF4
KTsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBfVHAKICAgIG1p
bihpbml0aWFsaXplcl9saXN0PF9UcD4gX19sKQogICAgeyByZXR1cm4gKnN0ZDo6bWluX2VsZW1l
bnQoX19sLmJlZ2luKCksIF9fbC5lbmQoKSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0
eXBlbmFtZSBfQ29tcGFyZT4KICAgIGlubGluZSBfVHAKICAgIG1pbihpbml0aWFsaXplcl9saXN0
PF9UcD4gX19sLCBfQ29tcGFyZSBfX2NvbXApCiAgICB7IHJldHVybiAqc3RkOjptaW5fZWxlbWVu
dChfX2wuYmVnaW4oKSwgX19sLmVuZCgpLCBfX2NvbXApOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcD4KICAgIGlubGluZSBfVHAKICAgIG1heChpbml0aWFsaXplcl9saXN0PF9UcD4gX19sKQog
ICAgeyByZXR1cm4gKnN0ZDo6bWF4X2VsZW1lbnQoX19sLmJlZ2luKCksIF9fbC5lbmQoKSk7IH0K
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGlubGluZSBf
VHAKICAgIG1heChpbml0aWFsaXplcl9saXN0PF9UcD4gX19sLCBfQ29tcGFyZSBfX2NvbXApCiAg
ICB7IHJldHVybiAqc3RkOjptYXhfZWxlbWVudChfX2wuYmVnaW4oKSwgX19sLmVuZCgpLCBfX2Nv
bXApOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBwYWlyPF9UcCwgX1Rw
PgogICAgbWlubWF4KGluaXRpYWxpemVyX2xpc3Q8X1RwPiBfX2wpCiAgICB7CiAgICAgIHBhaXI8
Y29uc3QgX1RwKiwgY29uc3QgX1RwKj4gX19wID0KIHN0ZDo6bWlubWF4X2VsZW1lbnQoX19sLmJl
Z2luKCksIF9fbC5lbmQoKSk7CiAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcigqX19wLmZpcnN0
LCAqX19wLnNlY29uZCk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUg
X0NvbXBhcmU+CiAgICBpbmxpbmUgcGFpcjxfVHAsIF9UcD4KICAgIG1pbm1heChpbml0aWFsaXpl
cl9saXN0PF9UcD4gX19sLCBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIHBhaXI8Y29uc3Qg
X1RwKiwgY29uc3QgX1RwKj4gX19wID0KIHN0ZDo6bWlubWF4X2VsZW1lbnQoX19sLmJlZ2luKCks
IF9fbC5lbmQoKSwgX19jb21wKTsKICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKCpfX3AuZmly
c3QsICpfX3Auc2Vjb25kKTsKICAgIH0KIyA0MjkyICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0ZvcndhcmRJdGVyYXRvcjEsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IyPgogICAg
Ym9vbAogICAgaXNfcGVybXV0YXRpb24oX0ZvcndhcmRJdGVyYXRvcjEgX19maXJzdDEsIF9Gb3J3
YXJkSXRlcmF0b3IxIF9fbGFzdDEsCiAgICAgX0ZvcndhcmRJdGVyYXRvcjIgX19maXJzdDIpCiAg
ICB7CgoKICAgICAgZm9yICg7IF9fZmlyc3QxICE9IF9fbGFzdDE7ICsrX19maXJzdDEsICsrX19m
aXJzdDIpCiBpZiAoISgqX19maXJzdDEgPT0gKl9fZmlyc3QyKSkKICAgYnJlYWs7CgogICAgICBp
ZiAoX19maXJzdDEgPT0gX19sYXN0MSkKIHJldHVybiB0cnVlOwoKCgogICAgICBfRm9yd2FyZEl0
ZXJhdG9yMiBfX2xhc3QyID0gX19maXJzdDI7CiAgICAgIHN0ZDo6YWR2YW5jZShfX2xhc3QyLCBz
dGQ6OmRpc3RhbmNlKF9fZmlyc3QxLCBfX2xhc3QxKSk7CiAgICAgIGZvciAoX0ZvcndhcmRJdGVy
YXRvcjEgX19zY2FuID0gX19maXJzdDE7IF9fc2NhbiAhPSBfX2xhc3QxOyArK19fc2NhbikKIHsK
ICAgaWYgKF9fc2NhbiAhPSBzdGQ6OmZpbmQoX19maXJzdDEsIF9fc2NhbiwgKl9fc2NhbikpCiAg
ICAgY29udGludWU7CgogICBhdXRvIF9fbWF0Y2hlcyA9IHN0ZDo6Y291bnQoX19maXJzdDIsIF9f
bGFzdDIsICpfX3NjYW4pOwogICBpZiAoMCA9PSBfX21hdGNoZXMKICAgICAgIHx8IHN0ZDo6Y291
bnQoX19zY2FuLCBfX2xhc3QxLCAqX19zY2FuKSAhPSBfX21hdGNoZXMpCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KIyA0MzM3ICIvbW50L3N0b3JlL0FSTS90
b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcjEsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0
b3IyLAogICAgdHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4KICAgIGJvb2wKICAgIGlzX3Blcm11
dGF0aW9uKF9Gb3J3YXJkSXRlcmF0b3IxIF9fZmlyc3QxLCBfRm9yd2FyZEl0ZXJhdG9yMSBfX2xh
c3QxLAogICAgIF9Gb3J3YXJkSXRlcmF0b3IyIF9fZmlyc3QyLCBfQmluYXJ5UHJlZGljYXRlIF9f
cHJlZCkKICAgIHsKCgogICAgICBmb3IgKDsgX19maXJzdDEgIT0gX19sYXN0MTsgKytfX2ZpcnN0
MSwgKytfX2ZpcnN0MikKIGlmICghYm9vbChfX3ByZWQoKl9fZmlyc3QxLCAqX19maXJzdDIpKSkK
ICAgYnJlYWs7CgogICAgICBpZiAoX19maXJzdDEgPT0gX19sYXN0MSkKIHJldHVybiB0cnVlOwoK
CgogICAgICBfRm9yd2FyZEl0ZXJhdG9yMiBfX2xhc3QyID0gX19maXJzdDI7CiAgICAgIHN0ZDo6
YWR2YW5jZShfX2xhc3QyLCBzdGQ6OmRpc3RhbmNlKF9fZmlyc3QxLCBfX2xhc3QxKSk7CiAgICAg
IGZvciAoX0ZvcndhcmRJdGVyYXRvcjEgX19zY2FuID0gX19maXJzdDE7IF9fc2NhbiAhPSBfX2xh
c3QxOyArK19fc2NhbikKIHsKICAgdXNpbmcgc3RkOjpwbGFjZWhvbGRlcnM6Ol8xOwoKICAgaWYg
KF9fc2NhbiAhPSBzdGQ6OmZpbmRfaWYoX19maXJzdDEsIF9fc2NhbiwKICAgICAgc3RkOjpiaW5k
KF9fcHJlZCwgXzEsICpfX3NjYW4pKSkKICAgICBjb250aW51ZTsKCiAgIGF1dG8gX19tYXRjaGVz
ID0gc3RkOjpjb3VudF9pZihfX2ZpcnN0MiwgX19sYXN0MiwKICAgICAgc3RkOjpiaW5kKF9fcHJl
ZCwgXzEsICpfX3NjYW4pKTsKICAgaWYgKDAgPT0gX19tYXRjaGVzCiAgICAgICB8fCBzdGQ6OmNv
dW50X2lmKF9fc2NhbiwgX19sYXN0MSwKICAgICAgICAgIHN0ZDo6YmluZChfX3ByZWQsIF8xLCAq
X19zY2FuKSkgIT0gX19tYXRjaGVzKQogICAgIHJldHVybiBmYWxzZTsKIH0KICAgICAgcmV0dXJu
IHRydWU7CiAgICB9CiMgNDM4NyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5k
b21BY2Nlc3NJdGVyYXRvciwKICAgIHR5cGVuYW1lIF9Vbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJh
dG9yPgogICAgdm9pZAogICAgc2h1ZmZsZShfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwg
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICAgICBfVW5pZm9ybVJhbmRvbU51bWJlckdl
bmVyYXRvciYmIF9fZykKICAgIHsKCiAgICAgCgogICAgICA7CgogICAgICBpZiAoX19maXJzdCA9
PSBfX2xhc3QpCiByZXR1cm47CgogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0
czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUKIF9EaXN0YW5jZVR5cGU7
CgogICAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxfRGlzdGFuY2VUeXBl
Pjo6dHlwZSBfX3VkX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjp1bmlmb3JtX2lu
dF9kaXN0cmlidXRpb248X191ZF90eXBlPiBfX2Rpc3RyX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgX19kaXN0cl90eXBlOjpwYXJhbV90eXBlIF9fcF90eXBlOwogICAgICBfX2Rpc3RyX3R5
cGUgX19kOwoKICAgICAgZm9yIChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19pID0gX19maXJzdCAr
IDE7IF9faSAhPSBfX2xhc3Q7ICsrX19pKQogc3RkOjppdGVyX3N3YXAoX19pLCBfX2ZpcnN0ICsg
X19kKF9fZywgX19wX3R5cGUoMCwgX19pIC0gX19maXJzdCkpKTsKICAgIH0KCgoKCgoKCiMgNDQz
MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMv
c3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFt
ZSBfRnVuY3Rpb24+CiAgICBfRnVuY3Rpb24KICAgIGZvcl9lYWNoKF9JbnB1dEl0ZXJhdG9yIF9f
Zmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwgX0Z1bmN0aW9uIF9fZikKICAgIHsKCiAgICAg
CiAgICAgIDsKICAgICAgZm9yICg7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiBfX2Yo
Kl9fZmlyc3QpOwogICAgICByZXR1cm4gc3RkOjptb3ZlKF9fZik7CiAgICB9CiMgNDQ1MyAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44
LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2Fs
Z28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfVHA+
CiAgICBpbmxpbmUgX0lucHV0SXRlcmF0b3IKICAgIGZpbmQoX0lucHV0SXRlcmF0b3IgX19maXJz
dCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogIGNvbnN0IF9UcCYgX192YWwpCiAgICB7CgogICAg
IAogICAgIAoKICAgICAgOwogICAgICByZXR1cm4gc3RkOjpfX2ZpbmQoX19maXJzdCwgX19sYXN0
LCBfX3ZhbCwKICAgICAgICAgICBzdGQ6Ol9faXRlcmF0b3JfY2F0ZWdvcnkoX19maXJzdCkpOwog
ICAgfQojIDQ0NzcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjguMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRv
ciwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIGlubGluZSBfSW5wdXRJdGVyYXRvcgogICAgZmlu
ZF9pZihfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAg
X1ByZWRpY2F0ZSBfX3ByZWQpCiAgICB7CgogICAgIAogICAgIAoKICAgICAgOwogICAgICByZXR1
cm4gc3RkOjpfX2ZpbmRfaWYoX19maXJzdCwgX19sYXN0LCBfX3ByZWQsCiAgICAgICBzdGQ6Ol9f
aXRlcmF0b3JfY2F0ZWdvcnkoX19maXJzdCkpOwogICAgfQojIDQ1MDcgIi9tbnQvc3RvcmUvQVJN
L3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVn
ZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRv
cj4KICAgIF9JbnB1dEl0ZXJhdG9yCiAgICBmaW5kX2ZpcnN0X29mKF9JbnB1dEl0ZXJhdG9yIF9f
Zmlyc3QxLCBfSW5wdXRJdGVyYXRvciBfX2xhc3QxLAogICAgX0ZvcndhcmRJdGVyYXRvciBfX2Zp
cnN0MiwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QyKQogICAgewoKICAgICAKICAgICAKICAgICAK
CgogICAgICA7CiAgICAgIDsKCiAgICAgIGZvciAoOyBfX2ZpcnN0MSAhPSBfX2xhc3QxOyArK19f
Zmlyc3QxKQogZm9yIChfRm9yd2FyZEl0ZXJhdG9yIF9faXRlciA9IF9fZmlyc3QyOyBfX2l0ZXIg
IT0gX19sYXN0MjsgKytfX2l0ZXIpCiAgIGlmICgqX19maXJzdDEgPT0gKl9faXRlcikKICAgICBy
ZXR1cm4gX19maXJzdDE7CiAgICAgIHJldHVybiBfX2xhc3QxOwogICAgfQojIDQ1NDcgIi9tbnQv
c3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4x
L2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdv
LmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX0Zvcndh
cmRJdGVyYXRvciwKICAgIHR5cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+CiAgICBfSW5wdXRJdGVy
YXRvcgogICAgZmluZF9maXJzdF9vZihfSW5wdXRJdGVyYXRvciBfX2ZpcnN0MSwgX0lucHV0SXRl
cmF0b3IgX19sYXN0MSwKICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdDIsIF9Gb3J3YXJkSXRl
cmF0b3IgX19sYXN0MiwKICAgIF9CaW5hcnlQcmVkaWNhdGUgX19jb21wKQogICAgewoKICAgICAK
ICAgICAKICAgICAKCgogICAgICA7CiAgICAgIDsKCiAgICAgIGZvciAoOyBfX2ZpcnN0MSAhPSBf
X2xhc3QxOyArK19fZmlyc3QxKQogZm9yIChfRm9yd2FyZEl0ZXJhdG9yIF9faXRlciA9IF9fZmly
c3QyOyBfX2l0ZXIgIT0gX19sYXN0MjsgKytfX2l0ZXIpCiAgIGlmIChfX2NvbXAoKl9fZmlyc3Qx
LCAqX19pdGVyKSkKICAgICByZXR1cm4gX19maXJzdDE7CiAgICAgIHJldHVybiBfX2xhc3QxOwog
ICAgfQojIDQ1NzkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjguMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJh
dG9yPgogICAgX0ZvcndhcmRJdGVyYXRvcgogICAgYWRqYWNlbnRfZmluZChfRm9yd2FyZEl0ZXJh
dG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0KQogICAgewoKICAgICAKICAgICAK
CiAgICAgIDsKICAgICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KQogcmV0dXJuIF9fbGFzdDsKICAg
ICAgX0ZvcndhcmRJdGVyYXRvciBfX25leHQgPSBfX2ZpcnN0OwogICAgICB3aGlsZSgrK19fbmV4
dCAhPSBfX2xhc3QpCiB7CiAgIGlmICgqX19maXJzdCA9PSAqX19uZXh0KQogICAgIHJldHVybiBf
X2ZpcnN0OwogICBfX2ZpcnN0ID0gX19uZXh0OwogfQogICAgICByZXR1cm4gX19sYXN0OwogICAg
fQojIDQ2MTEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljgu
MS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9y
LCB0eXBlbmFtZSBfQmluYXJ5UHJlZGljYXRlPgogICAgX0ZvcndhcmRJdGVyYXRvcgogICAgYWRq
YWNlbnRfZmluZChfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19s
YXN0LAogICAgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkKQogICAgewoKICAgICAKICAg
ICAKCgogICAgICA7CiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKIHJldHVybiBfX2xhc3Q7
CiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19uZXh0ID0gX19maXJzdDsKICAgICAgd2hpbGUoKytf
X25leHQgIT0gX19sYXN0KQogewogICBpZiAoX19iaW5hcnlfcHJlZCgqX19maXJzdCwgKl9fbmV4
dCkpCiAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgIF9fZmlyc3QgPSBfX25leHQ7CiB9CiAgICAgIHJl
dHVybiBfX2xhc3Q7CiAgICB9CiMgNDY0MyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRm
cC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
L2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1l
IF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfVHA+CiAgICB0eXBlbmFtZSBpdGVyYXRvcl90cmFp
dHM8X0lucHV0SXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUKICAgIGNvdW50KF9JbnB1dEl0ZXJh
dG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwgY29uc3QgX1RwJiBfX3ZhbHVlKQog
ICAgewoKICAgICAKICAgICAKCiAgICAgIDsKICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRz
PF9JbnB1dEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIF9fbiA9IDA7CiAgICAgIGZvciAoOyBf
X2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogaWYgKCpfX2ZpcnN0ID09IF9fdmFsdWUpCiAg
ICsrX19uOwogICAgICByZXR1cm4gX19uOwogICAgfQojIDQ2NjggIi9tbnQvc3RvcmUvQVJNL3Rv
b2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQt
bGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgIHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQog
ICAgY291bnRfaWYoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0
LCBfUHJlZGljYXRlIF9fcHJlZCkKICAgIHsKCiAgICAgCiAgICAgCgogICAgICA7CiAgICAgIHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSBf
X24gPSAwOwogICAgICBmb3IgKDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKIGlmIChf
X3ByZWQoKl9fZmlyc3QpKQogICArK19fbjsKICAgICAgcmV0dXJuIF9fbjsKICAgIH0KIyA0NzEw
ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9z
dGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcjEsIHR5cGVu
YW1lIF9Gb3J3YXJkSXRlcmF0b3IyPgogICAgX0ZvcndhcmRJdGVyYXRvcjEKICAgIHNlYXJjaChf
Rm9yd2FyZEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0ZvcndhcmRJdGVyYXRvcjEgX19sYXN0MSwKICAg
IF9Gb3J3YXJkSXRlcmF0b3IyIF9fZmlyc3QyLCBfRm9yd2FyZEl0ZXJhdG9yMiBfX2xhc3QyKQog
ICAgewoKICAgICAKICAgICAKICAgICAKCgogICAgICA7CiAgICAgIDsKCgogICAgICBpZiAoX19m
aXJzdDEgPT0gX19sYXN0MSB8fCBfX2ZpcnN0MiA9PSBfX2xhc3QyKQogcmV0dXJuIF9fZmlyc3Qx
OwoKCiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IyIF9fcDEoX19maXJzdDIpOwogICAgICBpZiAoKytf
X3AxID09IF9fbGFzdDIpCiByZXR1cm4gc3RkOjpmaW5kKF9fZmlyc3QxLCBfX2xhc3QxLCAqX19m
aXJzdDIpOwoKCiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IyIF9fcDsKICAgICAgX0ZvcndhcmRJdGVy
YXRvcjEgX19jdXJyZW50ID0gX19maXJzdDE7CgogICAgICBmb3IgKDs7KQogewogICBfX2ZpcnN0
MSA9IHN0ZDo6ZmluZChfX2ZpcnN0MSwgX19sYXN0MSwgKl9fZmlyc3QyKTsKICAgaWYgKF9fZmly
c3QxID09IF9fbGFzdDEpCiAgICAgcmV0dXJuIF9fbGFzdDE7CgogICBfX3AgPSBfX3AxOwogICBf
X2N1cnJlbnQgPSBfX2ZpcnN0MTsKICAgaWYgKCsrX19jdXJyZW50ID09IF9fbGFzdDEpCiAgICAg
cmV0dXJuIF9fbGFzdDE7CgogICB3aGlsZSAoKl9fY3VycmVudCA9PSAqX19wKQogICAgIHsKICAg
ICAgIGlmICgrK19fcCA9PSBfX2xhc3QyKQogIHJldHVybiBfX2ZpcnN0MTsKICAgICAgIGlmICgr
K19fY3VycmVudCA9PSBfX2xhc3QxKQogIHJldHVybiBfX2xhc3QxOwogICAgIH0KICAgKytfX2Zp
cnN0MTsKIH0KICAgICAgcmV0dXJuIF9fZmlyc3QxOwogICAgfQojIDQ3ODEgIi9tbnQvc3RvcmUv
QVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgiIDMK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yMSwgdHlwZW5hbWUgX0ZvcndhcmRJ
dGVyYXRvcjIsCiAgICB0eXBlbmFtZSBfQmluYXJ5UHJlZGljYXRlPgogICAgX0ZvcndhcmRJdGVy
YXRvcjEKICAgIHNlYXJjaChfRm9yd2FyZEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0ZvcndhcmRJdGVy
YXRvcjEgX19sYXN0MSwKICAgIF9Gb3J3YXJkSXRlcmF0b3IyIF9fZmlyc3QyLCBfRm9yd2FyZEl0
ZXJhdG9yMiBfX2xhc3QyLAogICAgX0JpbmFyeVByZWRpY2F0ZSBfX3ByZWRpY2F0ZSkKICAgIHsK
CiAgICAgCiAgICAgCiAgICAgCgoKICAgICAgOwogICAgICA7CgoKICAgICAgaWYgKF9fZmlyc3Qx
ID09IF9fbGFzdDEgfHwgX19maXJzdDIgPT0gX19sYXN0MikKIHJldHVybiBfX2ZpcnN0MTsKCgog
ICAgICBfRm9yd2FyZEl0ZXJhdG9yMiBfX3AxKF9fZmlyc3QyKTsKICAgICAgaWYgKCsrX19wMSA9
PSBfX2xhc3QyKQogewogICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MQogICAmJiAhYm9vbChf
X3ByZWRpY2F0ZSgqX19maXJzdDEsICpfX2ZpcnN0MikpKQogICAgICsrX19maXJzdDE7CiAgIHJl
dHVybiBfX2ZpcnN0MTsKIH0KCgogICAgICBfRm9yd2FyZEl0ZXJhdG9yMiBfX3A7CiAgICAgIF9G
b3J3YXJkSXRlcmF0b3IxIF9fY3VycmVudCA9IF9fZmlyc3QxOwoKICAgICAgZm9yICg7OykKIHsK
ICAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEKICAgJiYgIWJvb2woX19wcmVkaWNhdGUoKl9f
Zmlyc3QxLCAqX19maXJzdDIpKSkKICAgICArK19fZmlyc3QxOwogICBpZiAoX19maXJzdDEgPT0g
X19sYXN0MSkKICAgICByZXR1cm4gX19sYXN0MTsKCiAgIF9fcCA9IF9fcDE7CiAgIF9fY3VycmVu
dCA9IF9fZmlyc3QxOwogICBpZiAoKytfX2N1cnJlbnQgPT0gX19sYXN0MSkKICAgICByZXR1cm4g
X19sYXN0MTsKCiAgIHdoaWxlIChfX3ByZWRpY2F0ZSgqX19jdXJyZW50LCAqX19wKSkKICAgICB7
CiAgICAgICBpZiAoKytfX3AgPT0gX19sYXN0MikKICByZXR1cm4gX19maXJzdDE7CiAgICAgICBp
ZiAoKytfX2N1cnJlbnQgPT0gX19sYXN0MSkKICByZXR1cm4gX19sYXN0MTsKICAgICB9CiAgICsr
X19maXJzdDE7CiB9CiAgICAgIHJldHVybiBfX2ZpcnN0MTsKICAgIH0KIyA0ODU2ICIvbW50L3N0
b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9h
cm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfYWxnby5o
IiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX0ludGVn
ZXIsIHR5cGVuYW1lIF9UcD4KICAgIF9Gb3J3YXJkSXRlcmF0b3IKICAgIHNlYXJjaF9uKF9Gb3J3
YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgIF9JbnRl
Z2VyIF9fY291bnQsIGNvbnN0IF9UcCYgX192YWwpCiAgICB7CgogICAgIAogICAgIAoKICAgICAg
OwoKICAgICAgaWYgKF9fY291bnQgPD0gMCkKIHJldHVybiBfX2ZpcnN0OwogICAgICBpZiAoX19j
b3VudCA9PSAxKQogcmV0dXJuIHN0ZDo6ZmluZChfX2ZpcnN0LCBfX2xhc3QsIF9fdmFsKTsKICAg
ICAgcmV0dXJuIHN0ZDo6X19zZWFyY2hfbihfX2ZpcnN0LCBfX2xhc3QsIF9fY291bnQsIF9fdmFs
LAogICAgICAgIHN0ZDo6X19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0KSk7CiAgICB9CiMgNDg5
MyAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMv
c3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVu
YW1lIF9JbnRlZ2VyLCB0eXBlbmFtZSBfVHAsCiAgICAgICAgICAgdHlwZW5hbWUgX0JpbmFyeVBy
ZWRpY2F0ZT4KICAgIF9Gb3J3YXJkSXRlcmF0b3IKICAgIHNlYXJjaF9uKF9Gb3J3YXJkSXRlcmF0
b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgIF9JbnRlZ2VyIF9fY291
bnQsIGNvbnN0IF9UcCYgX192YWwsCiAgICAgIF9CaW5hcnlQcmVkaWNhdGUgX19iaW5hcnlfcHJl
ZCkKICAgIHsKCiAgICAgCiAgICAgCgogICAgICA7CgogICAgICBpZiAoX19jb3VudCA8PSAwKQog
cmV0dXJuIF9fZmlyc3Q7CiAgICAgIGlmIChfX2NvdW50ID09IDEpCiB7CiAgIHdoaWxlIChfX2Zp
cnN0ICE9IF9fbGFzdCAmJiAhYm9vbChfX2JpbmFyeV9wcmVkKCpfX2ZpcnN0LCBfX3ZhbCkpKQog
ICAgICsrX19maXJzdDsKICAgcmV0dXJuIF9fZmlyc3Q7CiB9CiAgICAgIHJldHVybiBzdGQ6Ol9f
c2VhcmNoX24oX19maXJzdCwgX19sYXN0LCBfX2NvdW50LCBfX3ZhbCwgX19iaW5hcnlfcHJlZCwK
ICAgICAgICBzdGQ6Ol9faXRlcmF0b3JfY2F0ZWdvcnkoX19maXJzdCkpOwogICAgfQojIDQ5MzUg
Ii9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJp
LTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0
bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUg
X091dHB1dEl0ZXJhdG9yLAogICAgdHlwZW5hbWUgX1VuYXJ5T3BlcmF0aW9uPgogICAgX091dHB1
dEl0ZXJhdG9yCiAgICB0cmFuc2Zvcm0oX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRl
cmF0b3IgX19sYXN0LAogICAgICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0LCBfVW5hcnlPcGVy
YXRpb24gX191bmFyeV9vcCkKICAgIHsKCiAgICAgCiAgICAgCgoKICAgICAgOwoKICAgICAgZm9y
ICg7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QsICsrX19yZXN1bHQpCiAqX19yZXN1bHQg
PSBfX3VuYXJ5X29wKCpfX2ZpcnN0KTsKICAgICAgcmV0dXJuIF9fcmVzdWx0OwogICAgfQojIDQ5
NzIgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRz
L3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjEsIHR5cGVu
YW1lIF9JbnB1dEl0ZXJhdG9yMiwKICAgIHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvciwgdHlwZW5h
bWUgX0JpbmFyeU9wZXJhdGlvbj4KICAgIF9PdXRwdXRJdGVyYXRvcgogICAgdHJhbnNmb3JtKF9J
bnB1dEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0b3IxIF9fbGFzdDEsCiAgICAgICBf
SW5wdXRJdGVyYXRvcjIgX19maXJzdDIsIF9PdXRwdXRJdGVyYXRvciBfX3Jlc3VsdCwKICAgICAg
IF9CaW5hcnlPcGVyYXRpb24gX19iaW5hcnlfb3ApCiAgICB7CgogICAgIAogICAgIAogICAgIAoK
CiAgICAgIDsKCiAgICAgIGZvciAoOyBfX2ZpcnN0MSAhPSBfX2xhc3QxOyArK19fZmlyc3QxLCAr
K19fZmlyc3QyLCArK19fcmVzdWx0KQogKl9fcmVzdWx0ID0gX19iaW5hcnlfb3AoKl9fZmlyc3Qx
LCAqX19maXJzdDIpOwogICAgICByZXR1cm4gX19yZXN1bHQ7CiAgICB9CiMgNTAwNSAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2FsZ28u
aCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9UcD4K
ICAgIHZvaWQKICAgIHJlcGxhY2UoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0
ZXJhdG9yIF9fbGFzdCwKICAgICBjb25zdCBfVHAmIF9fb2xkX3ZhbHVlLCBjb25zdCBfVHAmIF9f
bmV3X3ZhbHVlKQogICAgewoKICAgICAKCiAgICAgCgogICAgIAoKICAgICAgOwoKICAgICAgZm9y
ICg7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiBpZiAoKl9fZmlyc3QgPT0gX19vbGRf
dmFsdWUpCiAgICpfX2ZpcnN0ID0gX19uZXdfdmFsdWU7CiAgICB9CiMgNTAzNyAiL21udC9zdG9y
ZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJt
LXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2FsZ28uaCIg
MwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9QcmVkaWNh
dGUsIHR5cGVuYW1lIF9UcD4KICAgIHZvaWQKICAgIHJlcGxhY2VfaWYoX0ZvcndhcmRJdGVyYXRv
ciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgICBfUHJlZGljYXRlIF9f
cHJlZCwgY29uc3QgX1RwJiBfX25ld192YWx1ZSkKICAgIHsKCiAgICAgCgogICAgIAoKICAgICAK
CiAgICAgIDsKCiAgICAgIGZvciAoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogaWYg
KF9fcHJlZCgqX19maXJzdCkpCiAgICpfX2ZpcnN0ID0gX19uZXdfdmFsdWU7CiAgICB9CiMgNTA2
OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMv
c3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVu
YW1lIF9HZW5lcmF0b3I+CiAgICB2b2lkCiAgICBnZW5lcmF0ZShfRm9yd2FyZEl0ZXJhdG9yIF9f
Zmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgICBfR2VuZXJhdG9yIF9fZ2VuKQog
ICAgewoKICAgICAKICAgICAKCiAgICAgIDsKCiAgICAgIGZvciAoOyBfX2ZpcnN0ICE9IF9fbGFz
dDsgKytfX2ZpcnN0KQogKl9fZmlyc3QgPSBfX2dlbigpOwogICAgfQojIDUxMDAgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9TaXplLCB0
eXBlbmFtZSBfR2VuZXJhdG9yPgogICAgX091dHB1dEl0ZXJhdG9yCiAgICBnZW5lcmF0ZV9uKF9P
dXRwdXRJdGVyYXRvciBfX2ZpcnN0LCBfU2l6ZSBfX24sIF9HZW5lcmF0b3IgX19nZW4pCiAgICB7
CgogICAgIAoKCgogICAgICBmb3IgKF9fZGVjbHR5cGUoX19uICsgMCkgX19uaXRlciA9IF9fbjsK
ICAgIF9fbml0ZXIgPiAwOyAtLV9fbml0ZXIsICsrX19maXJzdCkKICpfX2ZpcnN0ID0gX19nZW4o
KTsKICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICB9CiMgNTEzNyAiL21udC9zdG9yZS9BUk0vdG9v
bGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBs
YXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3I+CiAg
ICBpbmxpbmUgX091dHB1dEl0ZXJhdG9yCiAgICB1bmlxdWVfY29weShfSW5wdXRJdGVyYXRvciBf
X2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0
KQogICAgewoKICAgICAKICAgICAKCiAgICAgCgogICAgICA7CgogICAgICBpZiAoX19maXJzdCA9
PSBfX2xhc3QpCiByZXR1cm4gX19yZXN1bHQ7CiAgICAgIHJldHVybiBzdGQ6Ol9fdW5pcXVlX2Nv
cHkoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwKICAgIHN0ZDo6X19pdGVyYXRvcl9jYXRlZ29y
eShfX2ZpcnN0KSwKICAgIHN0ZDo6X19pdGVyYXRvcl9jYXRlZ29yeShfX3Jlc3VsdCkpOwogICAg
fQojIDUxNzYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51
eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80Ljgu
MS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwg
dHlwZW5hbWUgX091dHB1dEl0ZXJhdG9yLAogICAgdHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4K
ICAgIGlubGluZSBfT3V0cHV0SXRlcmF0b3IKICAgIHVuaXF1ZV9jb3B5KF9JbnB1dEl0ZXJhdG9y
IF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1
bHQsCiAgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkKQogICAgewoKICAgICAKICAgICAK
CiAgICAgIDsKCiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKIHJldHVybiBfX3Jlc3VsdDsK
ICAgICAgcmV0dXJuIHN0ZDo6X191bmlxdWVfY29weShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0
LCBfX2JpbmFyeV9wcmVkLAogICAgc3RkOjpfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpLAog
ICAgc3RkOjpfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fcmVzdWx0KSk7CiAgICB9CiMgNTIwOCAiL21u
dC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44
LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2Fs
Z28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4KICAgIGlu
bGluZSB2b2lkCiAgICByYW5kb21fc2h1ZmZsZShfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJz
dCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkKICAgIHsKCiAgICAgCgogICAgICA7Cgog
ICAgICBpZiAoX19maXJzdCAhPSBfX2xhc3QpCiBmb3IgKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBf
X2kgPSBfX2ZpcnN0ICsgMTsgX19pICE9IF9fbGFzdDsgKytfX2kpCiAgIHN0ZDo6aXRlcl9zd2Fw
KF9faSwgX19maXJzdCArIChzdGQ6OnJhbmQoKSAlICgoX19pIC0gX19maXJzdCkgKyAxKSkpOwog
ICAgfQojIDUyMzYgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80
LjguMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNz
SXRlcmF0b3IsIHR5cGVuYW1lIF9SYW5kb21OdW1iZXJHZW5lcmF0b3I+CiAgICB2b2lkCiAgICBy
YW5kb21fc2h1ZmZsZShfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yIF9fbGFzdCwKCiAgICAgX1JhbmRvbU51bWJlckdlbmVyYXRvciYmIF9fcmFuZCkK
CgoKICAgIHsKCiAgICAgCgogICAgICA7CgogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiBy
ZXR1cm47CiAgICAgIGZvciAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9faSA9IF9fZmlyc3QgKyAx
OyBfX2kgIT0gX19sYXN0OyArK19faSkKIHN0ZDo6aXRlcl9zd2FwKF9faSwgX19maXJzdCArIF9f
cmFuZCgoX19pIC0gX19maXJzdCkgKyAxKSk7CiAgICB9CiMgNTI3MiAiL21udC9zdG9yZS9BUk0v
dG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdl
ZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRl
bXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAg
ICBpbmxpbmUgX0ZvcndhcmRJdGVyYXRvcgogICAgcGFydGl0aW9uKF9Gb3J3YXJkSXRlcmF0b3Ig
X19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgICBfUHJlZGljYXRlIF9fcHJl
ZCkKICAgIHsKCiAgICAgCgogICAgIAoKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19wYXJ0
aXRpb24oX19maXJzdCwgX19sYXN0LCBfX3ByZWQsCiAgICAgICAgIHN0ZDo6X19pdGVyYXRvcl9j
YXRlZ29yeShfX2ZpcnN0KSk7CiAgICB9CiMgNTMwNiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5
cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4KICAgIGlubGluZSB2b2lkCiAgICBwYXJ0aWFs
X3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsCiAgIF9SYW5kb21BY2Nlc3NJdGVy
YXRvciBfX21pZGRsZSwKICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkKICAgIHsKICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9y
Pjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTsKCgogICAgIAoKICAgICAKICAgICAgOwogICAgICA7
CgogICAgICBzdGQ6Ol9faGVhcF9zZWxlY3QoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCk7CiAg
ICAgIHN0ZDo6c29ydF9oZWFwKF9fZmlyc3QsIF9fbWlkZGxlKTsKICAgIH0KIyA1MzQ1ICIvbW50
L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00Ljgu
MS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfYWxn
by5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFt
ZSBfQ29tcGFyZT4KICAgIGlubGluZSB2b2lkCiAgICBwYXJ0aWFsX3NvcnQoX1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yIF9fZmlyc3QsCiAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX21pZGRsZSwKICAg
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICAgX0NvbXBhcmUgX19jb21wKQogICAgewog
ICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0
b3I+Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBlOwoKCiAgICAgCgogICAgIAoKICAgICAgOwogICAg
ICA7CgogICAgICBzdGQ6Ol9faGVhcF9zZWxlY3QoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCwg
X19jb21wKTsKICAgICAgc3RkOjpzb3J0X2hlYXAoX19maXJzdCwgX19taWRkbGUsIF9fY29tcCk7
CiAgICB9CiMgNTM4MiAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOC4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nl
c3NJdGVyYXRvcj4KICAgIGlubGluZSB2b2lkCiAgICBudGhfZWxlbWVudChfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbnRoLAogIF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2xhc3QpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0
b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGU7
CgoKICAgICAKCiAgICAgCiAgICAgIDsKICAgICAgOwoKICAgICAgaWYgKF9fZmlyc3QgPT0gX19s
YXN0IHx8IF9fbnRoID09IF9fbGFzdCkKIHJldHVybjsKCiAgICAgIHN0ZDo6X19pbnRyb3NlbGVj
dChfX2ZpcnN0LCBfX250aCwgX19sYXN0LAogICAgc3RkOjpfX2xnKF9fbGFzdCAtIF9fZmlyc3Qp
ICogMik7CiAgICB9CiMgNTQyMSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0t
c3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1
ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5k
b21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgICBpbmxpbmUgdm9pZAogICAg
bnRoX2VsZW1lbnQoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJ
dGVyYXRvciBfX250aCwKICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LCBfQ29tcGFyZSBf
X2NvbXApCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5k
b21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGU7CgoKICAgICAKCiAgICAg
CgogICAgICA7CiAgICAgIDsKCiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCB8fCBfX250aCA9
PSBfX2xhc3QpCiByZXR1cm47CgogICAgICBzdGQ6Ol9faW50cm9zZWxlY3QoX19maXJzdCwgX19u
dGgsIF9fbGFzdCwKICAgIHN0ZDo6X19sZyhfX2xhc3QgLSBfX2ZpcnN0KSAqIDIsIF9fY29tcCk7
CiAgICB9CiMgNTQ1OSAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2Vk
LWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysr
LzQuOC4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nl
c3NJdGVyYXRvcj4KICAgIGlubGluZSB2b2lkCiAgICBzb3J0KF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQogICAgewogICAgICB0eXBl
ZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1
ZV90eXBlCiBfVmFsdWVUeXBlOwoKCiAgICAgCgogICAgIAogICAgICA7CgogICAgICBpZiAoX19m
aXJzdCAhPSBfX2xhc3QpCiB7CiAgIHN0ZDo6X19pbnRyb3NvcnRfbG9vcChfX2ZpcnN0LCBfX2xh
c3QsCiAgICBzdGQ6Ol9fbGcoX19sYXN0IC0gX19maXJzdCkgKiAyKTsKICAgc3RkOjpfX2ZpbmFs
X2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fbGFzdCk7CiB9CiAgICB9CiMgNTQ5NSAiL21udC9z
dG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEv
YXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2FsZ28u
aCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUg
X0NvbXBhcmU+CiAgICBpbmxpbmUgdm9pZAogICAgc29ydChfUmFuZG9tQWNjZXNzSXRlcmF0b3Ig
X19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICBfQ29tcGFyZSBfX2NvbXAp
CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nl
c3NJdGVyYXRvcj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGU7CgoKICAgICAKCiAgICAgCgogICAg
ICA7CgogICAgICBpZiAoX19maXJzdCAhPSBfX2xhc3QpCiB7CiAgIHN0ZDo6X19pbnRyb3NvcnRf
bG9vcChfX2ZpcnN0LCBfX2xhc3QsCiAgICBzdGQ6Ol9fbGcoX19sYXN0IC0gX19maXJzdCkgKiAy
LCBfX2NvbXApOwogICBzdGQ6Ol9fZmluYWxfaW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19sYXN0
LCBfX2NvbXApOwogfQogICAgfQojIDU1MzcgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMiwKICAgIHR5cGVuYW1l
IF9PdXRwdXRJdGVyYXRvcj4KICAgIF9PdXRwdXRJdGVyYXRvcgogICAgbWVyZ2UoX0lucHV0SXRl
cmF0b3IxIF9fZmlyc3QxLCBfSW5wdXRJdGVyYXRvcjEgX19sYXN0MSwKICAgX0lucHV0SXRlcmF0
b3IyIF9fZmlyc3QyLCBfSW5wdXRJdGVyYXRvcjIgX19sYXN0MiwKICAgX091dHB1dEl0ZXJhdG9y
IF9fcmVzdWx0KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxf
SW5wdXRJdGVyYXRvcjE+Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBlMTsKICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRlcmF0b3IyPjo6dmFsdWVfdHlwZQogX1Zh
bHVlVHlwZTI7CgoKICAgICAKICAgICAKICAgICAKCiAgICAgCgogICAgIAogICAgICA7CiAgICAg
IDsKCiAgICAgIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFz
dDIpCiB7CiAgIGlmICgqX19maXJzdDIgPCAqX19maXJzdDEpCiAgICAgewogICAgICAgKl9fcmVz
dWx0ID0gKl9fZmlyc3QyOwogICAgICAgKytfX2ZpcnN0MjsKICAgICB9CiAgIGVsc2UKICAgICB7
CiAgICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7CiAgICAgICArK19fZmlyc3QxOwogICAgIH0K
ICAgKytfX3Jlc3VsdDsKIH0KICAgICAgcmV0dXJuIHN0ZDo6Y29weShfX2ZpcnN0MiwgX19sYXN0
Miwgc3RkOjpjb3B5KF9fZmlyc3QxLCBfX2xhc3QxLAogICAgICAgICAgX19yZXN1bHQpKTsKICAg
IH0KIyA1NjAxICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGlu
dXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44
LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3Ix
LCB0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjIsCiAgICB0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3Is
IHR5cGVuYW1lIF9Db21wYXJlPgogICAgX091dHB1dEl0ZXJhdG9yCiAgICBtZXJnZShfSW5wdXRJ
dGVyYXRvcjEgX19maXJzdDEsIF9JbnB1dEl0ZXJhdG9yMSBfX2xhc3QxLAogICBfSW5wdXRJdGVy
YXRvcjIgX19maXJzdDIsIF9JbnB1dEl0ZXJhdG9yMiBfX2xhc3QyLAogICBfT3V0cHV0SXRlcmF0
b3IgX19yZXN1bHQsIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRlcmF0b3IxPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlw
ZTE7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9y
Mj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGUyOwoKCiAgICAgCiAgICAgCiAgICAgCgogICAgIAoK
ICAgICAKCiAgICAgIDsKICAgICAgOwoKICAgICAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEg
JiYgX19maXJzdDIgIT0gX19sYXN0MikKIHsKICAgaWYgKF9fY29tcCgqX19maXJzdDIsICpfX2Zp
cnN0MSkpCiAgICAgewogICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QyOwogICAgICAgKytfX2Zp
cnN0MjsKICAgICB9CiAgIGVsc2UKICAgICB7CiAgICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7
CiAgICAgICArK19fZmlyc3QxOwogICAgIH0KICAgKytfX3Jlc3VsdDsKIH0KICAgICAgcmV0dXJu
IHN0ZDo6Y29weShfX2ZpcnN0MiwgX19sYXN0Miwgc3RkOjpjb3B5KF9fZmlyc3QxLCBfX2xhc3Qx
LAogICAgICAgICAgX19yZXN1bHQpKTsKICAgIH0KIyA1NjYxICIvbW50L3N0b3JlL0FSTS90b29s
Y2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxp
bnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPgogICAgaW5saW5lIHZvaWQKICAgIHN0
YWJsZV9zb3J0KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRl
cmF0b3IgX19sYXN0KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0
czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBlOwogICAgICB0
eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojpk
aWZmZXJlbmNlX3R5cGUKIF9EaXN0YW5jZVR5cGU7CgoKICAgICAKCiAgICAgCiAgICAgIDsKCiAg
ICAgIF9UZW1wb3JhcnlfYnVmZmVyPF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgX1ZhbHVlVHlwZT4g
X19idWYoX19maXJzdCwKICAgICAgICAgX19sYXN0KTsKICAgICAgaWYgKF9fYnVmLmJlZ2luKCkg
PT0gMCkKIHN0ZDo6X19pbnBsYWNlX3N0YWJsZV9zb3J0KF9fZmlyc3QsIF9fbGFzdCk7CiAgICAg
IGVsc2UKIHN0ZDo6X19zdGFibGVfc29ydF9hZGFwdGl2ZShfX2ZpcnN0LCBfX2xhc3QsIF9fYnVm
LmJlZ2luKCksCiAgICAgICAgX0Rpc3RhbmNlVHlwZShfX2J1Zi5zaXplKCkpKTsKICAgIH0KIyA1
NzAzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0
cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9y
LCB0eXBlbmFtZSBfQ29tcGFyZT4KICAgIGlubGluZSB2b2lkCiAgICBzdGFibGVfc29ydChfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwK
ICBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3Jf
dHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGU7CiAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRv
cj46OmRpZmZlcmVuY2VfdHlwZQogX0Rpc3RhbmNlVHlwZTsKCgogICAgIAoKICAgICAKCgogICAg
ICA7CgogICAgICBfVGVtcG9yYXJ5X2J1ZmZlcjxfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIF9WYWx1
ZVR5cGU+IF9fYnVmKF9fZmlyc3QsCiAgICAgICAgIF9fbGFzdCk7CiAgICAgIGlmIChfX2J1Zi5i
ZWdpbigpID09IDApCiBzdGQ6Ol9faW5wbGFjZV9zdGFibGVfc29ydChfX2ZpcnN0LCBfX2xhc3Qs
IF9fY29tcCk7CiAgICAgIGVsc2UKIHN0ZDo6X19zdGFibGVfc29ydF9hZGFwdGl2ZShfX2ZpcnN0
LCBfX2xhc3QsIF9fYnVmLmJlZ2luKCksCiAgICAgICAgX0Rpc3RhbmNlVHlwZShfX2J1Zi5zaXpl
KCkpLCBfX2NvbXApOwogICAgfQojIDU3NDkgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJk
ZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFi
aS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMiwKICAgIHR5cGVuYW1l
IF9PdXRwdXRJdGVyYXRvcj4KICAgIF9PdXRwdXRJdGVyYXRvcgogICAgc2V0X3VuaW9uKF9JbnB1
dEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0b3IxIF9fbGFzdDEsCiAgICAgICBfSW5w
dXRJdGVyYXRvcjIgX19maXJzdDIsIF9JbnB1dEl0ZXJhdG9yMiBfX2xhc3QyLAogICAgICAgX091
dHB1dEl0ZXJhdG9yIF9fcmVzdWx0KQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJh
dG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcjE+Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBlMTsKICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRlcmF0b3IyPjo6dmFs
dWVfdHlwZQogX1ZhbHVlVHlwZTI7CgoKICAgICAKICAgICAKICAgICAKCiAgICAgCgogICAgIAog
ICAgIAogICAgICA7CiAgICAgIDsKCiAgICAgIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYm
IF9fZmlyc3QyICE9IF9fbGFzdDIpCiB7CiAgIGlmICgqX19maXJzdDEgPCAqX19maXJzdDIpCiAg
ICAgewogICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QxOwogICAgICAgKytfX2ZpcnN0MTsKICAg
ICB9CiAgIGVsc2UgaWYgKCpfX2ZpcnN0MiA8ICpfX2ZpcnN0MSkKICAgICB7CiAgICAgICAqX19y
ZXN1bHQgPSAqX19maXJzdDI7CiAgICAgICArK19fZmlyc3QyOwogICAgIH0KICAgZWxzZQogICAg
IHsKICAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MTsKICAgICAgICsrX19maXJzdDE7CiAgICAg
ICArK19fZmlyc3QyOwogICAgIH0KICAgKytfX3Jlc3VsdDsKIH0KICAgICAgcmV0dXJuIHN0ZDo6
Y29weShfX2ZpcnN0MiwgX19sYXN0Miwgc3RkOjpjb3B5KF9fZmlyc3QxLCBfX2xhc3QxLAogICAg
ICAgICAgX19yZXN1bHQpKTsKICAgIH0KIyA1ODE2ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4v
aGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdu
dWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0lucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjIsCiAgICB0eXBl
bmFtZSBfT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgX091dHB1dEl0ZXJh
dG9yCiAgICBzZXRfdW5pb24oX0lucHV0SXRlcmF0b3IxIF9fZmlyc3QxLCBfSW5wdXRJdGVyYXRv
cjEgX19sYXN0MSwKICAgICAgIF9JbnB1dEl0ZXJhdG9yMiBfX2ZpcnN0MiwgX0lucHV0SXRlcmF0
b3IyIF9fbGFzdDIsCiAgICAgICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQsIF9Db21wYXJlIF9f
Y29tcCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0
SXRlcmF0b3IxPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTE7CiAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yMj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5
cGUyOwoKCiAgICAgCiAgICAgCiAgICAgCgogICAgIAoKICAgICAKCiAgICAgCgogICAgICA7CiAg
ICAgIDsKCiAgICAgIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9f
bGFzdDIpCiB7CiAgIGlmIChfX2NvbXAoKl9fZmlyc3QxLCAqX19maXJzdDIpKQogICAgIHsKICAg
ICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MTsKICAgICAgICsrX19maXJzdDE7CiAgICAgfQogICBl
bHNlIGlmIChfX2NvbXAoKl9fZmlyc3QyLCAqX19maXJzdDEpKQogICAgIHsKICAgICAgICpfX3Jl
c3VsdCA9ICpfX2ZpcnN0MjsKICAgICAgICsrX19maXJzdDI7CiAgICAgfQogICBlbHNlCiAgICAg
ewogICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QxOwogICAgICAgKytfX2ZpcnN0MTsKICAgICAg
ICsrX19maXJzdDI7CiAgICAgfQogICArK19fcmVzdWx0OwogfQogICAgICByZXR1cm4gc3RkOjpj
b3B5KF9fZmlyc3QyLCBfX2xhc3QyLCBzdGQ6OmNvcHkoX19maXJzdDEsIF9fbGFzdDEsCiAgICAg
ICAgICBfX3Jlc3VsdCkpOwogICAgfQojIDU4ODMgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251
ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yMiwKICAgIHR5cGVu
YW1lIF9PdXRwdXRJdGVyYXRvcj4KICAgIF9PdXRwdXRJdGVyYXRvcgogICAgc2V0X2ludGVyc2Vj
dGlvbihfSW5wdXRJdGVyYXRvcjEgX19maXJzdDEsIF9JbnB1dEl0ZXJhdG9yMSBfX2xhc3QxLAog
ICAgICAgX0lucHV0SXRlcmF0b3IyIF9fZmlyc3QyLCBfSW5wdXRJdGVyYXRvcjIgX19sYXN0MiwK
ICAgICAgIF9PdXRwdXRJdGVyYXRvciBfX3Jlc3VsdCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRlcmF0b3IxPjo6dmFsdWVfdHlwZQogX1ZhbHVl
VHlwZTE7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJh
dG9yMj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGUyOwoKCiAgICAgCiAgICAgCiAgICAgCgogICAg
IAogICAgIAogICAgICA7CiAgICAgIDsKCiAgICAgIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3Qx
ICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpCiBpZiAoKl9fZmlyc3QxIDwgKl9fZmlyc3QyKQogICAr
K19fZmlyc3QxOwogZWxzZSBpZiAoKl9fZmlyc3QyIDwgKl9fZmlyc3QxKQogICArK19fZmlyc3Qy
OwogZWxzZQogICB7CiAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QxOwogICAgICsrX19maXJzdDE7
CiAgICAgKytfX2ZpcnN0MjsKICAgICArK19fcmVzdWx0OwogICB9CiAgICAgIHJldHVybiBfX3Jl
c3VsdDsKICAgIH0KIyA1OTQwICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1z
emVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVk
ZS9jKysvNC44LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0
SXRlcmF0b3IxLCB0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjIsCiAgICB0eXBlbmFtZSBfT3V0cHV0
SXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgX091dHB1dEl0ZXJhdG9yCiAgICBzZXRf
aW50ZXJzZWN0aW9uKF9JbnB1dEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0b3IxIF9f
bGFzdDEsCiAgICAgICBfSW5wdXRJdGVyYXRvcjIgX19maXJzdDIsIF9JbnB1dEl0ZXJhdG9yMiBf
X2xhc3QyLAogICAgICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0LCBfQ29tcGFyZSBfX2NvbXAp
CiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJh
dG9yMT46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGUxOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcjI+Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBlMjsK
CgogICAgIAogICAgIAogICAgIAoKICAgICAKCiAgICAgCgogICAgICA7CiAgICAgIDsKCiAgICAg
IHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpCiBpZiAo
X19jb21wKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkKICAgKytfX2ZpcnN0MTsKIGVsc2UgaWYgKF9f
Y29tcCgqX19maXJzdDIsICpfX2ZpcnN0MSkpCiAgICsrX19maXJzdDI7CiBlbHNlCiAgIHsKICAg
ICAqX19yZXN1bHQgPSAqX19maXJzdDE7CiAgICAgKytfX2ZpcnN0MTsKICAgICArK19fZmlyc3Qy
OwogICAgICsrX19yZXN1bHQ7CiAgIH0KICAgICAgcmV0dXJuIF9fcmVzdWx0OwogICAgfQojIDU5
OTggIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVl
YWJpLTQuOC4xL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRz
L3N0bF9hbGdvLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjEsIHR5cGVu
YW1lIF9JbnB1dEl0ZXJhdG9yMiwKICAgIHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvcj4KICAgIF9P
dXRwdXRJdGVyYXRvcgogICAgc2V0X2RpZmZlcmVuY2UoX0lucHV0SXRlcmF0b3IxIF9fZmlyc3Qx
LCBfSW5wdXRJdGVyYXRvcjEgX19sYXN0MSwKICAgICBfSW5wdXRJdGVyYXRvcjIgX19maXJzdDIs
IF9JbnB1dEl0ZXJhdG9yMiBfX2xhc3QyLAogICAgIF9PdXRwdXRJdGVyYXRvciBfX3Jlc3VsdCkK
ICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRlcmF0
b3IxPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTE7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRl
cmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yMj46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGUyOwoK
CiAgICAgCiAgICAgCiAgICAgCgogICAgIAogICAgIAogICAgICA7CiAgICAgIDsKCiAgICAgIHdo
aWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpCiBpZiAoKl9f
Zmlyc3QxIDwgKl9fZmlyc3QyKQogICB7CiAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QxOwogICAg
ICsrX19maXJzdDE7CiAgICAgKytfX3Jlc3VsdDsKICAgfQogZWxzZSBpZiAoKl9fZmlyc3QyIDwg
Kl9fZmlyc3QxKQogICArK19fZmlyc3QyOwogZWxzZQogICB7CiAgICAgKytfX2ZpcnN0MTsKICAg
ICArK19fZmlyc3QyOwogICB9CiAgICAgIHJldHVybiBzdGQ6OmNvcHkoX19maXJzdDEsIF9fbGFz
dDEsIF9fcmVzdWx0KTsKICAgIH0KIyA2MDU5ICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFy
ZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVh
YmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0lucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjIsCiAgICB0eXBlbmFt
ZSBfT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgX091dHB1dEl0ZXJhdG9y
CiAgICBzZXRfZGlmZmVyZW5jZShfSW5wdXRJdGVyYXRvcjEgX19maXJzdDEsIF9JbnB1dEl0ZXJh
dG9yMSBfX2xhc3QxLAogICAgIF9JbnB1dEl0ZXJhdG9yMiBfX2ZpcnN0MiwgX0lucHV0SXRlcmF0
b3IyIF9fbGFzdDIsCiAgICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0LCBfQ29tcGFyZSBfX2Nv
bXApCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0
ZXJhdG9yMT46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGUxOwogICAgICB0eXBlZGVmIHR5cGVuYW1l
IGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcjI+Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBl
MjsKCgogICAgIAogICAgIAogICAgIAoKICAgICAKCiAgICAgCgogICAgICA7CiAgICAgIDsKCiAg
ICAgIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpCiBp
ZiAoX19jb21wKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkKICAgewogICAgICpfX3Jlc3VsdCA9ICpf
X2ZpcnN0MTsKICAgICArK19fZmlyc3QxOwogICAgICsrX19yZXN1bHQ7CiAgIH0KIGVsc2UgaWYg
KF9fY29tcCgqX19maXJzdDIsICpfX2ZpcnN0MSkpCiAgICsrX19maXJzdDI7CiBlbHNlCiAgIHsK
ICAgICArK19fZmlyc3QxOwogICAgICsrX19maXJzdDI7CiAgIH0KICAgICAgcmV0dXJuIHN0ZDo6
Y29weShfX2ZpcnN0MSwgX19sYXN0MSwgX19yZXN1bHQpOwogICAgfQojIDYxMTcgIi9tbnQvc3Rv
cmUvQVJNL3Rvb2xjaGFpbi9oYXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS9pbmNsdWRlL2MrKy80LjguMS9iaXRzL3N0bF9hbGdvLmgi
IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIF9JbnB1dEl0
ZXJhdG9yMiwKICAgIHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvcj4KICAgIF9PdXRwdXRJdGVyYXRv
cgogICAgc2V0X3N5bW1ldHJpY19kaWZmZXJlbmNlKF9JbnB1dEl0ZXJhdG9yMSBfX2ZpcnN0MSwg
X0lucHV0SXRlcmF0b3IxIF9fbGFzdDEsCiAgICAgICAgX0lucHV0SXRlcmF0b3IyIF9fZmlyc3Qy
LCBfSW5wdXRJdGVyYXRvcjIgX19sYXN0MiwKICAgICAgICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1
bHQpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0
ZXJhdG9yMT46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGUxOwogICAgICB0eXBlZGVmIHR5cGVuYW1l
IGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcjI+Ojp2YWx1ZV90eXBlCiBfVmFsdWVUeXBl
MjsKCgogICAgIAogICAgIAogICAgIAoKICAgICAKCiAgICAgCiAgICAgCiAgICAgIDsKICAgICAg
OwoKICAgICAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0
MikKIGlmICgqX19maXJzdDEgPCAqX19maXJzdDIpCiAgIHsKICAgICAqX19yZXN1bHQgPSAqX19m
aXJzdDE7CiAgICAgKytfX2ZpcnN0MTsKICAgICArK19fcmVzdWx0OwogICB9CiBlbHNlIGlmICgq
X19maXJzdDIgPCAqX19maXJzdDEpCiAgIHsKICAgICAqX19yZXN1bHQgPSAqX19maXJzdDI7CiAg
ICAgKytfX2ZpcnN0MjsKICAgICArK19fcmVzdWx0OwogICB9CiBlbHNlCiAgIHsKICAgICArK19f
Zmlyc3QxOwogICAgICsrX19maXJzdDI7CiAgIH0KICAgICAgcmV0dXJuIHN0ZDo6Y29weShfX2Zp
cnN0MiwgX19sYXN0Miwgc3RkOjpjb3B5KF9fZmlyc3QxLAogICAgICAgICAgX19sYXN0MSwgX19y
ZXN1bHQpKTsKICAgIH0KIyA2MTgzICIvbW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2Fy
bS1zemVnZWQtbGludXgtZ251ZWFiaS00LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5j
bHVkZS9jKysvNC44LjEvYml0cy9zdGxfYWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lu
cHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjIsCiAgICB0eXBlbmFtZSBfT3V0
cHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgX091dHB1dEl0ZXJhdG9yCiAgICBz
ZXRfc3ltbWV0cmljX2RpZmZlcmVuY2UoX0lucHV0SXRlcmF0b3IxIF9fZmlyc3QxLCBfSW5wdXRJ
dGVyYXRvcjEgX19sYXN0MSwKICAgICAgICBfSW5wdXRJdGVyYXRvcjIgX19maXJzdDIsIF9JbnB1
dEl0ZXJhdG9yMiBfX2xhc3QyLAogICAgICAgIF9PdXRwdXRJdGVyYXRvciBfX3Jlc3VsdCwKICAg
ICAgICBfQ29tcGFyZSBfX2NvbXApCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0
b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yMT46OnZhbHVlX3R5cGUKIF9WYWx1ZVR5cGUxOwogICAg
ICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcjI+Ojp2YWx1
ZV90eXBlCiBfVmFsdWVUeXBlMjsKCgogICAgIAogICAgIAogICAgIAoKICAgICAKCiAgICAgCgog
ICAgIAoKICAgICAgOwogICAgICA7CgogICAgICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAm
JiBfX2ZpcnN0MiAhPSBfX2xhc3QyKQogaWYgKF9fY29tcCgqX19maXJzdDEsICpfX2ZpcnN0Mikp
CiAgIHsKICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7CiAgICAgKytfX2ZpcnN0MTsKICAgICAr
K19fcmVzdWx0OwogICB9CiBlbHNlIGlmIChfX2NvbXAoKl9fZmlyc3QyLCAqX19maXJzdDEpKQog
ICB7CiAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QyOwogICAgICsrX19maXJzdDI7CiAgICAgKytf
X3Jlc3VsdDsKICAgfQogZWxzZQogICB7CiAgICAgKytfX2ZpcnN0MTsKICAgICArK19fZmlyc3Qy
OwogICB9CiAgICAgIHJldHVybiBzdGQ6OmNvcHkoX19maXJzdDIsIF9fbGFzdDIsCiAgICAgICAg
IHN0ZDo6Y29weShfX2ZpcnN0MSwgX19sYXN0MSwgX19yZXN1bHQpKTsKICAgIH0KIyA2MjQwICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxf
YWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcj4KICAgIF9Gb3J3
YXJkSXRlcmF0b3IKICAgIG1pbl9lbGVtZW50KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0Zv
cndhcmRJdGVyYXRvciBfX2xhc3QpCiAgICB7CgogICAgIAogICAgIAoKICAgICAgOwoKICAgICAg
aWYgKF9fZmlyc3QgPT0gX19sYXN0KQogcmV0dXJuIF9fZmlyc3Q7CiAgICAgIF9Gb3J3YXJkSXRl
cmF0b3IgX19yZXN1bHQgPSBfX2ZpcnN0OwogICAgICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFz
dCkKIGlmICgqX19maXJzdCA8ICpfX3Jlc3VsdCkKICAgX19yZXN1bHQgPSBfX2ZpcnN0OwogICAg
ICByZXR1cm4gX19yZXN1bHQ7CiAgICB9CiMgNjI2OCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5
cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgX0ZvcndhcmRJ
dGVyYXRvcgogICAgbWluX2VsZW1lbnQoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2Fy
ZEl0ZXJhdG9yIF9fbGFzdCwKICBfQ29tcGFyZSBfX2NvbXApCiAgICB7CgogICAgIAogICAgIAoK
CiAgICAgIDsKCiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKIHJldHVybiBfX2ZpcnN0Owog
ICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fcmVzdWx0ID0gX19maXJzdDsKICAgICAgd2hpbGUgKCsr
X19maXJzdCAhPSBfX2xhc3QpCiBpZiAoX19jb21wKCpfX2ZpcnN0LCAqX19yZXN1bHQpKQogICBf
X3Jlc3VsdCA9IF9fZmlyc3Q7CiAgICAgIHJldHVybiBfX3Jlc3VsdDsKICAgIH0KIyA2Mjk2ICIv
bW50L3N0b3JlL0FSTS90b29sY2hhaW4vaGFyZGZwL2FybS1zemVnZWQtbGludXgtZ251ZWFiaS00
LjguMS9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkvaW5jbHVkZS9jKysvNC44LjEvYml0cy9zdGxf
YWxnby5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcj4KICAgIF9Gb3J3
YXJkSXRlcmF0b3IKICAgIG1heF9lbGVtZW50KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0Zv
cndhcmRJdGVyYXRvciBfX2xhc3QpCiAgICB7CgogICAgIAogICAgIAoKICAgICAgOwoKICAgICAg
aWYgKF9fZmlyc3QgPT0gX19sYXN0KQogcmV0dXJuIF9fZmlyc3Q7CiAgICAgIF9Gb3J3YXJkSXRl
cmF0b3IgX19yZXN1bHQgPSBfX2ZpcnN0OwogICAgICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFz
dCkKIGlmICgqX19yZXN1bHQgPCAqX19maXJzdCkKICAgX19yZXN1bHQgPSBfX2ZpcnN0OwogICAg
ICByZXR1cm4gX19yZXN1bHQ7CiAgICB9CiMgNjMyNCAiL21udC9zdG9yZS9BUk0vdG9vbGNoYWlu
L2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmktNC44LjEvYXJtLXN6ZWdlZC1saW51eC1n
bnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2JpdHMvc3RsX2FsZ28uaCIgMwogIHRlbXBsYXRlPHR5
cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9Db21wYXJlPgogICAgX0ZvcndhcmRJ
dGVyYXRvcgogICAgbWF4X2VsZW1lbnQoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2Fy
ZEl0ZXJhdG9yIF9fbGFzdCwKICBfQ29tcGFyZSBfX2NvbXApCiAgICB7CgogICAgIAogICAgIAoK
CiAgICAgIDsKCiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkgcmV0dXJuIF9fZmlyc3Q7CiAg
ICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19yZXN1bHQgPSBfX2ZpcnN0OwogICAgICB3aGlsZSAoKytf
X2ZpcnN0ICE9IF9fbGFzdCkKIGlmIChfX2NvbXAoKl9fcmVzdWx0LCAqX19maXJzdCkpCiAgIF9f
cmVzdWx0ID0gX19maXJzdDsKICAgICAgcmV0dXJuIF9fcmVzdWx0OwogICAgfQoKCn0KIyA2MyAi
L21udC9zdG9yZS9BUk0vdG9vbGNoYWluL2hhcmRmcC9hcm0tc3plZ2VkLWxpbnV4LWdudWVhYmkt
NC44LjEvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpL2luY2x1ZGUvYysrLzQuOC4xL2FsZ29yaXRo
bSIgMiAzCiMgMzcgIi9ob21lL3dlYmtpdGJ1aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIy
LWJ1aWxkL2J1aWxkc2xhdmUvZWZsLWFybXY3LXRodW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgiIDIKIyAxICIvbW50L3N0b3JlL2Nocm9vdHMv
dWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAxIDMgNAojIDI5ICIv
bW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdvbGluLUFSTUhGL3Vzci9pbmNsdWRlL3N0cmlu
Zy5oIiAzIDQKZXh0ZXJuICJDIiB7CgoKCgojIDEgIi9tbnQvc3RvcmUvQVJNL3Rvb2xjaGFpbi9o
YXJkZnAvYXJtLXN6ZWdlZC1saW51eC1nbnVlYWJpLTQuOC4xL2xpYi9nY2MvYXJtLXN6ZWdlZC1s
aW51eC1nbnVlYWJpLzQuOC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMzUgIi9tbnQvc3Rv
cmUvY2hyb290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIg
MyA0CgoKCgoKCgoKCmV4dGVybiB2b2lkICptZW1jcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0
LAogICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKQogICAg
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4g
dm9pZCAqbWVtbW92ZSAodm9pZCAqX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fc3JjLCBzaXplX3Qg
X19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsK
CgoKCgoKZXh0ZXJuIHZvaWQgKm1lbWNjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2Nv
bnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsCiAgICAgICAgaW50IF9fYywgc2l6ZV90IF9fbikK
ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCgoK
ZXh0ZXJuIHZvaWQgKm1lbXNldCAodm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGludCBtZW1j
bXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChf
X25vbm51bGxfXyAoMSwgMikpKTsKCgoKZXh0ZXJuICJDKysiCnsKZXh0ZXJuIHZvaWQgKm1lbWNo
ciAodm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAgICB0aHJvdyAoKSBfX2FzbSAo
Im1lbWNociIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25v
bm51bGxfXyAoMSkpKTsKZXh0ZXJuIF9fY29uc3Qgdm9pZCAqbWVtY2hyIChfX2NvbnN0IHZvaWQg
Kl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgdGhyb3cgKCkgX19hc20gKCJtZW1jaHIi
KSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g
KDEpKSk7CgoKZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVf
XykpIF9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKSB2b2lk
ICoKbWVtY2hyICh2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pIHRocm93ICgpCnsKICBy
ZXR1cm4gX19idWlsdGluX21lbWNociAoX19zLCBfX2MsIF9fbik7Cn0KCmV4dGVybiBfX2lubGlu
ZSBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fICgoX19n
bnVfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkgX19jb25zdCB2b2lkICoKbWVtY2hyIChfX2Nv
bnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikgdGhyb3cgKCkKewogIHJldHVybiBf
X2J1aWx0aW5fbWVtY2hyIChfX3MsIF9fYywgX19uKTsKfQoKfQoKCgoKCgoKCgoKZXh0ZXJuICJD
KysiIHZvaWQgKnJhd21lbWNociAodm9pZCAqX19zLCBpbnQgX19jKQogICAgIHRocm93ICgpIF9f
YXNtICgicmF3bWVtY2hyIikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVf
XyAoKF9fbm9ubnVsbF9fICgxKSkpOwpleHRlcm4gIkMrKyIgX19jb25zdCB2b2lkICpyYXdtZW1j
aHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jKQogICAgIHRocm93ICgpIF9fYXNtICgicmF3
bWVtY2hyIikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u
bnVsbF9fICgxKSkpOwoKCgoKCgoKZXh0ZXJuICJDKysiIHZvaWQgKm1lbXJjaHIgKHZvaWQgKl9f
cywgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgdGhyb3cgKCkgX19hc20gKCJtZW1yY2hyIikg
X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx
KSkpOwpleHRlcm4gIkMrKyIgX19jb25zdCB2b2lkICptZW1yY2hyIChfX2NvbnN0IHZvaWQgKl9f
cywgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgdGhyb3cgKCkgX19hc20gKCJtZW1yY2hyIikg
X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx
KSkpOwoKCgoKCgoKCgpleHRlcm4gY2hhciAqc3RyY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVz
dCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCmV4dGVybiBjaGFyICpzdHJuY3B5IChjaGFy
ICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19z
cmMsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f
ICgxLCAyKSkpOwoKCmV4dGVybiBjaGFyICpzdHJjYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0
LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKZXh0ZXJuIGNoYXIgKnN0cm5jYXQgKGNoYXIg
Kl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsCiAgICAg
ICAgc2l6ZV90IF9fbikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAy
KSkpOwoKCmV4dGVybiBpbnQgc3RyY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hh
ciAqX19zMikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJp
YnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgpleHRlcm4gaW50IHN0cm5jbXAgKF9fY29u
c3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf
XyAoMSwgMikpKTsKCgpleHRlcm4gaW50IHN0cmNvbGwgKF9fY29uc3QgY2hhciAqX19zMSwgX19j
b25zdCBjaGFyICpfX3MyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCmV4dGVybiBzaXplX3Qgc3Ry
eGZybSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19ub25udWxsX18gKDIpKSk7CgojIDE2NSAiL21udC9zdG9yZS9jaHJvb3RzL3VidW50dS1wYW5n
b2xpbi1BUk1IRi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CmV4dGVybiBpbnQgc3RyY29sbF9s
IChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgX19sb2NhbGVfdCBfX2wp
CiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAo
KF9fbm9ubnVsbF9fICgxLCAyLCAzKSkpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtX2wgKGNoYXIg
Kl9fZGVzdCwgX19jb25zdCBjaGFyICpfX3NyYywgc2l6ZV90IF9fbiwKICAgIF9fbG9jYWxlX3Qg
X19sKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIsIDQpKSk7CgoKCgoK
ZXh0ZXJuIGNoYXIgKnN0cmR1cCAoX19jb25zdCBjaGFyICpfX3MpCiAgICAgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEp
KSk7CgoKCgoKCmV4dGVybiBjaGFyICpzdHJuZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBz
aXplX3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSkgX19h
dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwojIDIxMCAiL21udC9zdG9yZS9jaHJvb3Rz
L3VidW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CgoKCmV4dGVy
biAiQysrIgp7CmV4dGVybiBjaGFyICpzdHJjaHIgKGNoYXIgKl9fcywgaW50IF9fYykKICAgICB0
aHJvdyAoKSBfX2FzbSAoInN0cmNociIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0
cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKZXh0ZXJuIF9fY29uc3QgY2hhciAqc3RyY2hy
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykKICAgICB0aHJvdyAoKSBfX2FzbSAoInN0cmNo
ciIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf
XyAoMSkpKTsKCgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGlu
ZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpIGNo
YXIgKgpzdHJjaHIgKGNoYXIgKl9fcywgaW50IF9fYykgdGhyb3cgKCkKewogIHJldHVybiBfX2J1
aWx0aW5fc3RyY2hyIChfX3MsIF9fYyk7Cn0KCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9f
ICgoX19hbHdheXNfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18sIF9f
YXJ0aWZpY2lhbF9fKSkgX19jb25zdCBjaGFyICoKc3RyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywg
aW50IF9fYykgdGhyb3cgKCkKewogIHJldHVybiBfX2J1aWx0aW5fc3RyY2hyIChfX3MsIF9fYyk7
Cn0KCn0KCgoKCgoKZXh0ZXJuICJDKysiCnsKZXh0ZXJuIGNoYXIgKnN0cnJjaHIgKGNoYXIgKl9f
cywgaW50IF9fYykKICAgICB0aHJvdyAoKSBfX2FzbSAoInN0cnJjaHIiKSBfX2F0dHJpYnV0ZV9f
ICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CmV4dGVybiBf
X2NvbnN0IGNoYXIgKnN0cnJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKQogICAgIHRo
cm93ICgpIF9fYXNtICgic3RycmNociIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0
cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1
dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9f
LCBfX2FydGlmaWNpYWxfXykpIGNoYXIgKgpzdHJyY2hyIChjaGFyICpfX3MsIGludCBfX2MpIHRo
cm93ICgpCnsKICByZXR1cm4gX19idWlsdGluX3N0cnJjaHIgKF9fcywgX19jKTsKfQoKZXh0ZXJu
IF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpIF9fYXR0cmlidXRl
X18gKChfX2dudV9pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKSBfX2NvbnN0IGNoYXIgKgpzdHJy
Y2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgdGhyb3cgKCkKewogIHJldHVybiBfX2J1
aWx0aW5fc3RycmNociAoX19zLCBfX2MpOwp9Cgp9CgoKCgoKCgoKCgpleHRlcm4gIkMrKyIgY2hh
ciAqc3RyY2hybnVsIChjaGFyICpfX3MsIGludCBfX2MpCiAgICAgdGhyb3cgKCkgX19hc20gKCJz
dHJjaHJudWwiKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u
b25udWxsX18gKDEpKSk7CmV4dGVybiAiQysrIiBfX2NvbnN0IGNoYXIgKnN0cmNocm51bCAoX19j
b25zdCBjaGFyICpfX3MsIGludCBfX2MpCiAgICAgdGhyb3cgKCkgX19hc20gKCJzdHJjaHJudWwi
KSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g
KDEpKSk7CgoKCgoKCgoKCmV4dGVybiBzaXplX3Qgc3RyY3NwbiAoX19jb25zdCBjaGFyICpfX3Ms
IF9fY29uc3QgY2hhciAqX19yZWplY3QpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBz
aXplX3Qgc3Ryc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkK
ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgo
X19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJuICJDKysiCnsKZXh0ZXJuIGNoYXIgKnN0cnBi
cmsgKGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkKICAgICB0aHJvdyAoKSBfX2Fz
bSAoInN0cnBicmsiKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgo
X19ub25udWxsX18gKDEsIDIpKSk7CmV4dGVybiBfX2NvbnN0IGNoYXIgKnN0cnBicmsgKF9fY29u
c3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIHRocm93ICgpIF9fYXNt
ICgic3RycGJyayIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChf
X25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9f
YWx3YXlzX2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fLCBfX2FydGlm
aWNpYWxfXykpIGNoYXIgKgpzdHJwYnJrIChjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2Nl
cHQpIHRocm93ICgpCnsKICByZXR1cm4gX19idWlsdGluX3N0cnBicmsgKF9fcywgX19hY2NlcHQp
Owp9CgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fKSkg
X19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpIF9fY29uc3Qg
Y2hhciAqCnN0cnBicmsgKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0
KSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdHJwYnJrIChfX3MsIF9fYWNjZXB0KTsK
fQoKfQoKCgoKCgpleHRlcm4gIkMrKyIKewpleHRlcm4gY2hhciAqc3Ryc3RyIChjaGFyICpfX2hh
eXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAgIHRocm93ICgpIF9fYXNtICgic3Ry
c3RyIikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs
bF9fICgxLCAyKSkpOwpleHRlcm4gX19jb25zdCBjaGFyICpzdHJzdHIgKF9fY29uc3QgY2hhciAq
X19oYXlzdGFjaywKICAgICAgICBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAgIHRocm93ICgp
IF9fYXNtICgic3Ryc3RyIikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVf
XyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9f
ICgoX19hbHdheXNfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18sIF9f
YXJ0aWZpY2lhbF9fKSkgY2hhciAqCnN0cnN0ciAoY2hhciAqX19oYXlzdGFjaywgX19jb25zdCBj
aGFyICpfX25lZWRsZSkgdGhyb3cgKCkKewogIHJldHVybiBfX2J1aWx0aW5fc3Ryc3RyIChfX2hh
eXN0YWNrLCBfX25lZWRsZSk7Cn0KCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19h
bHdheXNfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18sIF9fYXJ0aWZp
Y2lhbF9fKSkgX19jb25zdCBjaGFyICoKc3Ryc3RyIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ss
IF9fY29uc3QgY2hhciAqX19uZWVkbGUpIHRocm93ICgpCnsKICByZXR1cm4gX19idWlsdGluX3N0
cnN0ciAoX19oYXlzdGFjaywgX19uZWVkbGUpOwp9Cgp9CgoKCgoKCgpleHRlcm4gY2hhciAqc3Ry
dG9rIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVs
aW0pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwoKCgoK
ZXh0ZXJuIGNoYXIgKl9fc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVf
cHRyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMiwgMykpKTsK
CmV4dGVybiBjaGFyICpzdHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2RlbGltLAogICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVf
cHRyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMiwgMykpKTsK
CgoKCgpleHRlcm4gIkMrKyIgY2hhciAqc3RyY2FzZXN0ciAoY2hhciAqX19oYXlzdGFjaywgX19j
b25zdCBjaGFyICpfX25lZWRsZSkKICAgICB0aHJvdyAoKSBfX2FzbSAoInN0cmNhc2VzdHIiKSBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEs
IDIpKSk7CmV4dGVybiAiQysrIiBfX2NvbnN0IGNoYXIgKnN0cmNhc2VzdHIgKF9fY29uc3QgY2hh
ciAqX19oYXlzdGFjaywKICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAgIHRo
cm93ICgpIF9fYXNtICgic3RyY2FzZXN0ciIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9f
YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKIyAzODIgIi9tbnQvc3RvcmUvY2hy
b290cy91YnVudHUtcGFuZ29saW4tQVJNSEYvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNApleHRl
cm4gdm9pZCAqbWVtbWVtIChfX2NvbnN0IHZvaWQgKl9faGF5c3RhY2ssIHNpemVfdCBfX2hheXN0
YWNrbGVuLAogICAgICAgX19jb25zdCB2b2lkICpfX25lZWRsZSwgc2l6ZV90IF9fbmVlZGxlbGVu
KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18g
KChfX25vbm51bGxfXyAoMSwgMykpKTsKCgoKZXh0ZXJuIHZvaWQgKl9fbWVtcGNweSAodm9pZCAq
X19yZXN0cmljdCBfX2Rlc3QsCiAgIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6
ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIp
KSk7CmV4dGVybiB2b2lkICptZW1wY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAg
ICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pCiAgICAgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKCmV4dGVybiBzaXpl
X3Qgc3RybGVuIChfX2NvbnN0IGNoYXIgKl9fcykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoKZXh0
ZXJuIHNpemVfdCBzdHJubGVuIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19tYXhs
ZW4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVf
XyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCmV4dGVybiBjaGFyICpzdHJlcnJvciAoaW50IF9f
ZXJybnVtKSB0aHJvdyAoKTsKCiMgNDM4ICIvbW50L3N0b3JlL2Nocm9vdHMvdWJ1bnR1LXBhbmdv
bGluLUFSTUhGL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKZXh0ZXJuIGNoYXIgKnN0cmVycm9y
X3IgKGludCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikKICAgICB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgoKCgoKZXh0ZXJuIGNoYXIg
KnN0cmVycm9yX2wgKGludCBfX2Vycm51bSwgX19sb2NhbGVfdCBfX2wpIHRocm93ICgpOwoKCgoK
CmV4dGVybiB2b2lkIF9fYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgpleHRlcm4gdm9pZCBiY29weSAoX19j
b25zdCB2b2lkICpfX3NyYywgdm9pZCAqX19kZXN0LCBzaXplX3QgX19uKQogICAgIHRocm93ICgp
IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gdm9pZCBiemVy
byAodm9pZCAqX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u
dWxsX18gKDEpKSk7CgoKZXh0ZXJuIGludCBiY21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29u
c3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCmV4dGVy
biAiQysrIgp7CmV4dGVybiBjaGFyICppbmRleCAoY2hhciAqX19zLCBpbnQgX19jKQogICAgIHRo
cm93ICgpIF9fYXNtICgiaW5kZXgiKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJp
YnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CmV4dGVybiBfX2NvbnN0IGNoYXIgKmluZGV4IChf
X2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykKICAgICB0aHJvdyAoKSBfX2FzbSAoImluZGV4Iikg
X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx
KSkpOwoKCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18p
KSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkgY2hhciAq
CmluZGV4IChjaGFyICpfX3MsIGludCBfX2MpIHRocm93ICgpCnsKICByZXR1cm4gX19idWlsdGlu
X2luZGV4IChfX3MsIF9fYyk7Cn0KCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19h
bHdheXNfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18sIF9fYXJ0aWZp
Y2lhbF9fKSkgX19jb25zdCBjaGFyICoKaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19j
KSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pbmRleCAoX19zLCBfX2MpOwp9Cgp9CgoK
CgoKCgpleHRlcm4gIkMrKyIKewpleHRlcm4gY2hhciAqcmluZGV4IChjaGFyICpfX3MsIGludCBf
X2MpCiAgICAgdGhyb3cgKCkgX19hc20gKCJyaW5kZXgiKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CmV4dGVybiBfX2NvbnN0IGNo
YXIgKnJpbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpCiAgICAgdGhyb3cgKCkgX19h
c20gKCJyaW5kZXgiKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgo
X19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2Fs
d2F5c19pbmxpbmVfXykpIF9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXywgX19hcnRpZmlj
aWFsX18pKSBjaGFyICoKcmluZGV4IChjaGFyICpfX3MsIGludCBfX2MpIHRocm93ICgpCnsKICBy
ZXR1cm4gX19idWlsdGluX3JpbmRleCAoX19zLCBfX2MpOwp9CgpleHRlcm4gX19pbmxpbmUgX19h
dHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lu
bGluZV9fLCBfX2FydGlmaWNpYWxfXykpIF9fY29uc3QgY2hhciAqCnJpbmRleCAoX19jb25zdCBj
aGFyICpfX3MsIGludCBfX2MpIHRocm93ICgpCnsKICByZXR1cm4gX19idWlsdGluX3JpbmRleCAo
X19zLCBfX2MpOwp9Cgp9CgoKCgoKCgpleHRlcm4gaW50IGZmcyAoaW50IF9faSkgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBmZnNsIChsb25nIGlu
dCBfX2wpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCl9fZXh0ZW5zaW9u
X18gZXh0ZXJuIGludCBmZnNsbCAobG9uZyBsb25nIGludCBfX2xsKQogICAgIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgc3RyY2FzZWNtcCAoX19j
b25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkp
OwoKCmV4dGVybiBpbnQgc3RybmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBj
aGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgoKCgpleHRlcm4g
aW50IHN0cmNhc2VjbXBfbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIs
CiAgICBfX2xvY2FsZV90IF9fbG9jKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMiwgMykpKTsKCmV4dGVybiBp
bnQgc3RybmNhc2VjbXBfbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIs
CiAgICAgc2l6ZV90IF9fbiwgX19sb2NhbGVfdCBfX2xvYykKICAgICB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIsIDQp
KSk7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cnNlcCAoY2hhciAqKl9fcmVzdHJpY3QgX19zdHJpbmdw
LAogICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pCiAgICAgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0
cnNpZ25hbCAoaW50IF9fc2lnKSB0aHJvdyAoKTsKCgpleHRlcm4gY2hhciAqX19zdHBjcHkgKGNo
YXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAg
ICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwpleHRlcm4g
Y2hhciAqc3RwY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fc3JjKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo
MSwgMikpKTsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RwbmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rl
c3QsCiAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikKICAgICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CmV4dGVybiBjaGFy
ICpzdHBuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKZXh0ZXJuIGludCBzdHJ2ZXJzY21wIChfX2Nv
bnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7
CgoKZXh0ZXJuIGNoYXIgKnN0cmZyeSAoY2hhciAqX19zdHJpbmcpIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gdm9pZCAqbWVtZnJvYiAodm9pZCAq
X19zLCBzaXplX3QgX19uKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEp
KSk7CgoKCgoKCgpleHRlcm4gIkMrKyIgY2hhciAqYmFzZW5hbWUgKGNoYXIgKl9fZmlsZW5hbWUp
CiAgICAgdGhyb3cgKCkgX19hc20gKCJiYXNlbmFtZSIpIF9fYXR0cmlidXRlX18gKChfX25vbm51
bGxfXyAoMSkpKTsKZXh0ZXJuICJDKysiIF9fY29uc3QgY2hhciAqYmFzZW5hbWUgKF9fY29uc3Qg
Y2hhciAqX19maWxlbmFtZSkKICAgICB0aHJvdyAoKSBfX2FzbSAoImJhc2VuYW1lIikgX19hdHRy
aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwojIDY0NiAiL21udC9zdG9yZS9jaHJvb3RzL3Vi
dW50dS1wYW5nb2xpbi1BUk1IRi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0Cn0KIyAzOCAiL2hv
bWUvd2Via2l0YnVpbGRib3Qvc2xhdmVzL2VmbC1BUk12Ny10aHVtYjItYnVpbGQvYnVpbGRzbGF2
ZS9lZmwtYXJtdjctdGh1bWIyLWJ1aWxkL2J1aWxkL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PcGNvZGUuaCIgMgoKCgpuYW1lc3BhY2UgSlNDIHsKIyA1OCAiL2hvbWUvd2Via2l0YnVp
bGRib3Qvc2xhdmVzL2VmbC1BUk12Ny10aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJtdjct
dGh1bWIyLWJ1aWxkL2J1aWxkL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUu
aCIKICAgIHR5cGVkZWYgZW51bSB7IG9wX2VudGVyLCBvcF9jcmVhdGVfYWN0aXZhdGlvbiwgb3Bf
dG91Y2hfZW50cnksIG9wX2luaXRfbGF6eV9yZWcsIG9wX2NyZWF0ZV9hcmd1bWVudHMsIG9wX2Ny
ZWF0ZV90aGlzLCBvcF9nZXRfY2FsbGVlLCBvcF90b190aGlzLCBvcF9uZXdfb2JqZWN0LCBvcF9u
ZXdfYXJyYXksIG9wX25ld19hcnJheV93aXRoX3NpemUsIG9wX25ld19hcnJheV9idWZmZXIsIG9w
X25ld19yZWdleHAsIG9wX21vdiwgb3BfY2FwdHVyZWRfbW92LCBvcF9ub3QsIG9wX2VxLCBvcF9l
cV9udWxsLCBvcF9uZXEsIG9wX25lcV9udWxsLCBvcF9zdHJpY3RlcSwgb3BfbnN0cmljdGVxLCBv
cF9sZXNzLCBvcF9sZXNzZXEsIG9wX2dyZWF0ZXIsIG9wX2dyZWF0ZXJlcSwgb3BfaW5jLCBvcF9k
ZWMsIG9wX3RvX251bWJlciwgb3BfbmVnYXRlLCBvcF9hZGQsIG9wX211bCwgb3BfZGl2LCBvcF9t
b2QsIG9wX3N1Yiwgb3BfbHNoaWZ0LCBvcF9yc2hpZnQsIG9wX3Vyc2hpZnQsIG9wX3Vuc2lnbmVk
LCBvcF9iaXRhbmQsIG9wX2JpdHhvciwgb3BfYml0b3IsIG9wX2NoZWNrX2hhc19pbnN0YW5jZSwg
b3BfaW5zdGFuY2VvZiwgb3BfdHlwZW9mLCBvcF9pc191bmRlZmluZWQsIG9wX2lzX2Jvb2xlYW4s
IG9wX2lzX251bWJlciwgb3BfaXNfc3RyaW5nLCBvcF9pc19vYmplY3QsIG9wX2lzX2Z1bmN0aW9u
LCBvcF9pbiwgb3BfaW5pdF9nbG9iYWxfY29uc3Rfbm9wLCBvcF9pbml0X2dsb2JhbF9jb25zdCwg
b3BfZ2V0X2J5X2lkLCBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmUsIG9wX2dldF9hcnJheV9sZW5n
dGgsIG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoLCBvcF9wdXRfYnlfaWQsIG9wX3B1dF9ieV9pZF9v
dXRfb2ZfbGluZSwgb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0LCBvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmUsIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbCwgb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lLCBvcF9kZWxf
YnlfaWQsIG9wX2dldF9ieV92YWwsIG9wX2dldF9hcmd1bWVudF9ieV92YWwsIG9wX3B1dF9ieV92
YWwsIG9wX3B1dF9ieV92YWxfZGlyZWN0LCBvcF9kZWxfYnlfdmFsLCBvcF9wdXRfYnlfaW5kZXgs
IG9wX3B1dF9nZXR0ZXJfc2V0dGVyLCBvcF9qbXAsIG9wX2p0cnVlLCBvcF9qZmFsc2UsIG9wX2pl
cV9udWxsLCBvcF9qbmVxX251bGwsIG9wX2puZXFfcHRyLCBvcF9qbGVzcywgb3Bfamxlc3NlcSwg
b3BfamdyZWF0ZXIsIG9wX2pncmVhdGVyZXEsIG9wX2pubGVzcywgb3Bfam5sZXNzZXEsIG9wX2pu
Z3JlYXRlciwgb3Bfam5ncmVhdGVyZXEsIG9wX2xvb3BfaGludCwgb3Bfc3dpdGNoX2ltbSwgb3Bf
c3dpdGNoX2NoYXIsIG9wX3N3aXRjaF9zdHJpbmcsIG9wX25ld19mdW5jLCBvcF9uZXdfY2FwdHVy
ZWRfZnVuYywgb3BfbmV3X2Z1bmNfZXhwLCBvcF9jYWxsLCBvcF9jYWxsX2V2YWwsIG9wX2NhbGxf
dmFyYXJncywgb3BfdGVhcl9vZmZfYWN0aXZhdGlvbiwgb3BfdGVhcl9vZmZfYXJndW1lbnRzLCBv
cF9yZXQsIG9wX3JldF9vYmplY3Rfb3JfdGhpcywgb3BfY29uc3RydWN0LCBvcF9jb25zdHJ1Y3Rf
dmFyYXJncywgb3Bfc3RyY2F0LCBvcF90b19wcmltaXRpdmUsIG9wX3Jlc29sdmVfc2NvcGUsIG9w
X2dldF9mcm9tX3Njb3BlLCBvcF9wdXRfdG9fc2NvcGUsIG9wX3B1c2hfd2l0aF9zY29wZSwgb3Bf
cG9wX3Njb3BlLCBvcF9wdXNoX25hbWVfc2NvcGUsIG9wX2NhdGNoLCBvcF90aHJvdywgb3BfdGhy
b3dfc3RhdGljX2Vycm9yLCBvcF9kZWJ1Zywgb3BfcHJvZmlsZV93aWxsX2NhbGwsIG9wX3Byb2Zp
bGVfZGlkX2NhbGwsIG9wX2VuZCwgb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHks
IG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aCwgb3BfaGFzX2luZGV4ZWRfcHJvcGVydHksIG9wX2hh
c19zdHJ1Y3R1cmVfcHJvcGVydHksIG9wX2hhc19nZW5lcmljX3Byb3BlcnR5LCBvcF9nZXRfZGly
ZWN0X3BuYW1lLCBvcF9nZXRfc3RydWN0dXJlX3Byb3BlcnR5X2VudW1lcmF0b3IsIG9wX2dldF9n
ZW5lcmljX3Byb3BlcnR5X2VudW1lcmF0b3IsIG9wX25leHRfZW51bWVyYXRvcl9wbmFtZSwgb3Bf
dG9faW5kZXhfc3RyaW5nLCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlLCBsbGludF9ldmFsX3Byb2xv
Z3VlLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSwgbGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9wcm9sb2d1ZSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ss
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2ssIGxsaW50X2dlbmVyaWNf
cmV0dXJuX3BvaW50LCBsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lLCBsbGlu
dF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lLCBsbGludF9uYXRpdmVfY2FsbF90cmFtcG9s
aW5lLCBsbGludF9uYXRpdmVfY29uc3RydWN0X3RyYW1wb2xpbmUsIGhhbmRsZVVuY2F1Z2h0RXhj
ZXB0aW9uLCB9IE9wY29kZUlEOwoKCmNvbnN0IGludCBtYXhPcGNvZGVMZW5ndGggPSA5OwoKCgpj
b25zdCBpbnQgbnVtT3Bjb2RlSURzID0gMTI3ICsgMTI7CgoKCiAgICBjb25zdCBpbnQgb3BfZW50
ZXJfbGVuZ3RoID0gMTsgY29uc3QgaW50IG9wX2NyZWF0ZV9hY3RpdmF0aW9uX2xlbmd0aCA9IDI7
IGNvbnN0IGludCBvcF90b3VjaF9lbnRyeV9sZW5ndGggPSAxOyBjb25zdCBpbnQgb3BfaW5pdF9s
YXp5X3JlZ19sZW5ndGggPSAyOyBjb25zdCBpbnQgb3BfY3JlYXRlX2FyZ3VtZW50c19sZW5ndGgg
PSAyOyBjb25zdCBpbnQgb3BfY3JlYXRlX3RoaXNfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX2dl
dF9jYWxsZWVfbGVuZ3RoID0gMzsgY29uc3QgaW50IG9wX3RvX3RoaXNfbGVuZ3RoID0gNDsgY29u
c3QgaW50IG9wX25ld19vYmplY3RfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX25ld19hcnJheV9s
ZW5ndGggPSA1OyBjb25zdCBpbnQgb3BfbmV3X2FycmF5X3dpdGhfc2l6ZV9sZW5ndGggPSA0OyBj
b25zdCBpbnQgb3BfbmV3X2FycmF5X2J1ZmZlcl9sZW5ndGggPSA1OyBjb25zdCBpbnQgb3BfbmV3
X3JlZ2V4cF9sZW5ndGggPSAzOyBjb25zdCBpbnQgb3BfbW92X2xlbmd0aCA9IDM7IGNvbnN0IGlu
dCBvcF9jYXB0dXJlZF9tb3ZfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX25vdF9sZW5ndGggPSAz
OyBjb25zdCBpbnQgb3BfZXFfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX2VxX251bGxfbGVuZ3Ro
ID0gMzsgY29uc3QgaW50IG9wX25lcV9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfbmVxX251bGxf
bGVuZ3RoID0gMzsgY29uc3QgaW50IG9wX3N0cmljdGVxX2xlbmd0aCA9IDQ7IGNvbnN0IGludCBv
cF9uc3RyaWN0ZXFfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX2xlc3NfbGVuZ3RoID0gNDsgY29u
c3QgaW50IG9wX2xlc3NlcV9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfZ3JlYXRlcl9sZW5ndGgg
PSA0OyBjb25zdCBpbnQgb3BfZ3JlYXRlcmVxX2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF9pbmNf
bGVuZ3RoID0gMjsgY29uc3QgaW50IG9wX2RlY19sZW5ndGggPSAyOyBjb25zdCBpbnQgb3BfdG9f
bnVtYmVyX2xlbmd0aCA9IDM7IGNvbnN0IGludCBvcF9uZWdhdGVfbGVuZ3RoID0gMzsgY29uc3Qg
aW50IG9wX2FkZF9sZW5ndGggPSA1OyBjb25zdCBpbnQgb3BfbXVsX2xlbmd0aCA9IDU7IGNvbnN0
IGludCBvcF9kaXZfbGVuZ3RoID0gNTsgY29uc3QgaW50IG9wX21vZF9sZW5ndGggPSA0OyBjb25z
dCBpbnQgb3Bfc3ViX2xlbmd0aCA9IDU7IGNvbnN0IGludCBvcF9sc2hpZnRfbGVuZ3RoID0gNDsg
Y29uc3QgaW50IG9wX3JzaGlmdF9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfdXJzaGlmdF9sZW5n
dGggPSA0OyBjb25zdCBpbnQgb3BfdW5zaWduZWRfbGVuZ3RoID0gMzsgY29uc3QgaW50IG9wX2Jp
dGFuZF9sZW5ndGggPSA1OyBjb25zdCBpbnQgb3BfYml0eG9yX2xlbmd0aCA9IDU7IGNvbnN0IGlu
dCBvcF9iaXRvcl9sZW5ndGggPSA1OyBjb25zdCBpbnQgb3BfY2hlY2tfaGFzX2luc3RhbmNlX2xl
bmd0aCA9IDU7IGNvbnN0IGludCBvcF9pbnN0YW5jZW9mX2xlbmd0aCA9IDQ7IGNvbnN0IGludCBv
cF90eXBlb2ZfbGVuZ3RoID0gMzsgY29uc3QgaW50IG9wX2lzX3VuZGVmaW5lZF9sZW5ndGggPSAz
OyBjb25zdCBpbnQgb3BfaXNfYm9vbGVhbl9sZW5ndGggPSAzOyBjb25zdCBpbnQgb3BfaXNfbnVt
YmVyX2xlbmd0aCA9IDM7IGNvbnN0IGludCBvcF9pc19zdHJpbmdfbGVuZ3RoID0gMzsgY29uc3Qg
aW50IG9wX2lzX29iamVjdF9sZW5ndGggPSAzOyBjb25zdCBpbnQgb3BfaXNfZnVuY3Rpb25fbGVu
Z3RoID0gMzsgY29uc3QgaW50IG9wX2luX2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF9pbml0X2ds
b2JhbF9jb25zdF9ub3BfbGVuZ3RoID0gNTsgY29uc3QgaW50IG9wX2luaXRfZ2xvYmFsX2NvbnN0
X2xlbmd0aCA9IDU7IGNvbnN0IGludCBvcF9nZXRfYnlfaWRfbGVuZ3RoID0gOTsgY29uc3QgaW50
IG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZV9sZW5ndGggPSA5OyBjb25zdCBpbnQgb3BfZ2V0X2Fy
cmF5X2xlbmd0aF9sZW5ndGggPSA5OyBjb25zdCBpbnQgb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGhf
bGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX3B1dF9ieV9pZF9sZW5ndGggPSA5OyBjb25zdCBpbnQg
b3BfcHV0X2J5X2lkX291dF9vZl9saW5lX2xlbmd0aCA9IDk7IGNvbnN0IGludCBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3RfbGVuZ3RoID0gOTsgY29uc3QgaW50IG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZV9sZW5ndGggPSA5OyBjb25zdCBpbnQgb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX2xlbmd0aCA9IDk7IGNvbnN0IGludCBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmVfbGVuZ3RoID0gOTsgY29uc3QgaW50IG9w
X2RlbF9ieV9pZF9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfZ2V0X2J5X3ZhbF9sZW5ndGggPSA2
OyBjb25zdCBpbnQgb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbF9sZW5ndGggPSA2OyBjb25zdCBpbnQg
b3BfcHV0X2J5X3ZhbF9sZW5ndGggPSA1OyBjb25zdCBpbnQgb3BfcHV0X2J5X3ZhbF9kaXJlY3Rf
bGVuZ3RoID0gNTsgY29uc3QgaW50IG9wX2RlbF9ieV92YWxfbGVuZ3RoID0gNDsgY29uc3QgaW50
IG9wX3B1dF9ieV9pbmRleF9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfcHV0X2dldHRlcl9zZXR0
ZXJfbGVuZ3RoID0gNTsgY29uc3QgaW50IG9wX2ptcF9sZW5ndGggPSAyOyBjb25zdCBpbnQgb3Bf
anRydWVfbGVuZ3RoID0gMzsgY29uc3QgaW50IG9wX2pmYWxzZV9sZW5ndGggPSAzOyBjb25zdCBp
bnQgb3BfamVxX251bGxfbGVuZ3RoID0gMzsgY29uc3QgaW50IG9wX2puZXFfbnVsbF9sZW5ndGgg
PSAzOyBjb25zdCBpbnQgb3Bfam5lcV9wdHJfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX2psZXNz
X2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF9qbGVzc2VxX2xlbmd0aCA9IDQ7IGNvbnN0IGludCBv
cF9qZ3JlYXRlcl9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfamdyZWF0ZXJlcV9sZW5ndGggPSA0
OyBjb25zdCBpbnQgb3Bfam5sZXNzX2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF9qbmxlc3NlcV9s
ZW5ndGggPSA0OyBjb25zdCBpbnQgb3Bfam5ncmVhdGVyX2xlbmd0aCA9IDQ7IGNvbnN0IGludCBv
cF9qbmdyZWF0ZXJlcV9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfbG9vcF9oaW50X2xlbmd0aCA9
IDE7IGNvbnN0IGludCBvcF9zd2l0Y2hfaW1tX2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF9zd2l0
Y2hfY2hhcl9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3Bfc3dpdGNoX3N0cmluZ19sZW5ndGggPSA0
OyBjb25zdCBpbnQgb3BfbmV3X2Z1bmNfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX25ld19jYXB0
dXJlZF9mdW5jX2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF9uZXdfZnVuY19leHBfbGVuZ3RoID0g
MzsgY29uc3QgaW50IG9wX2NhbGxfbGVuZ3RoID0gOTsgY29uc3QgaW50IG9wX2NhbGxfZXZhbF9s
ZW5ndGggPSA5OyBjb25zdCBpbnQgb3BfY2FsbF92YXJhcmdzX2xlbmd0aCA9IDk7IGNvbnN0IGlu
dCBvcF90ZWFyX29mZl9hY3RpdmF0aW9uX2xlbmd0aCA9IDI7IGNvbnN0IGludCBvcF90ZWFyX29m
Zl9hcmd1bWVudHNfbGVuZ3RoID0gMzsgY29uc3QgaW50IG9wX3JldF9sZW5ndGggPSAyOyBjb25z
dCBpbnQgb3BfcmV0X29iamVjdF9vcl90aGlzX2xlbmd0aCA9IDM7IGNvbnN0IGludCBvcF9jb25z
dHJ1Y3RfbGVuZ3RoID0gOTsgY29uc3QgaW50IG9wX2NvbnN0cnVjdF92YXJhcmdzX2xlbmd0aCA9
IDk7IGNvbnN0IGludCBvcF9zdHJjYXRfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX3RvX3ByaW1p
dGl2ZV9sZW5ndGggPSAzOyBjb25zdCBpbnQgb3BfcmVzb2x2ZV9zY29wZV9sZW5ndGggPSA2OyBj
b25zdCBpbnQgb3BfZ2V0X2Zyb21fc2NvcGVfbGVuZ3RoID0gODsgY29uc3QgaW50IG9wX3B1dF90
b19zY29wZV9sZW5ndGggPSA3OyBjb25zdCBpbnQgb3BfcHVzaF93aXRoX3Njb3BlX2xlbmd0aCA9
IDI7IGNvbnN0IGludCBvcF9wb3Bfc2NvcGVfbGVuZ3RoID0gMTsgY29uc3QgaW50IG9wX3B1c2hf
bmFtZV9zY29wZV9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfY2F0Y2hfbGVuZ3RoID0gMjsgY29u
c3QgaW50IG9wX3Rocm93X2xlbmd0aCA9IDI7IGNvbnN0IGludCBvcF90aHJvd19zdGF0aWNfZXJy
b3JfbGVuZ3RoID0gMzsgY29uc3QgaW50IG9wX2RlYnVnX2xlbmd0aCA9IDM7IGNvbnN0IGludCBv
cF9wcm9maWxlX3dpbGxfY2FsbF9sZW5ndGggPSAyOyBjb25zdCBpbnQgb3BfcHJvZmlsZV9kaWRf
Y2FsbF9sZW5ndGggPSAyOyBjb25zdCBpbnQgb3BfZW5kX2xlbmd0aCA9IDI7IGNvbnN0IGludCBv
cF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eV9sZW5ndGggPSA2OyBjb25zdCBpbnQg
b3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoX2xlbmd0aCA9IDM7IGNvbnN0IGludCBvcF9oYXNfaW5k
ZXhlZF9wcm9wZXJ0eV9sZW5ndGggPSA1OyBjb25zdCBpbnQgb3BfaGFzX3N0cnVjdHVyZV9wcm9w
ZXJ0eV9sZW5ndGggPSA1OyBjb25zdCBpbnQgb3BfaGFzX2dlbmVyaWNfcHJvcGVydHlfbGVuZ3Ro
ID0gNDsgY29uc3QgaW50IG9wX2dldF9kaXJlY3RfcG5hbWVfbGVuZ3RoID0gNzsgY29uc3QgaW50
IG9wX2dldF9zdHJ1Y3R1cmVfcHJvcGVydHlfZW51bWVyYXRvcl9sZW5ndGggPSA0OyBjb25zdCBp
bnQgb3BfZ2V0X2dlbmVyaWNfcHJvcGVydHlfZW51bWVyYXRvcl9sZW5ndGggPSA1OyBjb25zdCBp
bnQgb3BfbmV4dF9lbnVtZXJhdG9yX3BuYW1lX2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF90b19p
bmRleF9zdHJpbmdfbGVuZ3RoID0gMzsgY29uc3QgaW50IGxsaW50X3Byb2dyYW1fcHJvbG9ndWVf
bGVuZ3RoID0gMTsgY29uc3QgaW50IGxsaW50X2V2YWxfcHJvbG9ndWVfbGVuZ3RoID0gMTsgY29u
c3QgaW50IGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlX2xlbmd0aCA9IDE7IGNvbnN0
IGludCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlX2xlbmd0aCA9IDE7IGNv
bnN0IGludCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja19sZW5ndGggPSAxOyBj
b25zdCBpbnQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja19sZW5ndGgg
PSAxOyBjb25zdCBpbnQgbGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnRfbGVuZ3RoID0gMTsgY29u
c3QgaW50IGxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmVfbGVuZ3RoID0gMTsg
Y29uc3QgaW50IGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmVfbGVuZ3RoID0gMTsg
Y29uc3QgaW50IGxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmVfbGVuZ3RoID0gMTsgY29uc3Qg
aW50IGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZV9sZW5ndGggPSAxOyBjb25zdCBp
bnQgaGFuZGxlVW5jYXVnaHRFeGNlcHRpb25fbGVuZ3RoID0gMTs7CgoKCgoKICAgIGNvbnN0IGlu
dCBvcGNvZGVMZW5ndGhzW251bU9wY29kZUlEc10gPSB7IDEsIDIsIDEsIDIsIDIsIDQsIDMsIDQs
IDQsIDUsIDQsIDUsIDMsIDMsIDQsIDMsIDQsIDMsIDQsIDMsIDQsIDQsIDQsIDQsIDQsIDQsIDIs
IDIsIDMsIDMsIDUsIDUsIDUsIDQsIDUsIDQsIDQsIDQsIDMsIDUsIDUsIDUsIDUsIDQsIDMsIDMs
IDMsIDMsIDMsIDMsIDMsIDQsIDUsIDUsIDksIDksIDksIDQsIDksIDksIDksIDksIDksIDksIDQs
IDYsIDYsIDUsIDUsIDQsIDQsIDUsIDIsIDMsIDMsIDMsIDMsIDQsIDQsIDQsIDQsIDQsIDQsIDQs
IDQsIDQsIDEsIDQsIDQsIDQsIDQsIDQsIDMsIDksIDksIDksIDIsIDMsIDIsIDMsIDksIDksIDQs
IDMsIDYsIDgsIDcsIDIsIDEsIDQsIDIsIDIsIDMsIDMsIDIsIDIsIDIsIDYsIDMsIDUsIDUsIDQs
IDcsIDQsIDUsIDQsIDMsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIH07CgoK
CiAgICBzdGF0aWNfYXNzZXJ0KChvcF9lbnRlciA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RI
QVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfY3JlYXRlX2Fj
dGl2YXRpb24gPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJF
X1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3RvdWNoX2VudHJ5IDw9IG51bU9wY29kZUlEcyks
ICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChv
cF9pbml0X2xhenlfcmVnIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVf
SURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9jcmVhdGVfYXJndW1lbnRzIDw9IG51
bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0
aWNfYXNzZXJ0KChvcF9jcmVhdGVfdGhpcyA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRf
SlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZ2V0X2NhbGxlZSA8
PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsg
c3RhdGljX2Fzc2VydCgob3BfdG9fdGhpcyA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRf
SlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfbmV3X29iamVjdCA8
PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsg
c3RhdGljX2Fzc2VydCgob3BfbmV3X2FycmF5IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhB
VF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9uZXdfYXJyYXlf
d2l0aF9zaXplIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FS
RV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9uZXdfYXJyYXlfYnVmZmVyIDw9IG51bU9wY29k
ZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNz
ZXJ0KChvcF9uZXdfcmVnZXhwIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENP
REVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9tb3YgPD0gbnVtT3Bjb2RlSURz
KSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQo
KG9wX2NhcHR1cmVkX21vdiA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RF
X0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3Bfbm90IDw9IG51bU9wY29kZUlEcyks
ICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChv
cF9lcSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFM
SUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZXFfbnVsbCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJU
X1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfbmVxIDw9
IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBz
dGF0aWNfYXNzZXJ0KChvcF9uZXFfbnVsbCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRf
SlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3Bfc3RyaWN0ZXEgPD0g
bnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0
YXRpY19hc3NlcnQoKG9wX25zdHJpY3RlcSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRf
SlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfbGVzcyA8PSBudW1P
cGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGlj
X2Fzc2VydCgob3BfbGVzc2VxIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENP
REVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9ncmVhdGVyIDw9IG51bU9wY29k
ZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNz
ZXJ0KChvcF9ncmVhdGVyZXEgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09E
RV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2luYyA8PSBudW1PcGNvZGVJRHMp
LCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgo
b3BfZGVjIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9W
QUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF90b19udW1iZXIgPD0gbnVtT3Bjb2RlSURzKSwgIkFT
U0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX25l
Z2F0ZSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFM
SUQiKTsgc3RhdGljX2Fzc2VydCgob3BfYWRkIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhB
VF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9tdWwgPD0gbnVt
T3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRp
Y19hc3NlcnQoKG9wX2RpdiA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RF
X0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfbW9kIDw9IG51bU9wY29kZUlEcyks
ICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChv
cF9zdWIgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZB
TElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2xzaGlmdCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJU
X1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfcnNoaWZ0
IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIp
OyBzdGF0aWNfYXNzZXJ0KChvcF91cnNoaWZ0IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhB
VF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF91bnNpZ25lZCA8
PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsg
c3RhdGljX2Fzc2VydCgob3BfYml0YW5kIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9K
U19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9iaXR4b3IgPD0gbnVt
T3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRp
Y19hc3NlcnQoKG9wX2JpdG9yIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENP
REVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9jaGVja19oYXNfaW5zdGFuY2Ug
PD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7
IHN0YXRpY19hc3NlcnQoKG9wX2luc3RhbmNlb2YgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9U
SEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3R5cGVvZiA8
PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsg
c3RhdGljX2Fzc2VydCgob3BfaXNfdW5kZWZpbmVkIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRf
VEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9pc19ib29s
ZWFuIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJ
RCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9pc19udW1iZXIgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VS
VF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2lzX3N0
cmluZyA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFM
SUQiKTsgc3RhdGljX2Fzc2VydCgob3BfaXNfb2JqZWN0IDw9IG51bU9wY29kZUlEcyksICJBU1NF
UlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9pc19m
dW5jdGlvbiA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVf
VkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfaW4gPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9U
SEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2luaXRfZ2xv
YmFsX2NvbnN0X25vcCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lE
U19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfaW5pdF9nbG9iYWxfY29uc3QgPD0gbnVt
T3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRp
Y19hc3NlcnQoKG9wX2dldF9ieV9pZCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNf
T1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZ2V0X2J5X2lkX291dF9v
Zl9saW5lIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9W
QUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9nZXRfYXJyYXlfbGVuZ3RoIDw9IG51bU9wY29kZUlE
cyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0
KChvcF9nZXRfYXJndW1lbnRzX2xlbmd0aCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRf
SlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfcHV0X2J5X2lkIDw9
IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBz
dGF0aWNfYXNzZXJ0KChvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUgPD0gbnVtT3Bjb2RlSURzKSwg
IkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RI
QVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRf
VEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9ub3JtYWwgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09Q
Q09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX25vcm1hbF9vdXRfb2ZfbGluZSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNf
T1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZGVsX2J5X2lkIDw9IG51
bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0
aWNfYXNzZXJ0KChvcF9nZXRfYnlfdmFsIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9K
U19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9nZXRfYXJndW1lbnRf
YnlfdmFsIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9W
QUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9wdXRfYnlfdmFsIDw9IG51bU9wY29kZUlEcyksICJB
U1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9w
dXRfYnlfdmFsX2RpcmVjdCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RF
X0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZGVsX2J5X3ZhbCA8PSBudW1PcGNv
ZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fz
c2VydCgob3BfcHV0X2J5X2luZGV4IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19P
UENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9wdXRfZ2V0dGVyX3NldHRl
ciA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQi
KTsgc3RhdGljX2Fzc2VydCgob3Bfam1wIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9K
U19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9qdHJ1ZSA8PSBudW1P
cGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGlj
X2Fzc2VydCgob3BfamZhbHNlIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENP
REVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9qZXFfbnVsbCA8PSBudW1PcGNv
ZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fz
c2VydCgob3Bfam5lcV9udWxsIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENP
REVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9qbmVxX3B0ciA8PSBudW1PcGNv
ZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fz
c2VydCgob3Bfamxlc3MgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9J
RFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2psZXNzZXEgPD0gbnVtT3Bjb2RlSURz
KSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQo
KG9wX2pncmVhdGVyIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURT
X0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9qZ3JlYXRlcmVxIDw9IG51bU9wY29kZUlE
cyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0
KChvcF9qbmxlc3MgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNf
QVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2pubGVzc2VxIDw9IG51bU9wY29kZUlEcyks
ICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChv
cF9qbmdyZWF0ZXIgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNf
QVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2puZ3JlYXRlcmVxIDw9IG51bU9wY29kZUlE
cyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0
KChvcF9sb29wX2hpbnQgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9J
RFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3N3aXRjaF9pbW0gPD0gbnVtT3Bjb2Rl
SURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3Nl
cnQoKG9wX3N3aXRjaF9jaGFyIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENP
REVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9zd2l0Y2hfc3RyaW5nIDw9IG51
bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0
aWNfYXNzZXJ0KChvcF9uZXdfZnVuYyA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNf
T1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfbmV3X2NhcHR1cmVkX2Z1
bmMgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElE
Iik7IHN0YXRpY19hc3NlcnQoKG9wX25ld19mdW5jX2V4cCA8PSBudW1PcGNvZGVJRHMpLCAiQVNT
RVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfY2Fs
bCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQi
KTsgc3RhdGljX2Fzc2VydCgob3BfY2FsbF9ldmFsIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRf
VEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9jYWxsX3Zh
cmFyZ3MgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZB
TElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3RlYXJfb2ZmX2FjdGl2YXRpb24gPD0gbnVtT3Bjb2Rl
SURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3Nl
cnQoKG9wX3RlYXJfb2ZmX2FyZ3VtZW50cyA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRf
SlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfcmV0IDw9IG51bU9w
Y29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNf
YXNzZXJ0KChvcF9yZXRfb2JqZWN0X29yX3RoaXMgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9U
SEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2NvbnN0cnVj
dCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQi
KTsgc3RhdGljX2Fzc2VydCgob3BfY29uc3RydWN0X3ZhcmFyZ3MgPD0gbnVtT3Bjb2RlSURzKSwg
IkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9w
X3N0cmNhdCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVf
VkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfdG9fcHJpbWl0aXZlIDw9IG51bU9wY29kZUlEcyks
ICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChv
cF9yZXNvbHZlX3Njb3BlIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVf
SURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9nZXRfZnJvbV9zY29wZSA8PSBudW1P
cGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGlj
X2Fzc2VydCgob3BfcHV0X3RvX3Njb3BlIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9K
U19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9wdXNoX3dpdGhfc2Nv
cGUgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElE
Iik7IHN0YXRpY19hc3NlcnQoKG9wX3BvcF9zY29wZSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJU
X1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfcHVzaF9u
YW1lX3Njb3BlIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FS
RV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9jYXRjaCA8PSBudW1PcGNvZGVJRHMpLCAiQVNT
RVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfdGhy
b3cgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElE
Iik7IHN0YXRpY19hc3NlcnQoKG9wX3Rocm93X3N0YXRpY19lcnJvciA8PSBudW1PcGNvZGVJRHMp
LCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgo
b3BfZGVidWcgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJF
X1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3Byb2ZpbGVfd2lsbF9jYWxsIDw9IG51bU9wY29k
ZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNz
ZXJ0KChvcF9wcm9maWxlX2RpZF9jYWxsIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9K
U19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9lbmQgPD0gbnVtT3Bj
b2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19h
c3NlcnQoKG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5IDw9IG51bU9wY29kZUlE
cyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0
KChvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGggPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFU
X0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2hhc19pbmRleGVk
X3Byb3BlcnR5IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FS
RV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5IDw9IG51
bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0
aWNfYXNzZXJ0KChvcF9oYXNfZ2VuZXJpY19wcm9wZXJ0eSA8PSBudW1PcGNvZGVJRHMpLCAiQVNT
RVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZ2V0
X2RpcmVjdF9wbmFtZSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lE
U19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZ2V0X3N0cnVjdHVyZV9wcm9wZXJ0eV9l
bnVtZXJhdG9yIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FS
RV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9nZXRfZ2VuZXJpY19wcm9wZXJ0eV9lbnVtZXJh
dG9yIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJ
RCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9uZXh0X2VudW1lcmF0b3JfcG5hbWUgPD0gbnVtT3Bjb2Rl
SURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3Nl
cnQoKG9wX3RvX2luZGV4X3N0cmluZyA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNf
T1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgobGxpbnRfcHJvZ3JhbV9wcm9s
b2d1ZSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFM
SUQiKTsgc3RhdGljX2Fzc2VydCgobGxpbnRfZXZhbF9wcm9sb2d1ZSA8PSBudW1PcGNvZGVJRHMp
LCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgo
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VS
VF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKGxsaW50X2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9U
SEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKGxsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9K
U19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChsbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X2FyaXR5X2NoZWNrIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9K
U19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChsbGludF9nZW5lcmljX3Jl
dHVybl9wb2ludCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19B
UkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgobGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJh
bXBvbGluZSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVf
VkFMSUQiKTsgc3RhdGljX2Fzc2VydCgobGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGlu
ZSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQi
KTsgc3RhdGljX2Fzc2VydCgobGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZSA8PSBudW1PcGNv
ZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fz
c2VydCgobGxpbnRfbmF0aXZlX2NvbnN0cnVjdF90cmFtcG9saW5lIDw9IG51bU9wY29kZUlEcyks
ICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KCho
YW5kbGVVbmNhdWdodEV4Y2VwdGlvbiA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNf
T1BDT0RFX0lEU19BUkVfVkFMSUQiKTs7CgoKCnR5cGVkZWYgdm9pZCogT3Bjb2RlOwoKCgoKCgoK
ZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IG9wY29kZU5hbWVzW107CgppbmxpbmUgY29uc3QgY2hh
ciogcGFkT3Bjb2RlTmFtZShPcGNvZGVJRCBvcCwgdW5zaWduZWQgd2lkdGgpCnsKICAgIHVuc2ln
bmVkIHBhZCA9IHdpZHRoIC0gc3RybGVuKG9wY29kZU5hbWVzW29wXSk7CiAgICBwYWQgPSBzdGQ6
Om1pbihwYWQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdHJsZW4oIiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIikpKTsKICAgIHJldHVybiAiICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0cmxlbigiICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiKSkgLSBwYWQ7Cn0KIyAxMTggIi9ob21lL3dlYmtpdGJ1aWxkYm90
L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxkc2xhdmUvZWZsLWFybXY3LXRodW1i
Mi1idWlsZC9idWlsZC9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgiCmlu
bGluZSBzaXplX3Qgb3Bjb2RlTGVuZ3RoKE9wY29kZUlEIG9wY29kZSkKewogICAgc3dpdGNoIChv
cGNvZGUpIHsKCiAgICAgICAgIGNhc2Ugb3BfZW50ZXI6IHJldHVybiBvcF9lbnRlcl9sZW5ndGg7
IGNhc2Ugb3BfY3JlYXRlX2FjdGl2YXRpb246IHJldHVybiBvcF9jcmVhdGVfYWN0aXZhdGlvbl9s
ZW5ndGg7IGNhc2Ugb3BfdG91Y2hfZW50cnk6IHJldHVybiBvcF90b3VjaF9lbnRyeV9sZW5ndGg7
IGNhc2Ugb3BfaW5pdF9sYXp5X3JlZzogcmV0dXJuIG9wX2luaXRfbGF6eV9yZWdfbGVuZ3RoOyBj
YXNlIG9wX2NyZWF0ZV9hcmd1bWVudHM6IHJldHVybiBvcF9jcmVhdGVfYXJndW1lbnRzX2xlbmd0
aDsgY2FzZSBvcF9jcmVhdGVfdGhpczogcmV0dXJuIG9wX2NyZWF0ZV90aGlzX2xlbmd0aDsgY2Fz
ZSBvcF9nZXRfY2FsbGVlOiByZXR1cm4gb3BfZ2V0X2NhbGxlZV9sZW5ndGg7IGNhc2Ugb3BfdG9f
dGhpczogcmV0dXJuIG9wX3RvX3RoaXNfbGVuZ3RoOyBjYXNlIG9wX25ld19vYmplY3Q6IHJldHVy
biBvcF9uZXdfb2JqZWN0X2xlbmd0aDsgY2FzZSBvcF9uZXdfYXJyYXk6IHJldHVybiBvcF9uZXdf
YXJyYXlfbGVuZ3RoOyBjYXNlIG9wX25ld19hcnJheV93aXRoX3NpemU6IHJldHVybiBvcF9uZXdf
YXJyYXlfd2l0aF9zaXplX2xlbmd0aDsgY2FzZSBvcF9uZXdfYXJyYXlfYnVmZmVyOiByZXR1cm4g
b3BfbmV3X2FycmF5X2J1ZmZlcl9sZW5ndGg7IGNhc2Ugb3BfbmV3X3JlZ2V4cDogcmV0dXJuIG9w
X25ld19yZWdleHBfbGVuZ3RoOyBjYXNlIG9wX21vdjogcmV0dXJuIG9wX21vdl9sZW5ndGg7IGNh
c2Ugb3BfY2FwdHVyZWRfbW92OiByZXR1cm4gb3BfY2FwdHVyZWRfbW92X2xlbmd0aDsgY2FzZSBv
cF9ub3Q6IHJldHVybiBvcF9ub3RfbGVuZ3RoOyBjYXNlIG9wX2VxOiByZXR1cm4gb3BfZXFfbGVu
Z3RoOyBjYXNlIG9wX2VxX251bGw6IHJldHVybiBvcF9lcV9udWxsX2xlbmd0aDsgY2FzZSBvcF9u
ZXE6IHJldHVybiBvcF9uZXFfbGVuZ3RoOyBjYXNlIG9wX25lcV9udWxsOiByZXR1cm4gb3BfbmVx
X251bGxfbGVuZ3RoOyBjYXNlIG9wX3N0cmljdGVxOiByZXR1cm4gb3Bfc3RyaWN0ZXFfbGVuZ3Ro
OyBjYXNlIG9wX25zdHJpY3RlcTogcmV0dXJuIG9wX25zdHJpY3RlcV9sZW5ndGg7IGNhc2Ugb3Bf
bGVzczogcmV0dXJuIG9wX2xlc3NfbGVuZ3RoOyBjYXNlIG9wX2xlc3NlcTogcmV0dXJuIG9wX2xl
c3NlcV9sZW5ndGg7IGNhc2Ugb3BfZ3JlYXRlcjogcmV0dXJuIG9wX2dyZWF0ZXJfbGVuZ3RoOyBj
YXNlIG9wX2dyZWF0ZXJlcTogcmV0dXJuIG9wX2dyZWF0ZXJlcV9sZW5ndGg7IGNhc2Ugb3BfaW5j
OiByZXR1cm4gb3BfaW5jX2xlbmd0aDsgY2FzZSBvcF9kZWM6IHJldHVybiBvcF9kZWNfbGVuZ3Ro
OyBjYXNlIG9wX3RvX251bWJlcjogcmV0dXJuIG9wX3RvX251bWJlcl9sZW5ndGg7IGNhc2Ugb3Bf
bmVnYXRlOiByZXR1cm4gb3BfbmVnYXRlX2xlbmd0aDsgY2FzZSBvcF9hZGQ6IHJldHVybiBvcF9h
ZGRfbGVuZ3RoOyBjYXNlIG9wX211bDogcmV0dXJuIG9wX211bF9sZW5ndGg7IGNhc2Ugb3BfZGl2
OiByZXR1cm4gb3BfZGl2X2xlbmd0aDsgY2FzZSBvcF9tb2Q6IHJldHVybiBvcF9tb2RfbGVuZ3Ro
OyBjYXNlIG9wX3N1YjogcmV0dXJuIG9wX3N1Yl9sZW5ndGg7IGNhc2Ugb3BfbHNoaWZ0OiByZXR1
cm4gb3BfbHNoaWZ0X2xlbmd0aDsgY2FzZSBvcF9yc2hpZnQ6IHJldHVybiBvcF9yc2hpZnRfbGVu
Z3RoOyBjYXNlIG9wX3Vyc2hpZnQ6IHJldHVybiBvcF91cnNoaWZ0X2xlbmd0aDsgY2FzZSBvcF91
bnNpZ25lZDogcmV0dXJuIG9wX3Vuc2lnbmVkX2xlbmd0aDsgY2FzZSBvcF9iaXRhbmQ6IHJldHVy
biBvcF9iaXRhbmRfbGVuZ3RoOyBjYXNlIG9wX2JpdHhvcjogcmV0dXJuIG9wX2JpdHhvcl9sZW5n
dGg7IGNhc2Ugb3BfYml0b3I6IHJldHVybiBvcF9iaXRvcl9sZW5ndGg7IGNhc2Ugb3BfY2hlY2tf
aGFzX2luc3RhbmNlOiByZXR1cm4gb3BfY2hlY2tfaGFzX2luc3RhbmNlX2xlbmd0aDsgY2FzZSBv
cF9pbnN0YW5jZW9mOiByZXR1cm4gb3BfaW5zdGFuY2VvZl9sZW5ndGg7IGNhc2Ugb3BfdHlwZW9m
OiByZXR1cm4gb3BfdHlwZW9mX2xlbmd0aDsgY2FzZSBvcF9pc191bmRlZmluZWQ6IHJldHVybiBv
cF9pc191bmRlZmluZWRfbGVuZ3RoOyBjYXNlIG9wX2lzX2Jvb2xlYW46IHJldHVybiBvcF9pc19i
b29sZWFuX2xlbmd0aDsgY2FzZSBvcF9pc19udW1iZXI6IHJldHVybiBvcF9pc19udW1iZXJfbGVu
Z3RoOyBjYXNlIG9wX2lzX3N0cmluZzogcmV0dXJuIG9wX2lzX3N0cmluZ19sZW5ndGg7IGNhc2Ug
b3BfaXNfb2JqZWN0OiByZXR1cm4gb3BfaXNfb2JqZWN0X2xlbmd0aDsgY2FzZSBvcF9pc19mdW5j
dGlvbjogcmV0dXJuIG9wX2lzX2Z1bmN0aW9uX2xlbmd0aDsgY2FzZSBvcF9pbjogcmV0dXJuIG9w
X2luX2xlbmd0aDsgY2FzZSBvcF9pbml0X2dsb2JhbF9jb25zdF9ub3A6IHJldHVybiBvcF9pbml0
X2dsb2JhbF9jb25zdF9ub3BfbGVuZ3RoOyBjYXNlIG9wX2luaXRfZ2xvYmFsX2NvbnN0OiByZXR1
cm4gb3BfaW5pdF9nbG9iYWxfY29uc3RfbGVuZ3RoOyBjYXNlIG9wX2dldF9ieV9pZDogcmV0dXJu
IG9wX2dldF9ieV9pZF9sZW5ndGg7IGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lOiByZXR1
cm4gb3BfZ2V0X2J5X2lkX291dF9vZl9saW5lX2xlbmd0aDsgY2FzZSBvcF9nZXRfYXJyYXlfbGVu
Z3RoOiByZXR1cm4gb3BfZ2V0X2FycmF5X2xlbmd0aF9sZW5ndGg7IGNhc2Ugb3BfZ2V0X2FyZ3Vt
ZW50c19sZW5ndGg6IHJldHVybiBvcF9nZXRfYXJndW1lbnRzX2xlbmd0aF9sZW5ndGg7IGNhc2Ug
b3BfcHV0X2J5X2lkOiByZXR1cm4gb3BfcHV0X2J5X2lkX2xlbmd0aDsgY2FzZSBvcF9wdXRfYnlf
aWRfb3V0X29mX2xpbmU6IHJldHVybiBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmVfbGVuZ3RoOyBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDogcmV0dXJuIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdF9sZW5ndGg7IGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGly
ZWN0X291dF9vZl9saW5lOiByZXR1cm4gb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291
dF9vZl9saW5lX2xlbmd0aDsgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHJl
dHVybiBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfbGVuZ3RoOyBjYXNlIG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZTogcmV0dXJuIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZV9sZW5ndGg7IGNhc2Ugb3BfZGVsX2J5X2lkOiBy
ZXR1cm4gb3BfZGVsX2J5X2lkX2xlbmd0aDsgY2FzZSBvcF9nZXRfYnlfdmFsOiByZXR1cm4gb3Bf
Z2V0X2J5X3ZhbF9sZW5ndGg7IGNhc2Ugb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbDogcmV0dXJuIG9w
X2dldF9hcmd1bWVudF9ieV92YWxfbGVuZ3RoOyBjYXNlIG9wX3B1dF9ieV92YWw6IHJldHVybiBv
cF9wdXRfYnlfdmFsX2xlbmd0aDsgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDogcmV0dXJuIG9w
X3B1dF9ieV92YWxfZGlyZWN0X2xlbmd0aDsgY2FzZSBvcF9kZWxfYnlfdmFsOiByZXR1cm4gb3Bf
ZGVsX2J5X3ZhbF9sZW5ndGg7IGNhc2Ugb3BfcHV0X2J5X2luZGV4OiByZXR1cm4gb3BfcHV0X2J5
X2luZGV4X2xlbmd0aDsgY2FzZSBvcF9wdXRfZ2V0dGVyX3NldHRlcjogcmV0dXJuIG9wX3B1dF9n
ZXR0ZXJfc2V0dGVyX2xlbmd0aDsgY2FzZSBvcF9qbXA6IHJldHVybiBvcF9qbXBfbGVuZ3RoOyBj
YXNlIG9wX2p0cnVlOiByZXR1cm4gb3BfanRydWVfbGVuZ3RoOyBjYXNlIG9wX2pmYWxzZTogcmV0
dXJuIG9wX2pmYWxzZV9sZW5ndGg7IGNhc2Ugb3BfamVxX251bGw6IHJldHVybiBvcF9qZXFfbnVs
bF9sZW5ndGg7IGNhc2Ugb3Bfam5lcV9udWxsOiByZXR1cm4gb3Bfam5lcV9udWxsX2xlbmd0aDsg
Y2FzZSBvcF9qbmVxX3B0cjogcmV0dXJuIG9wX2puZXFfcHRyX2xlbmd0aDsgY2FzZSBvcF9qbGVz
czogcmV0dXJuIG9wX2psZXNzX2xlbmd0aDsgY2FzZSBvcF9qbGVzc2VxOiByZXR1cm4gb3Bfamxl
c3NlcV9sZW5ndGg7IGNhc2Ugb3BfamdyZWF0ZXI6IHJldHVybiBvcF9qZ3JlYXRlcl9sZW5ndGg7
IGNhc2Ugb3BfamdyZWF0ZXJlcTogcmV0dXJuIG9wX2pncmVhdGVyZXFfbGVuZ3RoOyBjYXNlIG9w
X2pubGVzczogcmV0dXJuIG9wX2pubGVzc19sZW5ndGg7IGNhc2Ugb3Bfam5sZXNzZXE6IHJldHVy
biBvcF9qbmxlc3NlcV9sZW5ndGg7IGNhc2Ugb3Bfam5ncmVhdGVyOiByZXR1cm4gb3Bfam5ncmVh
dGVyX2xlbmd0aDsgY2FzZSBvcF9qbmdyZWF0ZXJlcTogcmV0dXJuIG9wX2puZ3JlYXRlcmVxX2xl
bmd0aDsgY2FzZSBvcF9sb29wX2hpbnQ6IHJldHVybiBvcF9sb29wX2hpbnRfbGVuZ3RoOyBjYXNl
IG9wX3N3aXRjaF9pbW06IHJldHVybiBvcF9zd2l0Y2hfaW1tX2xlbmd0aDsgY2FzZSBvcF9zd2l0
Y2hfY2hhcjogcmV0dXJuIG9wX3N3aXRjaF9jaGFyX2xlbmd0aDsgY2FzZSBvcF9zd2l0Y2hfc3Ry
aW5nOiByZXR1cm4gb3Bfc3dpdGNoX3N0cmluZ19sZW5ndGg7IGNhc2Ugb3BfbmV3X2Z1bmM6IHJl
dHVybiBvcF9uZXdfZnVuY19sZW5ndGg7IGNhc2Ugb3BfbmV3X2NhcHR1cmVkX2Z1bmM6IHJldHVy
biBvcF9uZXdfY2FwdHVyZWRfZnVuY19sZW5ndGg7IGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOiByZXR1
cm4gb3BfbmV3X2Z1bmNfZXhwX2xlbmd0aDsgY2FzZSBvcF9jYWxsOiByZXR1cm4gb3BfY2FsbF9s
ZW5ndGg7IGNhc2Ugb3BfY2FsbF9ldmFsOiByZXR1cm4gb3BfY2FsbF9ldmFsX2xlbmd0aDsgY2Fz
ZSBvcF9jYWxsX3ZhcmFyZ3M6IHJldHVybiBvcF9jYWxsX3ZhcmFyZ3NfbGVuZ3RoOyBjYXNlIG9w
X3RlYXJfb2ZmX2FjdGl2YXRpb246IHJldHVybiBvcF90ZWFyX29mZl9hY3RpdmF0aW9uX2xlbmd0
aDsgY2FzZSBvcF90ZWFyX29mZl9hcmd1bWVudHM6IHJldHVybiBvcF90ZWFyX29mZl9hcmd1bWVu
dHNfbGVuZ3RoOyBjYXNlIG9wX3JldDogcmV0dXJuIG9wX3JldF9sZW5ndGg7IGNhc2Ugb3BfcmV0
X29iamVjdF9vcl90aGlzOiByZXR1cm4gb3BfcmV0X29iamVjdF9vcl90aGlzX2xlbmd0aDsgY2Fz
ZSBvcF9jb25zdHJ1Y3Q6IHJldHVybiBvcF9jb25zdHJ1Y3RfbGVuZ3RoOyBjYXNlIG9wX2NvbnN0
cnVjdF92YXJhcmdzOiByZXR1cm4gb3BfY29uc3RydWN0X3ZhcmFyZ3NfbGVuZ3RoOyBjYXNlIG9w
X3N0cmNhdDogcmV0dXJuIG9wX3N0cmNhdF9sZW5ndGg7IGNhc2Ugb3BfdG9fcHJpbWl0aXZlOiBy
ZXR1cm4gb3BfdG9fcHJpbWl0aXZlX2xlbmd0aDsgY2FzZSBvcF9yZXNvbHZlX3Njb3BlOiByZXR1
cm4gb3BfcmVzb2x2ZV9zY29wZV9sZW5ndGg7IGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGU6IHJldHVy
biBvcF9nZXRfZnJvbV9zY29wZV9sZW5ndGg7IGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiByZXR1cm4g
b3BfcHV0X3RvX3Njb3BlX2xlbmd0aDsgY2FzZSBvcF9wdXNoX3dpdGhfc2NvcGU6IHJldHVybiBv
cF9wdXNoX3dpdGhfc2NvcGVfbGVuZ3RoOyBjYXNlIG9wX3BvcF9zY29wZTogcmV0dXJuIG9wX3Bv
cF9zY29wZV9sZW5ndGg7IGNhc2Ugb3BfcHVzaF9uYW1lX3Njb3BlOiByZXR1cm4gb3BfcHVzaF9u
YW1lX3Njb3BlX2xlbmd0aDsgY2FzZSBvcF9jYXRjaDogcmV0dXJuIG9wX2NhdGNoX2xlbmd0aDsg
Y2FzZSBvcF90aHJvdzogcmV0dXJuIG9wX3Rocm93X2xlbmd0aDsgY2FzZSBvcF90aHJvd19zdGF0
aWNfZXJyb3I6IHJldHVybiBvcF90aHJvd19zdGF0aWNfZXJyb3JfbGVuZ3RoOyBjYXNlIG9wX2Rl
YnVnOiByZXR1cm4gb3BfZGVidWdfbGVuZ3RoOyBjYXNlIG9wX3Byb2ZpbGVfd2lsbF9jYWxsOiBy
ZXR1cm4gb3BfcHJvZmlsZV93aWxsX2NhbGxfbGVuZ3RoOyBjYXNlIG9wX3Byb2ZpbGVfZGlkX2Nh
bGw6IHJldHVybiBvcF9wcm9maWxlX2RpZF9jYWxsX2xlbmd0aDsgY2FzZSBvcF9lbmQ6IHJldHVy
biBvcF9lbmRfbGVuZ3RoOyBjYXNlIG9wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5
OiByZXR1cm4gb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHlfbGVuZ3RoOyBjYXNl
IG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aDogcmV0dXJuIG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0
aF9sZW5ndGg7IGNhc2Ugb3BfaGFzX2luZGV4ZWRfcHJvcGVydHk6IHJldHVybiBvcF9oYXNfaW5k
ZXhlZF9wcm9wZXJ0eV9sZW5ndGg7IGNhc2Ugb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eTogcmV0
dXJuIG9wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHlfbGVuZ3RoOyBjYXNlIG9wX2hhc19nZW5lcmlj
X3Byb3BlcnR5OiByZXR1cm4gb3BfaGFzX2dlbmVyaWNfcHJvcGVydHlfbGVuZ3RoOyBjYXNlIG9w
X2dldF9kaXJlY3RfcG5hbWU6IHJldHVybiBvcF9nZXRfZGlyZWN0X3BuYW1lX2xlbmd0aDsgY2Fz
ZSBvcF9nZXRfc3RydWN0dXJlX3Byb3BlcnR5X2VudW1lcmF0b3I6IHJldHVybiBvcF9nZXRfc3Ry
dWN0dXJlX3Byb3BlcnR5X2VudW1lcmF0b3JfbGVuZ3RoOyBjYXNlIG9wX2dldF9nZW5lcmljX3By
b3BlcnR5X2VudW1lcmF0b3I6IHJldHVybiBvcF9nZXRfZ2VuZXJpY19wcm9wZXJ0eV9lbnVtZXJh
dG9yX2xlbmd0aDsgY2FzZSBvcF9uZXh0X2VudW1lcmF0b3JfcG5hbWU6IHJldHVybiBvcF9uZXh0
X2VudW1lcmF0b3JfcG5hbWVfbGVuZ3RoOyBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzogcmV0dXJu
IG9wX3RvX2luZGV4X3N0cmluZ19sZW5ndGg7IGNhc2UgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZTog
cmV0dXJuIGxsaW50X3Byb2dyYW1fcHJvbG9ndWVfbGVuZ3RoOyBjYXNlIGxsaW50X2V2YWxfcHJv
bG9ndWU6IHJldHVybiBsbGludF9ldmFsX3Byb2xvZ3VlX2xlbmd0aDsgY2FzZSBsbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9wcm9sb2d1ZTogcmV0dXJuIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3By
b2xvZ3VlX2xlbmd0aDsgY2FzZSBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3Vl
OiByZXR1cm4gbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZV9sZW5ndGg7IGNh
c2UgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2s6IHJldHVybiBsbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja19sZW5ndGg7IGNhc2UgbGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9hcml0eV9jaGVjazogcmV0dXJuIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlfY2hlY2tfbGVuZ3RoOyBjYXNlIGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50OiBy
ZXR1cm4gbGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnRfbGVuZ3RoOyBjYXNlIGxsaW50X3Rocm93
X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmU6IHJldHVybiBsbGludF90aHJvd19mcm9tX3Nsb3df
cGF0aF90cmFtcG9saW5lX2xlbmd0aDsgY2FzZSBsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFt
cG9saW5lOiByZXR1cm4gbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZV9sZW5ndGg7
IGNhc2UgbGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZTogcmV0dXJuIGxsaW50X25hdGl2ZV9j
YWxsX3RyYW1wb2xpbmVfbGVuZ3RoOyBjYXNlIGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBv
bGluZTogcmV0dXJuIGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZV9sZW5ndGg7IGNh
c2UgaGFuZGxlVW5jYXVnaHRFeGNlcHRpb246IHJldHVybiBoYW5kbGVVbmNhdWdodEV4Y2VwdGlv
bl9sZW5ndGg7CgogICAgfQogICAgV1RGQ3Jhc2goKTsKICAgIHJldHVybiAwOwp9Cgp9CiMgMzAg
Ii9ob21lL3dlYmtpdGJ1aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxk
c2xhdmUvZWZsLWFybXY3LXRodW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oIiAyCiMgMjggIi9ob21lL3dlYmtpdGJ1aWxkYm90
L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxkc2xhdmUvZWZsLWFybXY3LXRodW1i
Mi1idWlsZC9idWlsZC9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5jcHAiIDIKIyAxICIvaG9tZS93ZWJraXRidWlsZGJvdC9zbGF2ZXMvZWZsLUFSTXY3LXRo
dW1iMi1idWlsZC9idWlsZHNsYXZlL2VmbC1hcm12Ny10aHVtYjItYnVpbGQvYnVpbGQvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oIiAxCiMgMjkgIi9o
b21lL3dlYmtpdGJ1aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxkc2xh
dmUvZWZsLWFybXY3LXRodW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgiCiMgMSAiL2hvbWUvd2Via2l0YnVpbGRib3Qvc2xh
dmVzL2VmbC1BUk12Ny10aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJtdjctdGh1bWIyLWJ1
aWxkL2J1aWxkL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oIiAxCiMg
MzAgIi9ob21lL3dlYmtpdGJ1aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1
aWxkc2xhdmUvZWZsLWFybXY3LXRodW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgiIDIKCiMgMSAiL2hvbWUvd2Via2l0YnVp
bGRib3Qvc2xhdmVzL2VmbC1BUk12Ny10aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJtdjct
dGh1bWIyLWJ1aWxkL2J1aWxkL1NvdXJjZS9XVEYvd3RmL0lubGluZUFTTS5oIiAxCiMgMzIgIi9o
b21lL3dlYmtpdGJ1aWxkYm90L3NsYXZlcy9lZmwtQVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxkc2xh
dmUvZWZsLWFybXY3LXRodW1iMi1idWlsZC9idWlsZC9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgiIDIKIyAyOSAiL2hvbWUvd2Via2l0YnVpbGRib3Qv
c2xhdmVzL2VmbC1BUk12Ny10aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJtdjctdGh1bWIy
LWJ1aWxkL2J1aWxkL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmNwcCIgMgojIDUyOCAiL2hvbWUvd2Via2l0YnVpbGRib3Qvc2xhdmVzL2VmbC1BUk12Ny10
aHVtYjItYnVpbGQvYnVpbGRzbGF2ZS9lZmwtYXJtdjctdGh1bWIyLWJ1aWxkL2J1aWxkL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcCIKIyAxICIvaG9t
ZS93ZWJraXRidWlsZGJvdC9zbGF2ZXMvZWZsLUFSTXY3LXRodW1iMi1idWlsZC9idWlsZHNsYXZl
L2VmbC1hcm12Ny10aHVtYjItYnVpbGQvYnVpbGQvV2ViS2l0QnVpbGQvUmVsZWFzZS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9MTEludEFzc2VtYmx5LmgiIDEKCgphc20gKAoKIi50ZXh0
XG4iICIuYWxpZ24gNFxuIiAiLmdsb2JsICIgInZtRW50cnlUb0phdmFTY3JpcHQiICJcbiIgIi5o
aWRkZW4gIiAidm1FbnRyeVRvSmF2YVNjcmlwdCIgIlxuIiAiLnRodW1iXG4iICIudGh1bWJfZnVu
YyAiICJcbiIgInZtRW50cnlUb0phdmFTY3JpcHQiICI6XG4iCiAgICAiXHRwdXNoIHsgbHIgfVxu
IgogICAgIlx0cHVzaCB7IHI3IH1cbiIKICAgICJcdG1vdiByNywgc3BcbiIKICAgICJcdHB1c2gg
e3I0LXI2LCByOC1yMTF9XG4iCiAgICAiXHRzdWJzIHNwLCByNywgIzQ4XG4iCiAgICAiXHRzdHIg
cjEsIFtzcCwgIzBdXG4iCiAgICAiXHRtb3Z3IHIxMiwgIzIyOTUyXG4iCiAgICAiXHRhZGQgcjEy
LCByMVxuIgogICAgIlx0bGRyIHI4LCBbcjEyLCAjMF1cbiIKICAgICJcdHN0ciByOCwgW3NwLCAj
NF1cbiIKICAgICJcdG1vdncgcjEyLCAjMjI5NDhcbiIKICAgICJcdGFkZCByMTIsIHIxXG4iCiAg
ICAiXHRsZHIgcjgsIFtyMTIsICMwXVxuIgogICAgIlx0c3RyIHI4LCBbc3AsICM4XVxuIgogICAg
Ilx0YWRkcyByNCwgc3AsICM4XG4iCiAgICAiXHRiaWMgcjQsIHI0LCAjMTVcbiIKICAgICJcdHN1
YnMgc3AsIHI0LCAjOFxuIgogICAgIlx0bGRyIHI4LCBbcjIsICM0MF1cbiIKICAgICJcdGFkZHMg
cjgsIHI4LCAjNVxuIgogICAgIlx0bHNscyByOCwgcjgsICMzXG4iCiAgICAiXHRzdWJzIHI0LCBz
cCwgcjhcbiIKICAgICJcdG1vdncgcjEyLCAjMjcwNDhcbiIKICAgICJcdGFkZCByMTIsIHIxXG4i
CiAgICAiXHRsZHIgcjEwLCBbcjEyLCAjMF1cbiIKICAgICJcdGNtcCByNCwgcjEwXG4iCiAgICAi
XHRiaHMgIiAiLkwiICJfb2ZmbGluZWFzbV9kb1ZNRW50cnlfX3N0YWNrSGVpZ2h0T0siICJcbiIK
ICAgICJcdG1vdiByMCwgcjFcbiIKICAgICJcdG1vdiByMSwgcjJcbiIKICAgICJcdGJseCAiICJs
bGludF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvciIgIlxuIgogICAgIlx0c3VicyBzcCwgcjcs
ICM0OFxuIgogICAgIlx0bGRyIHI5LCBbc3AsICMwXVxuIgogICAgIlx0bGRyIHI4LCBbc3AsICM0
XVxuIgogICAgIlx0bW92dyByMTAsICMyMjk1MlxuIgogICAgIlx0YWRkIHIxMCwgcjlcbiIKICAg
ICJcdHN0ciByOCwgW3IxMCwgIzBdXG4iCiAgICAiXHRsZHIgcjgsIFtzcCwgIzhdXG4iCiAgICAi
XHRtb3Z3IHIxMCwgIzIyOTQ4XG4iCiAgICAiXHRhZGQgcjEwLCByOVxuIgogICAgIlx0c3RyIHI4
LCBbcjEwLCAjMF1cbiIKICAgICJcdHN1YnMgc3AsIHI3LCAjMjhcbiIKICAgICJcdHBvcCB7cjQt
cjYsIHI4LXIxMX1cbiIKICAgICJcdHBvcCB7IHI3IH1cbiIKICAgICJcdHBvcCB7IGxyIH1cbiIK
ICAgICJcdGJ4IGxyXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2RvVk1FbnRyeV9fc3RhY2tIZWln
aHRPSyIgIjpcbiIKICAgICJcdG1vdiBzcCwgcjRcbiIKICAgICJcdG1vdiByNCwgIzVcbiIKCiAg
Ii5MIiAiX29mZmxpbmVhc21fZG9WTUVudHJ5X19jb3B5SGVhZGVyTG9vcCIgIjpcbiIKICAgICJc
dHN1YnMgcjQsIHI0LCAjMVxuIgogICAgIlx0YWRkIHIxMCwgcjIsIHI0LCBsc2wgIzNcbiIKICAg
ICJcdGxkciByOSwgW3IxMCwgIzRdXG4iCiAgICAiXHRhZGQgcjEwLCBzcCwgcjQsIGxzbCAjM1xu
IgogICAgIlx0c3RyIHI5LCBbcjEwLCAjMTJdXG4iCiAgICAiXHRsZHIgcjksIFtyMiwgcjQsIGxz
bCAjM11cbiIKICAgICJcdGFkZCByMTAsIHNwLCByNCwgbHNsICMzXG4iCiAgICAiXHRzdHIgcjks
IFtyMTAsICM4XVxuIgogICAgIlx0dHN0IHI0LCByNFxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29m
ZmxpbmVhc21fZG9WTUVudHJ5X19jb3B5SGVhZGVyTG9vcCIgIlxuIgogICAgIlx0bGRyIHI4LCBb
cjIsICMyNF1cbiIKICAgICJcdHN1YnMgcjgsIHI4LCAjMVxuIgogICAgIlx0bGRyIHI5LCBbcjIs
ICM0MF1cbiIKICAgICJcdHN1YnMgcjksIHI5LCAjMVxuIgogICAgIlx0Y21wIHI4LCByOVxuIgog
ICAgIlx0YmVxICIgIi5MIiAiX29mZmxpbmVhc21fZG9WTUVudHJ5X19jb3B5QXJncyIgIlxuIgoK
ICAiLkwiICJfb2ZmbGluZWFzbV9kb1ZNRW50cnlfX2ZpbGxFeHRyYUFyZ3NMb29wIiAiOlxuIgog
ICAgIlx0c3VicyByOSwgcjksICMxXG4iCiAgICAiXHRhZGQgcjEwLCBzcCwgcjksIGxzbCAjM1xu
IgogICAgIlx0bXZuIHIxMiwgIzNcbiIKICAgICJcdHN0ciByMTIsIFtyMTAsICM1Ml1cbiIKICAg
ICJcdGFkZCByMTAsIHNwLCByOSwgbHNsICMzXG4iCiAgICAiXHRtb3YgcjEyLCAjMFxuIgogICAg
Ilx0c3RyIHIxMiwgW3IxMCwgIzQ4XVxuIgogICAgIlx0Y21wIHI4LCByOVxuIgogICAgIlx0Ym5l
ICIgIi5MIiAiX29mZmxpbmVhc21fZG9WTUVudHJ5X19maWxsRXh0cmFBcmdzTG9vcCIgIlxuIgoK
ICAiLkwiICJfb2ZmbGluZWFzbV9kb1ZNRW50cnlfX2NvcHlBcmdzIiAiOlxuIgogICAgIlx0bGRy
IHI0LCBbcjIsICM0NF1cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fZG9WTUVudHJ5X19jb3B5QXJn
c0xvb3AiICI6XG4iCiAgICAiXHR0c3QgcjgsIHI4XG4iCiAgICAiXHRiZXEgIiAiLkwiICJfb2Zm
bGluZWFzbV9kb1ZNRW50cnlfX2NvcHlBcmdzRG9uZSIgIlxuIgogICAgIlx0c3VicyByOCwgcjgs
ICMxXG4iCiAgICAiXHRhZGQgcjEwLCByNCwgcjgsIGxzbCAjM1xuIgogICAgIlx0bGRyIHI5LCBb
cjEwLCAjNF1cbiIKICAgICJcdGFkZCByMTAsIHNwLCByOCwgbHNsICMzXG4iCiAgICAiXHRzdHIg
cjksIFtyMTAsICM1Ml1cbiIKICAgICJcdGxkciByOSwgW3I0LCByOCwgbHNsICMzXVxuIgogICAg
Ilx0YWRkIHIxMCwgc3AsIHI4LCBsc2wgIzNcbiIKICAgICJcdHN0ciByOSwgW3IxMCwgIzQ4XVxu
IgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX2RvVk1FbnRyeV9fY29weUFyZ3NMb29wIiAi
XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2RvVk1FbnRyeV9fY29weUFyZ3NEb25lIiAiOlxuIgog
ICAgIlx0bW92dyByMTAsICMyMjk1MlxuIgogICAgIlx0YWRkIHIxMCwgcjFcbiIKICAgICJcdHN0
ciBzcCwgW3IxMCwgIzBdXG4iCiAgICAiXHRtb3Z3IHIxMCwgIzIyOTQ4XG4iCiAgICAiXHRhZGQg
cjEwLCByMVxuIgogICAgIlx0c3RyIHI3LCBbcjEwLCAjMF1cbiIKICAgICJcdGFkZHMgc3AsICM4
XG4iCiAgICAiXHRtb3YgcjIsIHNwXG4iCiAgICAiXHRhbmQgcjIsIHIyLCAjMTVcbiIKICAgICJc
dHRzdCByMiwgcjJcbiIKICAgICJcdGJlcSAiICIuTCIgIl9vZmZsaW5lYXNtX2RvVk1FbnRyeV9f
bWFrZUNhbGxfX2NoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50X19zdGFja1BvaW50ZXJPa2F5IiAi
XG4iCiAgICAiXHRtb3Z3IHIyLCAjNTYzMjJcbiIKICAgICJcdG1vdnQgcjIsICM0NzgyNFxuIgog
ICAgIlx0YmtwdCAjMFxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9kb1ZNRW50cnlfX21ha2VDYWxs
X19jaGVja1N0YWNrUG9pbnRlckFsaWdubWVudF9fc3RhY2tQb2ludGVyT2theSIgIjpcbiIKICAg
ICJcdGJseCByMFxuIgogICAgIlx0bW92IHIyLCBzcFxuIgogICAgIlx0YW5kIHIyLCByMiwgIzE1
XG4iCiAgICAiXHR0c3QgcjIsIHIyXG4iCiAgICAiXHRiZXEgIiAiLkwiICJfb2ZmbGluZWFzbV9k
b1ZNRW50cnlfX21ha2VDYWxsX18wX2NoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50X19zdGFja1Bv
aW50ZXJPa2F5IiAiXG4iCiAgICAiXHRtb3Z3IHIyLCAjNTYzMjNcbiIKICAgICJcdG1vdnQgcjIs
ICM0NzgyNFxuIgogICAgIlx0YmtwdCAjMFxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9kb1ZNRW50
cnlfX21ha2VDYWxsX18wX2NoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50X19zdGFja1BvaW50ZXJP
a2F5IiAiOlxuIgogICAgIlx0c3VicyBzcCwgc3AsICM4XG4iCiAgICAiXHRzdWJzIHNwLCByNywg
IzQ4XG4iCiAgICAiXHRsZHIgcjksIFtzcCwgIzBdXG4iCiAgICAiXHRsZHIgcjgsIFtzcCwgIzRd
XG4iCiAgICAiXHRtb3Z3IHIxMCwgIzIyOTUyXG4iCiAgICAiXHRhZGQgcjEwLCByOVxuIgogICAg
Ilx0c3RyIHI4LCBbcjEwLCAjMF1cbiIKICAgICJcdGxkciByOCwgW3NwLCAjOF1cbiIKICAgICJc
dG1vdncgcjEwLCAjMjI5NDhcbiIKICAgICJcdGFkZCByMTAsIHI5XG4iCiAgICAiXHRzdHIgcjgs
IFtyMTAsICMwXVxuIgogICAgIlx0c3VicyBzcCwgcjcsICMyOFxuIgogICAgIlx0cG9wIHtyNC1y
NiwgcjgtcjExfVxuIgogICAgIlx0cG9wIHsgcjcgfVxuIgogICAgIlx0cG9wIHsgbHIgfVxuIgog
ICAgIlx0YnggbHJcbiIKCiIudGV4dFxuIiAiLmFsaWduIDRcbiIgIi5nbG9ibCAiICJ2bUVudHJ5
VG9OYXRpdmUiICJcbiIgIi5oaWRkZW4gIiAidm1FbnRyeVRvTmF0aXZlIiAiXG4iICIudGh1bWJc
biIgIi50aHVtYl9mdW5jICIgIlxuIiAidm1FbnRyeVRvTmF0aXZlIiAiOlxuIgogICAgIlx0cHVz
aCB7IGxyIH1cbiIKICAgICJcdHB1c2ggeyByNyB9XG4iCiAgICAiXHRtb3YgcjcsIHNwXG4iCiAg
ICAiXHRwdXNoIHtyNC1yNiwgcjgtcjExfVxuIgogICAgIlx0c3VicyBzcCwgcjcsICM0OFxuIgog
ICAgIlx0c3RyIHIxLCBbc3AsICMwXVxuIgogICAgIlx0bW92dyByMTAsICMyMjk1MlxuIgogICAg
Ilx0YWRkIHIxMCwgcjFcbiIKICAgICJcdGxkciByOCwgW3IxMCwgIzBdXG4iCiAgICAiXHRzdHIg
cjgsIFtzcCwgIzRdXG4iCiAgICAiXHRtb3Z3IHIxMCwgIzIyOTQ4XG4iCiAgICAiXHRhZGQgcjEw
LCByMVxuIgogICAgIlx0bGRyIHI4LCBbcjEwLCAjMF1cbiIKICAgICJcdHN0ciByOCwgW3NwLCAj
OF1cbiIKICAgICJcdGFkZHMgcjQsIHNwLCAjOFxuIgogICAgIlx0YmljIHI0LCByNCwgIzE1XG4i
CiAgICAiXHRzdWJzIHNwLCByNCwgIzhcbiIKICAgICJcdGxkciByOCwgW3IyLCAjNDBdXG4iCiAg
ICAiXHRhZGRzIHI4LCByOCwgIzVcbiIKICAgICJcdGxzbHMgcjgsIHI4LCAjM1xuIgogICAgIlx0
c3VicyByNCwgc3AsIHI4XG4iCiAgICAiXHRtb3Z3IHIxMCwgIzI3MDQ4XG4iCiAgICAiXHRhZGQg
cjEwLCByMVxuIgogICAgIlx0bGRyIHIxMiwgW3IxMCwgIzBdXG4iCiAgICAiXHRjbXAgcjQsIHIx
MlxuIgogICAgIlx0YmhzICIgIi5MIiAiX29mZmxpbmVhc21fMF9kb1ZNRW50cnlfX3N0YWNrSGVp
Z2h0T0siICJcbiIKICAgICJcdG1vdiByMCwgcjFcbiIKICAgICJcdG1vdiByMSwgcjJcbiIKICAg
ICJcdGJseCAiICJsbGludF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvciIgIlxuIgogICAgIlx0
c3VicyBzcCwgcjcsICM0OFxuIgogICAgIlx0bGRyIHI5LCBbc3AsICMwXVxuIgogICAgIlx0bGRy
IHI4LCBbc3AsICM0XVxuIgogICAgIlx0bW92dyByMTIsICMyMjk1MlxuIgogICAgIlx0YWRkIHIx
MiwgcjlcbiIKICAgICJcdHN0ciByOCwgW3IxMiwgIzBdXG4iCiAgICAiXHRsZHIgcjgsIFtzcCwg
IzhdXG4iCiAgICAiXHRtb3Z3IHIxMiwgIzIyOTQ4XG4iCiAgICAiXHRhZGQgcjEyLCByOVxuIgog
ICAgIlx0c3RyIHI4LCBbcjEyLCAjMF1cbiIKICAgICJcdHN1YnMgc3AsIHI3LCAjMjhcbiIKICAg
ICJcdHBvcCB7cjQtcjYsIHI4LXIxMX1cbiIKICAgICJcdHBvcCB7IHI3IH1cbiIKICAgICJcdHBv
cCB7IGxyIH1cbiIKICAgICJcdGJ4IGxyXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzBfZG9WTUVu
dHJ5X19zdGFja0hlaWdodE9LIiAiOlxuIgogICAgIlx0bW92IHNwLCByNFxuIgogICAgIlx0bW92
IHI0LCAjNVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV8wX2RvVk1FbnRyeV9fY29weUhlYWRlckxv
b3AiICI6XG4iCiAgICAiXHRzdWJzIHI0LCByNCwgIzFcbiIKICAgICJcdGFkZCByMTIsIHIyLCBy
NCwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjksIFtyMTIsICM0XVxuIgogICAgIlx0YWRkIHIxMiwg
c3AsIHI0LCBsc2wgIzNcbiIKICAgICJcdHN0ciByOSwgW3IxMiwgIzEyXVxuIgogICAgIlx0bGRy
IHI5LCBbcjIsIHI0LCBsc2wgIzNdXG4iCiAgICAiXHRhZGQgcjEyLCBzcCwgcjQsIGxzbCAjM1xu
IgogICAgIlx0c3RyIHI5LCBbcjEyLCAjOF1cbiIKICAgICJcdHRzdCByNCwgcjRcbiIKICAgICJc
dGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtXzBfZG9WTUVudHJ5X19jb3B5SGVhZGVyTG9vcCIgIlxu
IgogICAgIlx0bGRyIHI4LCBbcjIsICMyNF1cbiIKICAgICJcdHN1YnMgcjgsIHI4LCAjMVxuIgog
ICAgIlx0bGRyIHI5LCBbcjIsICM0MF1cbiIKICAgICJcdHN1YnMgcjksIHI5LCAjMVxuIgogICAg
Ilx0Y21wIHI4LCByOVxuIgogICAgIlx0YmVxICIgIi5MIiAiX29mZmxpbmVhc21fMF9kb1ZNRW50
cnlfX2NvcHlBcmdzIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzBfZG9WTUVudHJ5X19maWxs
RXh0cmFBcmdzTG9vcCIgIjpcbiIKICAgICJcdHN1YnMgcjksIHI5LCAjMVxuIgogICAgIlx0YWRk
IHIxMiwgc3AsIHI5LCBsc2wgIzNcbiIKICAgICJcdG12biByMTAsICMzXG4iCiAgICAiXHRzdHIg
cjEwLCBbcjEyLCAjNTJdXG4iCiAgICAiXHRhZGQgcjEyLCBzcCwgcjksIGxzbCAjM1xuIgogICAg
Ilx0bW92IHIxMCwgIzBcbiIKICAgICJcdHN0ciByMTAsIFtyMTIsICM0OF1cbiIKICAgICJcdGNt
cCByOCwgcjlcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtXzBfZG9WTUVudHJ5X19m
aWxsRXh0cmFBcmdzTG9vcCIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV8wX2RvVk1FbnRyeV9f
Y29weUFyZ3MiICI6XG4iCiAgICAiXHRsZHIgcjQsIFtyMiwgIzQ0XVxuIgoKICAiLkwiICJfb2Zm
bGluZWFzbV8wX2RvVk1FbnRyeV9fY29weUFyZ3NMb29wIiAiOlxuIgogICAgIlx0dHN0IHI4LCBy
OFxuIgogICAgIlx0YmVxICIgIi5MIiAiX29mZmxpbmVhc21fMF9kb1ZNRW50cnlfX2NvcHlBcmdz
RG9uZSIgIlxuIgogICAgIlx0c3VicyByOCwgcjgsICMxXG4iCiAgICAiXHRhZGQgcjEyLCByNCwg
cjgsIGxzbCAjM1xuIgogICAgIlx0bGRyIHI5LCBbcjEyLCAjNF1cbiIKICAgICJcdGFkZCByMTIs
IHNwLCByOCwgbHNsICMzXG4iCiAgICAiXHRzdHIgcjksIFtyMTIsICM1Ml1cbiIKICAgICJcdGxk
ciByOSwgW3I0LCByOCwgbHNsICMzXVxuIgogICAgIlx0YWRkIHIxMiwgc3AsIHI4LCBsc2wgIzNc
biIKICAgICJcdHN0ciByOSwgW3IxMiwgIzQ4XVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5l
YXNtXzBfZG9WTUVudHJ5X19jb3B5QXJnc0xvb3AiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21f
MF9kb1ZNRW50cnlfX2NvcHlBcmdzRG9uZSIgIjpcbiIKICAgICJcdG1vdncgcjEyLCAjMjI5NTJc
biIKICAgICJcdGFkZCByMTIsIHIxXG4iCiAgICAiXHRzdHIgc3AsIFtyMTIsICMwXVxuIgogICAg
Ilx0bW92dyByMTIsICMyMjk0OFxuIgogICAgIlx0YWRkIHIxMiwgcjFcbiIKICAgICJcdHN0ciBy
NywgW3IxMiwgIzBdXG4iCiAgICAiXHRtb3YgcjQsIHIwXG4iCiAgICAiXHRtb3YgcjAsIHNwXG4i
CiAgICAiXHRhZGRzIHNwLCAjOFxuIgogICAgIlx0Ymx4IHI0XG4iCiAgICAiXHRzdWJzIHNwLCBz
cCwgIzhcbiIKICAgICJcdHN1YnMgc3AsIHI3LCAjNDhcbiIKICAgICJcdGxkciByOSwgW3NwLCAj
MF1cbiIKICAgICJcdGxkciByOCwgW3NwLCAjNF1cbiIKICAgICJcdG1vdncgcjEyLCAjMjI5NTJc
biIKICAgICJcdGFkZCByMTIsIHI5XG4iCiAgICAiXHRzdHIgcjgsIFtyMTIsICMwXVxuIgogICAg
Ilx0bGRyIHI4LCBbc3AsICM4XVxuIgogICAgIlx0bW92dyByMTIsICMyMjk0OFxuIgogICAgIlx0
YWRkIHIxMiwgcjlcbiIKICAgICJcdHN0ciByOCwgW3IxMiwgIzBdXG4iCiAgICAiXHRzdWJzIHNw
LCByNywgIzI4XG4iCiAgICAiXHRwb3Age3I0LXI2LCByOC1yMTF9XG4iCiAgICAiXHRwb3AgeyBy
NyB9XG4iCiAgICAiXHRwb3AgeyBsciB9XG4iCiAgICAiXHRieCBsclxuIgoKIi50ZXh0XG4iICIu
YWxpZ24gNFxuIiAiLmdsb2JsICIgInNhbml0aXplU3RhY2tGb3JWTUltcGwiICJcbiIgIi5oaWRk
ZW4gIiAic2FuaXRpemVTdGFja0ZvclZNSW1wbCIgIlxuIiAiLnRodW1iXG4iICIudGh1bWJfZnVu
YyAiICJcbiIgInNhbml0aXplU3RhY2tGb3JWTUltcGwiICI6XG4iCiAgICAiXHRtb3Z3IHIxMiwg
IzI3MDUyXG4iCiAgICAiXHRhZGQgcjEyLCByMFxuIgogICAgIlx0bGRyIHIxLCBbcjEyLCAjMF1c
biIKICAgICJcdGNtcCBzcCwgcjFcbiIKICAgICJcdGJscyAiICIuTCIgIl9vZmZsaW5lYXNtX3pl
cm9GaWxsRG9uZSIgIlxuIgogICAgIlx0bW92IHIyLCAjMFxuIgoKICAiLkwiICJfb2ZmbGluZWFz
bV96ZXJvRmlsbExvb3AiICI6XG4iCiAgICAiXHRzdHIgcjIsIFtyMSwgIzBdXG4iCiAgICAiXHRh
ZGRzIHIxLCAjNFxuIgogICAgIlx0Y21wIHNwLCByMVxuIgogICAgIlx0YmhpICIgIi5MIiAiX29m
ZmxpbmVhc21femVyb0ZpbGxMb29wIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3plcm9GaWxs
RG9uZSIgIjpcbiIKICAgICJcdG1vdiByMSwgc3BcbiIKICAgICJcdG1vdncgcjEyLCAjMjcwNTJc
biIKICAgICJcdGFkZCByMTIsIHIwXG4iCiAgICAiXHRzdHIgcjEsIFtyMTIsICMwXVxuIgogICAg
Ilx0YnggbHJcbiIKCiIudGV4dFxuIiAiLmFsaWduIDRcbiIgIi5nbG9ibCAiICJ2bUVudHJ5UmVj
b3JkIiAiXG4iICIuaGlkZGVuICIgInZtRW50cnlSZWNvcmQiICJcbiIgIi50aHVtYlxuIiAiLnRo
dW1iX2Z1bmMgIiAiXG4iICJ2bUVudHJ5UmVjb3JkIiAiOlxuIgogICAgIlx0c3VicyByMCwgcjAs
ICM0OFxuIgogICAgIlx0YnggbHJcbiIKCiIudGV4dFxuIiAiLmFsaWduIDRcbiIgIi5nbG9ibCAi
ICJsbGludF9lbnRyeSIgIlxuIiAiLmhpZGRlbiAiICJsbGludF9lbnRyeSIgIlxuIiAiLnRodW1i
XG4iICIudGh1bWJfZnVuYyAiICJcbiIgImxsaW50X2VudHJ5IiAiOlxuIgogICAgIlx0cHVzaCB7
IGxyIH1cbiIKICAgICJcdHB1c2ggeyByNyB9XG4iCiAgICAiXHRtb3YgcjcsIHNwXG4iCiAgICAi
XHRwdXNoIHtyNC1yNiwgcjgtcjExfVxuIgoKIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICI6XG4iCiAg
ICAiXHRtb3YgcjEsIHBjXG4iCiAgICAiXHRzdWJzIHIxLCByMSwgIzNcbiIKICAgICJcdG1vdncg
cjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29wX2VudGVyIiAiIC0gIiAiLkwiICJyZWxhdGl2
ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3Bf
ZW50ZXIiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCBy
MiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzBcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNs
ICMyXVxuIgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfY3JlYXRl
X2FjdGl2YXRpb24iICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0
IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9jcmVhdGVfYWN0aXZhdGlvbiIgIiAtICIg
Ii5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAg
Ilx0bW92IHI0LCAjMVxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAi
XHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF90b3VjaF9lbnRyeSIgIiAtICIg
Ii5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIu
TCIgImxsaW50X29wX3RvdWNoX2VudHJ5IiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxu
IgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICMyXG4iCiAgICAiXHRz
dHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIu
TCIgImxsaW50X29wX2luaXRfbGF6eV9yZWciICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAi
XG4iCiAgICAiXHRtb3Z0IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9pbml0X2xhenlf
cmVnIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIs
IHIxXG4iCiAgICAiXHRtb3YgcjQsICMzXG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAj
Ml1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29wX2NyZWF0ZV9h
cmd1bWVudHMiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIy
LCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9jcmVhdGVfYXJndW1lbnRzIiAiIC0gIiAiLkwi
ICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRt
b3YgcjQsICM0XG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1v
dncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29wX2NyZWF0ZV90aGlzIiAiIC0gIiAiLkwi
ICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAi
bGxpbnRfb3BfY3JlYXRlX3RoaXMiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAg
ICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzVcbiIKICAgICJcdHN0ciBy
MiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAi
bGxpbnRfb3BfZ2V0X2NhbGxlZSIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAg
ICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX2dldF9jYWxsZWUiICIgLSAi
ICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAg
ICJcdG1vdiByNCwgIzZcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAg
Ilx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfdG9fdGhpcyIgIiAtICIgIi5M
IiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIg
ImxsaW50X29wX3RvX3RoaXMiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAi
XHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzdcbiIKICAgICJcdHN0ciByMiwg
W3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxp
bnRfb3BfbmV3X29iamVjdCIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJc
dG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX25ld19vYmplY3QiICIgLSAiICIu
TCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJc
dG1vdiByNCwgIzhcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0
bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfbmV3X2FycmF5IiAiIC0gIiAiLkwi
ICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAi
bGxpbnRfb3BfbmV3X2FycmF5IiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAg
Ilx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICM5XG4iCiAgICAiXHRzdHIgcjIs
IFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxs
aW50X29wX25ld19hcnJheV93aXRoX3NpemUiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAi
XG4iCiAgICAiXHRtb3Z0IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9uZXdfYXJyYXlf
d2l0aF9zaXplIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyBy
MiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICMxMFxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0
LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF9u
ZXdfYXJyYXlfYnVmZmVyIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0
bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlciIgIiAt
ICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgog
ICAgIlx0bW92IHI0LCAjMTFcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgog
ICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfbmV3X3JlZ2V4cCIgIiAt
ICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1vdnQgcjIsICM6dXBwZXIxNjoi
ICIuTCIgImxsaW50X29wX25ld19yZWdleHAiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAi
XG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzEyXG4iCiAgICAi
XHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoi
ICIuTCIgImxsaW50X29wX21vdiIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAg
ICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX21vdiIgIiAtICIgIi5MIiAi
cmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0bW92
IHI0LCAjMTNcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92
dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfY2FwdHVyZWRfbW92IiAiIC0gIiAiLkwi
ICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAi
bGxpbnRfb3BfY2FwdHVyZWRfbW92IiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgog
ICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICMxNFxuIgogICAgIlx0c3Ry
IHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwi
ICJsbGludF9vcF9ub3QiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRt
b3Z0IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9ub3QiICIgLSAiICIuTCIgInJlbGF0
aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwg
IzE1XG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIs
ICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29wX2VxIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFz
ZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3BfZXEiICIg
LSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIK
ICAgICJcdG1vdiByNCwgIzE2XG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIK
ICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29wX2VxX251bGwiICIgLSAi
ICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIyLCAjOnVwcGVyMTY6IiAi
LkwiICJsbGludF9vcF9lcV9udWxsIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgog
ICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICMxN1xuIgogICAgIlx0c3Ry
IHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwi
ICJsbGludF9vcF9uZXEiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRt
b3Z0IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9uZXEiICIgLSAiICIuTCIgInJlbGF0
aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwg
IzE4XG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIs
ICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29wX25lcV9udWxsIiAiIC0gIiAiLkwiICJyZWxhdGl2
ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3Bf
bmVxX251bGwiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIy
LCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzE5XG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQs
IGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29wX3N0
cmljdGVxIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwg
Izp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3Bfc3RyaWN0ZXEiICIgLSAiICIuTCIgInJlbGF0aXZl
UENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzIw
XG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6
bG93ZXIxNjoiICIuTCIgImxsaW50X29wX25zdHJpY3RlcSIgIiAtICIgIi5MIiAicmVsYXRpdmVQ
Q0Jhc2UiICJcbiIKICAgICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX25z
dHJpY3RlcSIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIs
IHIyLCByMVxuIgogICAgIlx0bW92IHI0LCAjMjFcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwg
bHNsICMyXVxuIgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfbGVz
cyIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1vdnQgcjIsICM6dXBw
ZXIxNjoiICIuTCIgImxsaW50X29wX2xlc3MiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAi
XG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzIyXG4iCiAgICAi
XHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoi
ICIuTCIgImxsaW50X29wX2xlc3NlcSIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIK
ICAgICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX2xlc3NlcSIgIiAtICIg
Ii5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAg
Ilx0bW92IHI0LCAjMjNcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAg
Ilx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfZ3JlYXRlciIgIiAtICIgIi5M
IiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIg
ImxsaW50X29wX2dyZWF0ZXIiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAi
XHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzI0XG4iCiAgICAiXHRzdHIgcjIs
IFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxs
aW50X29wX2dyZWF0ZXJlcSIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJc
dG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX2dyZWF0ZXJlcSIgIiAtICIgIi5M
IiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0
bW92IHI0LCAjMjVcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0
bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfaW5jIiAiIC0gIiAiLkwiICJyZWxh
dGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRf
b3BfaW5jIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwg
cjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICMyNlxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBs
c2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF9kZWMi
ICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIyLCAjOnVwcGVy
MTY6IiAiLkwiICJsbGludF9vcF9kZWMiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4i
CiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzI3XG4iCiAgICAiXHRz
dHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIu
TCIgImxsaW50X29wX3RvX251bWJlciIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIK
ICAgICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX3RvX251bWJlciIgIiAt
ICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgog
ICAgIlx0bW92IHI0LCAjMjhcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgog
ICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfbmVnYXRlIiAiIC0gIiAi
LkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5M
IiAibGxpbnRfb3BfbmVnYXRlIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAg
Ilx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICMyOVxuIgogICAgIlx0c3RyIHIy
LCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJs
bGludF9vcF9hZGQiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0
IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9hZGQiICIgLSAiICIuTCIgInJlbGF0aXZl
UENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzMw
XG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6
bG93ZXIxNjoiICIuTCIgImxsaW50X29wX211bCIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2Ui
ICJcbiIKICAgICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX211bCIgIiAt
ICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgog
ICAgIlx0bW92IHI0LCAjMzFcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgog
ICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfZGl2IiAiIC0gIiAiLkwi
ICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAi
bGxpbnRfb3BfZGl2IiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRk
cyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICMzMlxuIgogICAgIlx0c3RyIHIyLCBbcjAs
IHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9v
cF9tb2QiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIyLCAj
OnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9tb2QiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNl
IiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzMzXG4iCiAg
ICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIx
NjoiICIuTCIgImxsaW50X29wX3N1YiIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIK
ICAgICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX3N1YiIgIiAtICIgIi5M
IiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0
bW92IHI0LCAjMzRcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0
bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfbHNoaWZ0IiAiIC0gIiAiLkwiICJy
ZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxp
bnRfb3BfbHNoaWZ0IiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRk
cyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICMzNVxuIgogICAgIlx0c3RyIHIyLCBbcjAs
IHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9v
cF9yc2hpZnQiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIy
LCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9yc2hpZnQiICIgLSAiICIuTCIgInJlbGF0aXZl
UENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzM2
XG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6
bG93ZXIxNjoiICIuTCIgImxsaW50X29wX3Vyc2hpZnQiICIgLSAiICIuTCIgInJlbGF0aXZlUENC
YXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF91cnNo
aWZ0IiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIs
IHIxXG4iCiAgICAiXHRtb3YgcjQsICMzN1xuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wg
IzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF91bnNpZ25l
ZCIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1vdnQgcjIsICM6dXBw
ZXIxNjoiICIuTCIgImxsaW50X29wX3Vuc2lnbmVkIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFz
ZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICMzOFxuIgog
ICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2Vy
MTY6IiAiLkwiICJsbGludF9vcF9iaXRhbmQiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAi
XG4iCiAgICAiXHRtb3Z0IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9iaXRhbmQiICIg
LSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIK
ICAgICJcdG1vdiByNCwgIzM5XG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIK
ICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29wX2JpdHhvciIgIiAtICIg
Ii5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIu
TCIgImxsaW50X29wX2JpdHhvciIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAg
ICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0bW92IHI0LCAjNDBcbiIKICAgICJcdHN0ciBy
MiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAi
bGxpbnRfb3BfYml0b3IiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRt
b3Z0IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9iaXRvciIgIiAtICIgIi5MIiAicmVs
YXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0bW92IHI0
LCAjNDFcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyBy
MiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfY2hlY2tfaGFzX2luc3RhbmNlIiAiIC0gIiAi
LkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5M
IiAibGxpbnRfb3BfY2hlY2tfaGFzX2luc3RhbmNlIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFz
ZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICM0MlxuIgog
ICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2Vy
MTY6IiAiLkwiICJsbGludF9vcF9pbnN0YW5jZW9mIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFz
ZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3BfaW5zdGFu
Y2VvZiIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIy
LCByMVxuIgogICAgIlx0bW92IHI0LCAjNDNcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNs
ICMyXVxuIgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfdHlwZW9m
IiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBl
cjE2OiIgIi5MIiAibGxpbnRfb3BfdHlwZW9mIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIg
IlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICM0NFxuIgogICAg
Ilx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6
IiAiLkwiICJsbGludF9vcF9pc191bmRlZmluZWQiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNl
IiAiXG4iCiAgICAiXHRtb3Z0IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9pc191bmRl
ZmluZWQiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCBy
MiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzQ1XG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxz
bCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29wX2lzX2Jv
b2xlYW4iICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIyLCAj
OnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9pc19ib29sZWFuIiAiIC0gIiAiLkwiICJyZWxhdGl2
ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICM0
NlxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAj
Omxvd2VyMTY6IiAiLkwiICJsbGludF9vcF9pc19udW1iZXIiICIgLSAiICIuTCIgInJlbGF0aXZl
UENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9p
c19udW1iZXIiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIy
LCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzQ3XG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQs
IGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29wX2lz
X3N0cmluZyIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1vdnQgcjIs
ICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX2lzX3N0cmluZyIgIiAtICIgIi5MIiAicmVsYXRp
dmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0bW92IHI0LCAj
NDhcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyByMiwg
Izpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfaXNfb2JqZWN0IiAiIC0gIiAiLkwiICJyZWxhdGl2
ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3Bf
aXNfb2JqZWN0IiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyBy
MiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICM0OVxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0
LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF9p
c19mdW5jdGlvbiIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1vdnQg
cjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX2lzX2Z1bmN0aW9uIiAiIC0gIiAiLkwiICJy
ZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3Yg
cjQsICM1MFxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3
IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF9pbiIgIiAtICIgIi5MIiAicmVsYXRpdmVQ
Q0Jhc2UiICJcbiIKICAgICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX2lu
IiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIx
XG4iCiAgICAiXHRtb3YgcjQsICM1MVxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJd
XG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF9pbml0X2dsb2Jh
bF9jb25zdF9ub3AiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0
IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9pbml0X2dsb2JhbF9jb25zdF9ub3AiICIg
LSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIK
ICAgICJcdG1vdiByNCwgIzUyXG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIK
ICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29wX2luaXRfZ2xvYmFsX2Nv
bnN0IiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1
cHBlcjE2OiIgIi5MIiAibGxpbnRfb3BfaW5pdF9nbG9iYWxfY29uc3QiICIgLSAiICIuTCIgInJl
bGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiBy
NCwgIzUzXG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncg
cjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29wX2dldF9ieV9pZCIgIiAtICIgIi5MIiAicmVs
YXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50
X29wX2dldF9ieV9pZCIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFk
ZHMgcjIsIHIyLCByMVxuIgogICAgIlx0bW92IHI0LCAjNTRcbiIKICAgICJcdHN0ciByMiwgW3Iw
LCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRf
b3BfZ2V0X2J5X2lkX291dF9vZl9saW5lIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxu
IgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3BfZ2V0X2J5X2lkX291
dF9vZl9saW5lIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyBy
MiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICM1NVxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0
LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF9n
ZXRfYXJyYXlfbGVuZ3RoIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0
bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aCIgIiAt
ICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgog
ICAgIlx0bW92IHI0LCAjNTZcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgog
ICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19s
ZW5ndGgiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIyLCAj
OnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aCIgIiAtICIgIi5M
IiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0
bW92IHI0LCAjNTdcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0
bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfcHV0X2J5X2lkIiAiIC0gIiAiLkwi
ICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAi
bGxpbnRfb3BfcHV0X2J5X2lkIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAg
Ilx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICM1OFxuIgogICAgIlx0c3RyIHIy
LCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJs
bGludF9vcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNl
IiAiXG4iCiAgICAiXHRtb3Z0IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9wdXRfYnlf
aWRfb3V0X29mX2xpbmUiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRh
ZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzU5XG4iCiAgICAiXHRzdHIgcjIsIFty
MCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50
X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jh
c2UiICJcbiIKICAgICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX2RpcmVjdCIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIK
ICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0bW92IHI0LCAjNjBcbiIKICAgICJcdHN0
ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5M
IiAibGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lIiAiIC0g
IiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIg
Ii5MIiAibGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lIiAi
IC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4i
CiAgICAiXHRtb3YgcjQsICM2MVxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4i
CiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9ub3JtYWwiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRt
b3Z0IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWwiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCBy
MiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzYyXG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxz
bCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZSIgIiAtICIgIi5MIiAicmVsYXRpdmVQ
Q0Jhc2UiICJcbiIKICAgICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZSIgIiAtICIgIi5MIiAicmVsYXRp
dmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0bW92IHI0LCAj
NjNcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyByMiwg
Izpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfZGVsX2J5X2lkIiAiIC0gIiAiLkwiICJyZWxhdGl2
ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3Bf
ZGVsX2J5X2lkIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyBy
MiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICM2NFxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0
LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF9n
ZXRfYnlfdmFsIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCBy
MiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3BfZ2V0X2J5X3ZhbCIgIiAtICIgIi5MIiAicmVs
YXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0bW92IHI0
LCAjNjVcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyBy
MiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCIgIiAtICIg
Ii5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIu
TCIgImxsaW50X29wX2dldF9hcmd1bWVudF9ieV92YWwiICIgLSAiICIuTCIgInJlbGF0aXZlUENC
YXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzY2XG4i
CiAgICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93
ZXIxNjoiICIuTCIgImxsaW50X29wX3B1dF9ieV92YWwiICIgLSAiICIuTCIgInJlbGF0aXZlUENC
YXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9wdXRf
YnlfdmFsIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwg
cjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICM2N1xuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBs
c2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF9wdXRf
YnlfdmFsX2RpcmVjdCIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1v
dnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX3B1dF9ieV92YWxfZGlyZWN0IiAiIC0g
IiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAg
ICAiXHRtb3YgcjQsICM2OFxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAg
ICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF9kZWxfYnlfdmFsIiAiIC0g
IiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIg
Ii5MIiAibGxpbnRfb3BfZGVsX2J5X3ZhbCIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJc
biIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0bW92IHI0LCAjNjlcbiIKICAgICJc
dHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIg
Ii5MIiAibGxpbnRfb3BfcHV0X2J5X2luZGV4IiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIg
IlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3BfcHV0X2J5X2lu
ZGV4IiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIs
IHIxXG4iCiAgICAiXHRtb3YgcjQsICM3MFxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wg
IzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF9wdXRfZ2V0
dGVyX3NldHRlciIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1vdnQg
cjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX3B1dF9nZXR0ZXJfc2V0dGVyIiAiIC0gIiAi
LkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAi
XHRtb3YgcjQsICM3MVxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAi
XHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF9qbXAiICIgLSAiICIuTCIgInJl
bGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGlu
dF9vcF9qbXAiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIy
LCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzcyXG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQs
IGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29wX2p0
cnVlIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1
cHBlcjE2OiIgIi5MIiAibGxpbnRfb3BfanRydWUiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNl
IiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzczXG4iCiAg
ICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIx
NjoiICIuTCIgImxsaW50X29wX2pmYWxzZSIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJc
biIKICAgICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX2pmYWxzZSIgIiAt
ICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgog
ICAgIlx0bW92IHI0LCAjNzRcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgog
ICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfamVxX251bGwiICIgLSAi
ICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIyLCAjOnVwcGVyMTY6IiAi
LkwiICJsbGludF9vcF9qZXFfbnVsbCIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIK
ICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0bW92IHI0LCAjNzVcbiIKICAgICJcdHN0
ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5M
IiAibGxpbnRfb3Bfam5lcV9udWxsIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgog
ICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3Bfam5lcV9udWxsIiAiIC0g
IiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAg
ICAiXHRtb3YgcjQsICM3NlxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAg
ICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF9qbmVxX3B0ciIgIiAtICIg
Ii5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIu
TCIgImxsaW50X29wX2puZXFfcHRyIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgog
ICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICM3N1xuIgogICAgIlx0c3Ry
IHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwi
ICJsbGludF9vcF9qbGVzcyIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJc
dG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX2psZXNzIiAiIC0gIiAiLkwiICJy
ZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3Yg
cjQsICM3OFxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3
IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF9qbGVzc2VxIiAiIC0gIiAiLkwiICJyZWxh
dGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRf
b3Bfamxlc3NlcSIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMg
cjIsIHIyLCByMVxuIgogICAgIlx0bW92IHI0LCAjNzlcbiIKICAgICJcdHN0ciByMiwgW3IwLCBy
NCwgbHNsICMyXVxuIgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3Bf
amdyZWF0ZXIiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIy
LCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9qZ3JlYXRlciIgIiAtICIgIi5MIiAicmVsYXRp
dmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0bW92IHI0LCAj
ODBcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyByMiwg
Izpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfamdyZWF0ZXJlcSIgIiAtICIgIi5MIiAicmVsYXRp
dmVQQ0Jhc2UiICJcbiIKICAgICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29w
X2pncmVhdGVyZXEiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRz
IHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzgxXG4iCiAgICAiXHRzdHIgcjIsIFtyMCwg
cjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29w
X2pubGVzcyIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1vdnQgcjIs
ICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX2pubGVzcyIgIiAtICIgIi5MIiAicmVsYXRpdmVQ
Q0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0bW92IHI0LCAjODJc
biIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyByMiwgIzps
b3dlcjE2OiIgIi5MIiAibGxpbnRfb3Bfam5sZXNzZXEiICIgLSAiICIuTCIgInJlbGF0aXZlUENC
YXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9qbmxl
c3NlcSIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIy
LCByMVxuIgogICAgIlx0bW92IHI0LCAjODNcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNs
ICMyXVxuIgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3Bfam5ncmVh
dGVyIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1
cHBlcjE2OiIgIi5MIiAibGxpbnRfb3Bfam5ncmVhdGVyIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBD
QmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICM4NFxu
IgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxv
d2VyMTY6IiAiLkwiICJsbGludF9vcF9qbmdyZWF0ZXJlcSIgIiAtICIgIi5MIiAicmVsYXRpdmVQ
Q0Jhc2UiICJcbiIKICAgICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX2pu
Z3JlYXRlcmVxIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyBy
MiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICM4NVxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0
LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF9s
b29wX2hpbnQiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIy
LCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9sb29wX2hpbnQiICIgLSAiICIuTCIgInJlbGF0
aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwg
Izg2XG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIs
ICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29wX3N3aXRjaF9pbW0iICIgLSAiICIuTCIgInJlbGF0
aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9v
cF9zd2l0Y2hfaW1tIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRk
cyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICM4N1xuIgogICAgIlx0c3RyIHIyLCBbcjAs
IHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9v
cF9zd2l0Y2hfY2hhciIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1v
dnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX3N3aXRjaF9jaGFyIiAiIC0gIiAiLkwi
ICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRt
b3YgcjQsICM4OFxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRt
b3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF9zd2l0Y2hfc3RyaW5nIiAiIC0gIiAi
LkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5M
IiAibGxpbnRfb3Bfc3dpdGNoX3N0cmluZyIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJc
biIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0bW92IHI0LCAjODlcbiIKICAgICJc
dHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIg
Ii5MIiAibGxpbnRfb3BfbmV3X2Z1bmMiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4i
CiAgICAiXHRtb3Z0IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9uZXdfZnVuYyIgIiAt
ICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgog
ICAgIlx0bW92IHI0LCAjOTBcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgog
ICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfbmV3X2NhcHR1cmVkX2Z1
bmMiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIyLCAjOnVw
cGVyMTY6IiAiLkwiICJsbGludF9vcF9uZXdfY2FwdHVyZWRfZnVuYyIgIiAtICIgIi5MIiAicmVs
YXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0bW92IHI0
LCAjOTFcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyBy
MiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfbmV3X2Z1bmNfZXhwIiAiIC0gIiAiLkwiICJy
ZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxp
bnRfb3BfbmV3X2Z1bmNfZXhwIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAg
Ilx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICM5MlxuIgogICAgIlx0c3RyIHIy
LCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJs
bGludF9vcF9jYWxsIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92
dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3BfY2FsbCIgIiAtICIgIi5MIiAicmVsYXRp
dmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0bW92IHI0LCAj
OTNcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyByMiwg
Izpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfY2FsbF9ldmFsIiAiIC0gIiAiLkwiICJyZWxhdGl2
ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3Bf
Y2FsbF9ldmFsIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyBy
MiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICM5NFxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0
LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF9j
YWxsX3ZhcmFyZ3MiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0
IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9jYWxsX3ZhcmFyZ3MiICIgLSAiICIuTCIg
InJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1v
diByNCwgIzk1XG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1v
dncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29wX3RlYXJfb2ZmX2FjdGl2YXRpb24iICIg
LSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIyLCAjOnVwcGVyMTY6
IiAiLkwiICJsbGludF9vcF90ZWFyX29mZl9hY3RpdmF0aW9uIiAiIC0gIiAiLkwiICJyZWxhdGl2
ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICM5
NlxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAj
Omxvd2VyMTY6IiAiLkwiICJsbGludF9vcF90ZWFyX29mZl9hcmd1bWVudHMiICIgLSAiICIuTCIg
InJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJs
bGludF9vcF90ZWFyX29mZl9hcmd1bWVudHMiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAi
XG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzk3XG4iCiAgICAi
XHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoi
ICIuTCIgImxsaW50X29wX3JldCIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAg
ICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX3JldCIgIiAtICIgIi5MIiAi
cmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0bW92
IHI0LCAjOThcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92
dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfcmV0X29iamVjdF9vcl90aGlzIiAiIC0g
IiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIg
Ii5MIiAibGxpbnRfb3BfcmV0X29iamVjdF9vcl90aGlzIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBD
QmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICM5OVxu
IgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxv
d2VyMTY6IiAiLkwiICJsbGludF9vcF9jb25zdHJ1Y3QiICIgLSAiICIuTCIgInJlbGF0aXZlUENC
YXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9jb25z
dHJ1Y3QiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCBy
MiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzEwMFxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBs
c2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF9jb25z
dHJ1Y3RfdmFyYXJncyIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1v
dnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX2NvbnN0cnVjdF92YXJhcmdzIiAiIC0g
IiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAg
ICAiXHRtb3YgcjQsICMxMDFcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgog
ICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3Bfc3RyY2F0IiAiIC0gIiAi
LkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5M
IiAibGxpbnRfb3Bfc3RyY2F0IiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAg
Ilx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICMxMDJcbiIKICAgICJcdHN0ciBy
MiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAi
bGxpbnRfb3BfdG9fcHJpbWl0aXZlIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgog
ICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3BfdG9fcHJpbWl0aXZlIiAi
IC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4i
CiAgICAiXHRtb3YgcjQsICMxMDNcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxu
IgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfcmVzb2x2ZV9zY29w
ZSIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1vdnQgcjIsICM6dXBw
ZXIxNjoiICIuTCIgImxsaW50X29wX3Jlc29sdmVfc2NvcGUiICIgLSAiICIuTCIgInJlbGF0aXZl
UENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzEw
NFxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAj
Omxvd2VyMTY6IiAiLkwiICJsbGludF9vcF9nZXRfZnJvbV9zY29wZSIgIiAtICIgIi5MIiAicmVs
YXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50
X29wX2dldF9mcm9tX3Njb3BlIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAg
Ilx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICMxMDVcbiIKICAgICJcdHN0ciBy
MiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAi
bGxpbnRfb3BfcHV0X3RvX3Njb3BlIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgog
ICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3BfcHV0X3RvX3Njb3BlIiAi
IC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4i
CiAgICAiXHRtb3YgcjQsICMxMDZcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxu
IgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfcHVzaF93aXRoX3Nj
b3BlIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1
cHBlcjE2OiIgIi5MIiAibGxpbnRfb3BfcHVzaF93aXRoX3Njb3BlIiAiIC0gIiAiLkwiICJyZWxh
dGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQs
ICMxMDdcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyBy
MiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfcG9wX3Njb3BlIiAiIC0gIiAiLkwiICJyZWxh
dGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRf
b3BfcG9wX3Njb3BlIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRk
cyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICMxMDhcbiIKICAgICJcdHN0ciByMiwgW3Iw
LCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRf
b3BfcHVzaF9uYW1lX3Njb3BlIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAg
Ilx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3BfcHVzaF9uYW1lX3Njb3BlIiAi
IC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4i
CiAgICAiXHRtb3YgcjQsICMxMDlcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxu
IgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfY2F0Y2giICIgLSAi
ICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIyLCAjOnVwcGVyMTY6IiAi
LkwiICJsbGludF9vcF9jYXRjaCIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAg
ICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0bW92IHI0LCAjMTEwXG4iCiAgICAiXHRzdHIg
cjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIuTCIg
ImxsaW50X29wX3Rocm93IiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0
bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3BfdGhyb3ciICIgLSAiICIuTCIgInJl
bGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiBy
NCwgIzExMVxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3
IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF90aHJvd19zdGF0aWNfZXJyb3IiICIgLSAi
ICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIyLCAjOnVwcGVyMTY6IiAi
LkwiICJsbGludF9vcF90aHJvd19zdGF0aWNfZXJyb3IiICIgLSAiICIuTCIgInJlbGF0aXZlUENC
YXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzExMlxu
IgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxv
d2VyMTY6IiAiLkwiICJsbGludF9vcF9kZWJ1ZyIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2Ui
ICJcbiIKICAgICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX2RlYnVnIiAi
IC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4i
CiAgICAiXHRtb3YgcjQsICMxMTNcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxu
IgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfcHJvZmlsZV93aWxs
X2NhbGwiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIyLCAj
OnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9wcm9maWxlX3dpbGxfY2FsbCIgIiAtICIgIi5MIiAi
cmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0bW92
IHI0LCAjMTE0XG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1v
dncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGwiICIgLSAi
ICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIyLCAjOnVwcGVyMTY6IiAi
LkwiICJsbGludF9vcF9wcm9maWxlX2RpZF9jYWxsIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFz
ZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICMxMTVcbiIK
ICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyByMiwgIzpsb3dl
cjE2OiIgIi5MIiAibGxpbnRfb3BfZW5kIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxu
IgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3BfZW5kIiAiIC0gIiAi
LkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAi
XHRtb3YgcjQsICMxMTZcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAg
Ilx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfb3BfcHJvZmlsZV90eXBlc193aXRo
X2hpZ2hfZmlkZWxpdHkiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRt
b3Z0IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9wcm9maWxlX3R5cGVzX3dpdGhfaGln
aF9maWRlbGl0eSIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMg
cjIsIHIyLCByMVxuIgogICAgIlx0bW92IHI0LCAjMTE3XG4iCiAgICAiXHRzdHIgcjIsIFtyMCwg
cjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29w
X2dldF9lbnVtZXJhYmxlX2xlbmd0aCIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIK
ICAgICJcdG1vdnQgcjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX2dldF9lbnVtZXJhYmxl
X2xlbmd0aCIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIs
IHIyLCByMVxuIgogICAgIlx0bW92IHI0LCAjMTE4XG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQs
IGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29wX2hh
c19pbmRleGVkX3Byb3BlcnR5IiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAg
Ilx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3BfaGFzX2luZGV4ZWRfcHJvcGVy
dHkiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwg
cjFcbiIKICAgICJcdG1vdiByNCwgIzExOVxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wg
IzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF9oYXNfc3Ry
dWN0dXJlX3Byb3BlcnR5IiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0
bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0
eSIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCBy
MVxuIgogICAgIlx0bW92IHI0LCAjMTIwXG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAj
Ml1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29wX2hhc19nZW5l
cmljX3Byb3BlcnR5IiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92
dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3BfaGFzX2dlbmVyaWNfcHJvcGVydHkiICIg
LSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIK
ICAgICJcdG1vdiByNCwgIzEyMVxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4i
CiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9vcF9nZXRfZGlyZWN0X3Bu
YW1lIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1
cHBlcjE2OiIgIi5MIiAibGxpbnRfb3BfZ2V0X2RpcmVjdF9wbmFtZSIgIiAtICIgIi5MIiAicmVs
YXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0bW92IHI0
LCAjMTIyXG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncg
cjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29wX2dldF9zdHJ1Y3R1cmVfcHJvcGVydHlfZW51
bWVyYXRvciIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1vdnQgcjIs
ICM6dXBwZXIxNjoiICIuTCIgImxsaW50X29wX2dldF9zdHJ1Y3R1cmVfcHJvcGVydHlfZW51bWVy
YXRvciIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIy
LCByMVxuIgogICAgIlx0bW92IHI0LCAjMTIzXG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxz
bCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50X29wX2dldF9n
ZW5lcmljX3Byb3BlcnR5X2VudW1lcmF0b3IiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAi
XG4iCiAgICAiXHRtb3Z0IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9vcF9nZXRfZ2VuZXJp
Y19wcm9wZXJ0eV9lbnVtZXJhdG9yIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgog
ICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICMxMjRcbiIKICAgICJcdHN0
ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5M
IiAibGxpbnRfb3BfbmV4dF9lbnVtZXJhdG9yX3BuYW1lIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBD
QmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3BfbmV4
dF9lbnVtZXJhdG9yX3BuYW1lIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAg
Ilx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICMxMjVcbiIKICAgICJcdHN0ciBy
MiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAi
bGxpbnRfb3BfdG9faW5kZXhfc3RyaW5nIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxu
IgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfb3BfdG9faW5kZXhfc3Ry
aW5nIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIs
IHIxXG4iCiAgICAiXHRtb3YgcjQsICMxMjZcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNs
ICMyXVxuIgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfcHJvZ3JhbV9w
cm9sb2d1ZSIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1vdnQgcjIs
ICM6dXBwZXIxNjoiICIuTCIgImxsaW50X3Byb2dyYW1fcHJvbG9ndWUiICIgLSAiICIuTCIgInJl
bGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiBy
NCwgIzEyN1xuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3
IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9ldmFsX3Byb2xvZ3VlIiAiIC0gIiAiLkwiICJy
ZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxp
bnRfZXZhbF9wcm9sb2d1ZSIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJc
dGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0bW92IHI0LCAjMTI4XG4iCiAgICAiXHRzdHIgcjIs
IFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFz
ZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfcHJvbG9ndWUiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAi
XHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzEyOVxuIgogICAgIlx0c3RyIHIy
LCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJs
bGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlIiAiIC0gIiAiLkwiICJyZWxhdGl2
ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAibGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2Ui
ICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgogICAgIlx0bW92IHI0LCAjMTMwXG4iCiAg
ICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIKICAgICJcdG1vdncgcjIsICM6bG93ZXIx
NjoiICIuTCIgImxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrIiAiIC0gIiAiLkwi
ICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBlcjE2OiIgIi5MIiAi
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2siICIgLSAiICIuTCIgInJlbGF0aXZl
UENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiByNCwgIzEz
MVxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3IHIyLCAj
Omxvd2VyMTY6IiAiLkwiICJsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNr
IiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1cHBl
cjE2OiIgIi5MIiAibGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayIgIiAt
ICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgog
ICAgIlx0bW92IHI0LCAjMTMyXG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIK
ICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50X2dlbmVyaWNfcmV0dXJuX3Bv
aW50IiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1
cHBlcjE2OiIgIi5MIiAibGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQiICIgLSAiICIuTCIgInJl
bGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAgICJcdG1vdiBy
NCwgIzEzM1xuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAgICAiXHRtb3Z3
IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9s
aW5lIiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0bW92dCByMiwgIzp1
cHBlcjE2OiIgIi5MIiAibGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSIgIiAt
ICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdGFkZHMgcjIsIHIyLCByMVxuIgog
ICAgIlx0bW92IHI0LCAjMTM0XG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl1cbiIK
ICAgICJcdG1vdncgcjIsICM6bG93ZXIxNjoiICIuTCIgImxsaW50X3Rocm93X2R1cmluZ19jYWxs
X3RyYW1wb2xpbmUiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0
IHIyLCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5l
IiAiIC0gIiAiLkwiICJyZWxhdGl2ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIx
XG4iCiAgICAiXHRtb3YgcjQsICMxMzVcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMy
XVxuIgogICAgIlx0bW92dyByMiwgIzpsb3dlcjE2OiIgIi5MIiAibGxpbnRfbmF0aXZlX2NhbGxf
dHJhbXBvbGluZSIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1vdnQg
cjIsICM6dXBwZXIxNjoiICIuTCIgImxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmUiICIgLSAi
ICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIKICAg
ICJcdG1vdiByNCwgIzEzNlxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4iCiAg
ICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJsbGludF9uYXRpdmVfY29uc3RydWN0X3Ry
YW1wb2xpbmUiICIgLSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRtb3Z0IHIy
LCAjOnVwcGVyMTY6IiAiLkwiICJsbGludF9uYXRpdmVfY29uc3RydWN0X3RyYW1wb2xpbmUiICIg
LSAiICIuTCIgInJlbGF0aXZlUENCYXNlIiAiXG4iCiAgICAiXHRhZGRzIHIyLCByMiwgcjFcbiIK
ICAgICJcdG1vdiByNCwgIzEzN1xuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdXG4i
CiAgICAiXHRtb3Z3IHIyLCAjOmxvd2VyMTY6IiAiLkwiICJoYW5kbGVVbmNhdWdodEV4Y2VwdGlv
biIgIiAtICIgIi5MIiAicmVsYXRpdmVQQ0Jhc2UiICJcbiIKICAgICJcdG1vdnQgcjIsICM6dXBw
ZXIxNjoiICIuTCIgImhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uIiAiIC0gIiAiLkwiICJyZWxhdGl2
ZVBDQmFzZSIgIlxuIgogICAgIlx0YWRkcyByMiwgcjIsIHIxXG4iCiAgICAiXHRtb3YgcjQsICMx
MzhcbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNsICMyXVxuIgogICAgIlx0cG9wIHtyNC1y
NiwgcjgtcjExfVxuIgogICAgIlx0cG9wIHsgcjcgfVxuIgogICAgIlx0cG9wIHsgbHIgfVxuIgog
ICAgIlx0YnggbHJcbiIKCiIuTCIgImxsaW50X3Byb2dyYW1fcHJvbG9ndWUiICI6XG4iCiAgICAi
XHRwdXNoIHsgbHIgfVxuIgogICAgIlx0cHVzaCB7IHI3IH1cbiIKICAgICJcdG1vdiByNywgc3Bc
biIKICAgICJcdGxkciByMSwgW3I3LCAjOF1cbiIKICAgICJcdGxkciByMTIsIFtyMSwgIzMxNl1c
biIKICAgICJcdGFkZHMgcjEyLCAjNVxuIgogICAgIlx0c3RyIHIxMiwgW3IxLCAjMzE2XVxuIgog
ICAgIlx0Ym1pICIgIi5MIiAiX29mZmxpbmVhc21fcHJvbG9ndWVfX2NvbnRpbnVlIiAiXG4iCiAg
ICAiXHRzdWJzIHNwLCBzcCwgIzhcbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiBy
MSwgcjlcbiIKICAgICJcdGJseCAiICJsbGludF9lbnRyeV9vc3IiICJcbiIKICAgICJcdGFkZHMg
c3AsICM4XG4iCiAgICAiXHR0c3QgcjAsIHIwXG4iCiAgICAiXHRiZXEgIiAiLkwiICJfb2ZmbGlu
ZWFzbV9wcm9sb2d1ZV9fcmVjb3ZlciIgIlxuIgogICAgIlx0bW92IHNwLCByN1xuIgogICAgIlx0
cG9wIHsgcjcgfVxuIgogICAgIlx0cG9wIHsgbHIgfVxuIgogICAgIlx0bW92IHBjLCByMFxuIgoK
ICAiLkwiICJfb2ZmbGluZWFzbV9wcm9sb2d1ZV9fcmVjb3ZlciIgIjpcbiIKICAgICJcdGxkciBy
MSwgW3I3LCAjOF1cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHJvbG9ndWVfX2NvbnRpbnVlIiAi
OlxuIgogICAgIlx0bGRyIHIyLCBbcjEsICMyOF1cbiIKICAgICJcdGxzbHMgcjIsIHIyLCAjM1xu
IgogICAgIlx0YWRkcyByMiwgIzI0XG4iCiAgICAiXHRzdWJzIHIyLCByNywgcjJcbiIKICAgICJc
dG1vdiBzcCwgcjJcbiIKICAgICJcdGxkciByOSwgW3IxLCAjNjBdXG4iCgoKICAgICJcdGxkciBy
MTIsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMlxuIgoKIi5MIiAibGxpbnRfZXZhbF9w
cm9sb2d1ZSIgIjpcbiIKICAgICJcdHB1c2ggeyBsciB9XG4iCiAgICAiXHRwdXNoIHsgcjcgfVxu
IgogICAgIlx0bW92IHI3LCBzcFxuIgogICAgIlx0bGRyIHIxLCBbcjcsICM4XVxuIgogICAgIlx0
bGRyIHIxMiwgW3IxLCAjMzE2XVxuIgogICAgIlx0YWRkcyByMTIsICM1XG4iCiAgICAiXHRzdHIg
cjEyLCBbcjEsICMzMTZdXG4iCiAgICAiXHRibWkgIiAiLkwiICJfb2ZmbGluZWFzbV8wX3Byb2xv
Z3VlX19jb250aW51ZSIgIlxuIgogICAgIlx0c3VicyBzcCwgc3AsICM4XG4iCiAgICAiXHRtb3Yg
cjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfZW50cnlf
b3NyIiAiXG4iCiAgICAiXHRhZGRzIHNwLCAjOFxuIgogICAgIlx0dHN0IHIwLCByMFxuIgogICAg
Ilx0YmVxICIgIi5MIiAiX29mZmxpbmVhc21fMF9wcm9sb2d1ZV9fcmVjb3ZlciIgIlxuIgogICAg
Ilx0bW92IHNwLCByN1xuIgogICAgIlx0cG9wIHsgcjcgfVxuIgogICAgIlx0cG9wIHsgbHIgfVxu
IgogICAgIlx0bW92IHBjLCByMFxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV8wX3Byb2xvZ3VlX19y
ZWNvdmVyIiAiOlxuIgogICAgIlx0bGRyIHIxLCBbcjcsICM4XVxuIgoKICAiLkwiICJfb2ZmbGlu
ZWFzbV8wX3Byb2xvZ3VlX19jb250aW51ZSIgIjpcbiIKICAgICJcdGxkciByMiwgW3IxLCAjMjhd
XG4iCiAgICAiXHRsc2xzIHIyLCByMiwgIzNcbiIKICAgICJcdGFkZHMgcjIsICMyNFxuIgogICAg
Ilx0c3VicyByMiwgcjcsIHIyXG4iCiAgICAiXHRtb3Ygc3AsIHIyXG4iCiAgICAiXHRsZHIgcjks
IFtyMSwgIzYwXVxuIgoKCiAgICAiXHRsZHIgcjEyLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBj
LCByMTJcbiIKCiIuTCIgImxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlIiAiOlxuIgog
ICAgIlx0cHVzaCB7IGxyIH1cbiIKICAgICJcdHB1c2ggeyByNyB9XG4iCiAgICAiXHRtb3Ygcjcs
IHNwXG4iCiAgICAiXHRsZHIgcjEsIFtyNywgIzI0XVxuIgogICAgIlx0bGRyIHIxLCBbcjEsICMy
MF1cbiIKICAgICJcdGxkciByMSwgW3IxLCAjMTA0XVxuIgogICAgIlx0bGRyIHIxMiwgW3IxLCAj
MzE2XVxuIgogICAgIlx0YWRkcyByMTIsICM1XG4iCiAgICAiXHRzdHIgcjEyLCBbcjEsICMzMTZd
XG4iCiAgICAiXHRibWkgIiAiLkwiICJfb2ZmbGluZWFzbV8xX3Byb2xvZ3VlX19jb250aW51ZSIg
IlxuIgogICAgIlx0c3VicyBzcCwgc3AsICM4XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAi
XHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zv
cl9jYWxsIiAiXG4iCiAgICAiXHRhZGRzIHNwLCAjOFxuIgogICAgIlx0dHN0IHIwLCByMFxuIgog
ICAgIlx0YmVxICIgIi5MIiAiX29mZmxpbmVhc21fMV9wcm9sb2d1ZV9fcmVjb3ZlciIgIlxuIgog
ICAgIlx0bW92IHNwLCByN1xuIgogICAgIlx0cG9wIHsgcjcgfVxuIgogICAgIlx0cG9wIHsgbHIg
fVxuIgogICAgIlx0bW92IHBjLCByMFxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV8xX3Byb2xvZ3Vl
X19yZWNvdmVyIiAiOlxuIgogICAgIlx0bGRyIHIxLCBbcjcsICMyNF1cbiIKICAgICJcdGxkciBy
MSwgW3IxLCAjMjBdXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgIzEwNF1cbiIKCiAgIi5MIiAiX29m
ZmxpbmVhc21fMV9wcm9sb2d1ZV9fY29udGludWUiICI6XG4iCiAgICAiXHRzdHIgcjEsIFtyNywg
IzhdXG4iCiAgICAiXHRsZHIgcjIsIFtyMSwgIzI4XVxuIgogICAgIlx0bHNscyByMiwgcjIsICMz
XG4iCiAgICAiXHRhZGRzIHIyLCAjMjRcbiIKICAgICJcdHN1YnMgcjIsIHI3LCByMlxuIgogICAg
Ilx0bW92IHNwLCByMlxuIgogICAgIlx0bGRyIHI5LCBbcjEsICM2MF1cbiIKICAgICJcdGxkciBy
MCwgW3IxLCAjNDRdXG4iCgoKICAgICJcdHRzdCByMCwgcjBcbiIKICAgICJcdGJlcSAiICIuTCIg
Il9vZmZsaW5lYXNtX2Z1bmN0aW9uSW5pdGlhbGl6YXRpb25fX2FyZ3VtZW50UHJvZmlsZURvbmUi
ICJcbiIKICAgICJcdGxkciByNCwgW3IxLCAjMTgwXVxuIgogICAgIlx0bW92IHIxMiwgIzMyXG4i
CiAgICAiXHRtdWwgcjIsIHIxMiwgcjBcbiIKICAgICJcdGxzbHMgcjAsIHIwLCAjM1xuIgogICAg
Ilx0YWRkIHI0LCByMlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9mdW5jdGlvbkluaXRpYWxpemF0
aW9uX19hcmd1bWVudFByb2ZpbGVMb29wIiAiOlxuIgogICAgIlx0YWRkIHIxMiwgcjcsIHIwLCBs
c2wgIzBcbiIKICAgICJcdGxkciByMiwgW3IxMiwgIzM2XVxuIgogICAgIlx0c3VicyByNCwgcjQs
ICMzMlxuIgogICAgIlx0c3RyIHIyLCBbcjQsICMyMF1cbiIKICAgICJcdGFkZCByMTIsIHI3LCBy
MCwgbHNsICMwXG4iCiAgICAiXHRsZHIgcjIsIFtyMTIsICMzMl1cbiIKICAgICJcdHN0ciByMiwg
W3I0LCAjMTZdXG4iCiAgICAiXHRtdm4gcjEyLCAjN1xuIgogICAgIlx0YWRkcyByMCwgcjEyXG4i
CiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9mdW5jdGlvbkluaXRpYWxpemF0aW9uX19h
cmd1bWVudFByb2ZpbGVMb29wIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2Z1bmN0aW9uSW5p
dGlhbGl6YXRpb25fX2FyZ3VtZW50UHJvZmlsZURvbmUiICI6XG4iCiAgICAiXHRsZHIgcjAsIFty
MSwgIzI4XVxuIgogICAgIlx0bGRyIHIyLCBbcjEsICM1Nl1cbiIKICAgICJcdGxzbHMgcjAsIHIw
LCAjM1xuIgogICAgIlx0YWRkcyByMCwgIzI0XG4iCiAgICAiXHRzdWJzIHIwLCByNywgcjBcbiIK
ICAgICJcdG1vdncgcjEyLCAjMjcwNDhcbiIKICAgICJcdGFkZCByMTIsIHIyXG4iCiAgICAiXHRs
ZHIgcjEwLCBbcjEyLCAjMF1cbiIKICAgICJcdGNtcCByMTAsIHIwXG4iCiAgICAiXHRibHMgIiAi
LkwiICJfb2ZmbGluZWFzbV9mdW5jdGlvbkluaXRpYWxpemF0aW9uX19zdGFja0hlaWdodE9LIiAi
XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHgg
IiAibGxpbnRfc3RhY2tfY2hlY2siICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJcdHRz
dCByMSwgcjFcbiIKICAgICJcdGJlcSAiICIuTCIgIl9vZmZsaW5lYXNtX2Z1bmN0aW9uSW5pdGlh
bGl6YXRpb25fX3N0YWNrSGVpZ2h0T0siICJcbiIKICAgICJcdG1vdiByNywgcjFcbiIKCiAgIi5M
IiAiX29mZmxpbmVhc21fZnVuY3Rpb25Jbml0aWFsaXphdGlvbl9fc3RhY2tIZWlnaHRPSyIgIjpc
biIKCgogICAgIlx0bGRyIHIxMCwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEwXG4iCgoi
LkwiICJsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlIiAiOlxuIgogICAgIlx0
cHVzaCB7IGxyIH1cbiIKICAgICJcdHB1c2ggeyByNyB9XG4iCiAgICAiXHRtb3YgcjcsIHNwXG4i
CiAgICAiXHRsZHIgcjEsIFtyNywgIzI0XVxuIgogICAgIlx0bGRyIHIxLCBbcjEsICMyMF1cbiIK
ICAgICJcdGxkciByMSwgW3IxLCAjMTA4XVxuIgogICAgIlx0bGRyIHIxMCwgW3IxLCAjMzE2XVxu
IgogICAgIlx0YWRkcyByMTAsICM1XG4iCiAgICAiXHRzdHIgcjEwLCBbcjEsICMzMTZdXG4iCiAg
ICAiXHRibWkgIiAiLkwiICJfb2ZmbGluZWFzbV8yX3Byb2xvZ3VlX19jb250aW51ZSIgIlxuIgog
ICAgIlx0c3VicyBzcCwgc3AsICM4XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRtb3Yg
cjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3QiICJcbiIKICAgICJcdGFkZHMgc3AsICM4XG4iCiAgICAiXHR0c3QgcjAsIHIwXG4iCiAg
ICAiXHRiZXEgIiAiLkwiICJfb2ZmbGluZWFzbV8yX3Byb2xvZ3VlX19yZWNvdmVyIiAiXG4iCiAg
ICAiXHRtb3Ygc3AsIHI3XG4iCiAgICAiXHRwb3AgeyByNyB9XG4iCiAgICAiXHRwb3AgeyBsciB9
XG4iCiAgICAiXHRtb3YgcGMsIHIwXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzJfcHJvbG9ndWVf
X3JlY292ZXIiICI6XG4iCiAgICAiXHRsZHIgcjEsIFtyNywgIzI0XVxuIgogICAgIlx0bGRyIHIx
LCBbcjEsICMyMF1cbiIKICAgICJcdGxkciByMSwgW3IxLCAjMTA4XVxuIgoKICAiLkwiICJfb2Zm
bGluZWFzbV8yX3Byb2xvZ3VlX19jb250aW51ZSIgIjpcbiIKICAgICJcdHN0ciByMSwgW3I3LCAj
OF1cbiIKICAgICJcdGxkciByMiwgW3IxLCAjMjhdXG4iCiAgICAiXHRsc2xzIHIyLCByMiwgIzNc
biIKICAgICJcdGFkZHMgcjIsICMyNFxuIgogICAgIlx0c3VicyByMiwgcjcsIHIyXG4iCiAgICAi
XHRtb3Ygc3AsIHIyXG4iCiAgICAiXHRsZHIgcjksIFtyMSwgIzYwXVxuIgogICAgIlx0bGRyIHIw
LCBbcjEsICM0NF1cbiIKICAgICJcdHN1YnMgcjAsIHIwLCAjMVxuIgogICAgIlx0dHN0IHIwLCBy
MFxuIgogICAgIlx0YmVxICIgIi5MIiAiX29mZmxpbmVhc21fMl9mdW5jdGlvbkluaXRpYWxpemF0
aW9uX19hcmd1bWVudFByb2ZpbGVEb25lIiAiXG4iCiAgICAiXHRsZHIgcjQsIFtyMSwgIzE4MF1c
biIKICAgICJcdG1vdiByMTAsICMzMlxuIgogICAgIlx0bXVsIHIyLCByMTAsIHIwXG4iCiAgICAi
XHRsc2xzIHIwLCByMCwgIzNcbiIKICAgICJcdGFkZCByNCwgcjJcbiIKCiAgIi5MIiAiX29mZmxp
bmVhc21fMl9mdW5jdGlvbkluaXRpYWxpemF0aW9uX19hcmd1bWVudFByb2ZpbGVMb29wIiAiOlxu
IgogICAgIlx0YWRkIHIxMCwgcjcsIHIwLCBsc2wgIzBcbiIKICAgICJcdGxkciByMiwgW3IxMCwg
IzQ0XVxuIgogICAgIlx0c3VicyByNCwgcjQsICMzMlxuIgogICAgIlx0c3RyIHIyLCBbcjQsICM1
Ml1cbiIKICAgICJcdGFkZCByMTAsIHI3LCByMCwgbHNsICMwXG4iCiAgICAiXHRsZHIgcjIsIFty
MTAsICM0MF1cbiIKICAgICJcdHN0ciByMiwgW3I0LCAjNDhdXG4iCiAgICAiXHRtdm4gcjEwLCAj
N1xuIgogICAgIlx0YWRkcyByMCwgcjEwXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFz
bV8yX2Z1bmN0aW9uSW5pdGlhbGl6YXRpb25fX2FyZ3VtZW50UHJvZmlsZUxvb3AiICJcbiIKCiAg
Ii5MIiAiX29mZmxpbmVhc21fMl9mdW5jdGlvbkluaXRpYWxpemF0aW9uX19hcmd1bWVudFByb2Zp
bGVEb25lIiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjEsICMyOF1cbiIKICAgICJcdGxkciByMiwg
W3IxLCAjNTZdXG4iCiAgICAiXHRsc2xzIHIwLCByMCwgIzNcbiIKICAgICJcdGFkZHMgcjAsICMy
NFxuIgogICAgIlx0c3VicyByMCwgcjcsIHIwXG4iCiAgICAiXHRtb3Z3IHIxMCwgIzI3MDQ4XG4i
CiAgICAiXHRhZGQgcjEwLCByMlxuIgogICAgIlx0bGRyIHIxMiwgW3IxMCwgIzBdXG4iCiAgICAi
XHRjbXAgcjEyLCByMFxuIgogICAgIlx0YmxzICIgIi5MIiAiX29mZmxpbmVhc21fMl9mdW5jdGlv
bkluaXRpYWxpemF0aW9uX19zdGFja0hlaWdodE9LIiAiXG4iCiAgICAiXHRtb3YgcjAsIHI3XG4i
CiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc3RhY2tfY2hlY2siICJc
biIKICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJcdHRzdCByMSwgcjFcbiIKICAgICJcdGJlcSAi
ICIuTCIgIl9vZmZsaW5lYXNtXzJfZnVuY3Rpb25Jbml0aWFsaXphdGlvbl9fc3RhY2tIZWlnaHRP
SyIgIlxuIgogICAgIlx0bW92IHI3LCByMVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV8yX2Z1bmN0
aW9uSW5pdGlhbGl6YXRpb25fX3N0YWNrSGVpZ2h0T0siICI6XG4iCgoKICAgICJcdGxkciByMTIs
IFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMlxuIgoKIi5MIiAibGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfYXJpdHlfY2hlY2siICI6XG4iCiAgICAiXHRwdXNoIHsgbHIgfVxuIgogICAgIlx0
cHVzaCB7IHI3IH1cbiIKICAgICJcdG1vdiByNywgc3BcbiIKICAgICJcdGxkciByMSwgW3I3LCAj
MjRdXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgIzIwXVxuIgogICAgIlx0bGRyIHIxLCBbcjEsICMx
MDRdXG4iCiAgICAiXHRsZHIgcjEyLCBbcjEsICMzMTZdXG4iCiAgICAiXHRhZGRzIHIxMiwgIzVc
biIKICAgICJcdHN0ciByMTIsIFtyMSwgIzMxNl1cbiIKICAgICJcdGJtaSAiICIuTCIgIl9vZmZs
aW5lYXNtXzNfcHJvbG9ndWVfX2NvbnRpbnVlIiAiXG4iCiAgICAiXHRzdWJzIHNwLCBzcCwgIzhc
biIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAi
ICJsbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjayIgIlxuIgogICAg
Ilx0YWRkcyBzcCwgIzhcbiIKICAgICJcdHRzdCByMCwgcjBcbiIKICAgICJcdGJlcSAiICIuTCIg
Il9vZmZsaW5lYXNtXzNfcHJvbG9ndWVfX3JlY292ZXIiICJcbiIKICAgICJcdG1vdiBzcCwgcjdc
biIKICAgICJcdHBvcCB7IHI3IH1cbiIKICAgICJcdHBvcCB7IGxyIH1cbiIKICAgICJcdG1vdiBw
YywgcjBcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fM19wcm9sb2d1ZV9fcmVjb3ZlciIgIjpcbiIK
ICAgICJcdGxkciByMSwgW3I3LCAjMjRdXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgIzIwXVxuIgog
ICAgIlx0bGRyIHIxLCBbcjEsICMxMDRdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzNfcHJvbG9n
dWVfX2NvbnRpbnVlIiAiOlxuIgogICAgIlx0c3RyIHIxLCBbcjcsICM4XVxuIgogICAgIlx0bGRy
IHIyLCBbcjEsICMyOF1cbiIKICAgICJcdGxzbHMgcjIsIHIyLCAjM1xuIgogICAgIlx0YWRkcyBy
MiwgIzI0XG4iCiAgICAiXHRzdWJzIHIyLCByNywgcjJcbiIKICAgICJcdG1vdiBzcCwgcjJcbiIK
ICAgICJcdGxkciByOSwgW3IxLCAjNjBdXG4iCiAgICAiXHRsZHIgcjAsIFtyNywgIzMyXVxuIgog
ICAgIlx0bGRyIHIxMiwgW3IxLCAjNDRdXG4iCiAgICAiXHRjbXAgcjAsIHIxMlxuIgogICAgIlx0
YmhzICIgIi5MIiAiX29mZmxpbmVhc21fZnVuY3Rpb25Gb3JDYWxsQmVnaW4iICJcbiIKICAgICJc
dG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJzbG93X3Bh
dGhfY2FsbF9hcml0eUNoZWNrIiAiXG4iCiAgICAiXHR0c3QgcjAsIHIwXG4iCiAgICAiXHRiZXEg
IiAiLkwiICJfb2ZmbGluZWFzbV9mdW5jdGlvbkFyaXR5Q2hlY2tfX25vRXJyb3IiICJcbiIKICAg
ICJcdG1vdiByNywgcjFcbiIKICAgICJcdGIgIiAiLkwiICJsbGludF90aHJvd19mcm9tX3Nsb3df
cGF0aF90cmFtcG9saW5lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2Z1bmN0aW9uQXJpdHlD
aGVja19fbm9FcnJvciIgIjpcbiIKICAgICJcdGxkciByMiwgW3IxLCAjNF1cbiIKICAgICJcdHRz
dCByMiwgcjJcbiIKICAgICJcdGJlcSAiICIuTCIgIl9vZmZsaW5lYXNtX2Z1bmN0aW9uQXJpdHlD
aGVja19fcHJvY2VlZElubGluZSIgIlxuIgogICAgIlx0bGRyIHI5LCBbcjEsICM4XVxuIgogICAg
Ilx0bGRyIHIwLCBbcjEsICMwXVxuIgogICAgIlx0Ymx4IHIyXG4iCiAgICAiXHRiICIgIi5MIiAi
X29mZmxpbmVhc21fZnVuY3Rpb25Bcml0eUNoZWNrX19jb250aW51ZSIgIlxuIgoKICAiLkwiICJf
b2ZmbGluZWFzbV9mdW5jdGlvbkFyaXR5Q2hlY2tfX3Byb2NlZWRJbmxpbmUiICI6XG4iCiAgICAi
XHRsZHIgcjEsIFtyMSwgIzBdXG4iCiAgICAiXHR0c3QgcjEsIHIxXG4iCiAgICAiXHRiZXEgIiAi
LkwiICJfb2ZmbGluZWFzbV9mdW5jdGlvbkFyaXR5Q2hlY2tfX2NvbnRpbnVlIiAiXG4iCgoKICAg
ICJcdGxzbHMgcjEsIHIxLCAjMVxuIgogICAgIlx0cnNicyByMSwgcjEsICMwXG4iCiAgICAiXHRt
b3YgcjQsIHI3XG4iCiAgICAiXHRsZHIgcjIsIFtyNywgIzMyXVxuIgogICAgIlx0YWRkcyByMiwg
IzVcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fZnVuY3Rpb25Bcml0eUNoZWNrX19jb3B5TG9vcCIg
IjpcbiIKICAgICJcdGxkciByMCwgW3I0LCAjMF1cbiIKICAgICJcdHN0ciByMCwgW3I0LCByMSwg
bHNsICMzXVxuIgogICAgIlx0bGRyIHIwLCBbcjQsICM0XVxuIgogICAgIlx0YWRkIHIxMiwgcjQs
IHIxLCBsc2wgIzNcbiIKICAgICJcdHN0ciByMCwgW3IxMiwgIzRdXG4iCiAgICAiXHRhZGRzIHI0
LCAjOFxuIgogICAgIlx0c3VicyByMiwgcjIsICMxXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2Zm
bGluZWFzbV9mdW5jdGlvbkFyaXR5Q2hlY2tfX2NvcHlMb29wIiAiXG4iCgoKICAgICJcdG1vdiBy
MiwgcjFcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fZnVuY3Rpb25Bcml0eUNoZWNrX19maWxsTG9v
cCIgIjpcbiIKICAgICJcdG1vdiByMCwgIzBcbiIKICAgICJcdHN0ciByMCwgW3I0LCByMSwgbHNs
ICMzXVxuIgogICAgIlx0bXZuIHIwLCAjM1xuIgogICAgIlx0YWRkIHIxMiwgcjQsIHIxLCBsc2wg
IzNcbiIKICAgICJcdHN0ciByMCwgW3IxMiwgIzRdXG4iCiAgICAiXHRhZGRzIHI0LCAjOFxuIgog
ICAgIlx0YWRkcyByMiwgIzFcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX2Z1bmN0
aW9uQXJpdHlDaGVja19fZmlsbExvb3AiICJcbiIKICAgICJcdGxzbHMgcjEsIHIxLCAjM1xuIgog
ICAgIlx0YWRkIHI3LCByMVxuIgogICAgIlx0YWRkIHNwLCByMVxuIgoKICAiLkwiICJfb2ZmbGlu
ZWFzbV9mdW5jdGlvbkFyaXR5Q2hlY2tfX2NvbnRpbnVlIiAiOlxuIgogICAgIlx0bGRyIHIxLCBb
cjcsICM4XVxuIgogICAgIlx0bGRyIHI5LCBbcjEsICM2MF1cbiIKICAgICJcdGIgIiAiLkwiICJf
b2ZmbGluZWFzbV9mdW5jdGlvbkZvckNhbGxCZWdpbiIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFz
bV9mdW5jdGlvbkZvckNhbGxCZWdpbiIgIjpcbiIKICAgICJcdGxkciByMCwgW3IxLCAjNDRdXG4i
CgoKICAgICJcdHRzdCByMCwgcjBcbiIKICAgICJcdGJlcSAiICIuTCIgIl9vZmZsaW5lYXNtXzNf
ZnVuY3Rpb25Jbml0aWFsaXphdGlvbl9fYXJndW1lbnRQcm9maWxlRG9uZSIgIlxuIgogICAgIlx0
bGRyIHI0LCBbcjEsICMxODBdXG4iCiAgICAiXHRtb3YgcjEyLCAjMzJcbiIKICAgICJcdG11bCBy
MiwgcjEyLCByMFxuIgogICAgIlx0bHNscyByMCwgcjAsICMzXG4iCiAgICAiXHRhZGQgcjQsIHIy
XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzNfZnVuY3Rpb25Jbml0aWFsaXphdGlvbl9fYXJndW1l
bnRQcm9maWxlTG9vcCIgIjpcbiIKICAgICJcdGFkZCByMTIsIHI3LCByMCwgbHNsICMwXG4iCiAg
ICAiXHRsZHIgcjIsIFtyMTIsICMzNl1cbiIKICAgICJcdHN1YnMgcjQsIHI0LCAjMzJcbiIKICAg
ICJcdHN0ciByMiwgW3I0LCAjMjBdXG4iCiAgICAiXHRhZGQgcjEyLCByNywgcjAsIGxzbCAjMFxu
IgogICAgIlx0bGRyIHIyLCBbcjEyLCAjMzJdXG4iCiAgICAiXHRzdHIgcjIsIFtyNCwgIzE2XVxu
IgogICAgIlx0bXZuIHIxMiwgIzdcbiIKICAgICJcdGFkZHMgcjAsIHIxMlxuIgogICAgIlx0Ym5l
ICIgIi5MIiAiX29mZmxpbmVhc21fM19mdW5jdGlvbkluaXRpYWxpemF0aW9uX19hcmd1bWVudFBy
b2ZpbGVMb29wIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzNfZnVuY3Rpb25Jbml0aWFsaXph
dGlvbl9fYXJndW1lbnRQcm9maWxlRG9uZSIgIjpcbiIKICAgICJcdGxkciByMCwgW3IxLCAjMjhd
XG4iCiAgICAiXHRsZHIgcjIsIFtyMSwgIzU2XVxuIgogICAgIlx0bHNscyByMCwgcjAsICMzXG4i
CiAgICAiXHRhZGRzIHIwLCAjMjRcbiIKICAgICJcdHN1YnMgcjAsIHI3LCByMFxuIgogICAgIlx0
bW92dyByMTIsICMyNzA0OFxuIgogICAgIlx0YWRkIHIxMiwgcjJcbiIKICAgICJcdGxkciByMTAs
IFtyMTIsICMwXVxuIgogICAgIlx0Y21wIHIxMCwgcjBcbiIKICAgICJcdGJscyAiICIuTCIgIl9v
ZmZsaW5lYXNtXzNfZnVuY3Rpb25Jbml0aWFsaXphdGlvbl9fc3RhY2tIZWlnaHRPSyIgIlxuIgog
ICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgImxs
aW50X3N0YWNrX2NoZWNrIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCiAgICAiXHR0c3QgcjEs
IHIxXG4iCiAgICAiXHRiZXEgIiAiLkwiICJfb2ZmbGluZWFzbV8zX2Z1bmN0aW9uSW5pdGlhbGl6
YXRpb25fX3N0YWNrSGVpZ2h0T0siICJcbiIKICAgICJcdG1vdiByNywgcjFcbiIKCiAgIi5MIiAi
X29mZmxpbmVhc21fM19mdW5jdGlvbkluaXRpYWxpemF0aW9uX19zdGFja0hlaWdodE9LIiAiOlxu
IgoKCiAgICAiXHRsZHIgcjEwLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTBcbiIKCiIu
TCIgImxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2siICI6XG4iCiAgICAi
XHRwdXNoIHsgbHIgfVxuIgogICAgIlx0cHVzaCB7IHI3IH1cbiIKICAgICJcdG1vdiByNywgc3Bc
biIKICAgICJcdGxkciByMSwgW3I3LCAjMjRdXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgIzIwXVxu
IgogICAgIlx0bGRyIHIxLCBbcjEsICMxMDhdXG4iCiAgICAiXHRsZHIgcjEwLCBbcjEsICMzMTZd
XG4iCiAgICAiXHRhZGRzIHIxMCwgIzVcbiIKICAgICJcdHN0ciByMTAsIFtyMSwgIzMxNl1cbiIK
ICAgICJcdGJtaSAiICIuTCIgIl9vZmZsaW5lYXNtXzRfcHJvbG9ndWVfX2NvbnRpbnVlIiAiXG4i
CiAgICAiXHRzdWJzIHNwLCBzcCwgIzhcbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJcdG1v
diByMSwgcjlcbiIKICAgICJcdGJseCAiICJsbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9hcml0eUNoZWNrIiAiXG4iCiAgICAiXHRhZGRzIHNwLCAjOFxuIgogICAgIlx0dHN0
IHIwLCByMFxuIgogICAgIlx0YmVxICIgIi5MIiAiX29mZmxpbmVhc21fNF9wcm9sb2d1ZV9fcmVj
b3ZlciIgIlxuIgogICAgIlx0bW92IHNwLCByN1xuIgogICAgIlx0cG9wIHsgcjcgfVxuIgogICAg
Ilx0cG9wIHsgbHIgfVxuIgogICAgIlx0bW92IHBjLCByMFxuIgoKICAiLkwiICJfb2ZmbGluZWFz
bV80X3Byb2xvZ3VlX19yZWNvdmVyIiAiOlxuIgogICAgIlx0bGRyIHIxLCBbcjcsICMyNF1cbiIK
ICAgICJcdGxkciByMSwgW3IxLCAjMjBdXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgIzEwOF1cbiIK
CiAgIi5MIiAiX29mZmxpbmVhc21fNF9wcm9sb2d1ZV9fY29udGludWUiICI6XG4iCiAgICAiXHRz
dHIgcjEsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjIsIFtyMSwgIzI4XVxuIgogICAgIlx0bHNs
cyByMiwgcjIsICMzXG4iCiAgICAiXHRhZGRzIHIyLCAjMjRcbiIKICAgICJcdHN1YnMgcjIsIHI3
LCByMlxuIgogICAgIlx0bW92IHNwLCByMlxuIgogICAgIlx0bGRyIHI5LCBbcjEsICM2MF1cbiIK
ICAgICJcdGxkciByMCwgW3I3LCAjMzJdXG4iCiAgICAiXHRsZHIgcjEwLCBbcjEsICM0NF1cbiIK
ICAgICJcdGNtcCByMCwgcjEwXG4iCiAgICAiXHRiaHMgIiAiLkwiICJfb2ZmbGluZWFzbV9mdW5j
dGlvbkZvckNvbnN0cnVjdEJlZ2luIiAiXG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRt
b3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAic2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNr
IiAiXG4iCiAgICAiXHR0c3QgcjAsIHIwXG4iCiAgICAiXHRiZXEgIiAiLkwiICJfb2ZmbGluZWFz
bV80X2Z1bmN0aW9uQXJpdHlDaGVja19fbm9FcnJvciIgIlxuIgogICAgIlx0bW92IHI3LCByMVxu
IgogICAgIlx0YiAiICIuTCIgImxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUi
ICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fNF9mdW5jdGlvbkFyaXR5Q2hlY2tfX25vRXJyb3Ii
ICI6XG4iCiAgICAiXHRsZHIgcjIsIFtyMSwgIzRdXG4iCiAgICAiXHR0c3QgcjIsIHIyXG4iCiAg
ICAiXHRiZXEgIiAiLkwiICJfb2ZmbGluZWFzbV80X2Z1bmN0aW9uQXJpdHlDaGVja19fcHJvY2Vl
ZElubGluZSIgIlxuIgogICAgIlx0bGRyIHI5LCBbcjEsICM4XVxuIgogICAgIlx0bGRyIHIwLCBb
cjEsICMwXVxuIgogICAgIlx0Ymx4IHIyXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21f
NF9mdW5jdGlvbkFyaXR5Q2hlY2tfX2NvbnRpbnVlIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNt
XzRfZnVuY3Rpb25Bcml0eUNoZWNrX19wcm9jZWVkSW5saW5lIiAiOlxuIgogICAgIlx0bGRyIHIx
LCBbcjEsICMwXVxuIgogICAgIlx0dHN0IHIxLCByMVxuIgogICAgIlx0YmVxICIgIi5MIiAiX29m
ZmxpbmVhc21fNF9mdW5jdGlvbkFyaXR5Q2hlY2tfX2NvbnRpbnVlIiAiXG4iCgoKICAgICJcdGxz
bHMgcjEsIHIxLCAjMVxuIgogICAgIlx0cnNicyByMSwgcjEsICMwXG4iCiAgICAiXHRtb3YgcjQs
IHI3XG4iCiAgICAiXHRsZHIgcjIsIFtyNywgIzMyXVxuIgogICAgIlx0YWRkcyByMiwgIzVcbiIK
CiAgIi5MIiAiX29mZmxpbmVhc21fNF9mdW5jdGlvbkFyaXR5Q2hlY2tfX2NvcHlMb29wIiAiOlxu
IgogICAgIlx0bGRyIHIwLCBbcjQsICMwXVxuIgogICAgIlx0c3RyIHIwLCBbcjQsIHIxLCBsc2wg
IzNdXG4iCiAgICAiXHRsZHIgcjAsIFtyNCwgIzRdXG4iCiAgICAiXHRhZGQgcjEwLCByNCwgcjEs
IGxzbCAjM1xuIgogICAgIlx0c3RyIHIwLCBbcjEwLCAjNF1cbiIKICAgICJcdGFkZHMgcjQsICM4
XG4iCiAgICAiXHRzdWJzIHIyLCByMiwgIzFcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5l
YXNtXzRfZnVuY3Rpb25Bcml0eUNoZWNrX19jb3B5TG9vcCIgIlxuIgoKCiAgICAiXHRtb3YgcjIs
IHIxXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzRfZnVuY3Rpb25Bcml0eUNoZWNrX19maWxsTG9v
cCIgIjpcbiIKICAgICJcdG1vdiByMCwgIzBcbiIKICAgICJcdHN0ciByMCwgW3I0LCByMSwgbHNs
ICMzXVxuIgogICAgIlx0bXZuIHIwLCAjM1xuIgogICAgIlx0YWRkIHIxMCwgcjQsIHIxLCBsc2wg
IzNcbiIKICAgICJcdHN0ciByMCwgW3IxMCwgIzRdXG4iCiAgICAiXHRhZGRzIHI0LCAjOFxuIgog
ICAgIlx0YWRkcyByMiwgIzFcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtXzRfZnVu
Y3Rpb25Bcml0eUNoZWNrX19maWxsTG9vcCIgIlxuIgogICAgIlx0bHNscyByMSwgcjEsICMzXG4i
CiAgICAiXHRhZGQgcjcsIHIxXG4iCiAgICAiXHRhZGQgc3AsIHIxXG4iCgogICIuTCIgIl9vZmZs
aW5lYXNtXzRfZnVuY3Rpb25Bcml0eUNoZWNrX19jb250aW51ZSIgIjpcbiIKICAgICJcdGxkciBy
MSwgW3I3LCAjOF1cbiIKICAgICJcdGxkciByOSwgW3IxLCAjNjBdXG4iCiAgICAiXHRiICIgIi5M
IiAiX29mZmxpbmVhc21fZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiIgIlxuIgoKICAiLkwiICJf
b2ZmbGluZWFzbV9mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luIiAiOlxuIgogICAgIlx0bGRyIHIw
LCBbcjEsICM0NF1cbiIKICAgICJcdHN1YnMgcjAsIHIwLCAjMVxuIgogICAgIlx0dHN0IHIwLCBy
MFxuIgogICAgIlx0YmVxICIgIi5MIiAiX29mZmxpbmVhc21fNF9mdW5jdGlvbkluaXRpYWxpemF0
aW9uX19hcmd1bWVudFByb2ZpbGVEb25lIiAiXG4iCiAgICAiXHRsZHIgcjQsIFtyMSwgIzE4MF1c
biIKICAgICJcdG1vdiByMTAsICMzMlxuIgogICAgIlx0bXVsIHIyLCByMTAsIHIwXG4iCiAgICAi
XHRsc2xzIHIwLCByMCwgIzNcbiIKICAgICJcdGFkZCByNCwgcjJcbiIKCiAgIi5MIiAiX29mZmxp
bmVhc21fNF9mdW5jdGlvbkluaXRpYWxpemF0aW9uX19hcmd1bWVudFByb2ZpbGVMb29wIiAiOlxu
IgogICAgIlx0YWRkIHIxMCwgcjcsIHIwLCBsc2wgIzBcbiIKICAgICJcdGxkciByMiwgW3IxMCwg
IzQ0XVxuIgogICAgIlx0c3VicyByNCwgcjQsICMzMlxuIgogICAgIlx0c3RyIHIyLCBbcjQsICM1
Ml1cbiIKICAgICJcdGFkZCByMTAsIHI3LCByMCwgbHNsICMwXG4iCiAgICAiXHRsZHIgcjIsIFty
MTAsICM0MF1cbiIKICAgICJcdHN0ciByMiwgW3I0LCAjNDhdXG4iCiAgICAiXHRtdm4gcjEwLCAj
N1xuIgogICAgIlx0YWRkcyByMCwgcjEwXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFz
bV80X2Z1bmN0aW9uSW5pdGlhbGl6YXRpb25fX2FyZ3VtZW50UHJvZmlsZUxvb3AiICJcbiIKCiAg
Ii5MIiAiX29mZmxpbmVhc21fNF9mdW5jdGlvbkluaXRpYWxpemF0aW9uX19hcmd1bWVudFByb2Zp
bGVEb25lIiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjEsICMyOF1cbiIKICAgICJcdGxkciByMiwg
W3IxLCAjNTZdXG4iCiAgICAiXHRsc2xzIHIwLCByMCwgIzNcbiIKICAgICJcdGFkZHMgcjAsICMy
NFxuIgogICAgIlx0c3VicyByMCwgcjcsIHIwXG4iCiAgICAiXHRtb3Z3IHIxMCwgIzI3MDQ4XG4i
CiAgICAiXHRhZGQgcjEwLCByMlxuIgogICAgIlx0bGRyIHIxMiwgW3IxMCwgIzBdXG4iCiAgICAi
XHRjbXAgcjEyLCByMFxuIgogICAgIlx0YmxzICIgIi5MIiAiX29mZmxpbmVhc21fNF9mdW5jdGlv
bkluaXRpYWxpemF0aW9uX19zdGFja0hlaWdodE9LIiAiXG4iCiAgICAiXHRtb3YgcjAsIHI3XG4i
CiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc3RhY2tfY2hlY2siICJc
biIKICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJcdHRzdCByMSwgcjFcbiIKICAgICJcdGJlcSAi
ICIuTCIgIl9vZmZsaW5lYXNtXzRfZnVuY3Rpb25Jbml0aWFsaXphdGlvbl9fc3RhY2tIZWlnaHRP
SyIgIlxuIgogICAgIlx0bW92IHI3LCByMVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV80X2Z1bmN0
aW9uSW5pdGlhbGl6YXRpb25fX3N0YWNrSGVpZ2h0T0siICI6XG4iCgoKICAgICJcdGxkciByMTIs
IFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMlxuIgoKIi5MIiAiaGFuZGxlVW5jYXVnaHRF
eGNlcHRpb24iICI6XG4iCiAgICAiXHRsZHIgcjQsIFtyNywgIzE2XVxuIgogICAgIlx0bW92dyBy
MTIsICMwXG4iCiAgICAiXHRtb3Z0IHIxMiwgIzY1NTM1XG4iCiAgICAiXHRhbmRzIHI0LCByMTJc
biIKICAgICJcdGxkciByNCwgW3I0LCAjMTA3Nl1cbiIKICAgICJcdG1vdncgcjEyLCAjMjY5MDhc
biIKICAgICJcdGFkZCByMTIsIHI0XG4iCiAgICAiXHRsZHIgcjcsIFtyMTIsICMwXVxuIgogICAg
Ilx0bGRyIHI3LCBbcjcsICMwXVxuIgogICAgIlx0c3VicyBzcCwgcjcsICM0OFxuIgogICAgIlx0
bGRyIHI0LCBbc3AsICMwXVxuIgogICAgIlx0bGRyIHI5LCBbc3AsICM0XVxuIgogICAgIlx0bW92
dyByMTIsICMyMjk1MlxuIgogICAgIlx0YWRkIHIxMiwgcjRcbiIKICAgICJcdHN0ciByOSwgW3Ix
MiwgIzBdXG4iCiAgICAiXHRsZHIgcjksIFtzcCwgIzhdXG4iCiAgICAiXHRtb3Z3IHIxMiwgIzIy
OTQ4XG4iCiAgICAiXHRhZGQgcjEyLCByNFxuIgogICAgIlx0c3RyIHI5LCBbcjEyLCAjMF1cbiIK
ICAgICJcdHN1YnMgc3AsIHI3LCAjMjhcbiIKICAgICJcdHBvcCB7cjQtcjYsIHI4LXIxMX1cbiIK
ICAgICJcdHBvcCB7IHI3IH1cbiIKICAgICJcdHBvcCB7IGxyIH1cbiIKICAgICJcdGJ4IGxyXG4i
CgoiLkwiICJsbGludF9vcF9lbnRlciIgIjpcbiIKICAgICJcdG1vdiByMiwgc3BcbiIKICAgICJc
dGFuZCByMiwgcjIsICMxNVxuIgogICAgIlx0dHN0IHIyLCByMlxuIgogICAgIlx0YmVxICIgIi5M
IiAiX29mZmxpbmVhc21fNF9jaGVja1N0YWNrUG9pbnRlckFsaWdubWVudF9fc3RhY2tQb2ludGVy
T2theSIgIlxuIgogICAgIlx0bW92dyByMiwgIzIyNVxuIgogICAgIlx0bW92dCByMiwgIzU3MDA1
XG4iCiAgICAiXHRia3B0ICMwXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzRfY2hlY2tTdGFja1Bv
aW50ZXJBbGlnbm1lbnRfX3N0YWNrUG9pbnRlck9rYXkiICI6XG4iCiAgICAiXHRsZHIgcjIsIFty
NywgIzhdXG4iCiAgICAiXHRsZHIgcjIsIFtyMiwgIzMyXVxuIgogICAgIlx0dHN0IHIyLCByMlxu
IgogICAgIlx0YmVxICIgIi5MIiAiX29mZmxpbmVhc21fb3BFbnRlckRvbmUiICJcbiIKICAgICJc
dG12biByMCwgIzNcbiIKICAgICJcdG1vdiByMSwgIzBcbiIKICAgICJcdHJzYnMgcjIsIHIyLCAj
MFxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9vcEVudGVyTG9vcCIgIjpcbiIKICAgICJcdGFkZCBy
MTIsIHI3LCByMiwgbHNsICMzXG4iCiAgICAiXHRzdHIgcjAsIFtyMTIsICM0XVxuIgogICAgIlx0
c3RyIHIxLCBbcjcsIHIyLCBsc2wgIzNdXG4iCiAgICAiXHRhZGRzIHIyLCAjMVxuIgogICAgIlx0
dHN0IHIyLCByMlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fb3BFbnRlckxvb3Ai
ICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fb3BFbnRlckRvbmUiICI6XG4iCiAgICAiXHRtb3Yg
cjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAic2xvd19wYXRoX2Vu
dGVyIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCiAgICAiXHRhZGRzIHI5LCAjNFxuIgogICAg
Ilx0bGRyIHIxMiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEyXG4iCgoiLkwiICJsbGlu
dF9vcF9jcmVhdGVfYWN0aXZhdGlvbiIgIjpcbiIKICAgICJcdGxkciByMCwgW3I5LCAjNF1cbiIK
ICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJs
bGludF9zbG93X3BhdGhfY3JlYXRlX2FjdGl2YXRpb24iICJcbiIKICAgICJcdG1vdiByOSwgcjBc
biIKICAgICJcdGFkZHMgcjksICM4XG4iCiAgICAiXHRsZHIgcjEyLCBbcjksICMwXVxuIgogICAg
Ilx0bW92IHBjLCByMTJcbiIKCiIuTCIgImxsaW50X29wX2luaXRfbGF6eV9yZWciICI6XG4iCiAg
ICAiXHRsZHIgcjAsIFtyOSwgIzRdXG4iCiAgICAiXHRhZGQgcjEyLCByNywgcjAsIGxzbCAjM1xu
IgogICAgIlx0bXZuIHIxMCwgIzVcbiIKICAgICJcdHN0ciByMTAsIFtyMTIsICM0XVxuIgogICAg
Ilx0bW92IHIxMiwgIzBcbiIKICAgICJcdHN0ciByMTIsIFtyNywgcjAsIGxzbCAjM11cbiIKICAg
ICJcdGFkZHMgcjksICM4XG4iCiAgICAiXHRsZHIgcjEyLCBbcjksICMwXVxuIgogICAgIlx0bW92
IHBjLCByMTJcbiIKCiIuTCIgImxsaW50X29wX2NyZWF0ZV9hcmd1bWVudHMiICI6XG4iCiAgICAi
XHRsZHIgcjAsIFtyOSwgIzRdXG4iCiAgICAiXHRhZGQgcjEyLCByNywgcjAsIGxzbCAjM1xuIgog
ICAgIlx0bXZuIHIxMCwgIzVcbiIKICAgICJcdGxkciByNiwgW3IxMiwgIzRdXG4iCiAgICAiXHRj
bXAgcjYsIHIxMFxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fb3BDcmVhdGVBcmd1
bWVudHNEb25lIiAiXG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4i
CiAgICAiXHRibHggIiAic2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHMiICJcbiIKICAgICJcdG1v
diByOSwgcjBcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fb3BDcmVhdGVBcmd1bWVudHNEb25lIiAi
OlxuIgogICAgIlx0YWRkcyByOSwgIzhcbiIKICAgICJcdGxkciByMTAsIFtyOSwgIzBdXG4iCiAg
ICAiXHRtb3YgcGMsIHIxMFxuIgoKIi5MIiAibGxpbnRfb3BfY3JlYXRlX3RoaXMiICI6XG4iCiAg
ICAiXHRsZHIgcjAsIFtyOSwgIzhdXG4iCiAgICAiXHRsZHIgcjAsIFtyNywgcjAsIGxzbCAjM11c
biIKICAgICJcdGxkciByMSwgW3IwLCAjMjhdXG4iCiAgICAiXHRsZHIgcjIsIFtyMCwgIzMyXVxu
IgogICAgIlx0dHN0IHIxLCByMVxuIgogICAgIlx0YmVxICIgIi5MIiAiX29mZmxpbmVhc21fb3BD
cmVhdGVUaGlzU2xvdyIgIlxuIgogICAgIlx0bGRyIHIwLCBbcjEsICMwXVxuIgogICAgIlx0dHN0
IHIwLCByMFxuIgogICAgIlx0YmVxICIgIi5MIiAiX29mZmxpbmVhc21fb3BDcmVhdGVUaGlzU2xv
dyIgIlxuIgogICAgIlx0bGRyIHI0LCBbcjAsICMwXVxuIgogICAgIlx0c3RyIHI0LCBbcjEsICMw
XVxuIgogICAgIlx0bW92IHIxMCwgIzBcbiIKICAgICJcdHN0ciByMTAsIFtyMCwgIzhdXG4iCiAg
ICAiXHRzdHIgcjIsIFtyMCwgIzBdXG4iCiAgICAiXHRsZHIgcjQsIFtyMiwgIzEyXVxuIgogICAg
Ilx0c3RyIHI0LCBbcjAsICM0XVxuIgogICAgIlx0bGRyIHIxLCBbcjksICM0XVxuIgogICAgIlx0
YWRkIHIxMCwgcjcsIHIxLCBsc2wgIzNcbiIKICAgICJcdG12biByNiwgIzRcbiIKICAgICJcdHN0
ciByNiwgW3IxMCwgIzRdXG4iCiAgICAiXHRzdHIgcjAsIFtyNywgcjEsIGxzbCAjM11cbiIKICAg
ICJcdGFkZHMgcjksICMxNlxuIgogICAgIlx0bGRyIHIxMCwgW3I5LCAjMF1cbiIKICAgICJcdG1v
diBwYywgcjEwXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX29wQ3JlYXRlVGhpc1Nsb3ciICI6XG4i
CiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAi
c2xvd19wYXRoX2NyZWF0ZV90aGlzIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCiAgICAiXHRh
ZGRzIHI5LCAjMTZcbiIKICAgICJcdGxkciByMTAsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMs
IHIxMFxuIgoKIi5MIiAibGxpbnRfb3BfZ2V0X2NhbGxlZSIgIjpcbiIKICAgICJcdGxkciByMCwg
W3I5LCAjNF1cbiIKICAgICJcdGxkciByMSwgW3I3LCAjMjRdXG4iCiAgICAiXHRsZHIgcjIsIFty
OSwgIzhdXG4iCiAgICAiXHRjbXAgcjEsIHIyXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGlu
ZWFzbV9vcEdldENhbGxlZVNsb3ciICJcbiIKICAgICJcdGFkZCByMTAsIHI3LCByMCwgbHNsICMz
XG4iCiAgICAiXHRtdm4gcjYsICM0XG4iCiAgICAiXHRzdHIgcjYsIFtyMTAsICM0XVxuIgogICAg
Ilx0c3RyIHIxLCBbcjcsIHIwLCBsc2wgIzNdXG4iCiAgICAiXHRhZGRzIHI5LCAjMTJcbiIKICAg
ICJcdGxkciByMTAsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMFxuIgoKICAiLkwiICJf
b2ZmbGluZWFzbV9vcEdldENhbGxlZVNsb3ciICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAg
ICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAic2xvd19wYXRoX2dldF9jYWxsZWUiICJc
biIKICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJcdGFkZHMgcjksICMxMlxuIgogICAgIlx0bGRy
IHIxMCwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEwXG4iCgoiLkwiICJsbGludF9vcF90
b190aGlzIiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjksICM0XVxuIgogICAgIlx0YWRkIHIxMCwg
cjcsIHIwLCBsc2wgIzNcbiIKICAgICJcdG12biByNiwgIzRcbiIKICAgICJcdGxkciByMTIsIFty
MTAsICM0XVxuIgogICAgIlx0Y21wIHIxMiwgcjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZs
aW5lYXNtX29wVG9UaGlzU2xvdyIgIlxuIgogICAgIlx0bGRyIHIwLCBbcjcsIHIwLCBsc2wgIzNd
XG4iCiAgICAiXHRsZHJiIHI2LCBbcjAsICM1XVxuIgogICAgIlx0Y21wIHI2LCAjMThcbiIKICAg
ICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX29wVG9UaGlzU2xvdyIgIlxuIgogICAgIlx0bGRy
IHIyLCBbcjksICM4XVxuIgogICAgIlx0bGRyIHI2LCBbcjAsICMwXVxuIgogICAgIlx0Y21wIHI2
LCByMlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fb3BUb1RoaXNTbG93IiAiXG4i
CiAgICAiXHRhZGRzIHI5LCAjMTZcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJc
dG1vdiBwYywgcjZcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fb3BUb1RoaXNTbG93IiAiOlxuIgog
ICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgInNs
b3dfcGF0aF90b190aGlzIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCiAgICAiXHRhZGRzIHI5
LCAjMTZcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIK
CiIuTCIgImxsaW50X29wX25ld19vYmplY3QiICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyOSwgIzEy
XVxuIgogICAgIlx0bGRyIHIxLCBbcjAsICMwXVxuIgogICAgIlx0bGRyIHIyLCBbcjAsICM0XVxu
IgogICAgIlx0bGRyIHIwLCBbcjEsICMwXVxuIgogICAgIlx0dHN0IHIwLCByMFxuIgogICAgIlx0
YmVxICIgIi5MIiAiX29mZmxpbmVhc21fb3BOZXdPYmplY3RTbG93IiAiXG4iCiAgICAiXHRsZHIg
cjQsIFtyMCwgIzBdXG4iCiAgICAiXHRzdHIgcjQsIFtyMSwgIzBdXG4iCiAgICAiXHRtb3YgcjYs
ICMwXG4iCiAgICAiXHRzdHIgcjYsIFtyMCwgIzhdXG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgIzBd
XG4iCiAgICAiXHRsZHIgcjQsIFtyMiwgIzEyXVxuIgogICAgIlx0c3RyIHI0LCBbcjAsICM0XVxu
IgogICAgIlx0bGRyIHIxLCBbcjksICM0XVxuIgogICAgIlx0YWRkIHI2LCByNywgcjEsIGxzbCAj
M1xuIgogICAgIlx0bXZuIHIxMiwgIzRcbiIKICAgICJcdHN0ciByMTIsIFtyNiwgIzRdXG4iCiAg
ICAiXHRzdHIgcjAsIFtyNywgcjEsIGxzbCAjM11cbiIKICAgICJcdGFkZHMgcjksICMxNlxuIgog
ICAgIlx0bGRyIHI2LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxuIgoKICAiLkwiICJf
b2ZmbGluZWFzbV9vcE5ld09iamVjdFNsb3ciICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAg
ICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc2xvd19wYXRoX25ld19vYmpl
Y3QiICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJcdGFkZHMgcjksICMxNlxuIgogICAg
Ilx0bGRyIHI2LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxuIgoKIi5MIiAibGxpbnRf
b3BfbW92IiAiOlxuIgogICAgIlx0bGRyIHIxLCBbcjksICM4XVxuIgogICAgIlx0bGRyIHIwLCBb
cjksICM0XVxuIgogICAgIlx0bW92dyByNiwgIzBcbiIKICAgICJcdG1vdnQgcjYsICMxNjM4NFxu
IgogICAgIlx0Y21wIHIxLCByNlxuIgogICAgIlx0YmdlICIgIi5MIiAiX29mZmxpbmVhc21fbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByNiwgcjcsIHIx
LCBsc2wgIzNcbiIKICAgICJcdGxkciByMiwgW3I2LCAjNF1cbiIKICAgICJcdGxkciByNCwgW3I3
LCByMSwgbHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fbG9hZENvbnN0YW50
T3JWYXJpYWJsZV9fY29uc3RhbnQiICI6XG4iCiAgICAiXHRsZHIgcjQsIFtyNywgIzhdXG4iCiAg
ICAiXHRsZHIgcjQsIFtyNCwgIzI3Nl1cbiIKICAgICJcdGFkZCByNiwgcjQsIHIxLCBsc2wgIzNc
biIKICAgICJcdGxkciByMiwgW3I2LCAjNF1cbiIKICAgICJcdGxkciByNCwgW3I0LCByMSwgbHNs
ICMzXVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25l
IiAiOlxuIgogICAgIlx0YWRkIHI2LCByNywgcjAsIGxzbCAjM1xuIgogICAgIlx0c3RyIHIyLCBb
cjYsICM0XVxuIgogICAgIlx0c3RyIHI0LCBbcjcsIHIwLCBsc2wgIzNdXG4iCiAgICAiXHRhZGRz
IHI5LCAjMTJcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZc
biIKCiIuTCIgImxsaW50X29wX2NhcHR1cmVkX21vdiIgIjpcbiIKICAgICJcdGxkciByMSwgW3I5
LCAjOF1cbiIKICAgICJcdG1vdncgcjYsICMwXG4iCiAgICAiXHRtb3Z0IHI2LCAjMTYzODRcbiIK
ICAgICJcdGNtcCByMSwgcjZcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtXzRfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByNiwgcjcsIHIx
LCBsc2wgIzNcbiIKICAgICJcdGxkciByMiwgW3I2LCAjNF1cbiIKICAgICJcdGxkciByNCwgW3I3
LCByMSwgbHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtXzRfbG9hZENvbnN0
YW50T3JWYXJpYWJsZV9fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV80X2xvYWRDb25z
dGFudE9yVmFyaWFibGVfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHI0LCBbcjcsICM4XVxu
IgogICAgIlx0bGRyIHI0LCBbcjQsICMyNzZdXG4iCiAgICAiXHRhZGQgcjYsIHI0LCByMSwgbHNs
ICMzXG4iCiAgICAiXHRsZHIgcjIsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIgcjQsIFtyNCwgcjEs
IGxzbCAjM11cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fNF9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
X19kb25lIiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjksICMxMl1cbiIKICAgICJcdHRzdCByMCwg
cjBcbiIKICAgICJcdGJlcSAiICIuTCIgIl9vZmZsaW5lYXNtX29wQ2FwdHVyZWRNb3ZSZWFkeSIg
IlxuIgogICAgIlx0bGRyYiByMSwgW3IwLCAjNF1cbiIKICAgICJcdGNtcCByMSwgIzJcbiIKICAg
ICJcdGJlcSAiICIuTCIgIl9vZmZsaW5lYXNtX25vdGlmeVdyaXRlX19kb25lIiAiXG4iCiAgICAi
XHRsZHIgcjYsIFtyMCwgIzMyXVxuIgogICAgIlx0Y21wIHI0LCByNlxuIgogICAgIlx0Ym5lICIg
Ii5MIiAiX29mZmxpbmVhc21fb3BDYXB0dXJlZE1vdlNsb3ciICJcbiIKICAgICJcdGxkciByNiwg
W3IwLCAjMzZdXG4iCiAgICAiXHRjbXAgcjIsIHI2XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2Zm
bGluZWFzbV9vcENhcHR1cmVkTW92U2xvdyIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9ub3Rp
ZnlXcml0ZV9fZG9uZSIgIjpcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fb3BDYXB0dXJlZE1vdlJl
YWR5IiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjksICM0XVxuIgogICAgIlx0YWRkIHI2LCByNywg
cjAsIGxzbCAjM1xuIgogICAgIlx0c3RyIHIyLCBbcjYsICM0XVxuIgogICAgIlx0c3RyIHI0LCBb
cjcsIHIwLCBsc2wgIzNdXG4iCiAgICAiXHRhZGRzIHI5LCAjMTZcbiIKICAgICJcdGxkciByNiwg
W3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fb3BD
YXB0dXJlZE1vdlNsb3ciICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRtb3YgcjEs
IHI5XG4iCiAgICAiXHRibHggIiAic2xvd19wYXRoX2NhcHR1cmVkX21vdiIgIlxuIgogICAgIlx0
bW92IHI5LCByMFxuIgogICAgIlx0YWRkcyByOSwgIzE2XG4iCiAgICAiXHRsZHIgcjYsIFtyOSwg
IzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgoiLkwiICJsbGludF9vcF9ub3QiICI6XG4iCiAg
ICAiXHRsZHIgcjAsIFtyOSwgIzhdXG4iCiAgICAiXHRsZHIgcjEsIFtyOSwgIzRdXG4iCiAgICAi
XHRtb3Z3IHI2LCAjMFxuIgogICAgIlx0bW92dCByNiwgIzE2Mzg0XG4iCiAgICAiXHRjbXAgcjAs
IHI2XG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV81X2xvYWRDb25zdGFudE9yVmFy
aWFibGVfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjYsIHI3LCByMCwgbHNsICMzXG4iCiAg
ICAiXHRsZHIgcjIsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIgcjQsIFtyNywgcjAsIGxzbCAjM11c
biIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV81X2xvYWRDb25zdGFudE9yVmFyaWFibGVf
X2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fNV9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
X19jb25zdGFudCIgIjpcbiIKICAgICJcdGxkciByNCwgW3I3LCAjOF1cbiIKICAgICJcdGxkciBy
NCwgW3I0LCAjMjc2XVxuIgogICAgIlx0YWRkIHI2LCByNCwgcjAsIGxzbCAjM1xuIgogICAgIlx0
bGRyIHIyLCBbcjYsICM0XVxuIgogICAgIlx0bGRyIHI0LCBbcjQsIHIwLCBsc2wgIzNdXG4iCgog
ICIuTCIgIl9vZmZsaW5lYXNtXzVfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSIgIjpcbiIK
ICAgICJcdG12biByNiwgIzFcbiIKICAgICJcdGNtcCByMiwgcjZcbiIKICAgICJcdGJuZSAiICIu
TCIgIl9vZmZsaW5lYXNtX29wTm90U2xvdyIgIlxuIgogICAgIlx0ZW9yIHI0LCByNCwgIzFcbiIK
ICAgICJcdGFkZCByNiwgcjcsIHIxLCBsc2wgIzNcbiIKICAgICJcdHN0ciByMiwgW3I2LCAjNF1c
biIKICAgICJcdHN0ciByNCwgW3I3LCByMSwgbHNsICMzXVxuIgogICAgIlx0YWRkcyByOSwgIzEy
XG4iCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgogICIu
TCIgIl9vZmZsaW5lYXNtX29wTm90U2xvdyIgIjpcbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAg
ICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJzbG93X3BhdGhfbm90IiAiXG4iCiAgICAi
XHRtb3YgcjksIHIwXG4iCiAgICAiXHRhZGRzIHI5LCAjMTJcbiIKICAgICJcdGxkciByNiwgW3I5
LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIKCiIuTCIgImxsaW50X29wX2VxIiAiOlxuIgog
ICAgIlx0bGRyIHIyLCBbcjksICMxMl1cbiIKICAgICJcdGxkciByMCwgW3I5LCAjOF1cbiIKICAg
ICJcdG1vdncgcjYsICMwXG4iCiAgICAiXHRtb3Z0IHI2LCAjMTYzODRcbiIKICAgICJcdGNtcCBy
MiwgcjZcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtXzZfbG9hZENvbnN0YW50T3JW
YXJpYWJsZV9fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByNiwgcjcsIHIyLCBsc2wgIzNcbiIK
ICAgICJcdGxkciByNCwgW3I2LCAjNF1cbiIKICAgICJcdGxkciByMSwgW3I3LCByMiwgbHNsICMz
XVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtXzZfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZV9fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV82X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIxLCBbcjcsICM4XVxuIgogICAgIlx0bGRy
IHIxLCBbcjEsICMyNzZdXG4iCiAgICAiXHRhZGQgcjYsIHIxLCByMiwgbHNsICMzXG4iCiAgICAi
XHRsZHIgcjQsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgcjIsIGxzbCAjM11cbiIK
CiAgIi5MIiAiX29mZmxpbmVhc21fNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lIiAiOlxu
IgogICAgIlx0bW92dyByNiwgIzBcbiIKICAgICJcdG1vdnQgcjYsICMxNjM4NFxuIgogICAgIlx0
Y21wIHIwLCByNlxuIgogICAgIlx0YmdlICIgIi5MIiAiX29mZmxpbmVhc21fbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjYsIHI3LCByMCwgbHNs
ICMzXG4iCiAgICAiXHRsZHIgcjIsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIgcjAsIFtyNywgcjAs
IGxzbCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZ19fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZ19fY29uc3RhbnQiICI6XG4iCiAgICAiXHRsZHIgcjIsIFtyNywgIzhdXG4i
CiAgICAiXHRsZHIgcjIsIFtyMiwgIzI3Nl1cbiIKICAgICJcdGxzbHMgcjAsIHIwLCAjM1xuIgog
ICAgIlx0YWRkIHIyLCByMFxuIgogICAgIlx0bGRyIHIwLCBbcjIsICMwXVxuIgogICAgIlx0bGRy
IHIyLCBbcjIsICM0XVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZ19fZG9uZSIgIjpcbiIKICAgICJcdGNtcCByMiwgcjRcbiIKICAgICJcdGJuZSAiICIu
TCIgIl9vZmZsaW5lYXNtX29wRXFTbG93IiAiXG4iCiAgICAiXHRtdm4gcjYsICM0XG4iCiAgICAi
XHRjbXAgcjIsIHI2XG4iCiAgICAiXHRiZXEgIiAiLkwiICJfb2ZmbGluZWFzbV9vcEVxU2xvdyIg
IlxuIgogICAgIlx0bXZuIHI2LCAjNlxuIgogICAgIlx0Y21wIHIyLCByNlxuIgogICAgIlx0Ymxv
ICIgIi5MIiAiX29mZmxpbmVhc21fb3BFcVNsb3ciICJcbiIKICAgICJcdGxkciByMiwgW3I5LCAj
NF1cbiIKICAgICJcdG1vdiByNiwgcjBcbiIKICAgICJcdG1vdnMgcjAsICMwXG4iCiAgICAiXHRj
bXAgcjYsIHIxXG4iCiAgICAiXHRpdCBlcVxuIgogICAgIlx0bW92ZXEgcjAsICMxXG4iCiAgICAi
XHRhZGQgcjYsIHI3LCByMiwgbHNsICMzXG4iCiAgICAiXHRtdm4gcjEyLCAjMVxuIgogICAgIlx0
c3RyIHIxMiwgW3I2LCAjNF1cbiIKICAgICJcdHN0ciByMCwgW3I3LCByMiwgbHNsICMzXVxuIgog
ICAgIlx0YWRkcyByOSwgIzE2XG4iCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRt
b3YgcGMsIHI2XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX29wRXFTbG93IiAiOlxuIgogICAgIlx0
bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgInNsb3dfcGF0
aF9lcSIgIlxuIgogICAgIlx0bW92IHI5LCByMFxuIgogICAgIlx0YWRkcyByOSwgIzE2XG4iCiAg
ICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgoiLkwiICJsbGlu
dF9vcF9lcV9udWxsIiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjksICM4XVxuIgogICAgIlx0bGRy
IHI0LCBbcjksICM0XVxuIgogICAgIlx0YWRkIHI2LCByNywgcjAsIGxzbCAjM1xuIgogICAgIlx0
bGRyIHIxLCBbcjYsICM0XVxuIgogICAgIlx0bGRyIHIwLCBbcjcsIHIwLCBsc2wgIzNdXG4iCiAg
ICAiXHRtdm4gcjYsICM0XG4iCiAgICAiXHRjbXAgcjEsIHI2XG4iCiAgICAiXHRibmUgIiAiLkwi
ICJfb2ZmbGluZWFzbV9vcEVxTnVsbEltbWVkaWF0ZSIgIlxuIgogICAgIlx0bGRyYiByNiwgW3Iw
LCAjNl1cbiIKICAgICJcdHRzdCByNiwgIzFcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5l
YXNtX29wRXFOdWxsTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCIgIlxuIgogICAgIlx0bW92IHIxLCAj
MFxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX29wRXFOdWxsTm90SW1tZWRpYXRlIiAi
XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX29wRXFOdWxsTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCIg
IjpcbiIKICAgICJcdGxkciByMSwgW3IwLCAjMF1cbiIKICAgICJcdGxkciByMCwgW3I3LCAjOF1c
biIKICAgICJcdGxkciByMCwgW3IwLCAjMjBdXG4iCiAgICAiXHRsZHIgcjYsIFtyMSwgIzIwXVxu
IgogICAgIlx0bW92cyByMSwgIzBcbiIKICAgICJcdGNtcCByNiwgcjBcbiIKICAgICJcdGl0IGVx
XG4iCiAgICAiXHRtb3ZlcSByMSwgIzFcbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9v
cEVxTnVsbE5vdEltbWVkaWF0ZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9vcEVxTnVsbElt
bWVkaWF0ZSIgIjpcbiIKICAgICJcdG12biByNiwgIzJcbiIKICAgICJcdG1vdnMgcjIsICMwXG4i
CiAgICAiXHRjbXAgcjEsIHI2XG4iCiAgICAiXHRpdCBlcVxuIgogICAgIlx0bW92ZXEgcjIsICMx
XG4iCiAgICAiXHRtdm4gcjYsICMzXG4iCiAgICAiXHRtb3YgcjEyLCByMVxuIgogICAgIlx0bW92
cyByMSwgIzBcbiIKICAgICJcdGNtcCByMTIsIHI2XG4iCiAgICAiXHRpdCBlcVxuIgogICAgIlx0
bW92ZXEgcjEsICMxXG4iCiAgICAiXHRvcnJzIHIxLCByMlxuIgoKICAiLkwiICJfb2ZmbGluZWFz
bV9vcEVxTnVsbE5vdEltbWVkaWF0ZSIgIjpcbiIKICAgICJcdGFkZCByNiwgcjcsIHI0LCBsc2wg
IzNcbiIKICAgICJcdG12biByMTIsICMxXG4iCiAgICAiXHRzdHIgcjEyLCBbcjYsICM0XVxuIgog
ICAgIlx0c3RyIHIxLCBbcjcsIHI0LCBsc2wgIzNdXG4iCiAgICAiXHRhZGRzIHI5LCAjMTJcbiIK
ICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIKCiIuTCIgImxs
aW50X29wX25lcSIgIjpcbiIKICAgICJcdGxkciByMiwgW3I5LCAjMTJdXG4iCiAgICAiXHRsZHIg
cjAsIFtyOSwgIzhdXG4iCiAgICAiXHRtb3Z3IHI2LCAjMFxuIgogICAgIlx0bW92dCByNiwgIzE2
Mzg0XG4iCiAgICAiXHRjbXAgcjIsIHI2XG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFz
bV83X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjYs
IHI3LCByMiwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjQsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIg
cjEsIFtyNywgcjIsIGxzbCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV83X2xv
YWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fN19s
b2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCIgIjpcbiIKICAgICJcdGxkciByMSwgW3I3
LCAjOF1cbiIKICAgICJcdGxkciByMSwgW3IxLCAjMjc2XVxuIgogICAgIlx0YWRkIHI2LCByMSwg
cjIsIGxzbCAjM1xuIgogICAgIlx0bGRyIHI0LCBbcjYsICM0XVxuIgogICAgIlx0bGRyIHIxLCBb
cjEsIHIyLCBsc2wgIzNdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzdfbG9hZENvbnN0YW50T3JW
YXJpYWJsZV9fZG9uZSIgIjpcbiIKICAgICJcdG1vdncgcjYsICMwXG4iCiAgICAiXHRtb3Z0IHI2
LCAjMTYzODRcbiIKICAgICJcdGNtcCByMCwgcjZcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZs
aW5lYXNtXzdfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50IiAiXG4iCiAgICAi
XHRhZGQgcjYsIHI3LCByMCwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjIsIFtyNiwgIzRdXG4iCiAg
ICAiXHRsZHIgcjAsIFtyNywgcjAsIGxzbCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGlu
ZWFzbV83X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lIiAiXG4iCgogICIuTCIgIl9v
ZmZsaW5lYXNtXzdfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50IiAiOlxuIgog
ICAgIlx0bGRyIHIyLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIyLCBbcjIsICMyNzZdXG4iCiAg
ICAiXHRsc2xzIHIwLCByMCwgIzNcbiIKICAgICJcdGFkZCByMiwgcjBcbiIKICAgICJcdGxkciBy
MCwgW3IyLCAjMF1cbiIKICAgICJcdGxkciByMiwgW3IyLCAjNF1cbiIKCiAgIi5MIiAiX29mZmxp
bmVhc21fN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSIgIjpcbiIKICAgICJcdGNt
cCByMiwgcjRcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX29wTmVxU2xvdyIgIlxu
IgogICAgIlx0bXZuIHI2LCAjNFxuIgogICAgIlx0Y21wIHIyLCByNlxuIgogICAgIlx0YmVxICIg
Ii5MIiAiX29mZmxpbmVhc21fb3BOZXFTbG93IiAiXG4iCiAgICAiXHRtdm4gcjYsICM2XG4iCiAg
ICAiXHRjbXAgcjIsIHI2XG4iCiAgICAiXHRibG8gIiAiLkwiICJfb2ZmbGluZWFzbV9vcE5lcVNs
b3ciICJcbiIKICAgICJcdGxkciByMiwgW3I5LCAjNF1cbiIKICAgICJcdG1vdiByNiwgcjBcbiIK
ICAgICJcdG1vdnMgcjAsICMwXG4iCiAgICAiXHRjbXAgcjYsIHIxXG4iCiAgICAiXHRpdCBuZVxu
IgogICAgIlx0bW92bmUgcjAsICMxXG4iCiAgICAiXHRhZGQgcjYsIHI3LCByMiwgbHNsICMzXG4i
CiAgICAiXHRtdm4gcjEyLCAjMVxuIgogICAgIlx0c3RyIHIxMiwgW3I2LCAjNF1cbiIKICAgICJc
dHN0ciByMCwgW3I3LCByMiwgbHNsICMzXVxuIgogICAgIlx0YWRkcyByOSwgIzE2XG4iCiAgICAi
XHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgogICIuTCIgIl9vZmZs
aW5lYXNtX29wTmVxU2xvdyIgIjpcbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiBy
MSwgcjlcbiIKICAgICJcdGJseCAiICJzbG93X3BhdGhfbmVxIiAiXG4iCiAgICAiXHRtb3Ygcjks
IHIwXG4iCiAgICAiXHRhZGRzIHI5LCAjMTZcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIK
ICAgICJcdG1vdiBwYywgcjZcbiIKCiIuTCIgImxsaW50X29wX25lcV9udWxsIiAiOlxuIgogICAg
Ilx0bGRyIHIwLCBbcjksICM4XVxuIgogICAgIlx0bGRyIHI0LCBbcjksICM0XVxuIgogICAgIlx0
YWRkIHI2LCByNywgcjAsIGxzbCAjM1xuIgogICAgIlx0bGRyIHIxLCBbcjYsICM0XVxuIgogICAg
Ilx0bGRyIHIwLCBbcjcsIHIwLCBsc2wgIzNdXG4iCiAgICAiXHRtdm4gcjYsICM0XG4iCiAgICAi
XHRjbXAgcjEsIHI2XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9vcE5lcU51bGxJ
bW1lZGlhdGUiICJcbiIKICAgICJcdGxkcmIgcjYsIFtyMCwgIzZdXG4iCiAgICAiXHR0c3QgcjYs
ICMxXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9vcE5lcU51bGxNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkIiAiXG4iCiAgICAiXHRtb3YgcjEsICMxXG4iCiAgICAiXHRiICIgIi5MIiAi
X29mZmxpbmVhc21fb3BOZXFOdWxsTm90SW1tZWRpYXRlIiAiXG4iCgogICIuTCIgIl9vZmZsaW5l
YXNtX29wTmVxTnVsbE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQiICI6XG4iCiAgICAiXHRsZHIgcjEs
IFtyMCwgIzBdXG4iCiAgICAiXHRsZHIgcjAsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjAsIFty
MCwgIzIwXVxuIgogICAgIlx0bGRyIHI2LCBbcjEsICMyMF1cbiIKICAgICJcdG1vdnMgcjEsICMw
XG4iCiAgICAiXHRjbXAgcjYsIHIwXG4iCiAgICAiXHRpdCBuZVxuIgogICAgIlx0bW92bmUgcjEs
ICMxXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fb3BOZXFOdWxsTm90SW1tZWRpYXRl
IiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX29wTmVxTnVsbEltbWVkaWF0ZSIgIjpcbiIKICAg
ICJcdG12biByNiwgIzJcbiIKICAgICJcdG1vdnMgcjIsICMwXG4iCiAgICAiXHRjbXAgcjEsIHI2
XG4iCiAgICAiXHRpdCBuZVxuIgogICAgIlx0bW92bmUgcjIsICMxXG4iCiAgICAiXHRtdm4gcjYs
ICMzXG4iCiAgICAiXHRtb3YgcjEyLCByMVxuIgogICAgIlx0bW92cyByMSwgIzBcbiIKICAgICJc
dGNtcCByMTIsIHI2XG4iCiAgICAiXHRpdCBuZVxuIgogICAgIlx0bW92bmUgcjEsICMxXG4iCiAg
ICAiXHRhbmRzIHIxLCByMlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9vcE5lcU51bGxOb3RJbW1l
ZGlhdGUiICI6XG4iCiAgICAiXHRhZGQgcjYsIHI3LCByNCwgbHNsICMzXG4iCiAgICAiXHRtdm4g
cjEyLCAjMVxuIgogICAgIlx0c3RyIHIxMiwgW3I2LCAjNF1cbiIKICAgICJcdHN0ciByMSwgW3I3
LCByNCwgbHNsICMzXVxuIgogICAgIlx0YWRkcyByOSwgIzEyXG4iCiAgICAiXHRsZHIgcjYsIFty
OSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgoiLkwiICJsbGludF9vcF9zdHJpY3RlcSIg
IjpcbiIKICAgICJcdGxkciByMiwgW3I5LCAjMTJdXG4iCiAgICAiXHRsZHIgcjAsIFtyOSwgIzhd
XG4iCiAgICAiXHRtb3Z3IHI2LCAjMFxuIgogICAgIlx0bW92dCByNiwgIzE2Mzg0XG4iCiAgICAi
XHRjbXAgcjIsIHI2XG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9zdHJpY3RFcV9f
OF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCIgIlxuIgogICAgIlx0YWRkIHI2LCBy
NywgcjIsIGxzbCAjM1xuIgogICAgIlx0bGRyIHI0LCBbcjYsICM0XVxuIgogICAgIlx0bGRyIHIx
LCBbcjcsIHIyLCBsc2wgIzNdXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fc3RyaWN0
RXFfXzhfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGlu
ZWFzbV9zdHJpY3RFcV9fOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCIgIjpcbiIK
ICAgICJcdGxkciByMSwgW3I3LCAjOF1cbiIKICAgICJcdGxkciByMSwgW3IxLCAjMjc2XVxuIgog
ICAgIlx0YWRkIHI2LCByMSwgcjIsIGxzbCAjM1xuIgogICAgIlx0bGRyIHI0LCBbcjYsICM0XVxu
IgogICAgIlx0bGRyIHIxLCBbcjEsIHIyLCBsc2wgIzNdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNt
X3N0cmljdEVxX184X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUiICI6XG4iCiAgICAiXHRt
b3Z3IHI2LCAjMFxuIgogICAgIlx0bW92dCByNiwgIzE2Mzg0XG4iCiAgICAiXHRjbXAgcjAsIHI2
XG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9zdHJpY3RFcV9fOF9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByNiwgcjcsIHIwLCBs
c2wgIzNcbiIKICAgICJcdGxkciByMiwgW3I2LCAjNF1cbiIKICAgICJcdGxkciByMCwgW3I3LCBy
MCwgbHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX3N0cmljdEVxX184X2xv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNt
X3N0cmljdEVxX184X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCIgIjpcbiIK
ICAgICJcdGxkciByMiwgW3I3LCAjOF1cbiIKICAgICJcdGxkciByMiwgW3IyLCAjMjc2XVxuIgog
ICAgIlx0bHNscyByMCwgcjAsICMzXG4iCiAgICAiXHRhZGQgcjIsIHIwXG4iCiAgICAiXHRsZHIg
cjAsIFtyMiwgIzBdXG4iCiAgICAiXHRsZHIgcjIsIFtyMiwgIzRdXG4iCgogICIuTCIgIl9vZmZs
aW5lYXNtX3N0cmljdEVxX184X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lIiAiOlxu
IgogICAgIlx0Y21wIHIyLCByNFxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fc3Ry
aWN0RXFfX3Nsb3ciICJcbiIKICAgICJcdG12biByNiwgIzZcbiIKICAgICJcdGNtcCByMiwgcjZc
biIKICAgICJcdGJsbyAiICIuTCIgIl9vZmZsaW5lYXNtX3N0cmljdEVxX19zbG93IiAiXG4iCiAg
ICAiXHRtdm4gcjYsICM0XG4iCiAgICAiXHRjbXAgcjIsIHI2XG4iCiAgICAiXHRibmUgIiAiLkwi
ICJfb2ZmbGluZWFzbV9zdHJpY3RFcV9fbm90U3RyaW5nIiAiXG4iCiAgICAiXHRsZHJiIHI2LCBb
cjAsICM1XVxuIgogICAgIlx0Y21wIHI2LCAjNlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxp
bmVhc21fc3RyaWN0RXFfX25vdFN0cmluZyIgIlxuIgogICAgIlx0bGRyYiByNiwgW3IxLCAjNV1c
biIKICAgICJcdGNtcCByNiwgIzZcbiIKICAgICJcdGJlcSAiICIuTCIgIl9vZmZsaW5lYXNtX3N0
cmljdEVxX19zbG93IiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3N0cmljdEVxX19ub3RTdHJp
bmciICI6XG4iCiAgICAiXHRsZHIgcjIsIFtyOSwgIzRdXG4iCiAgICAiXHRtb3YgcjYsIHIwXG4i
CiAgICAiXHRtb3ZzIHIwLCAjMFxuIgogICAgIlx0Y21wIHI2LCByMVxuIgogICAgIlx0aXQgZXFc
biIKICAgICJcdG1vdmVxIHIwLCAjMVxuIgogICAgIlx0YWRkIHI2LCByNywgcjIsIGxzbCAjM1xu
IgogICAgIlx0bXZuIHIxMiwgIzFcbiIKICAgICJcdHN0ciByMTIsIFtyNiwgIzRdXG4iCiAgICAi
XHRzdHIgcjAsIFtyNywgcjIsIGxzbCAjM11cbiIKICAgICJcdGFkZHMgcjksICMxNlxuIgogICAg
Ilx0bGRyIHI2LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxuIgoKICAiLkwiICJfb2Zm
bGluZWFzbV9zdHJpY3RFcV9fc2xvdyIgIjpcbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJc
dG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJzbG93X3BhdGhfc3RyaWN0ZXEiICJcbiIKICAg
ICJcdG1vdiByOSwgcjBcbiIKICAgICJcdGFkZHMgcjksICMxNlxuIgogICAgIlx0bGRyIHI2LCBb
cjksICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxuIgoKIi5MIiAibGxpbnRfb3BfbnN0cmljdGVx
IiAiOlxuIgogICAgIlx0bGRyIHIyLCBbcjksICMxMl1cbiIKICAgICJcdGxkciByMCwgW3I5LCAj
OF1cbiIKICAgICJcdG1vdncgcjYsICMwXG4iCiAgICAiXHRtb3Z0IHI2LCAjMTYzODRcbiIKICAg
ICJcdGNtcCByMiwgcjZcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtX3N0cmljdEVx
X185X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjYs
IHI3LCByMiwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjQsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIg
cjEsIFtyNywgcjIsIGxzbCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9zdHJp
Y3RFcV9fOV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZs
aW5lYXNtX3N0cmljdEVxX185X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50IiAiOlxu
IgogICAgIlx0bGRyIHIxLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIxLCBbcjEsICMyNzZdXG4i
CiAgICAiXHRhZGQgcjYsIHIxLCByMiwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjQsIFtyNiwgIzRd
XG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgcjIsIGxzbCAjM11cbiIKCiAgIi5MIiAiX29mZmxpbmVh
c21fc3RyaWN0RXFfXzlfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSIgIjpcbiIKICAgICJc
dG1vdncgcjYsICMwXG4iCiAgICAiXHRtb3Z0IHI2LCAjMTYzODRcbiIKICAgICJcdGNtcCByMCwg
cjZcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtX3N0cmljdEVxX185X2xvYWRDb25z
dGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCIgIlxuIgogICAgIlx0YWRkIHI2LCByNywgcjAs
IGxzbCAjM1xuIgogICAgIlx0bGRyIHIyLCBbcjYsICM0XVxuIgogICAgIlx0bGRyIHIwLCBbcjcs
IHIwLCBsc2wgIzNdXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fc3RyaWN0RXFfXzlf
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVh
c21fc3RyaWN0RXFfXzlfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50IiAiOlxu
IgogICAgIlx0bGRyIHIyLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIyLCBbcjIsICMyNzZdXG4i
CiAgICAiXHRsc2xzIHIwLCByMCwgIzNcbiIKICAgICJcdGFkZCByMiwgcjBcbiIKICAgICJcdGxk
ciByMCwgW3IyLCAjMF1cbiIKICAgICJcdGxkciByMiwgW3IyLCAjNF1cbiIKCiAgIi5MIiAiX29m
ZmxpbmVhc21fc3RyaWN0RXFfXzlfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUiICI6
XG4iCiAgICAiXHRjbXAgcjIsIHI0XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV85
X3N0cmljdEVxX19zbG93IiAiXG4iCiAgICAiXHRtdm4gcjYsICM2XG4iCiAgICAiXHRjbXAgcjIs
IHI2XG4iCiAgICAiXHRibG8gIiAiLkwiICJfb2ZmbGluZWFzbV85X3N0cmljdEVxX19zbG93IiAi
XG4iCiAgICAiXHRtdm4gcjYsICM0XG4iCiAgICAiXHRjbXAgcjIsIHI2XG4iCiAgICAiXHRibmUg
IiAiLkwiICJfb2ZmbGluZWFzbV85X3N0cmljdEVxX19ub3RTdHJpbmciICJcbiIKICAgICJcdGxk
cmIgcjYsIFtyMCwgIzVdXG4iCiAgICAiXHRjbXAgcjYsICM2XG4iCiAgICAiXHRibmUgIiAiLkwi
ICJfb2ZmbGluZWFzbV85X3N0cmljdEVxX19ub3RTdHJpbmciICJcbiIKICAgICJcdGxkcmIgcjYs
IFtyMSwgIzVdXG4iCiAgICAiXHRjbXAgcjYsICM2XG4iCiAgICAiXHRiZXEgIiAiLkwiICJfb2Zm
bGluZWFzbV85X3N0cmljdEVxX19zbG93IiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzlfc3Ry
aWN0RXFfX25vdFN0cmluZyIgIjpcbiIKICAgICJcdGxkciByMiwgW3I5LCAjNF1cbiIKICAgICJc
dG1vdiByNiwgcjBcbiIKICAgICJcdG1vdnMgcjAsICMwXG4iCiAgICAiXHRjbXAgcjYsIHIxXG4i
CiAgICAiXHRpdCBuZVxuIgogICAgIlx0bW92bmUgcjAsICMxXG4iCiAgICAiXHRhZGQgcjYsIHI3
LCByMiwgbHNsICMzXG4iCiAgICAiXHRtdm4gcjEyLCAjMVxuIgogICAgIlx0c3RyIHIxMiwgW3I2
LCAjNF1cbiIKICAgICJcdHN0ciByMCwgW3I3LCByMiwgbHNsICMzXVxuIgogICAgIlx0YWRkcyBy
OSwgIzE2XG4iCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4i
CgogICIuTCIgIl9vZmZsaW5lYXNtXzlfc3RyaWN0RXFfX3Nsb3ciICI6XG4iCiAgICAiXHRtb3Yg
cjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAic2xvd19wYXRoX25z
dHJpY3RlcSIgIlxuIgogICAgIlx0bW92IHI5LCByMFxuIgogICAgIlx0YWRkcyByOSwgIzE2XG4i
CiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgoiLkwiICJs
bGludF9vcF9pbmMiICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyOSwgIzRdXG4iCiAgICAiXHRhZGQg
cjYsIHI3LCByMCwgbHNsICMzXG4iCiAgICAiXHRtdm4gcjEyLCAjMFxuIgogICAgIlx0bGRyIHIx
MCwgW3I2LCAjNF1cbiIKICAgICJcdGNtcCByMTAsIHIxMlxuIgogICAgIlx0Ym5lICIgIi5MIiAi
X29mZmxpbmVhc21fb3BJbmNTbG93IiAiXG4iCiAgICAiXHRsZHIgcjEsIFtyNywgcjAsIGxzbCAj
M11cbiIKICAgICJcdGFkZHMgcjEsICMxXG4iCiAgICAiXHRidnMgIiAiLkwiICJfb2ZmbGluZWFz
bV9vcEluY1Nsb3ciICJcbiIKICAgICJcdHN0ciByMSwgW3I3LCByMCwgbHNsICMzXVxuIgogICAg
Ilx0YWRkcyByOSwgIzhcbiIKICAgICJcdGxkciByMTIsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3Yg
cGMsIHIxMlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9vcEluY1Nsb3ciICI6XG4iCiAgICAiXHRt
b3YgcjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAic2xvd19wYXRo
X2luYyIgIlxuIgogICAgIlx0bW92IHI5LCByMFxuIgogICAgIlx0YWRkcyByOSwgIzhcbiIKICAg
ICJcdGxkciByMTIsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMlxuIgoKIi5MIiAibGxp
bnRfb3BfZGVjIiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjksICM0XVxuIgogICAgIlx0YWRkIHIx
MiwgcjcsIHIwLCBsc2wgIzNcbiIKICAgICJcdG12biByMTAsICMwXG4iCiAgICAiXHRsZHIgcjYs
IFtyMTIsICM0XVxuIgogICAgIlx0Y21wIHI2LCByMTBcbiIKICAgICJcdGJuZSAiICIuTCIgIl9v
ZmZsaW5lYXNtX29wRGVjU2xvdyIgIlxuIgogICAgIlx0bGRyIHIxLCBbcjcsIHIwLCBsc2wgIzNd
XG4iCiAgICAiXHRzdWJzIHIxLCByMSwgIzFcbiIKICAgICJcdGJ2cyAiICIuTCIgIl9vZmZsaW5l
YXNtX29wRGVjU2xvdyIgIlxuIgogICAgIlx0c3RyIHIxLCBbcjcsIHIwLCBsc2wgIzNdXG4iCiAg
ICAiXHRhZGRzIHI5LCAjOFxuIgogICAgIlx0bGRyIHIxMCwgW3I5LCAjMF1cbiIKICAgICJcdG1v
diBwYywgcjEwXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX29wRGVjU2xvdyIgIjpcbiIKICAgICJc
dG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJzbG93X3Bh
dGhfZGVjIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCiAgICAiXHRhZGRzIHI5LCAjOFxuIgog
ICAgIlx0bGRyIHIxMCwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEwXG4iCgoiLkwiICJs
bGludF9vcF90b19udW1iZXIiICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyOSwgIzhdXG4iCiAgICAi
XHRsZHIgcjEsIFtyOSwgIzRdXG4iCiAgICAiXHRtb3Z3IHIxMCwgIzBcbiIKICAgICJcdG1vdnQg
cjEwLCAjMTYzODRcbiIKICAgICJcdGNtcCByMCwgcjEwXG4iCiAgICAiXHRiZ2UgIiAiLkwiICJf
b2ZmbGluZWFzbV8xMF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCIgIlxuIgogICAg
Ilx0YWRkIHIxMCwgcjcsIHIwLCBsc2wgIzNcbiIKICAgICJcdGxkciByMiwgW3IxMCwgIzRdXG4i
CiAgICAiXHRsZHIgcjQsIFtyNywgcjAsIGxzbCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJfb2Zm
bGluZWFzbV8xMF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lIiAiXG4iCgogICIuTCIgIl9v
ZmZsaW5lYXNtXzEwX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50IiAiOlxuIgogICAg
Ilx0bGRyIHI0LCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHI0LCBbcjQsICMyNzZdXG4iCiAgICAi
XHRhZGQgcjEwLCByNCwgcjAsIGxzbCAjM1xuIgogICAgIlx0bGRyIHIyLCBbcjEwLCAjNF1cbiIK
ICAgICJcdGxkciByNCwgW3I0LCByMCwgbHNsICMzXVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV8x
MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lIiAiOlxuIgogICAgIlx0bXZuIHIxMCwgIzBc
biIKICAgICJcdGNtcCByMiwgcjEwXG4iCiAgICAiXHRiZXEgIiAiLkwiICJfb2ZmbGluZWFzbV9v
cFRvTnVtYmVySXNJbnQiICJcbiIKICAgICJcdG12biByMTAsICM2XG4iCiAgICAiXHRjbXAgcjIs
IHIxMFxuIgogICAgIlx0YmhzICIgIi5MIiAiX29mZmxpbmVhc21fb3BUb051bWJlclNsb3ciICJc
biIKCiAgIi5MIiAiX29mZmxpbmVhc21fb3BUb051bWJlcklzSW50IiAiOlxuIgogICAgIlx0YWRk
IHIxMCwgcjcsIHIxLCBsc2wgIzNcbiIKICAgICJcdHN0ciByMiwgW3IxMCwgIzRdXG4iCiAgICAi
XHRzdHIgcjQsIFtyNywgcjEsIGxzbCAjM11cbiIKICAgICJcdGFkZHMgcjksICMxMlxuIgogICAg
Ilx0bGRyIHIxMCwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEwXG4iCgogICIuTCIgIl9v
ZmZsaW5lYXNtX29wVG9OdW1iZXJTbG93IiAiOlxuIgogICAgIlx0bW92IHIwLCByN1xuIgogICAg
Ilx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgInNsb3dfcGF0aF90b19udW1iZXIiICJcbiIK
ICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJcdGFkZHMgcjksICMxMlxuIgogICAgIlx0bGRyIHIx
MCwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEwXG4iCgoiLkwiICJsbGludF9vcF9uZWdh
dGUiICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyOSwgIzhdXG4iCiAgICAiXHRsZHIgcjQsIFtyOSwg
IzRdXG4iCiAgICAiXHRtb3Z3IHIxMCwgIzBcbiIKICAgICJcdG1vdnQgcjEwLCAjMTYzODRcbiIK
ICAgICJcdGNtcCByMCwgcjEwXG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV8xMV9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCIgIlxuIgogICAgIlx0YWRkIHIxMCwgcjcs
IHIwLCBsc2wgIzNcbiIKICAgICJcdGxkciByMSwgW3IxMCwgIzRdXG4iCiAgICAiXHRsZHIgcjIs
IFtyNywgcjAsIGxzbCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV8xMV9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzExX2xv
YWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIyLCBbcjcs
ICM4XVxuIgogICAgIlx0bGRyIHIyLCBbcjIsICMyNzZdXG4iCiAgICAiXHRhZGQgcjEwLCByMiwg
cjAsIGxzbCAjM1xuIgogICAgIlx0bGRyIHIxLCBbcjEwLCAjNF1cbiIKICAgICJcdGxkciByMiwg
W3IyLCByMCwgbHNsICMzXVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV8xMV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlX19kb25lIiAiOlxuIgogICAgIlx0bXZuIHIxMCwgIzBcbiIKICAgICJcdGNtcCBy
MSwgcjEwXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9vcE5lZ2F0ZVNyY05vdElu
dCIgIlxuIgogICAgIlx0bW92dyByMTAsICM2NTUzNVxuIgogICAgIlx0bW92dCByMTAsICMzMjc2
N1xuIgogICAgIlx0dHN0IHIyLCByMTBcbiIKICAgICJcdGJlcSAiICIuTCIgIl9vZmZsaW5lYXNt
X29wTmVnYXRlU2xvdyIgIlxuIgogICAgIlx0cnNicyByMiwgcjIsICMwXG4iCiAgICAiXHRhZGQg
cjEwLCByNywgcjQsIGxzbCAjM1xuIgogICAgIlx0bXZuIHI2LCAjMFxuIgogICAgIlx0c3RyIHI2
LCBbcjEwLCAjNF1cbiIKICAgICJcdHN0ciByMiwgW3I3LCByNCwgbHNsICMzXVxuIgogICAgIlx0
YWRkcyByOSwgIzEyXG4iCiAgICAiXHRsZHIgcjEwLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBj
LCByMTBcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fb3BOZWdhdGVTcmNOb3RJbnQiICI6XG4iCiAg
ICAiXHRtdm4gcjEwLCAjNlxuIgogICAgIlx0Y21wIHIxLCByMTBcbiIKICAgICJcdGJoaSAiICIu
TCIgIl9vZmZsaW5lYXNtX29wTmVnYXRlU2xvdyIgIlxuIgogICAgIlx0bW92dyByMTAsICMwXG4i
CiAgICAiXHRtb3Z0IHIxMCwgIzMyNzY4XG4iCiAgICAiXHRlb3JzIHIxLCByMTBcbiIKICAgICJc
dGFkZCByMTAsIHI3LCByNCwgbHNsICMzXG4iCiAgICAiXHRzdHIgcjEsIFtyMTAsICM0XVxuIgog
ICAgIlx0c3RyIHIyLCBbcjcsIHI0LCBsc2wgIzNdXG4iCiAgICAiXHRhZGRzIHI5LCAjMTJcbiIK
ICAgICJcdGxkciByMTAsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMFxuIgoKICAiLkwi
ICJfb2ZmbGluZWFzbV9vcE5lZ2F0ZVNsb3ciICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAg
ICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAic2xvd19wYXRoX25lZ2F0ZSIgIlxuIgog
ICAgIlx0bW92IHI5LCByMFxuIgogICAgIlx0YWRkcyByOSwgIzEyXG4iCiAgICAiXHRsZHIgcjEw
LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTBcbiIKCiIuTCIgImxsaW50X29wX2FkZCIg
IjpcbiIKICAgICJcdGxkciByMiwgW3I5LCAjMTJdXG4iCiAgICAiXHRsZHIgcjAsIFtyOSwgIzhd
XG4iCiAgICAiXHRtb3Z3IHIxMCwgIzBcbiIKICAgICJcdG1vdnQgcjEwLCAjMTYzODRcbiIKICAg
ICJcdGNtcCByMiwgcjEwXG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9iaW5hcnlP
cF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTJfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3Rh
bnQiICJcbiIKICAgICJcdGFkZCByMTAsIHI3LCByMiwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjQs
IFtyMTAsICM0XVxuIgogICAgIlx0bGRyIHIxLCBbcjcsIHIyLCBsc2wgIzNdXG4iCiAgICAiXHRi
ICIgIi5MIiAiX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzEyX2xv
YWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fYmlu
YXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzEyX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Nv
bnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIxLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIxLCBb
cjEsICMyNzZdXG4iCiAgICAiXHRhZGQgcjEwLCByMSwgcjIsIGxzbCAjM1xuIgogICAgIlx0bGRy
IHI0LCBbcjEwLCAjNF1cbiIKICAgICJcdGxkciByMSwgW3IxLCByMiwgbHNsICMzXVxuIgoKICAi
LkwiICJfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTJfbG9hZENv
bnN0YW50T3JWYXJpYWJsZV9fZG9uZSIgIjpcbiIKICAgICJcdG1vdncgcjEwLCAjMFxuIgogICAg
Ilx0bW92dCByMTAsICMxNjM4NFxuIgogICAgIlx0Y21wIHIwLCByMTBcbiIKICAgICJcdGJnZSAi
ICIuTCIgIl9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX18xMl9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByMTAsIHI3
LCByMCwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjIsIFtyMTAsICM0XVxuIgogICAgIlx0bGRyIHIw
LCBbcjcsIHIwLCBsc2wgIzNdXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fYmluYXJ5
T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzEyX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19k
b25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0
b3JlX18xMl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQiICI6XG4iCiAgICAi
XHRsZHIgcjIsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjIsIFtyMiwgIzI3Nl1cbiIKICAgICJc
dGxzbHMgcjAsIHIwLCAjM1xuIgogICAgIlx0YWRkIHIyLCByMFxuIgogICAgIlx0bGRyIHIwLCBb
cjIsICMwXVxuIgogICAgIlx0bGRyIHIyLCBbcjIsICM0XVxuIgoKICAiLkwiICJfb2ZmbGluZWFz
bV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTJfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWdfX2RvbmUiICI6XG4iCiAgICAiXHRtdm4gcjEwLCAjMFxuIgogICAgIlx0Y21wIHIyLCBy
MTBcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1
c3RvbVN0b3JlX19vcDFOb3RJbnQiICJcbiIKICAgICJcdG12biByMTAsICMwXG4iCiAgICAiXHRj
bXAgcjQsIHIxMFxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fYmluYXJ5T3BfX2Jp
bmFyeU9wQ3VzdG9tU3RvcmVfX29wMk5vdEludCIgIlxuIgogICAgIlx0bGRyIHIyLCBbcjksICM0
XVxuIgogICAgIlx0YWRkcyByMCwgcjFcbiIKICAgICJcdGJ2cyAiICIuTCIgIl9vZmZsaW5lYXNt
X2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93IiAiXG4iCiAgICAiXHRhZGQgcjEw
LCByNywgcjIsIGxzbCAjM1xuIgogICAgIlx0c3RyIHI0LCBbcjEwLCAjNF1cbiIKICAgICJcdHN0
ciByMCwgW3I3LCByMiwgbHNsICMzXVxuIgogICAgIlx0YWRkcyByOSwgIzIwXG4iCiAgICAiXHRs
ZHIgcjEwLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTBcbiIKCiAgIi5MIiAiX29mZmxp
bmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdEludCIgIjpcbiIKICAg
ICJcdG12biByMTAsICM2XG4iCiAgICAiXHRjbXAgcjIsIHIxMFxuIgogICAgIlx0YmhpICIgIi5M
IiAiX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX3Nsb3ciICJcbiIK
ICAgICJcdG12biByMTAsICM2XG4iCiAgICAiXHRjbXAgcjQsIHIxMFxuIgogICAgIlx0YmxvICIg
Ii5MIiAiX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdElu
dE9wMkRvdWJsZSIgIlxuIgogICAgIlx0bXZuIHIxMCwgIzBcbiIKICAgICJcdGNtcCByNCwgcjEw
XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0
b21TdG9yZV9fc2xvdyIgIlxuIgogICAgIlx0dm1vdiBzMiwgcjFcbiIKICAgICJcdHZjdnQuZjY0
LnMzMiBkMSwgczJcbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmlu
YXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50UmVhZHkiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVh
c21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdEludE9wMkRvdWJsZSIgIjpc
biIKICAgICJcdHZtb3YgZDEsIHIxLCByNFxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9iaW5hcnlP
cF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50UmVhZHkiICI6XG4iCiAgICAiXHRsZHIg
cjEsIFtyOSwgIzRdXG4iCiAgICAiXHR2bW92IGQwLCByMCwgcjJcbiIKICAgICJcdHZhZGQuZjY0
IGQwLCBkMCwgZDFcbiIKICAgICJcdGFkZCByMTAsIHI3LCByMSwgbHNsICMzXG4iCiAgICAiXHR2
c3RyLjY0IGQwLCBbcjEwLCAjMF1cbiIKICAgICJcdGFkZHMgcjksICMyMFxuIgogICAgIlx0bGRy
IHIxMCwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEwXG4iCgogICIuTCIgIl9vZmZsaW5l
YXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDJOb3RJbnQiICI6XG4iCiAgICAi
XHRsZHIgcjIsIFtyOSwgIzRdXG4iCiAgICAiXHRtdm4gcjEwLCAjNlxuIgogICAgIlx0Y21wIHI0
LCByMTBcbiIKICAgICJcdGJoaSAiICIuTCIgIl9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlP
cEN1c3RvbVN0b3JlX19zbG93IiAiXG4iCiAgICAiXHR2bW92IHMwLCByMFxuIgogICAgIlx0dmN2
dC5mNjQuczMyIGQwLCBzMFxuIgogICAgIlx0dm1vdiBkMSwgcjEsIHI0XG4iCiAgICAiXHR2YWRk
LmY2NCBkMCwgZDAsIGQxXG4iCiAgICAiXHRhZGQgcjEwLCByNywgcjIsIGxzbCAjM1xuIgogICAg
Ilx0dnN0ci42NCBkMCwgW3IxMCwgIzBdXG4iCiAgICAiXHRhZGRzIHI5LCAjMjBcbiIKICAgICJc
dGxkciByMTAsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMFxuIgoKICAiLkwiICJfb2Zm
bGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdyIgIjpcbiIKICAgICJc
dG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJzbG93X3Bh
dGhfYWRkIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCiAgICAiXHRhZGRzIHI5LCAjMjBcbiIK
ICAgICJcdGxkciByMTAsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMFxuIgoKIi5MIiAi
bGxpbnRfb3BfbXVsIiAiOlxuIgogICAgIlx0bGRyIHIyLCBbcjksICMxMl1cbiIKICAgICJcdGxk
ciByMCwgW3I5LCAjOF1cbiIKICAgICJcdG1vdncgcjEwLCAjMFxuIgogICAgIlx0bW92dCByMTAs
ICMxNjM4NFxuIgogICAgIlx0Y21wIHIyLCByMTBcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZs
aW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzEzX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Nv
bnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjEwLCByNywgcjIsIGxzbCAjM1xuIgogICAgIlx0bGRy
IHI0LCBbcjEwLCAjNF1cbiIKICAgICJcdGxkciByMSwgW3I3LCByMiwgbHNsICMzXVxuIgogICAg
Ilx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzEzX2xvYWRDb25z
dGFudE9yVmFyaWFibGVfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fYmluYXJ5T3BD
dXN0b21TdG9yZV9fMTNfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQiICI6XG4iCiAg
ICAiXHRsZHIgcjEsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgIzI3Nl1cbiIKICAg
ICJcdGFkZCByMTAsIHIxLCByMiwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjQsIFtyMTAsICM0XVxu
IgogICAgIlx0bGRyIHIxLCBbcjEsIHIyLCBsc2wgIzNdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNt
X2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzEzX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUiICI6
XG4iCiAgICAiXHRtb3Z3IHIxMCwgIzBcbiIKICAgICJcdG1vdnQgcjEwLCAjMTYzODRcbiIKICAg
ICJcdGNtcCByMCwgcjEwXG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9iaW5hcnlP
cEN1c3RvbVN0b3JlX18xM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQiICJc
biIKICAgICJcdGFkZCByMTAsIHI3LCByMCwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjIsIFtyMTAs
ICM0XVxuIgogICAgIlx0bGRyIHIwLCBbcjcsIHIwLCBsc2wgIzNdXG4iCiAgICAiXHRiICIgIi5M
IiAiX29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTNfbG9hZENvbnN0YW50T3JWYXJp
YWJsZTJSZWdfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21T
dG9yZV9fMTNfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50IiAiOlxuIgogICAg
Ilx0bGRyIHIyLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIyLCBbcjIsICMyNzZdXG4iCiAgICAi
XHRsc2xzIHIwLCByMCwgIzNcbiIKICAgICJcdGFkZCByMiwgcjBcbiIKICAgICJcdGxkciByMCwg
W3IyLCAjMF1cbiIKICAgICJcdGxkciByMiwgW3IyLCAjNF1cbiIKCiAgIi5MIiAiX29mZmxpbmVh
c21fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTNfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2Rv
bmUiICI6XG4iCiAgICAiXHRtdm4gcjEwLCAjMFxuIgogICAgIlx0Y21wIHIyLCByMTBcbiIKICAg
ICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtXzEzX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5v
dEludCIgIlxuIgogICAgIlx0bXZuIHIxMCwgIzBcbiIKICAgICJcdGNtcCByNCwgcjEwXG4iCiAg
ICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV8xM19iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDJO
b3RJbnQiICJcbiIKICAgICJcdGxkciByMiwgW3I5LCAjNF1cbiIKICAgICJcdG1vdiByNCwgcjBc
biIKICAgICJcdHNtdWxsIHI0LCByMTAsIHIxLCByNFxuIgogICAgIlx0YXNycyByNiwgcjQsICMz
MVxuIgogICAgIlx0Y21wIHIxMCwgcjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNt
XzEzX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX3Nsb3ciICJcbiIKICAgICJcdHRzdCByNCwgcjRcbiIK
ICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX2ludGVn
ZXJPcGVyYXRpb25BbmRTdG9yZV9fZG9uZSIgIlxuIgogICAgIlx0Y21wIHIxLCAjMFxuIgogICAg
Ilx0Ymx0ICIgIi5MIiAiX29mZmxpbmVhc21fMTNfYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdyIg
IlxuIgogICAgIlx0Y21wIHIwLCAjMFxuIgogICAgIlx0Ymx0ICIgIi5MIiAiX29mZmxpbmVhc21f
MTNfYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdyIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9i
aW5hcnlPcEN1c3RvbVN0b3JlX19pbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmVfX2RvbmUiICI6XG4i
CiAgICAiXHRhZGQgcjYsIHI3LCByMiwgbHNsICMzXG4iCiAgICAiXHRtdm4gcjEwLCAjMFxuIgog
ICAgIlx0c3RyIHIxMCwgW3I2LCAjNF1cbiIKICAgICJcdHN0ciByNCwgW3I3LCByMiwgbHNsICMz
XVxuIgogICAgIlx0YWRkcyByOSwgIzIwXG4iCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAg
ICAiXHRtb3YgcGMsIHI2XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzEzX2JpbmFyeU9wQ3VzdG9t
U3RvcmVfX29wMU5vdEludCIgIjpcbiIKICAgICJcdG12biByNiwgIzZcbiIKICAgICJcdGNtcCBy
MiwgcjZcbiIKICAgICJcdGJoaSAiICIuTCIgIl9vZmZsaW5lYXNtXzEzX2JpbmFyeU9wQ3VzdG9t
U3RvcmVfX3Nsb3ciICJcbiIKICAgICJcdG12biByNiwgIzZcbiIKICAgICJcdGNtcCByNCwgcjZc
biIKICAgICJcdGJsbyAiICIuTCIgIl9vZmZsaW5lYXNtXzEzX2JpbmFyeU9wQ3VzdG9tU3RvcmVf
X29wMU5vdEludE9wMkRvdWJsZSIgIlxuIgogICAgIlx0bXZuIHI2LCAjMFxuIgogICAgIlx0Y21w
IHI0LCByNlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fMTNfYmluYXJ5T3BDdXN0
b21TdG9yZV9fc2xvdyIgIlxuIgogICAgIlx0dm1vdiBzMiwgcjFcbiIKICAgICJcdHZjdnQuZjY0
LnMzMiBkMSwgczJcbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV8xM19iaW5hcnlPcEN1
c3RvbVN0b3JlX19vcDFOb3RJbnRSZWFkeSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV8xM19i
aW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnRPcDJEb3VibGUiICI6XG4iCiAgICAiXHR2bW92
IGQxLCByMSwgcjRcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fMTNfYmluYXJ5T3BDdXN0b21TdG9y
ZV9fb3AxTm90SW50UmVhZHkiICI6XG4iCiAgICAiXHRsZHIgcjEsIFtyOSwgIzRdXG4iCiAgICAi
XHR2bW92IGQwLCByMCwgcjJcbiIKICAgICJcdHZtdWwuZjY0IGQwLCBkMCwgZDFcbiIKICAgICJc
dGFkZCByNiwgcjcsIHIxLCBsc2wgIzNcbiIKICAgICJcdHZzdHIuNjQgZDAsIFtyNiwgIzBdXG4i
CiAgICAiXHRhZGRzIHI5LCAjMjBcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJc
dG1vdiBwYywgcjZcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fMTNfYmluYXJ5T3BDdXN0b21TdG9y
ZV9fb3AyTm90SW50IiAiOlxuIgogICAgIlx0bGRyIHIyLCBbcjksICM0XVxuIgogICAgIlx0bXZu
IHI2LCAjNlxuIgogICAgIlx0Y21wIHI0LCByNlxuIgogICAgIlx0YmhpICIgIi5MIiAiX29mZmxp
bmVhc21fMTNfYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdyIgIlxuIgogICAgIlx0dm1vdiBzMCwg
cjBcbiIKICAgICJcdHZjdnQuZjY0LnMzMiBkMCwgczBcbiIKICAgICJcdHZtb3YgZDEsIHIxLCBy
NFxuIgogICAgIlx0dm11bC5mNjQgZDAsIGQwLCBkMVxuIgogICAgIlx0YWRkIHI2LCByNywgcjIs
IGxzbCAjM1xuIgogICAgIlx0dnN0ci42NCBkMCwgW3I2LCAjMF1cbiIKICAgICJcdGFkZHMgcjks
ICMyMFxuIgogICAgIlx0bGRyIHI2LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxuIgoK
ICAiLkwiICJfb2ZmbGluZWFzbV8xM19iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93IiAiOlxuIgog
ICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgInNs
b3dfcGF0aF9tdWwiICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJcdGFkZHMgcjksICMy
MFxuIgogICAgIlx0bGRyIHI2LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxuIgoKIi5M
IiAibGxpbnRfb3Bfc3ViIiAiOlxuIgogICAgIlx0bGRyIHIyLCBbcjksICMxMl1cbiIKICAgICJc
dGxkciByMCwgW3I5LCAjOF1cbiIKICAgICJcdG1vdncgcjYsICMwXG4iCiAgICAiXHRtb3Z0IHI2
LCAjMTYzODRcbiIKICAgICJcdGNtcCByMiwgcjZcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZs
aW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX18xNF9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlX19jb25zdGFudCIgIlxuIgogICAgIlx0YWRkIHI2LCByNywgcjIsIGxzbCAjM1xuIgog
ICAgIlx0bGRyIHI0LCBbcjYsICM0XVxuIgogICAgIlx0bGRyIHIxLCBbcjcsIHIyLCBsc2wgIzNd
XG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9t
U3RvcmVfXzE0X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29m
ZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzE0X2xvYWRDb25zdGFudE9y
VmFyaWFibGVfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIxLCBbcjcsICM4XVxuIgogICAg
Ilx0bGRyIHIxLCBbcjEsICMyNzZdXG4iCiAgICAiXHRhZGQgcjYsIHIxLCByMiwgbHNsICMzXG4i
CiAgICAiXHRsZHIgcjQsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgcjIsIGxzbCAj
M11cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVf
XzE0X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUiICI6XG4iCiAgICAiXHRtb3Z3IHI2LCAj
MFxuIgogICAgIlx0bW92dCByNiwgIzE2Mzg0XG4iCiAgICAiXHRjbXAgcjAsIHI2XG4iCiAgICAi
XHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9f
MTRfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQg
cjYsIHI3LCByMCwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjIsIFtyNiwgIzRdXG4iCiAgICAiXHRs
ZHIgcjAsIFtyNywgcjAsIGxzbCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9i
aW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTRfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJS
ZWdfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3Vz
dG9tU3RvcmVfXzE0X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCIgIjpcbiIK
ICAgICJcdGxkciByMiwgW3I3LCAjOF1cbiIKICAgICJcdGxkciByMiwgW3IyLCAjMjc2XVxuIgog
ICAgIlx0bHNscyByMCwgcjAsICMzXG4iCiAgICAiXHRhZGQgcjIsIHIwXG4iCiAgICAiXHRsZHIg
cjAsIFtyMiwgIzBdXG4iCiAgICAiXHRsZHIgcjIsIFtyMiwgIzRdXG4iCgogICIuTCIgIl9vZmZs
aW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX18xNF9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZ19fZG9uZSIgIjpcbiIKICAgICJcdG12biByNiwgIzBcbiIKICAgICJcdGNtcCBy
MiwgcjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX2JpbmFyeU9wX18xNF9iaW5h
cnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnQiICJcbiIKICAgICJcdG12biByNiwgIzBcbiIKICAg
ICJcdGNtcCByNCwgcjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX2JpbmFyeU9w
X18xNF9iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDJOb3RJbnQiICJcbiIKICAgICJcdGxkciByMiwg
W3I5LCAjNF1cbiIKICAgICJcdHN1YnMgcjAsIHIxXG4iCiAgICAiXHRidnMgIiAiLkwiICJfb2Zm
bGluZWFzbV9iaW5hcnlPcF9fMTRfYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdyIgIlxuIgogICAg
Ilx0YWRkIHI2LCByNywgcjIsIGxzbCAjM1xuIgogICAgIlx0c3RyIHI0LCBbcjYsICM0XVxuIgog
ICAgIlx0c3RyIHIwLCBbcjcsIHIyLCBsc2wgIzNdXG4iCiAgICAiXHRhZGRzIHI5LCAjMjBcbiIK
ICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIKCiAgIi5MIiAi
X29mZmxpbmVhc21fYmluYXJ5T3BfXzE0X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdEludCIg
IjpcbiIKICAgICJcdG12biByNiwgIzZcbiIKICAgICJcdGNtcCByMiwgcjZcbiIKICAgICJcdGJo
aSAiICIuTCIgIl9vZmZsaW5lYXNtX2JpbmFyeU9wX18xNF9iaW5hcnlPcEN1c3RvbVN0b3JlX19z
bG93IiAiXG4iCiAgICAiXHRtdm4gcjYsICM2XG4iCiAgICAiXHRjbXAgcjQsIHI2XG4iCiAgICAi
XHRibG8gIiAiLkwiICJfb2ZmbGluZWFzbV9iaW5hcnlPcF9fMTRfYmluYXJ5T3BDdXN0b21TdG9y
ZV9fb3AxTm90SW50T3AyRG91YmxlIiAiXG4iCiAgICAiXHRtdm4gcjYsICMwXG4iCiAgICAiXHRj
bXAgcjQsIHI2XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9iaW5hcnlPcF9fMTRf
YmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdyIgIlxuIgogICAgIlx0dm1vdiBzMiwgcjFcbiIKICAg
ICJcdHZjdnQuZjY0LnMzMiBkMSwgczJcbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9i
aW5hcnlPcF9fMTRfYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50UmVhZHkiICJcbiIKCiAg
Ii5MIiAiX29mZmxpbmVhc21fYmluYXJ5T3BfXzE0X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5v
dEludE9wMkRvdWJsZSIgIjpcbiIKICAgICJcdHZtb3YgZDEsIHIxLCByNFxuIgoKICAiLkwiICJf
b2ZmbGluZWFzbV9iaW5hcnlPcF9fMTRfYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50UmVh
ZHkiICI6XG4iCiAgICAiXHRsZHIgcjEsIFtyOSwgIzRdXG4iCiAgICAiXHR2bW92IGQwLCByMCwg
cjJcbiIKICAgICJcdHZzdWIuZjY0IGQwLCBkMCwgZDFcbiIKICAgICJcdGFkZCByNiwgcjcsIHIx
LCBsc2wgIzNcbiIKICAgICJcdHZzdHIuNjQgZDAsIFtyNiwgIzBdXG4iCiAgICAiXHRhZGRzIHI5
LCAjMjBcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIK
CiAgIi5MIiAiX29mZmxpbmVhc21fYmluYXJ5T3BfXzE0X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29w
Mk5vdEludCIgIjpcbiIKICAgICJcdGxkciByMiwgW3I5LCAjNF1cbiIKICAgICJcdG12biByNiwg
IzZcbiIKICAgICJcdGNtcCByNCwgcjZcbiIKICAgICJcdGJoaSAiICIuTCIgIl9vZmZsaW5lYXNt
X2JpbmFyeU9wX18xNF9iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93IiAiXG4iCiAgICAiXHR2bW92
IHMwLCByMFxuIgogICAgIlx0dmN2dC5mNjQuczMyIGQwLCBzMFxuIgogICAgIlx0dm1vdiBkMSwg
cjEsIHI0XG4iCiAgICAiXHR2c3ViLmY2NCBkMCwgZDAsIGQxXG4iCiAgICAiXHRhZGQgcjYsIHI3
LCByMiwgbHNsICMzXG4iCiAgICAiXHR2c3RyLjY0IGQwLCBbcjYsICMwXVxuIgogICAgIlx0YWRk
cyByOSwgIzIwXG4iCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2
XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2JpbmFyeU9wX18xNF9iaW5hcnlPcEN1c3RvbVN0b3Jl
X19zbG93IiAiOlxuIgogICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByOVxuIgog
ICAgIlx0Ymx4ICIgInNsb3dfcGF0aF9zdWIiICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIKICAg
ICJcdGFkZHMgcjksICMyMFxuIgogICAgIlx0bGRyIHI2LCBbcjksICMwXVxuIgogICAgIlx0bW92
IHBjLCByNlxuIgoKIi5MIiAibGxpbnRfb3BfZGl2IiAiOlxuIgogICAgIlx0bGRyIHIyLCBbcjks
ICMxMl1cbiIKICAgICJcdGxkciByMCwgW3I5LCAjOF1cbiIKICAgICJcdG1vdncgcjYsICMwXG4i
CiAgICAiXHRtb3Z0IHI2LCAjMTYzODRcbiIKICAgICJcdGNtcCByMiwgcjZcbiIKICAgICJcdGJn
ZSAiICIuTCIgIl9vZmZsaW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzE1X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjYsIHI3LCByMiwgbHNsICMz
XG4iCiAgICAiXHRsZHIgcjQsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIgcjEsIFtyNywgcjIsIGxz
bCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9iaW5hcnlPcEN1c3RvbVN0b3Jl
X18xNV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5l
YXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzE1X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0
YW50IiAiOlxuIgogICAgIlx0bGRyIHIxLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIxLCBbcjEs
ICMyNzZdXG4iCiAgICAiXHRhZGQgcjYsIHIxLCByMiwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjQs
IFtyNiwgIzRdXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgcjIsIGxzbCAjM11cbiIKCiAgIi5MIiAi
X29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTVfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZV9fZG9uZSIgIjpcbiIKICAgICJcdG1vdncgcjYsICMwXG4iCiAgICAiXHRtb3Z0IHI2LCAjMTYz
ODRcbiIKICAgICJcdGNtcCByMCwgcjZcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNt
X2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzE1X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25z
dGFudCIgIlxuIgogICAgIlx0YWRkIHI2LCByNywgcjAsIGxzbCAjM1xuIgogICAgIlx0bGRyIHIy
LCBbcjYsICM0XVxuIgogICAgIlx0bGRyIHIwLCBbcjcsIHIwLCBsc2wgIzNdXG4iCiAgICAiXHRi
ICIgIi5MIiAiX29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTVfbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWdfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fYmluYXJ5T3BD
dXN0b21TdG9yZV9fMTVfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50IiAiOlxu
IgogICAgIlx0bGRyIHIyLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIyLCBbcjIsICMyNzZdXG4i
CiAgICAiXHRsc2xzIHIwLCByMCwgIzNcbiIKICAgICJcdGFkZCByMiwgcjBcbiIKICAgICJcdGxk
ciByMCwgW3IyLCAjMF1cbiIKICAgICJcdGxkciByMiwgW3IyLCAjNF1cbiIKCiAgIi5MIiAiX29m
ZmxpbmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTVfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJS
ZWdfX2RvbmUiICI6XG4iCiAgICAiXHRtdm4gcjYsICMwXG4iCiAgICAiXHRjbXAgcjIsIHI2XG4i
CiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV8xNV9iaW5hcnlPcEN1c3RvbVN0b3JlX19v
cDFOb3RJbnQiICJcbiIKICAgICJcdG12biByNiwgIzBcbiIKICAgICJcdGNtcCByNCwgcjZcbiIK
ICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtXzE1X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29w
Mk5vdEludCIgIlxuIgogICAgIlx0bGRyIHIyLCBbcjksICM0XVxuIgogICAgIlx0dm1vdiBzMCwg
cjFcbiIKICAgICJcdHZjdnQuZjY0LnMzMiBkMCwgczBcbiIKICAgICJcdHZtb3YgczIsIHIwXG4i
CiAgICAiXHR2Y3Z0LmY2NC5zMzIgZDEsIHMyXG4iCiAgICAiXHR2ZGl2LmY2NCBkMSwgZDEsIGQw
XG4iCiAgICAiXHR2Y3Z0LnMzMi5mNjQgczEyLCBkMVxuIgogICAgIlx0dm1vdiByMCwgczEyXG4i
CiAgICAiXHR2Y3Z0LmY2NC5zMzIgZDYsIHMxMlxuIgogICAgIlx0dmNtcGUuZjY0IGQ2LCBkMVxu
IgogICAgIlx0dm1ycyBhcHNyX256Y3YsIGZwc2NyXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2Zm
bGluZWFzbV9iaW5hcnlPcEN1c3RvbVN0b3JlX19pbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmVfX25v
dEludCIgIlxuIgogICAgIlx0dHN0IHIwLCByMFxuIgogICAgIlx0YmVxICIgIi5MIiAiX29mZmxp
bmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9faW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlX19ub3RJ
bnQiICJcbiIKICAgICJcdGFkZCByNiwgcjcsIHIyLCBsc2wgIzNcbiIKICAgICJcdHN0ciByNCwg
W3I2LCAjNF1cbiIKICAgICJcdHN0ciByMCwgW3I3LCByMiwgbHNsICMzXVxuIgogICAgIlx0YiAi
ICIuTCIgIl9vZmZsaW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzE1X2ludGVnZXJPcGVyYXRp
b25BbmRTdG9yZV9fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9iaW5hcnlPcEN1c3Rv
bVN0b3JlX19pbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmVfX25vdEludCIgIjpcbiIKICAgICJcdGFk
ZCByNiwgcjcsIHIyLCBsc2wgIzNcbiIKICAgICJcdHZzdHIuNjQgZDEsIFtyNiwgIzBdXG4iCgog
ICIuTCIgIl9vZmZsaW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzE1X2ludGVnZXJPcGVyYXRp
b25BbmRTdG9yZV9fZG9uZSIgIjpcbiIKICAgICJcdGFkZHMgcjksICMyMFxuIgogICAgIlx0bGRy
IHI2LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxuIgoKICAiLkwiICJfb2ZmbGluZWFz
bV8xNV9iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnQiICI6XG4iCiAgICAiXHRtdm4gcjYs
ICM2XG4iCiAgICAiXHRjbXAgcjIsIHI2XG4iCiAgICAiXHRiaGkgIiAiLkwiICJfb2ZmbGluZWFz
bV8xNV9iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93IiAiXG4iCiAgICAiXHRtdm4gcjYsICM2XG4i
CiAgICAiXHRjbXAgcjQsIHI2XG4iCiAgICAiXHRibG8gIiAiLkwiICJfb2ZmbGluZWFzbV8xNV9i
aW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnRPcDJEb3VibGUiICJcbiIKICAgICJcdG12biBy
NiwgIzBcbiIKICAgICJcdGNtcCByNCwgcjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5l
YXNtXzE1X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX3Nsb3ciICJcbiIKICAgICJcdHZtb3YgczIsIHIx
XG4iCiAgICAiXHR2Y3Z0LmY2NC5zMzIgZDEsIHMyXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxp
bmVhc21fMTVfYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50UmVhZHkiICJcbiIKCiAgIi5M
IiAiX29mZmxpbmVhc21fMTVfYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50T3AyRG91Ymxl
IiAiOlxuIgogICAgIlx0dm1vdiBkMSwgcjEsIHI0XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzE1
X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdEludFJlYWR5IiAiOlxuIgogICAgIlx0bGRyIHIx
LCBbcjksICM0XVxuIgogICAgIlx0dm1vdiBkMCwgcjAsIHIyXG4iCiAgICAiXHR2ZGl2LmY2NCBk
MCwgZDAsIGQxXG4iCiAgICAiXHRhZGQgcjYsIHI3LCByMSwgbHNsICMzXG4iCiAgICAiXHR2c3Ry
LjY0IGQwLCBbcjYsICMwXVxuIgogICAgIlx0YWRkcyByOSwgIzIwXG4iCiAgICAiXHRsZHIgcjYs
IFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzE1
X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMk5vdEludCIgIjpcbiIKICAgICJcdGxkciByMiwgW3I5
LCAjNF1cbiIKICAgICJcdG12biByNiwgIzZcbiIKICAgICJcdGNtcCByNCwgcjZcbiIKICAgICJc
dGJoaSAiICIuTCIgIl9vZmZsaW5lYXNtXzE1X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX3Nsb3ciICJc
biIKICAgICJcdHZtb3YgczAsIHIwXG4iCiAgICAiXHR2Y3Z0LmY2NC5zMzIgZDAsIHMwXG4iCiAg
ICAiXHR2bW92IGQxLCByMSwgcjRcbiIKICAgICJcdHZkaXYuZjY0IGQwLCBkMCwgZDFcbiIKICAg
ICJcdGFkZCByNiwgcjcsIHIyLCBsc2wgIzNcbiIKICAgICJcdHZzdHIuNjQgZDAsIFtyNiwgIzBd
XG4iCiAgICAiXHRhZGRzIHI5LCAjMjBcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAg
ICJcdG1vdiBwYywgcjZcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fMTVfYmluYXJ5T3BDdXN0b21T
dG9yZV9fc2xvdyIgIjpcbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlc
biIKICAgICJcdGJseCAiICJzbG93X3BhdGhfZGl2IiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4i
CiAgICAiXHRhZGRzIHI5LCAjMjBcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJc
dG1vdiBwYywgcjZcbiIKCiIuTCIgImxsaW50X29wX2xzaGlmdCIgIjpcbiIKICAgICJcdGxkciBy
MiwgW3I5LCAjMTJdXG4iCiAgICAiXHRsZHIgcjAsIFtyOSwgIzhdXG4iCiAgICAiXHRtb3Z3IHI2
LCAjMFxuIgogICAgIlx0bW92dCByNiwgIzE2Mzg0XG4iCiAgICAiXHRjbXAgcjIsIHI2XG4iCiAg
ICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9iaXRPcF9fMTZfbG9hZENvbnN0YW50T3JWYXJp
YWJsZV9fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByNiwgcjcsIHIyLCBsc2wgIzNcbiIKICAg
ICJcdGxkciByNCwgW3I2LCAjNF1cbiIKICAgICJcdGxkciByMSwgW3I3LCByMiwgbHNsICMzXVxu
IgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX2JpdE9wX18xNl9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2JpdE9wX18xNl9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19jb25zdGFudCIgIjpcbiIKICAgICJcdGxkciByMSwgW3I3LCAjOF1c
biIKICAgICJcdGxkciByMSwgW3IxLCAjMjc2XVxuIgogICAgIlx0YWRkIHI2LCByMSwgcjIsIGxz
bCAjM1xuIgogICAgIlx0bGRyIHI0LCBbcjYsICM0XVxuIgogICAgIlx0bGRyIHIxLCBbcjEsIHIy
LCBsc2wgIzNdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2JpdE9wX18xNl9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlX19kb25lIiAiOlxuIgogICAgIlx0bW92dyByNiwgIzBcbiIKICAgICJcdG1vdnQg
cjYsICMxNjM4NFxuIgogICAgIlx0Y21wIHIwLCByNlxuIgogICAgIlx0YmdlICIgIi5MIiAiX29m
ZmxpbmVhc21fYml0T3BfXzE2X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCIg
IlxuIgogICAgIlx0YWRkIHI2LCByNywgcjAsIGxzbCAjM1xuIgogICAgIlx0bGRyIHIyLCBbcjYs
ICM0XVxuIgogICAgIlx0bGRyIHIwLCBbcjcsIHIwLCBsc2wgIzNdXG4iCiAgICAiXHRiICIgIi5M
IiAiX29mZmxpbmVhc21fYml0T3BfXzE2X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25l
IiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2JpdE9wX18xNl9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZ19fY29uc3RhbnQiICI6XG4iCiAgICAiXHRsZHIgcjIsIFtyNywgIzhdXG4iCiAgICAi
XHRsZHIgcjIsIFtyMiwgIzI3Nl1cbiIKICAgICJcdGxzbHMgcjAsIHIwLCAjM1xuIgogICAgIlx0
YWRkIHIyLCByMFxuIgogICAgIlx0bGRyIHIwLCBbcjIsICMwXVxuIgogICAgIlx0bGRyIHIyLCBb
cjIsICM0XVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9iaXRPcF9fMTZfbG9hZENvbnN0YW50T3JW
YXJpYWJsZTJSZWdfX2RvbmUiICI6XG4iCiAgICAiXHRtdm4gcjYsICMwXG4iCiAgICAiXHRjbXAg
cjQsIHI2XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9iaXRPcF9fc2xvdyIgIlxu
IgogICAgIlx0bXZuIHI2LCAjMFxuIgogICAgIlx0Y21wIHIyLCByNlxuIgogICAgIlx0Ym5lICIg
Ii5MIiAiX29mZmxpbmVhc21fYml0T3BfX3Nsb3ciICJcbiIKICAgICJcdGxkciByMiwgW3I5LCAj
NF1cbiIKICAgICJcdGFuZCByNiwgcjEsICMzMVxuIgogICAgIlx0bHNscyByMCwgcjZcbiIKICAg
ICJcdGFkZCByNiwgcjcsIHIyLCBsc2wgIzNcbiIKICAgICJcdHN0ciByNCwgW3I2LCAjNF1cbiIK
ICAgICJcdHN0ciByMCwgW3I3LCByMiwgbHNsICMzXVxuIgogICAgIlx0YWRkcyByOSwgIzE2XG4i
CiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgogICIuTCIg
Il9vZmZsaW5lYXNtX2JpdE9wX19zbG93IiAiOlxuIgogICAgIlx0bW92IHIwLCByN1xuIgogICAg
Ilx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgInNsb3dfcGF0aF9sc2hpZnQiICJcbiIKICAg
ICJcdG1vdiByOSwgcjBcbiIKICAgICJcdGFkZHMgcjksICMxNlxuIgogICAgIlx0bGRyIHI2LCBb
cjksICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxuIgoKIi5MIiAibGxpbnRfb3BfcnNoaWZ0IiAi
OlxuIgogICAgIlx0bGRyIHIyLCBbcjksICMxMl1cbiIKICAgICJcdGxkciByMCwgW3I5LCAjOF1c
biIKICAgICJcdG1vdncgcjYsICMwXG4iCiAgICAiXHRtb3Z0IHI2LCAjMTYzODRcbiIKICAgICJc
dGNtcCByMiwgcjZcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtX2JpdE9wX18xN19s
b2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCIgIlxuIgogICAgIlx0YWRkIHI2LCByNywg
cjIsIGxzbCAjM1xuIgogICAgIlx0bGRyIHI0LCBbcjYsICM0XVxuIgogICAgIlx0bGRyIHIxLCBb
cjcsIHIyLCBsc2wgIzNdXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fYml0T3BfXzE3
X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21f
Yml0T3BfXzE3X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0
bGRyIHIxLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIxLCBbcjEsICMyNzZdXG4iCiAgICAiXHRh
ZGQgcjYsIHIxLCByMiwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjQsIFtyNiwgIzRdXG4iCiAgICAi
XHRsZHIgcjEsIFtyMSwgcjIsIGxzbCAjM11cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fYml0T3Bf
XzE3X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUiICI6XG4iCiAgICAiXHRtb3Z3IHI2LCAj
MFxuIgogICAgIlx0bW92dCByNiwgIzE2Mzg0XG4iCiAgICAiXHRjbXAgcjAsIHI2XG4iCiAgICAi
XHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9iaXRPcF9fMTdfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWdfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjYsIHI3LCByMCwgbHNsICMzXG4iCiAg
ICAiXHRsZHIgcjIsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIgcjAsIFtyNywgcjAsIGxzbCAjM11c
biIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9iaXRPcF9fMTdfbG9hZENvbnN0YW50T3JW
YXJpYWJsZTJSZWdfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fYml0T3BfXzE3X2xv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCIgIjpcbiIKICAgICJcdGxkciByMiwg
W3I3LCAjOF1cbiIKICAgICJcdGxkciByMiwgW3IyLCAjMjc2XVxuIgogICAgIlx0bHNscyByMCwg
cjAsICMzXG4iCiAgICAiXHRhZGQgcjIsIHIwXG4iCiAgICAiXHRsZHIgcjAsIFtyMiwgIzBdXG4i
CiAgICAiXHRsZHIgcjIsIFtyMiwgIzRdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2JpdE9wX18x
N19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSIgIjpcbiIKICAgICJcdG12biByNiwg
IzBcbiIKICAgICJcdGNtcCByNCwgcjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNt
XzE3X2JpdE9wX19zbG93IiAiXG4iCiAgICAiXHRtdm4gcjYsICMwXG4iCiAgICAiXHRjbXAgcjIs
IHI2XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV8xN19iaXRPcF9fc2xvdyIgIlxu
IgogICAgIlx0bGRyIHIyLCBbcjksICM0XVxuIgogICAgIlx0YW5kIHI2LCByMSwgIzMxXG4iCiAg
ICAiXHRhc3JzIHIwLCByNlxuIgogICAgIlx0YWRkIHI2LCByNywgcjIsIGxzbCAjM1xuIgogICAg
Ilx0c3RyIHI0LCBbcjYsICM0XVxuIgogICAgIlx0c3RyIHIwLCBbcjcsIHIyLCBsc2wgIzNdXG4i
CiAgICAiXHRhZGRzIHI5LCAjMTZcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJc
dG1vdiBwYywgcjZcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fMTdfYml0T3BfX3Nsb3ciICI6XG4i
CiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAi
c2xvd19wYXRoX3JzaGlmdCIgIlxuIgogICAgIlx0bW92IHI5LCByMFxuIgogICAgIlx0YWRkcyBy
OSwgIzE2XG4iCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4i
CgoiLkwiICJsbGludF9vcF91cnNoaWZ0IiAiOlxuIgogICAgIlx0bGRyIHIyLCBbcjksICMxMl1c
biIKICAgICJcdGxkciByMCwgW3I5LCAjOF1cbiIKICAgICJcdG1vdncgcjYsICMwXG4iCiAgICAi
XHRtb3Z0IHI2LCAjMTYzODRcbiIKICAgICJcdGNtcCByMiwgcjZcbiIKICAgICJcdGJnZSAiICIu
TCIgIl9vZmZsaW5lYXNtX2JpdE9wX18xOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFu
dCIgIlxuIgogICAgIlx0YWRkIHI2LCByNywgcjIsIGxzbCAjM1xuIgogICAgIlx0bGRyIHI0LCBb
cjYsICM0XVxuIgogICAgIlx0bGRyIHIxLCBbcjcsIHIyLCBsc2wgIzNdXG4iCiAgICAiXHRiICIg
Ii5MIiAiX29mZmxpbmVhc21fYml0T3BfXzE4X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUi
ICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fYml0T3BfXzE4X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIxLCBbcjcsICM4XVxuIgogICAgIlx0bGRy
IHIxLCBbcjEsICMyNzZdXG4iCiAgICAiXHRhZGQgcjYsIHIxLCByMiwgbHNsICMzXG4iCiAgICAi
XHRsZHIgcjQsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgcjIsIGxzbCAjM11cbiIK
CiAgIi5MIiAiX29mZmxpbmVhc21fYml0T3BfXzE4X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Rv
bmUiICI6XG4iCiAgICAiXHRtb3Z3IHI2LCAjMFxuIgogICAgIlx0bW92dCByNiwgIzE2Mzg0XG4i
CiAgICAiXHRjbXAgcjAsIHI2XG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9iaXRP
cF9fMThfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRh
ZGQgcjYsIHI3LCByMCwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjIsIFtyNiwgIzRdXG4iCiAgICAi
XHRsZHIgcjAsIFtyNywgcjAsIGxzbCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFz
bV9iaXRPcF9fMThfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUiICJcbiIKCiAgIi5M
IiAiX29mZmxpbmVhc21fYml0T3BfXzE4X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25z
dGFudCIgIjpcbiIKICAgICJcdGxkciByMiwgW3I3LCAjOF1cbiIKICAgICJcdGxkciByMiwgW3Iy
LCAjMjc2XVxuIgogICAgIlx0bHNscyByMCwgcjAsICMzXG4iCiAgICAiXHRhZGQgcjIsIHIwXG4i
CiAgICAiXHRsZHIgcjAsIFtyMiwgIzBdXG4iCiAgICAiXHRsZHIgcjIsIFtyMiwgIzRdXG4iCgog
ICIuTCIgIl9vZmZsaW5lYXNtX2JpdE9wX18xOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19f
ZG9uZSIgIjpcbiIKICAgICJcdG12biByNiwgIzBcbiIKICAgICJcdGNtcCByNCwgcjZcbiIKICAg
ICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtXzE4X2JpdE9wX19zbG93IiAiXG4iCiAgICAiXHRt
dm4gcjYsICMwXG4iCiAgICAiXHRjbXAgcjIsIHI2XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2Zm
bGluZWFzbV8xOF9iaXRPcF9fc2xvdyIgIlxuIgogICAgIlx0bGRyIHIyLCBbcjksICM0XVxuIgog
ICAgIlx0YW5kIHI2LCByMSwgIzMxXG4iCiAgICAiXHRsc3JzIHIwLCByNlxuIgogICAgIlx0YWRk
IHI2LCByNywgcjIsIGxzbCAjM1xuIgogICAgIlx0c3RyIHI0LCBbcjYsICM0XVxuIgogICAgIlx0
c3RyIHIwLCBbcjcsIHIyLCBsc2wgIzNdXG4iCiAgICAiXHRhZGRzIHI5LCAjMTZcbiIKICAgICJc
dGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIKCiAgIi5MIiAiX29mZmxp
bmVhc21fMThfYml0T3BfX3Nsb3ciICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRt
b3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAic2xvd19wYXRoX3Vyc2hpZnQiICJcbiIKICAgICJc
dG1vdiByOSwgcjBcbiIKICAgICJcdGFkZHMgcjksICMxNlxuIgogICAgIlx0bGRyIHI2LCBbcjks
ICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxuIgoKIi5MIiAibGxpbnRfb3BfdW5zaWduZWQiICI6
XG4iCiAgICAiXHRsZHIgcjAsIFtyOSwgIzRdXG4iCiAgICAiXHRsZHIgcjEsIFtyOSwgIzhdXG4i
CiAgICAiXHRtb3Z3IHI2LCAjMFxuIgogICAgIlx0bW92dCByNiwgIzE2Mzg0XG4iCiAgICAiXHRj
bXAgcjEsIHI2XG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21f
X2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjYsIHI3LCByMSwgbHNsICMzXG4iCiAgICAiXHRt
dm4gcjEwLCAjMFxuIgogICAgIlx0bGRyIHIxMiwgW3I2LCAjNF1cbiIKICAgICJcdGNtcCByMTIs
IHIxMFxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fb3BVbnNpZ25lZFNsb3ciICJc
biIKICAgICJcdGxkciByMiwgW3I3LCByMSwgbHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9v
ZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX19sb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRUYWdDdXN0b21fX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIyLCBbcjcsICM4XVxuIgog
ICAgIlx0bGRyIHIyLCBbcjIsICMyNzZdXG4iCiAgICAiXHRhZGQgcjEwLCByMiwgcjEsIGxzbCAj
M1xuIgogICAgIlx0bXZuIHIxMiwgIzBcbiIKICAgICJcdGxkciByNiwgW3IxMCwgIzRdXG4iCiAg
ICAiXHRjbXAgcjYsIHIxMlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fb3BVbnNp
Z25lZFNsb3ciICJcbiIKICAgICJcdGxkciByMiwgW3IyLCByMSwgbHNsICMzXVxuIgoKICAiLkwi
ICJfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUiICI6XG4iCiAgICAiXHRjbXAgcjIsICMw
XG4iCiAgICAiXHRibHQgIiAiLkwiICJfb2ZmbGluZWFzbV9vcFVuc2lnbmVkU2xvdyIgIlxuIgog
ICAgIlx0c3RyIHIyLCBbcjcsIHIwLCBsc2wgIzNdXG4iCiAgICAiXHRhZGQgcjEyLCByNywgcjAs
IGxzbCAjM1xuIgogICAgIlx0bXZuIHI2LCAjMFxuIgogICAgIlx0c3RyIHI2LCBbcjEyLCAjNF1c
biIKICAgICJcdGFkZHMgcjksICMxMlxuIgogICAgIlx0bGRyIHIxMiwgW3I5LCAjMF1cbiIKICAg
ICJcdG1vdiBwYywgcjEyXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX29wVW5zaWduZWRTbG93IiAi
OlxuIgogICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4
ICIgInNsb3dfcGF0aF91bnNpZ25lZCIgIlxuIgogICAgIlx0bW92IHI5LCByMFxuIgogICAgIlx0
YWRkcyByOSwgIzEyXG4iCiAgICAiXHRsZHIgcjEyLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBj
LCByMTJcbiIKCiIuTCIgImxsaW50X29wX2JpdGFuZCIgIjpcbiIKICAgICJcdGxkciByMiwgW3I5
LCAjMTJdXG4iCiAgICAiXHRsZHIgcjAsIFtyOSwgIzhdXG4iCiAgICAiXHRtb3Z3IHIxMiwgIzBc
biIKICAgICJcdG1vdnQgcjEyLCAjMTYzODRcbiIKICAgICJcdGNtcCByMiwgcjEyXG4iCiAgICAi
XHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9iaXRPcF9fMTlfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZV9fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByMTIsIHI3LCByMiwgbHNsICMzXG4iCiAgICAi
XHRsZHIgcjQsIFtyMTIsICM0XVxuIgogICAgIlx0bGRyIHIxLCBbcjcsIHIyLCBsc2wgIzNdXG4i
CiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fYml0T3BfXzE5X2xvYWRDb25zdGFudE9yVmFy
aWFibGVfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fYml0T3BfXzE5X2xvYWRDb25z
dGFudE9yVmFyaWFibGVfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIxLCBbcjcsICM4XVxu
IgogICAgIlx0bGRyIHIxLCBbcjEsICMyNzZdXG4iCiAgICAiXHRhZGQgcjEyLCByMSwgcjIsIGxz
bCAjM1xuIgogICAgIlx0bGRyIHI0LCBbcjEyLCAjNF1cbiIKICAgICJcdGxkciByMSwgW3IxLCBy
MiwgbHNsICMzXVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9iaXRPcF9fMTlfbG9hZENvbnN0YW50
T3JWYXJpYWJsZV9fZG9uZSIgIjpcbiIKICAgICJcdG1vdncgcjEyLCAjMFxuIgogICAgIlx0bW92
dCByMTIsICMxNjM4NFxuIgogICAgIlx0Y21wIHIwLCByMTJcbiIKICAgICJcdGJnZSAiICIuTCIg
Il9vZmZsaW5lYXNtX2JpdE9wX18xOV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3Rh
bnQiICJcbiIKICAgICJcdGFkZCByMTIsIHI3LCByMCwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjIs
IFtyMTIsICM0XVxuIgogICAgIlx0bGRyIHIwLCBbcjcsIHIwLCBsc2wgIzNdXG4iCiAgICAiXHRi
ICIgIi5MIiAiX29mZmxpbmVhc21fYml0T3BfXzE5X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVn
X19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2JpdE9wX18xOV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZ19fY29uc3RhbnQiICI6XG4iCiAgICAiXHRsZHIgcjIsIFtyNywgIzhdXG4i
CiAgICAiXHRsZHIgcjIsIFtyMiwgIzI3Nl1cbiIKICAgICJcdGxzbHMgcjAsIHIwLCAjM1xuIgog
ICAgIlx0YWRkIHIyLCByMFxuIgogICAgIlx0bGRyIHIwLCBbcjIsICMwXVxuIgogICAgIlx0bGRy
IHIyLCBbcjIsICM0XVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9iaXRPcF9fMTlfbG9hZENvbnN0
YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUiICI6XG4iCiAgICAiXHRtdm4gcjEyLCAjMFxuIgogICAg
Ilx0Y21wIHI0LCByMTJcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtXzE5X2JpdE9w
X19zbG93IiAiXG4iCiAgICAiXHRtdm4gcjEyLCAjMFxuIgogICAgIlx0Y21wIHIyLCByMTJcbiIK
ICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtXzE5X2JpdE9wX19zbG93IiAiXG4iCiAgICAi
XHRsZHIgcjIsIFtyOSwgIzRdXG4iCiAgICAiXHRhbmRzIHIwLCByMVxuIgogICAgIlx0YWRkIHIx
MiwgcjcsIHIyLCBsc2wgIzNcbiIKICAgICJcdHN0ciByNCwgW3IxMiwgIzRdXG4iCiAgICAiXHRz
dHIgcjAsIFtyNywgcjIsIGxzbCAjM11cbiIKICAgICJcdGFkZHMgcjksICMyMFxuIgogICAgIlx0
bGRyIHIxMiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEyXG4iCgogICIuTCIgIl9vZmZs
aW5lYXNtXzE5X2JpdE9wX19zbG93IiAiOlxuIgogICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0
bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgInNsb3dfcGF0aF9iaXRhbmQiICJcbiIKICAgICJc
dG1vdiByOSwgcjBcbiIKICAgICJcdGFkZHMgcjksICMyMFxuIgogICAgIlx0bGRyIHIxMiwgW3I5
LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEyXG4iCgoiLkwiICJsbGludF9vcF9iaXR4b3IiICI6
XG4iCiAgICAiXHRsZHIgcjIsIFtyOSwgIzEyXVxuIgogICAgIlx0bGRyIHIwLCBbcjksICM4XVxu
IgogICAgIlx0bW92dyByMTIsICMwXG4iCiAgICAiXHRtb3Z0IHIxMiwgIzE2Mzg0XG4iCiAgICAi
XHRjbXAgcjIsIHIxMlxuIgogICAgIlx0YmdlICIgIi5MIiAiX29mZmxpbmVhc21fYml0T3BfXzIw
X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjEyLCBy
NywgcjIsIGxzbCAjM1xuIgogICAgIlx0bGRyIHI0LCBbcjEyLCAjNF1cbiIKICAgICJcdGxkciBy
MSwgW3I3LCByMiwgbHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX2JpdE9w
X18yMF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5l
YXNtX2JpdE9wX18yMF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCIgIjpcbiIKICAg
ICJcdGxkciByMSwgW3I3LCAjOF1cbiIKICAgICJcdGxkciByMSwgW3IxLCAjMjc2XVxuIgogICAg
Ilx0YWRkIHIxMiwgcjEsIHIyLCBsc2wgIzNcbiIKICAgICJcdGxkciByNCwgW3IxMiwgIzRdXG4i
CiAgICAiXHRsZHIgcjEsIFtyMSwgcjIsIGxzbCAjM11cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21f
Yml0T3BfXzIwX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUiICI6XG4iCiAgICAiXHRtb3Z3
IHIxMiwgIzBcbiIKICAgICJcdG1vdnQgcjEyLCAjMTYzODRcbiIKICAgICJcdGNtcCByMCwgcjEy
XG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9iaXRPcF9fMjBfbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjEyLCByNywgcjAsIGxz
bCAjM1xuIgogICAgIlx0bGRyIHIyLCBbcjEyLCAjNF1cbiIKICAgICJcdGxkciByMCwgW3I3LCBy
MCwgbHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX2JpdE9wX18yMF9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9i
aXRPcF9fMjBfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50IiAiOlxuIgogICAg
Ilx0bGRyIHIyLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIyLCBbcjIsICMyNzZdXG4iCiAgICAi
XHRsc2xzIHIwLCByMCwgIzNcbiIKICAgICJcdGFkZCByMiwgcjBcbiIKICAgICJcdGxkciByMCwg
W3IyLCAjMF1cbiIKICAgICJcdGxkciByMiwgW3IyLCAjNF1cbiIKCiAgIi5MIiAiX29mZmxpbmVh
c21fYml0T3BfXzIwX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lIiAiOlxuIgogICAg
Ilx0bXZuIHIxMiwgIzBcbiIKICAgICJcdGNtcCByNCwgcjEyXG4iCiAgICAiXHRibmUgIiAiLkwi
ICJfb2ZmbGluZWFzbV8yMF9iaXRPcF9fc2xvdyIgIlxuIgogICAgIlx0bXZuIHIxMiwgIzBcbiIK
ICAgICJcdGNtcCByMiwgcjEyXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV8yMF9i
aXRPcF9fc2xvdyIgIlxuIgogICAgIlx0bGRyIHIyLCBbcjksICM0XVxuIgogICAgIlx0ZW9ycyBy
MCwgcjFcbiIKICAgICJcdGFkZCByMTIsIHI3LCByMiwgbHNsICMzXG4iCiAgICAiXHRzdHIgcjQs
IFtyMTIsICM0XVxuIgogICAgIlx0c3RyIHIwLCBbcjcsIHIyLCBsc2wgIzNdXG4iCiAgICAiXHRh
ZGRzIHI5LCAjMjBcbiIKICAgICJcdGxkciByMTIsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMs
IHIxMlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV8yMF9iaXRPcF9fc2xvdyIgIjpcbiIKICAgICJc
dG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJzbG93X3Bh
dGhfYml0eG9yIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCiAgICAiXHRhZGRzIHI5LCAjMjBc
biIKICAgICJcdGxkciByMTIsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMlxuIgoKIi5M
IiAibGxpbnRfb3BfYml0b3IiICI6XG4iCiAgICAiXHRsZHIgcjIsIFtyOSwgIzEyXVxuIgogICAg
Ilx0bGRyIHIwLCBbcjksICM4XVxuIgogICAgIlx0bW92dyByMTIsICMwXG4iCiAgICAiXHRtb3Z0
IHIxMiwgIzE2Mzg0XG4iCiAgICAiXHRjbXAgcjIsIHIxMlxuIgogICAgIlx0YmdlICIgIi5MIiAi
X29mZmxpbmVhc21fYml0T3BfXzIxX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50IiAi
XG4iCiAgICAiXHRhZGQgcjEyLCByNywgcjIsIGxzbCAjM1xuIgogICAgIlx0bGRyIHI0LCBbcjEy
LCAjNF1cbiIKICAgICJcdGxkciByMSwgW3I3LCByMiwgbHNsICMzXVxuIgogICAgIlx0YiAiICIu
TCIgIl9vZmZsaW5lYXNtX2JpdE9wX18yMV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lIiAi
XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2JpdE9wX18yMV9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
X19jb25zdGFudCIgIjpcbiIKICAgICJcdGxkciByMSwgW3I3LCAjOF1cbiIKICAgICJcdGxkciBy
MSwgW3IxLCAjMjc2XVxuIgogICAgIlx0YWRkIHIxMiwgcjEsIHIyLCBsc2wgIzNcbiIKICAgICJc
dGxkciByNCwgW3IxMiwgIzRdXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgcjIsIGxzbCAjM11cbiIK
CiAgIi5MIiAiX29mZmxpbmVhc21fYml0T3BfXzIxX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Rv
bmUiICI6XG4iCiAgICAiXHRtb3Z3IHIxMiwgIzBcbiIKICAgICJcdG1vdnQgcjEyLCAjMTYzODRc
biIKICAgICJcdGNtcCByMCwgcjEyXG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9i
aXRPcF9fMjFfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50IiAiXG4iCiAgICAi
XHRhZGQgcjEyLCByNywgcjAsIGxzbCAjM1xuIgogICAgIlx0bGRyIHIyLCBbcjEyLCAjNF1cbiIK
ICAgICJcdGxkciByMCwgW3I3LCByMCwgbHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZs
aW5lYXNtX2JpdE9wX18yMV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSIgIlxuIgoK
ICAiLkwiICJfb2ZmbGluZWFzbV9iaXRPcF9fMjFfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdf
X2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIyLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIy
LCBbcjIsICMyNzZdXG4iCiAgICAiXHRsc2xzIHIwLCByMCwgIzNcbiIKICAgICJcdGFkZCByMiwg
cjBcbiIKICAgICJcdGxkciByMCwgW3IyLCAjMF1cbiIKICAgICJcdGxkciByMiwgW3IyLCAjNF1c
biIKCiAgIi5MIiAiX29mZmxpbmVhc21fYml0T3BfXzIxX2xvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnX19kb25lIiAiOlxuIgogICAgIlx0bXZuIHIxMiwgIzBcbiIKICAgICJcdGNtcCByNCwgcjEy
XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV8yMV9iaXRPcF9fc2xvdyIgIlxuIgog
ICAgIlx0bXZuIHIxMiwgIzBcbiIKICAgICJcdGNtcCByMiwgcjEyXG4iCiAgICAiXHRibmUgIiAi
LkwiICJfb2ZmbGluZWFzbV8yMV9iaXRPcF9fc2xvdyIgIlxuIgogICAgIlx0bGRyIHIyLCBbcjks
ICM0XVxuIgogICAgIlx0b3JycyByMCwgcjFcbiIKICAgICJcdGFkZCByMTIsIHI3LCByMiwgbHNs
ICMzXG4iCiAgICAiXHRzdHIgcjQsIFtyMTIsICM0XVxuIgogICAgIlx0c3RyIHIwLCBbcjcsIHIy
LCBsc2wgIzNdXG4iCiAgICAiXHRhZGRzIHI5LCAjMjBcbiIKICAgICJcdGxkciByMTIsIFtyOSwg
IzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV8yMV9iaXRP
cF9fc2xvdyIgIjpcbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIK
ICAgICJcdGJseCAiICJzbG93X3BhdGhfYml0b3IiICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIK
ICAgICJcdGFkZHMgcjksICMyMFxuIgogICAgIlx0bGRyIHIxMiwgW3I5LCAjMF1cbiIKICAgICJc
dG1vdiBwYywgcjEyXG4iCgoiLkwiICJsbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2UiICI6XG4i
CiAgICAiXHRsZHIgcjEsIFtyOSwgIzEyXVxuIgogICAgIlx0bW92dyByMTIsICMwXG4iCiAgICAi
XHRtb3Z0IHIxMiwgIzE2Mzg0XG4iCiAgICAiXHRjbXAgcjEsIHIxMlxuIgogICAgIlx0YmdlICIg
Ii5MIiAiX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzIxX2xvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCIgIlxuIgogICAgIlx0
YWRkIHIxMiwgcjcsIHIxLCBsc2wgIzNcbiIKICAgICJcdG12biByNiwgIzRcbiIKICAgICJcdGxk
ciByMTAsIFtyMTIsICM0XVxuIgogICAgIlx0Y21wIHIxMCwgcjZcbiIKICAgICJcdGJuZSAiICIu
TCIgIl9vZmZsaW5lYXNtX29wQ2hlY2tIYXNJbnN0YW5jZVNsb3ciICJcbiIKICAgICJcdGxkciBy
MCwgW3I3LCByMSwgbHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX2xvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18yMV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZFRhZ0N1c3RvbV9fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZF9fMjFfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0
b21fX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjcsICM4XVxuIgogICAgIlx0bGRy
IHIwLCBbcjAsICMyNzZdXG4iCiAgICAiXHRhZGQgcjYsIHIwLCByMSwgbHNsICMzXG4iCiAgICAi
XHRtdm4gcjEwLCAjNFxuIgogICAgIlx0bGRyIHIxMiwgW3I2LCAjNF1cbiIKICAgICJcdGNtcCBy
MTIsIHIxMFxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fb3BDaGVja0hhc0luc3Rh
bmNlU2xvdyIgIlxuIgogICAgIlx0bGRyIHIwLCBbcjAsIHIxLCBsc2wgIzNdXG4iCgogICIuTCIg
Il9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18yMV9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSIgIjpcbiIKICAgICJcdGxkcmIgcjEw
LCBbcjAsICM2XVxuIgogICAgIlx0dHN0IHIxMCwgIzhcbiIKICAgICJcdGJlcSAiICIuTCIgIl9v
ZmZsaW5lYXNtX29wQ2hlY2tIYXNJbnN0YW5jZVNsb3ciICJcbiIKICAgICJcdGFkZHMgcjksICMy
MFxuIgogICAgIlx0bGRyIHIxMCwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEwXG4iCgog
ICIuTCIgIl9vZmZsaW5lYXNtX29wQ2hlY2tIYXNJbnN0YW5jZVNsb3ciICI6XG4iCiAgICAiXHRt
b3YgcjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc2xv
d19wYXRoX2NoZWNrX2hhc19pbnN0YW5jZSIgIlxuIgogICAgIlx0bW92IHI5LCByMFxuIgoKCiAg
ICAiXHRsZHIgcjEwLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTBcbiIKCiIuTCIgImxs
aW50X29wX2luc3RhbmNlb2YiICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyOSwgIzEyXVxuIgogICAg
Ilx0bGRyIHI0LCBbcjksICM0XVxuIgogICAgIlx0bW92dyByMTAsICMwXG4iCiAgICAiXHRtb3Z0
IHIxMCwgIzE2Mzg0XG4iCiAgICAiXHRjbXAgcjAsIHIxMFxuIgogICAgIlx0YmdlICIgIi5MIiAi
X29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzIyX2xvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCIgIlxuIgogICAgIlx0YWRkIHIx
MCwgcjcsIHIwLCBsc2wgIzNcbiIKICAgICJcdG12biByMTIsICM0XG4iCiAgICAiXHRsZHIgcjYs
IFtyMTAsICM0XVxuIgogICAgIlx0Y21wIHI2LCByMTJcbiIKICAgICJcdGJuZSAiICIuTCIgIl9v
ZmZsaW5lYXNtX29wSW5zdGFuY2VvZlNsb3ciICJcbiIKICAgICJcdGxkciByMSwgW3I3LCByMCwg
bHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkX18yMl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9f
ZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZF9fMjJfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50
IiAiOlxuIgogICAgIlx0bGRyIHIxLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIxLCBbcjEsICMy
NzZdXG4iCiAgICAiXHRhZGQgcjEyLCByMSwgcjAsIGxzbCAjM1xuIgogICAgIlx0bXZuIHI2LCAj
NFxuIgogICAgIlx0bGRyIHIxMCwgW3IxMiwgIzRdXG4iCiAgICAiXHRjbXAgcjEwLCByNlxuIgog
ICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fb3BJbnN0YW5jZW9mU2xvdyIgIlxuIgogICAg
Ilx0bGRyIHIxLCBbcjEsIHIwLCBsc2wgIzNdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2xvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18yMl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZFRhZ0N1c3RvbV9fZG9uZSIgIjpcbiIKICAgICJcdGxkcmIgcjYsIFtyMSwgIzVdXG4iCiAgICAi
XHRjbXAgcjYsICMxN1xuIgogICAgIlx0YmxvICIgIi5MIiAiX29mZmxpbmVhc21fb3BJbnN0YW5j
ZW9mU2xvdyIgIlxuIgogICAgIlx0bGRyIHIwLCBbcjksICM4XVxuIgogICAgIlx0bW92dyByNiwg
IzBcbiIKICAgICJcdG1vdnQgcjYsICMxNjM4NFxuIgogICAgIlx0Y21wIHIwLCByNlxuIgogICAg
Ilx0YmdlICIgIi5MIiAiX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRf
XzIzX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCIgIlxu
IgogICAgIlx0YWRkIHI2LCByNywgcjAsIGxzbCAjM1xuIgogICAgIlx0bXZuIHIxMCwgIzRcbiIK
ICAgICJcdGxkciByMTIsIFtyNiwgIzRdXG4iCiAgICAiXHRjbXAgcjEyLCByMTBcbiIKICAgICJc
dGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX29wSW5zdGFuY2VvZlNsb3ciICJcbiIKICAgICJcdGxk
ciByMiwgW3I3LCByMCwgbHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX2xv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18yM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZFRhZ0N1c3RvbV9fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZF9fMjNfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdD
dXN0b21fX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIyLCBbcjcsICM4XVxuIgogICAgIlx0
bGRyIHIyLCBbcjIsICMyNzZdXG4iCiAgICAiXHRhZGQgcjEwLCByMiwgcjAsIGxzbCAjM1xuIgog
ICAgIlx0bXZuIHIxMiwgIzRcbiIKICAgICJcdGxkciByNiwgW3IxMCwgIzRdXG4iCiAgICAiXHRj
bXAgcjYsIHIxMlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fb3BJbnN0YW5jZW9m
U2xvdyIgIlxuIgogICAgIlx0bGRyIHIyLCBbcjIsIHIwLCBsc2wgIzNdXG4iCgogICIuTCIgIl9v
ZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18yM19sb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSIgIjpcbiIKICAgICJcdG1vdiByMCwgIzFc
biIKCiAgIi5MIiAiX29mZmxpbmVhc21fb3BJbnN0YW5jZW9mTG9vcCIgIjpcbiIKICAgICJcdGxk
ciByMiwgW3IyLCAjMF1cbiIKICAgICJcdGxkciByMiwgW3IyLCAjMjRdXG4iCiAgICAiXHRjbXAg
cjIsIHIxXG4iCiAgICAiXHRiZXEgIiAiLkwiICJfb2ZmbGluZWFzbV9vcEluc3RhbmNlb2ZEb25l
IiAiXG4iCiAgICAiXHR0c3QgcjIsIHIyXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFz
bV9vcEluc3RhbmNlb2ZMb29wIiAiXG4iCiAgICAiXHRtb3YgcjAsICMwXG4iCgogICIuTCIgIl9v
ZmZsaW5lYXNtX29wSW5zdGFuY2VvZkRvbmUiICI6XG4iCiAgICAiXHRhZGQgcjEyLCByNywgcjQs
IGxzbCAjM1xuIgogICAgIlx0bXZuIHI2LCAjMVxuIgogICAgIlx0c3RyIHI2LCBbcjEyLCAjNF1c
biIKICAgICJcdHN0ciByMCwgW3I3LCByNCwgbHNsICMzXVxuIgogICAgIlx0YWRkcyByOSwgIzE2
XG4iCiAgICAiXHRsZHIgcjEyLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTJcbiIKCiAg
Ii5MIiAiX29mZmxpbmVhc21fb3BJbnN0YW5jZW9mU2xvdyIgIjpcbiIKICAgICJcdG1vdiByMCwg
cjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJsbGludF9zbG93X3BhdGhf
aW5zdGFuY2VvZiIgIlxuIgogICAgIlx0bW92IHI5LCByMFxuIgogICAgIlx0YWRkcyByOSwgIzE2
XG4iCiAgICAiXHRsZHIgcjEyLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTJcbiIKCiIu
TCIgImxsaW50X29wX2lzX3VuZGVmaW5lZCIgIjpcbiIKICAgICJcdGxkciByMSwgW3I5LCAjOF1c
biIKICAgICJcdGxkciByMCwgW3I5LCAjNF1cbiIKICAgICJcdG1vdncgcjEyLCAjMFxuIgogICAg
Ilx0bW92dCByMTIsICMxNjM4NFxuIgogICAgIlx0Y21wIHIxLCByMTJcbiIKICAgICJcdGJnZSAi
ICIuTCIgIl9vZmZsaW5lYXNtXzIzX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50IiAi
XG4iCiAgICAiXHRhZGQgcjEyLCByNywgcjEsIGxzbCAjM1xuIgogICAgIlx0bGRyIHIyLCBbcjEy
LCAjNF1cbiIKICAgICJcdGxkciByNCwgW3I3LCByMSwgbHNsICMzXVxuIgogICAgIlx0YiAiICIu
TCIgIl9vZmZsaW5lYXNtXzIzX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUiICJcbiIKCiAg
Ii5MIiAiX29mZmxpbmVhc21fMjNfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQiICI6
XG4iCiAgICAiXHRsZHIgcjQsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjQsIFtyNCwgIzI3Nl1c
biIKICAgICJcdGFkZCByMTIsIHI0LCByMSwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjIsIFtyMTIs
ICM0XVxuIgogICAgIlx0bGRyIHI0LCBbcjQsIHIxLCBsc2wgIzNdXG4iCgogICIuTCIgIl9vZmZs
aW5lYXNtXzIzX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUiICI6XG4iCiAgICAiXHRhZGQg
cjEyLCByNywgcjAsIGxzbCAjM1xuIgogICAgIlx0bXZuIHI2LCAjMVxuIgogICAgIlx0c3RyIHI2
LCBbcjEyLCAjNF1cbiIKICAgICJcdG12biByMTIsICM0XG4iCiAgICAiXHRjbXAgcjIsIHIxMlxu
IgogICAgIlx0YmVxICIgIi5MIiAiX29mZmxpbmVhc21fb3BJc1VuZGVmaW5lZENlbGwiICJcbiIK
ICAgICJcdG12biByMTIsICMzXG4iCiAgICAiXHRtb3ZzIHI0LCAjMFxuIgogICAgIlx0Y21wIHIy
LCByMTJcbiIKICAgICJcdGl0IGVxXG4iCiAgICAiXHRtb3ZlcSByNCwgIzFcbiIKICAgICJcdHN0
ciByNCwgW3I3LCByMCwgbHNsICMzXVxuIgogICAgIlx0YWRkcyByOSwgIzEyXG4iCiAgICAiXHRs
ZHIgcjEyLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTJcbiIKCiAgIi5MIiAiX29mZmxp
bmVhc21fb3BJc1VuZGVmaW5lZENlbGwiICI6XG4iCiAgICAiXHRsZHJiIHIxMiwgW3I0LCAjNl1c
biIKICAgICJcdHRzdCByMTIsICMxXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9v
cElzVW5kZWZpbmVkTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCIgIlxuIgogICAgIlx0bW92IHIxLCAj
MFxuIgogICAgIlx0c3RyIHIxLCBbcjcsIHIwLCBsc2wgIzNdXG4iCiAgICAiXHRhZGRzIHI5LCAj
MTJcbiIKICAgICJcdGxkciByMTIsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMlxuIgoK
ICAiLkwiICJfb2ZmbGluZWFzbV9vcElzVW5kZWZpbmVkTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCIg
IjpcbiIKICAgICJcdGxkciByMSwgW3I0LCAjMF1cbiIKICAgICJcdGxkciByNCwgW3I3LCAjOF1c
biIKICAgICJcdGxkciByNCwgW3I0LCAjMjBdXG4iCiAgICAiXHRsZHIgcjEyLCBbcjEsICMyMF1c
biIKICAgICJcdG1vdnMgcjEsICMwXG4iCiAgICAiXHRjbXAgcjEyLCByNFxuIgogICAgIlx0aXQg
ZXFcbiIKICAgICJcdG1vdmVxIHIxLCAjMVxuIgogICAgIlx0c3RyIHIxLCBbcjcsIHIwLCBsc2wg
IzNdXG4iCiAgICAiXHRhZGRzIHI5LCAjMTJcbiIKICAgICJcdGxkciByMTIsIFtyOSwgIzBdXG4i
CiAgICAiXHRtb3YgcGMsIHIxMlxuIgoKIi5MIiAibGxpbnRfb3BfaXNfYm9vbGVhbiIgIjpcbiIK
ICAgICJcdGxkciByMSwgW3I5LCAjOF1cbiIKICAgICJcdGxkciByMiwgW3I5LCAjNF1cbiIKICAg
ICJcdG1vdncgcjEyLCAjMFxuIgogICAgIlx0bW92dCByMTIsICMxNjM4NFxuIgogICAgIlx0Y21w
IHIxLCByMTJcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9y
VmFyaWFibGVUYWdfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjEyLCByNywgcjEsIGxzbCAj
M1xuIgogICAgIlx0bGRyIHIwLCBbcjEyLCAjNF1cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGlu
ZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZs
aW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVUYWdfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0
bGRyIHIwLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIwLCBbcjAsICMyNzZdXG4iCiAgICAiXHRh
ZGQgcjEyLCByMCwgcjEsIGxzbCAjM1xuIgogICAgIlx0bGRyIHIwLCBbcjEyLCAjNF1cbiIKCiAg
Ii5MIiAiX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fZG9uZSIgIjpcbiIK
ICAgICJcdG12biByMTIsICMxXG4iCiAgICAiXHRtb3YgcjYsIHIwXG4iCiAgICAiXHRtb3ZzIHIw
LCAjMFxuIgogICAgIlx0Y21wIHI2LCByMTJcbiIKICAgICJcdGl0IGVxXG4iCiAgICAiXHRtb3Zl
cSByMCwgIzFcbiIKICAgICJcdGFkZCByMTIsIHI3LCByMiwgbHNsICMzXG4iCiAgICAiXHRtdm4g
cjYsICMxXG4iCiAgICAiXHRzdHIgcjYsIFtyMTIsICM0XVxuIgogICAgIlx0c3RyIHIwLCBbcjcs
IHIyLCBsc2wgIzNdXG4iCiAgICAiXHRhZGRzIHI5LCAjMTJcbiIKICAgICJcdGxkciByMTIsIFty
OSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMlxuIgoKIi5MIiAibGxpbnRfb3BfaXNfbnVtYmVy
IiAiOlxuIgogICAgIlx0bGRyIHIxLCBbcjksICM4XVxuIgogICAgIlx0bGRyIHIyLCBbcjksICM0
XVxuIgogICAgIlx0bW92dyByMTIsICMwXG4iCiAgICAiXHRtb3Z0IHIxMiwgIzE2Mzg0XG4iCiAg
ICAiXHRjbXAgcjEsIHIxMlxuIgogICAgIlx0YmdlICIgIi5MIiAiX29mZmxpbmVhc21fMjNfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByMTIsIHI3
LCByMSwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjAsIFtyMTIsICM0XVxuIgogICAgIlx0YiAiICIu
TCIgIl9vZmZsaW5lYXNtXzIzX2xvYWRDb25zdGFudE9yVmFyaWFibGVUYWdfX2RvbmUiICJcbiIK
CiAgIi5MIiAiX29mZmxpbmVhc21fMjNfbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fY29uc3Rh
bnQiICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjAsIFtyMCwg
IzI3Nl1cbiIKICAgICJcdGFkZCByMTIsIHIwLCByMSwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjAs
IFtyMTIsICM0XVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV8yM19sb2FkQ29uc3RhbnRPclZhcmlh
YmxlVGFnX19kb25lIiAiOlxuIgogICAgIlx0YWRkIHIxMiwgcjcsIHIyLCBsc2wgIzNcbiIKICAg
ICJcdG12biByNiwgIzFcbiIKICAgICJcdHN0ciByNiwgW3IxMiwgIzRdXG4iCiAgICAiXHRhZGRz
IHIwLCAjMVxuIgogICAgIlx0bXZuIHIxMiwgIzVcbiIKICAgICJcdG1vdnMgcjEsICMwXG4iCiAg
ICAiXHRjbXAgcjAsIHIxMlxuIgogICAgIlx0aXQgbG9cbiIKICAgICJcdG1vdmxvIHIxLCAjMVxu
IgogICAgIlx0c3RyIHIxLCBbcjcsIHIyLCBsc2wgIzNdXG4iCiAgICAiXHRhZGRzIHI5LCAjMTJc
biIKICAgICJcdGxkciByMTIsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMlxuIgoKIi5M
IiAibGxpbnRfb3BfaXNfc3RyaW5nIiAiOlxuIgogICAgIlx0bGRyIHIxLCBbcjksICM4XVxuIgog
ICAgIlx0bGRyIHIyLCBbcjksICM0XVxuIgogICAgIlx0bW92dyByMTIsICMwXG4iCiAgICAiXHRt
b3Z0IHIxMiwgIzE2Mzg0XG4iCiAgICAiXHRjbXAgcjEsIHIxMlxuIgogICAgIlx0YmdlICIgIi5M
IiAiX29mZmxpbmVhc21fMjRfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQiICJcbiIK
ICAgICJcdGFkZCByMTIsIHI3LCByMSwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjAsIFtyMTIsICM0
XVxuIgogICAgIlx0bGRyIHI0LCBbcjcsIHIxLCBsc2wgIzNdXG4iCiAgICAiXHRiICIgIi5MIiAi
X29mZmxpbmVhc21fMjRfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSIgIlxuIgoKICAiLkwi
ICJfb2ZmbGluZWFzbV8yNF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCIgIjpcbiIK
ICAgICJcdGxkciByNCwgW3I3LCAjOF1cbiIKICAgICJcdGxkciByNCwgW3I0LCAjMjc2XVxuIgog
ICAgIlx0YWRkIHIxMiwgcjQsIHIxLCBsc2wgIzNcbiIKICAgICJcdGxkciByMCwgW3IxMiwgIzRd
XG4iCiAgICAiXHRsZHIgcjQsIFtyNCwgcjEsIGxzbCAjM11cbiIKCiAgIi5MIiAiX29mZmxpbmVh
c21fMjRfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSIgIjpcbiIKICAgICJcdGFkZCByMTIs
IHI3LCByMiwgbHNsICMzXG4iCiAgICAiXHRtdm4gcjYsICMxXG4iCiAgICAiXHRzdHIgcjYsIFty
MTIsICM0XVxuIgogICAgIlx0bXZuIHIxMiwgIzRcbiIKICAgICJcdGNtcCByMCwgcjEyXG4iCiAg
ICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9vcElzU3RyaW5nTm90Q2VsbCIgIlxuIgogICAg
Ilx0bGRyYiByMTIsIFtyNCwgIzVdXG4iCiAgICAiXHRtb3ZzIHIxLCAjMFxuIgogICAgIlx0Y21w
IHIxMiwgIzZcbiIKICAgICJcdGl0IGVxXG4iCiAgICAiXHRtb3ZlcSByMSwgIzFcbiIKICAgICJc
dHN0ciByMSwgW3I3LCByMiwgbHNsICMzXVxuIgogICAgIlx0YWRkcyByOSwgIzEyXG4iCiAgICAi
XHRsZHIgcjEyLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTJcbiIKCiAgIi5MIiAiX29m
ZmxpbmVhc21fb3BJc1N0cmluZ05vdENlbGwiICI6XG4iCiAgICAiXHRtb3YgcjEyLCAjMFxuIgog
ICAgIlx0c3RyIHIxMiwgW3I3LCByMiwgbHNsICMzXVxuIgogICAgIlx0YWRkcyByOSwgIzEyXG4i
CiAgICAiXHRsZHIgcjEyLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTJcbiIKCiIuTCIg
ImxsaW50X29wX2luaXRfZ2xvYmFsX2NvbnN0IiAiOlxuIgogICAgIlx0bGRyIHIxLCBbcjksICM4
XVxuIgogICAgIlx0bW92dyByMTIsICMwXG4iCiAgICAiXHRtb3Z0IHIxMiwgIzE2Mzg0XG4iCiAg
ICAiXHRjbXAgcjEsIHIxMlxuIgogICAgIlx0YmdlICIgIi5MIiAiX29mZmxpbmVhc21fd3JpdGVC
YXJyaWVyT25HbG9iYWxPYmplY3RfXzI0X2xvYWRDb25zdGFudE9yVmFyaWFibGVUYWdfX2NvbnN0
YW50IiAiXG4iCiAgICAiXHRhZGQgcjEyLCByNywgcjEsIGxzbCAjM1xuIgogICAgIlx0bGRyIHIw
LCBbcjEyLCAjNF1cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV93cml0ZUJhcnJpZXJP
bkdsb2JhbE9iamVjdF9fMjRfbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fZG9uZSIgIlxuIgoK
ICAiLkwiICJfb2ZmbGluZWFzbV93cml0ZUJhcnJpZXJPbkdsb2JhbE9iamVjdF9fMjRfbG9hZENv
bnN0YW50T3JWYXJpYWJsZVRhZ19fY29uc3RhbnQiICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyNywg
IzhdXG4iCiAgICAiXHRsZHIgcjAsIFtyMCwgIzI3Nl1cbiIKICAgICJcdGFkZCByMTIsIHIwLCBy
MSwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjAsIFtyMTIsICM0XVxuIgoKICAiLkwiICJfb2ZmbGlu
ZWFzbV93cml0ZUJhcnJpZXJPbkdsb2JhbE9iamVjdF9fMjRfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVRhZ19fZG9uZSIgIjpcbiIKICAgICJcdG12biByMTIsICM0XG4iCiAgICAiXHRjbXAgcjAsIHIx
MlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25HbG9iYWxP
YmplY3RfX3dyaXRlQmFycmllckRvbmUiICJcbiIKICAgICJcdGxkciByNCwgW3I3LCAjOF1cbiIK
ICAgICJcdGxkciByNCwgW3I0LCAjMjBdXG4iCiAgICAiXHRsZHJiIHIxLCBbcjQsICM3XVxuIgog
ICAgIlx0dHN0IHIxLCByMVxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fd3JpdGVC
YXJyaWVyT25HbG9iYWxPYmplY3RfX3dyaXRlQmFycmllckRvbmUiICJcbiIKICAgICJcdHB1c2gg
eyByNyB9XG4iCiAgICAiXHRwdXNoIHsgcjkgfVxuIgogICAgIlx0c3VicyBzcCwgc3AsICM4XG4i
CiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHI0XG4iCiAgICAiXHRibHggIiAi
bGxpbnRfd3JpdGVfYmFycmllcl9zbG93IiAiXG4iCiAgICAiXHRhZGRzIHNwLCAjOFxuIgogICAg
Ilx0cG9wIHsgcjkgfVxuIgogICAgIlx0cG9wIHsgcjcgfVxuIgoKICAiLkwiICJfb2ZmbGluZWFz
bV93cml0ZUJhcnJpZXJPbkdsb2JhbE9iamVjdF9fd3JpdGVCYXJyaWVyRG9uZSIgIjpcbiIKICAg
ICJcdGxkciByMSwgW3I5LCAjOF1cbiIKICAgICJcdGxkciByMCwgW3I5LCAjNF1cbiIKICAgICJc
dG1vdncgcjEyLCAjMFxuIgogICAgIlx0bW92dCByMTIsICMxNjM4NFxuIgogICAgIlx0Y21wIHIx
LCByMTJcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtXzI1X2xvYWRDb25zdGFudE9y
VmFyaWFibGVfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjEyLCByNywgcjEsIGxzbCAjM1xu
IgogICAgIlx0bGRyIHIyLCBbcjEyLCAjNF1cbiIKICAgICJcdGxkciByNCwgW3I3LCByMSwgbHNs
ICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtXzI1X2xvYWRDb25zdGFudE9yVmFy
aWFibGVfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fMjVfbG9hZENvbnN0YW50T3JW
YXJpYWJsZV9fY29uc3RhbnQiICI6XG4iCiAgICAiXHRsZHIgcjQsIFtyNywgIzhdXG4iCiAgICAi
XHRsZHIgcjQsIFtyNCwgIzI3Nl1cbiIKICAgICJcdGFkZCByMTIsIHI0LCByMSwgbHNsICMzXG4i
CiAgICAiXHRsZHIgcjIsIFtyMTIsICM0XVxuIgogICAgIlx0bGRyIHI0LCBbcjQsIHIxLCBsc2wg
IzNdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzI1X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Rv
bmUiICI6XG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgIzRdXG4iCiAgICAiXHRzdHIgcjQsIFtyMCwg
IzBdXG4iCiAgICAiXHRhZGRzIHI5LCAjMjBcbiIKICAgICJcdGxkciByMTIsIFtyOSwgIzBdXG4i
CiAgICAiXHRtb3YgcGMsIHIxMlxuIgoKIi5MIiAibGxpbnRfb3BfZ2V0X2J5X2lkIiAiOlxuIgog
ICAgIlx0bGRyIHIwLCBbcjksICM4XVxuIgogICAgIlx0bGRyIHIxLCBbcjksICMxNl1cbiIKICAg
ICJcdG1vdncgcjEyLCAjMFxuIgogICAgIlx0bW92dCByMTIsICMxNjM4NFxuIgogICAgIlx0Y21w
IHIwLCByMTJcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtX2dldEJ5SWRfX2xvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18yNV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZFRhZ0N1c3RvbV9fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByMTIsIHI3LCByMCwgbHNsICMz
XG4iCiAgICAiXHRtdm4gcjYsICM0XG4iCiAgICAiXHRsZHIgcjEwLCBbcjEyLCAjNF1cbiIKICAg
ICJcdGNtcCByMTAsIHI2XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9nZXRCeUlk
X19vcEdldEJ5SWRTbG93IiAiXG4iCiAgICAiXHRsZHIgcjQsIFtyNywgcjAsIGxzbCAjM11cbiIK
ICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9nZXRCeUlkX19sb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZF9fMjVfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2Rv
bmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fZ2V0QnlJZF9fbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWRfXzI1X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19j
b25zdGFudCIgIjpcbiIKICAgICJcdGxkciByNCwgW3I3LCAjOF1cbiIKICAgICJcdGxkciByNCwg
W3I0LCAjMjc2XVxuIgogICAgIlx0YWRkIHI2LCByNCwgcjAsIGxzbCAjM1xuIgogICAgIlx0bXZu
IHIxMCwgIzRcbiIKICAgICJcdGxkciByMTIsIFtyNiwgIzRdXG4iCiAgICAiXHRjbXAgcjEyLCBy
MTBcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX2dldEJ5SWRfX29wR2V0QnlJZFNs
b3ciICJcbiIKICAgICJcdGxkciByNCwgW3I0LCByMCwgbHNsICMzXVxuIgoKICAiLkwiICJfb2Zm
bGluZWFzbV9nZXRCeUlkX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMjVfbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUiICI6XG4iCiAgICAiXHRsZHIg
cjIsIFtyOSwgIzIwXVxuIgogICAgIlx0bGRyIHIxMCwgW3I0LCAjMF1cbiIKICAgICJcdGNtcCBy
MTAsIHIxXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9nZXRCeUlkX19vcEdldEJ5
SWRTbG93IiAiXG4iCiAgICAiXHRsZHIgcjEsIFtyOSwgIzRdXG4iCiAgICAiXHRhZGQgcjEwLCBy
NCwgcjIsIGxzbCAjMFxuIgogICAgIlx0bGRyIHIwLCBbcjEwLCAjNF1cbiIKICAgICJcdGxkciBy
MiwgW3I0LCByMiwgbHNsICMwXVxuIgogICAgIlx0YWRkIHIxMCwgcjcsIHIxLCBsc2wgIzNcbiIK
ICAgICJcdHN0ciByMCwgW3IxMCwgIzRdXG4iCiAgICAiXHRzdHIgcjIsIFtyNywgcjEsIGxzbCAj
M11cbiIKICAgICJcdGxkciByMSwgW3I5LCAjMzJdXG4iCiAgICAiXHRzdHIgcjAsIFtyMSwgIzIw
XVxuIgogICAgIlx0c3RyIHIyLCBbcjEsICMxNl1cbiIKICAgICJcdGFkZHMgcjksICMzNlxuIgog
ICAgIlx0bGRyIHIxMCwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEwXG4iCgogICIuTCIg
Il9vZmZsaW5lYXNtX2dldEJ5SWRfX29wR2V0QnlJZFNsb3ciICI6XG4iCiAgICAiXHRtb3YgcjAs
IHI3XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc2xvd19wYXRo
X2dldF9ieV9pZCIgIlxuIgogICAgIlx0bW92IHI5LCByMFxuIgogICAgIlx0YWRkcyByOSwgIzM2
XG4iCiAgICAiXHRsZHIgcjEwLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTBcbiIKCiIu
TCIgImxsaW50X29wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSIgIjpcbiIKICAgICJcdGxkciByMCwg
W3I5LCAjOF1cbiIKICAgICJcdGxkciByMSwgW3I5LCAjMTZdXG4iCiAgICAiXHRtb3Z3IHIxMCwg
IzBcbiIKICAgICJcdG1vdnQgcjEwLCAjMTYzODRcbiIKICAgICJcdGNtcCByMCwgcjEwXG4iCiAg
ICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9nZXRCeUlkX19sb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZF9fMjZfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2Nv
bnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjEwLCByNywgcjAsIGxzbCAjM1xuIgogICAgIlx0bXZu
IHIxMiwgIzRcbiIKICAgICJcdGxkciByNiwgW3IxMCwgIzRdXG4iCiAgICAiXHRjbXAgcjYsIHIx
MlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fMjZfZ2V0QnlJZF9fb3BHZXRCeUlk
U2xvdyIgIlxuIgogICAgIlx0bGRyIHI0LCBbcjcsIHIwLCBsc2wgIzNdXG4iCiAgICAiXHRiICIg
Ii5MIiAiX29mZmxpbmVhc21fZ2V0QnlJZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRf
XzI2X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lIiAiXG4iCgog
ICIuTCIgIl9vZmZsaW5lYXNtX2dldEJ5SWRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
X18yNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQiICI6
XG4iCiAgICAiXHRsZHIgcjQsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjQsIFtyNCwgIzI3Nl1c
biIKICAgICJcdGFkZCByMTIsIHI0LCByMCwgbHNsICMzXG4iCiAgICAiXHRtdm4gcjYsICM0XG4i
CiAgICAiXHRsZHIgcjEwLCBbcjEyLCAjNF1cbiIKICAgICJcdGNtcCByMTAsIHI2XG4iCiAgICAi
XHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV8yNl9nZXRCeUlkX19vcEdldEJ5SWRTbG93IiAiXG4i
CiAgICAiXHRsZHIgcjQsIFtyNCwgcjAsIGxzbCAjM11cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21f
Z2V0QnlJZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzI2X2xvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lIiAiOlxuIgogICAgIlx0bGRyIHIyLCBbcjks
ICMyMF1cbiIKICAgICJcdGxkciByMCwgW3I0LCAjOF1cbiIKICAgICJcdGxkciByNiwgW3I0LCAj
MF1cbiIKICAgICJcdGNtcCByNiwgcjFcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNt
XzI2X2dldEJ5SWRfX29wR2V0QnlJZFNsb3ciICJcbiIKICAgICJcdGxkciByMSwgW3I5LCAjNF1c
biIKICAgICJcdGFkZCByNiwgcjAsIHIyLCBsc2wgIzBcbiIKICAgICJcdGxkciByNCwgW3I2LCAj
NF1cbiIKICAgICJcdGxkciByMiwgW3IwLCByMiwgbHNsICMwXVxuIgogICAgIlx0YWRkIHI2LCBy
NywgcjEsIGxzbCAjM1xuIgogICAgIlx0c3RyIHI0LCBbcjYsICM0XVxuIgogICAgIlx0c3RyIHIy
LCBbcjcsIHIxLCBsc2wgIzNdXG4iCiAgICAiXHRsZHIgcjEsIFtyOSwgIzMyXVxuIgogICAgIlx0
c3RyIHI0LCBbcjEsICMyMF1cbiIKICAgICJcdHN0ciByMiwgW3IxLCAjMTZdXG4iCiAgICAiXHRh
ZGRzIHI5LCAjMzZcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywg
cjZcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fMjZfZ2V0QnlJZF9fb3BHZXRCeUlkU2xvdyIgIjpc
biIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAi
ICJsbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCiAg
ICAiXHRhZGRzIHI5LCAjMzZcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1v
diBwYywgcjZcbiIKCiIuTCIgImxsaW50X29wX2dldF9hcnJheV9sZW5ndGgiICI6XG4iCiAgICAi
XHRsZHIgcjAsIFtyOSwgIzhdXG4iCiAgICAiXHRsZHIgcjEsIFtyOSwgIzE2XVxuIgogICAgIlx0
bW92dyByNiwgIzBcbiIKICAgICJcdG1vdnQgcjYsICMxNjM4NFxuIgogICAgIlx0Y21wIHIwLCBy
NlxuIgogICAgIlx0YmdlICIgIi5MIiAiX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWRfXzI3X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25z
dGFudCIgIlxuIgogICAgIlx0YWRkIHI2LCByNywgcjAsIGxzbCAjM1xuIgogICAgIlx0bXZuIHIx
MCwgIzRcbiIKICAgICJcdGxkciByMTIsIFtyNiwgIzRdXG4iCiAgICAiXHRjbXAgcjEyLCByMTBc
biIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX29wR2V0QXJyYXlMZW5ndGhTbG93IiAi
XG4iCiAgICAiXHRsZHIgcjQsIFtyNywgcjAsIGxzbCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJf
b2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMjdfbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVh
c21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzI3X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCIgIjpcbiIKICAgICJcdGxkciByNCwgW3I3LCAj
OF1cbiIKICAgICJcdGxkciByNCwgW3I0LCAjMjc2XVxuIgogICAgIlx0YWRkIHIxMCwgcjQsIHIw
LCBsc2wgIzNcbiIKICAgICJcdG12biByMTIsICM0XG4iCiAgICAiXHRsZHIgcjYsIFtyMTAsICM0
XVxuIgogICAgIlx0Y21wIHI2LCByMTJcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNt
X29wR2V0QXJyYXlMZW5ndGhTbG93IiAiXG4iCiAgICAiXHRsZHIgcjQsIFtyNCwgcjAsIGxzbCAj
M11cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRf
XzI3X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lIiAiOlxuIgog
ICAgIlx0bW92IHIyLCByNFxuIgogICAgIlx0bGRyIHIwLCBbcjIsICMwXVxuIgogICAgIlx0c3Ry
IHIwLCBbcjEsICM0XVxuIgogICAgIlx0bGRyYiByMiwgW3IyLCAjNF1cbiIKICAgICJcdHRzdCBy
MiwgIzFcbiIKICAgICJcdGJlcSAiICIuTCIgIl9vZmZsaW5lYXNtX29wR2V0QXJyYXlMZW5ndGhT
bG93IiAiXG4iCiAgICAiXHR0c3QgcjIsICMzMFxuIgogICAgIlx0YmVxICIgIi5MIiAiX29mZmxp
bmVhc21fb3BHZXRBcnJheUxlbmd0aFNsb3ciICJcbiIKICAgICJcdGxkciByMSwgW3I5LCAjNF1c
biIKICAgICJcdGxkciByMCwgW3I0LCAjOF1cbiIKICAgICJcdGxkciByMCwgW3IwLCAjLThdXG4i
CiAgICAiXHRjbXAgcjAsICMwXG4iCiAgICAiXHRibHQgIiAiLkwiICJfb2ZmbGluZWFzbV9vcEdl
dEFycmF5TGVuZ3RoU2xvdyIgIlxuIgogICAgIlx0bGRyIHIyLCBbcjksICMzMl1cbiIKICAgICJc
dG12biByMTIsICMwXG4iCiAgICAiXHRzdHIgcjEyLCBbcjIsICMyMF1cbiIKICAgICJcdHN0ciBy
MCwgW3IyLCAjMTZdXG4iCiAgICAiXHRzdHIgcjAsIFtyNywgcjEsIGxzbCAjM11cbiIKICAgICJc
dGFkZCByMTIsIHI3LCByMSwgbHNsICMzXG4iCiAgICAiXHRtdm4gcjYsICMwXG4iCiAgICAiXHRz
dHIgcjYsIFtyMTIsICM0XVxuIgogICAgIlx0YWRkcyByOSwgIzM2XG4iCiAgICAiXHRsZHIgcjEy
LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21f
b3BHZXRBcnJheUxlbmd0aFNsb3ciICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRt
b3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCIgIlxu
IgogICAgIlx0bW92IHI5LCByMFxuIgogICAgIlx0YWRkcyByOSwgIzM2XG4iCiAgICAiXHRsZHIg
cjEyLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTJcbiIKCiIuTCIgImxsaW50X29wX2dl
dF9hcmd1bWVudHNfbGVuZ3RoIiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjksICM4XVxuIgogICAg
Ilx0bGRyIHIxLCBbcjksICM0XVxuIgogICAgIlx0YWRkIHIxMiwgcjcsIHIwLCBsc2wgIzNcbiIK
ICAgICJcdG12biByNiwgIzVcbiIKICAgICJcdGxkciByMTAsIFtyMTIsICM0XVxuIgogICAgIlx0
Y21wIHIxMCwgcjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX29wR2V0QXJndW1l
bnRzTGVuZ3RoU2xvdyIgIlxuIgogICAgIlx0bGRyIHIyLCBbcjcsICMzMl1cbiIKICAgICJcdHN1
YnMgcjIsIHIyLCAjMVxuIgogICAgIlx0YWRkIHI2LCByNywgcjEsIGxzbCAjM1xuIgogICAgIlx0
bXZuIHIxMCwgIzBcbiIKICAgICJcdHN0ciByMTAsIFtyNiwgIzRdXG4iCiAgICAiXHRzdHIgcjIs
IFtyNywgcjEsIGxzbCAjM11cbiIKICAgICJcdGFkZHMgcjksICMxNlxuIgogICAgIlx0bGRyIHI2
LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9v
cEdldEFyZ3VtZW50c0xlbmd0aFNsb3ciICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAi
XHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc2xvd19wYXRoX2dldF9hcmd1bWVu
dHNfbGVuZ3RoIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCiAgICAiXHRhZGRzIHI5LCAjMTZc
biIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIKCiIuTCIg
ImxsaW50X29wX3B1dF9ieV9pZCIgIjpcbiIKICAgICJcdGxkciByMSwgW3I5LCAjMTJdXG4iCiAg
ICAiXHRtb3Z3IHI2LCAjMFxuIgogICAgIlx0bW92dCByNiwgIzE2Mzg0XG4iCiAgICAiXHRjbXAg
cjEsIHI2XG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkX193cml0ZUJh
cnJpZXJPbk9wZXJhbmRzX18yN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnX19jb25zdGFudCIg
IlxuIgogICAgIlx0YWRkIHI2LCByNywgcjEsIGxzbCAjM1xuIgogICAgIlx0bGRyIHIwLCBbcjYs
ICM0XVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRfX3dyaXRlQmFycmll
ck9uT3BlcmFuZHNfXzI3X2xvYWRDb25zdGFudE9yVmFyaWFibGVUYWdfX2RvbmUiICJcbiIKCiAg
Ii5MIiAiX29mZmxpbmVhc21fcHV0QnlJZF9fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fMjdfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fY29uc3RhbnQiICI6XG4iCiAgICAiXHRsZHIgcjAsIFty
NywgIzhdXG4iCiAgICAiXHRsZHIgcjAsIFtyMCwgIzI3Nl1cbiIKICAgICJcdGFkZCByNiwgcjAs
IHIxLCBsc2wgIzNcbiIKICAgICJcdGxkciByMCwgW3I2LCAjNF1cbiIKCiAgIi5MIiAiX29mZmxp
bmVhc21fcHV0QnlJZF9fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fMjdfbG9hZENvbnN0YW50T3JW
YXJpYWJsZVRhZ19fZG9uZSIgIjpcbiIKICAgICJcdG12biByNiwgIzRcbiIKICAgICJcdGNtcCBy
MCwgcjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRfX3dyaXRlQmFy
cmllck9uT3BlcmFuZHNfX3dyaXRlQmFycmllckRvbmUiICJcbiIKICAgICJcdGxkciByMSwgW3I5
LCAjNF1cbiIKICAgICJcdG1vdncgcjYsICMwXG4iCiAgICAiXHRtb3Z0IHI2LCAjMTYzODRcbiIK
ICAgICJcdGNtcCByMSwgcjZcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5
SWRfX3dyaXRlQmFycmllck9uT3BlcmFuZHNfX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzI4X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
VGFnQ3VzdG9tX19jb25zdGFudCIgIlxuIgogICAgIlx0YWRkIHI2LCByNywgcjEsIGxzbCAjM1xu
IgogICAgIlx0bXZuIHIxMCwgIzRcbiIKICAgICJcdGxkciByMTIsIFtyNiwgIzRdXG4iCiAgICAi
XHRjbXAgcjEyLCByMTBcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRf
X3dyaXRlQmFycmllck9uT3BlcmFuZHNfX3dyaXRlQmFycmllck9uT3BlcmFuZF9fd3JpdGVCYXJy
aWVyRG9uZSIgIlxuIgogICAgIlx0bGRyIHIyLCBbcjcsIHIxLCBsc2wgIzNdXG4iCiAgICAiXHRi
ICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlJZF9fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fd3Jp
dGVCYXJyaWVyT25PcGVyYW5kX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMjhfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUiICJcbiIKCiAgIi5MIiAi
X29mZmxpbmVhc21fcHV0QnlJZF9fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fd3JpdGVCYXJyaWVy
T25PcGVyYW5kX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMjhfbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIy
LCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIyLCBbcjIsICMyNzZdXG4iCiAgICAiXHRhZGQgcjEw
LCByMiwgcjEsIGxzbCAjM1xuIgogICAgIlx0bXZuIHIxMiwgIzRcbiIKICAgICJcdGxkciByNiwg
W3IxMCwgIzRdXG4iCiAgICAiXHRjbXAgcjYsIHIxMlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29m
ZmxpbmVhc21fcHV0QnlJZF9fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fd3JpdGVCYXJyaWVyT25P
cGVyYW5kX193cml0ZUJhcnJpZXJEb25lIiAiXG4iCiAgICAiXHRsZHIgcjIsIFtyMiwgcjEsIGxz
bCAjM11cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlJZF9fd3JpdGVCYXJyaWVyT25PcGVy
YW5kc19fd3JpdGVCYXJyaWVyT25PcGVyYW5kX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZF9fMjhfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUiICI6XG4i
CiAgICAiXHRsZHJiIHIxLCBbcjIsICM3XVxuIgogICAgIlx0dHN0IHIxLCByMVxuIgogICAgIlx0
Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlJZF9fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19f
d3JpdGVCYXJyaWVyT25PcGVyYW5kX193cml0ZUJhcnJpZXJEb25lIiAiXG4iCiAgICAiXHRwdXNo
IHsgcjcgfVxuIgogICAgIlx0cHVzaCB7IHI5IH1cbiIKICAgICJcdHN1YnMgc3AsIHNwLCAjOFxu
IgogICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByMlxuIgogICAgIlx0Ymx4ICIg
ImxsaW50X3dyaXRlX2JhcnJpZXJfc2xvdyIgIlxuIgogICAgIlx0YWRkcyBzcCwgIzhcbiIKICAg
ICJcdHBvcCB7IHI5IH1cbiIKICAgICJcdHBvcCB7IHI3IH1cbiIKCiAgIi5MIiAiX29mZmxpbmVh
c21fcHV0QnlJZF9fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fd3JpdGVCYXJyaWVyT25PcGVyYW5k
X193cml0ZUJhcnJpZXJEb25lIiAiOlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkX193
cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJEb25lIiAiOlxuIgogICAgIlx0bGRy
IHI0LCBbcjksICM0XVxuIgogICAgIlx0bGRyIHIxLCBbcjksICMxNl1cbiIKICAgICJcdG1vdncg
cjEyLCAjMFxuIgogICAgIlx0bW92dCByMTIsICMxNjM4NFxuIgogICAgIlx0Y21wIHI0LCByMTJc
biIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRfX2xvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkX18yOV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3Rv
bV9fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByMTIsIHI3LCByNCwgbHNsICMzXG4iCiAgICAi
XHRtdm4gcjYsICM0XG4iCiAgICAiXHRsZHIgcjEwLCBbcjEyLCAjNF1cbiIKICAgICJcdGNtcCBy
MTAsIHI2XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkX19vcFB1dEJ5
SWRTbG93IiAiXG4iCiAgICAiXHRsZHIgcjAsIFtyNywgcjQsIGxzbCAjM11cbiIKICAgICJcdGIg
IiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZF9fMjlfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUiICJcbiIK
CiAgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlJZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRfXzI5X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCIg
IjpcbiIKICAgICJcdGxkciByMCwgW3I3LCAjOF1cbiIKICAgICJcdGxkciByMCwgW3IwLCAjMjc2
XVxuIgogICAgIlx0YWRkIHI2LCByMCwgcjQsIGxzbCAjM1xuIgogICAgIlx0bXZuIHIxMCwgIzRc
biIKICAgICJcdGxkciByMTIsIFtyNiwgIzRdXG4iCiAgICAiXHRjbXAgcjEyLCByMTBcbiIKICAg
ICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRfX29wUHV0QnlJZFNsb3ciICJcbiIK
ICAgICJcdGxkciByMCwgW3IwLCByNCwgbHNsICMzXVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9w
dXRCeUlkX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMjlfbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUiICI6XG4iCiAgICAiXHRsZHIgcjIsIFtyOSwg
IzEyXVxuIgogICAgIlx0bGRyIHIxMCwgW3IwLCAjMF1cbiIKICAgICJcdGNtcCByMTAsIHIxXG4i
CiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkX19vcFB1dEJ5SWRTbG93IiAi
XG4iCiAgICAiXHRsZHIgcjEsIFtyOSwgIzIwXVxuIgogICAgIlx0bW92dyByMTAsICMwXG4iCiAg
ICAiXHRtb3Z0IHIxMCwgIzE2Mzg0XG4iCiAgICAiXHRjbXAgcjIsIHIxMFxuIgogICAgIlx0Ymdl
ICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlJZF9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51
YXRpb25fXzI5X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCIgIlxuIgogICAg
Ilx0YWRkIHIxMCwgcjcsIHIyLCBsc2wgIzNcbiIKICAgICJcdGxkciByNCwgW3IxMCwgIzRdXG4i
CiAgICAiXHRsZHIgcjIsIFtyNywgcjIsIGxzbCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJfb2Zm
bGluZWFzbV9wdXRCeUlkX19nZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fMjlfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21f
cHV0QnlJZF9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRpb25fXzI5X2xvYWRDb25zdGFu
dE9yVmFyaWFibGUyUmVnX19jb25zdGFudCIgIjpcbiIKICAgICJcdGxkciByNCwgW3I3LCAjOF1c
biIKICAgICJcdGxkciByNCwgW3I0LCAjMjc2XVxuIgogICAgIlx0bHNscyByMiwgcjIsICMzXG4i
CiAgICAiXHRhZGQgcjQsIHIyXG4iCiAgICAiXHRsZHIgcjIsIFtyNCwgIzBdXG4iCiAgICAiXHRs
ZHIgcjQsIFtyNCwgIzRdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRfX2dldFByb3Bl
cnR5U3RvcmFnZV9fY29udGludWF0aW9uX18yOV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19f
ZG9uZSIgIjpcbiIKICAgICJcdGFkZCByMTAsIHIwLCByMSwgbHNsICMwXG4iCiAgICAiXHRzdHIg
cjQsIFtyMTAsICM0XVxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHIxLCBsc2wgIzBdXG4iCiAgICAi
XHRhZGRzIHI5LCAjMzZcbiIKICAgICJcdGxkciByMTAsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3Yg
cGMsIHIxMFxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkX19vcFB1dEJ5SWRTbG93IiAi
OlxuIgogICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4
ICIgImxsaW50X3Nsb3dfcGF0aF9wdXRfYnlfaWQiICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIK
ICAgICJcdGFkZHMgcjksICMzNlxuIgogICAgIlx0bGRyIHIxMCwgW3I5LCAjMF1cbiIKICAgICJc
dG1vdiBwYywgcjEwXG4iCgoiLkwiICJsbGludF9vcF9wdXRfYnlfaWRfb3V0X29mX2xpbmUiICI6
XG4iCiAgICAiXHRsZHIgcjEsIFtyOSwgIzEyXVxuIgogICAgIlx0bW92dyByMTAsICMwXG4iCiAg
ICAiXHRtb3Z0IHIxMCwgIzE2Mzg0XG4iCiAgICAiXHRjbXAgcjEsIHIxMFxuIgogICAgIlx0Ymdl
ICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlJZF9fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fMjlf
bG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByMTAs
IHI3LCByMSwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjAsIFtyMTAsICM0XVxuIgogICAgIlx0YiAi
ICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRfX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzI5X2xv
YWRDb25zdGFudE9yVmFyaWFibGVUYWdfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21f
cHV0QnlJZF9fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fMjlfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVRhZ19fY29uc3RhbnQiICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyNywgIzhdXG4iCiAgICAiXHRs
ZHIgcjAsIFtyMCwgIzI3Nl1cbiIKICAgICJcdGFkZCByMTAsIHIwLCByMSwgbHNsICMzXG4iCiAg
ICAiXHRsZHIgcjAsIFtyMTAsICM0XVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkX193
cml0ZUJhcnJpZXJPbk9wZXJhbmRzX18yOV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnX19kb25l
IiAiOlxuIgogICAgIlx0bXZuIHIxMCwgIzRcbiIKICAgICJcdGNtcCByMCwgcjEwXG4iCiAgICAi
XHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkX18zMF93cml0ZUJhcnJpZXJPbk9wZXJh
bmRzX193cml0ZUJhcnJpZXJEb25lIiAiXG4iCiAgICAiXHRsZHIgcjEsIFtyOSwgIzRdXG4iCiAg
ICAiXHRtb3Z3IHIxMCwgIzBcbiIKICAgICJcdG1vdnQgcjEwLCAjMTYzODRcbiIKICAgICJcdGNt
cCByMSwgcjEwXG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkX193cml0
ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkX18zMF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3Rv
bV9fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByMTAsIHI3LCByMSwgbHNsICMzXG4iCiAgICAi
XHRtdm4gcjEyLCAjNFxuIgogICAgIlx0bGRyIHI2LCBbcjEwLCAjNF1cbiIKICAgICJcdGNtcCBy
NiwgcjEyXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkX193cml0ZUJh
cnJpZXJPbk9wZXJhbmRzX18zMF93cml0ZUJhcnJpZXJPbk9wZXJhbmRfX3dyaXRlQmFycmllckRv
bmUiICJcbiIKICAgICJcdGxkciByMiwgW3I3LCByMSwgbHNsICMzXVxuIgogICAgIlx0YiAiICIu
TCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRfX3dyaXRlQmFycmllck9uT3BlcmFuZHNfX3dyaXRlQmFy
cmllck9uT3BlcmFuZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzMwX2xvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZs
aW5lYXNtX3B1dEJ5SWRfX3dyaXRlQmFycmllck9uT3BlcmFuZHNfX3dyaXRlQmFycmllck9uT3Bl
cmFuZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzMwX2xvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCIgIjpcbiIKICAgICJcdGxkciByMiwgW3I3
LCAjOF1cbiIKICAgICJcdGxkciByMiwgW3IyLCAjMjc2XVxuIgogICAgIlx0YWRkIHIxMiwgcjIs
IHIxLCBsc2wgIzNcbiIKICAgICJcdG12biByNiwgIzRcbiIKICAgICJcdGxkciByMTAsIFtyMTIs
ICM0XVxuIgogICAgIlx0Y21wIHIxMCwgcjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5l
YXNtX3B1dEJ5SWRfX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzMwX3dyaXRlQmFycmllck9uT3Bl
cmFuZF9fd3JpdGVCYXJyaWVyRG9uZSIgIlxuIgogICAgIlx0bGRyIHIyLCBbcjIsIHIxLCBsc2wg
IzNdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRfX3dyaXRlQmFycmllck9uT3BlcmFu
ZHNfX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRf
XzMwX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lIiAiOlxuIgog
ICAgIlx0bGRyYiByMSwgW3IyLCAjN11cbiIKICAgICJcdHRzdCByMSwgcjFcbiIKICAgICJcdGJu
ZSAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRfX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzMw
X3dyaXRlQmFycmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9uZSIgIlxuIgogICAgIlx0cHVz
aCB7IHI3IH1cbiIKICAgICJcdHB1c2ggeyByOSB9XG4iCiAgICAiXHRzdWJzIHNwLCBzcCwgIzhc
biIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjJcbiIKICAgICJcdGJseCAi
ICJsbGludF93cml0ZV9iYXJyaWVyX3Nsb3ciICJcbiIKICAgICJcdGFkZHMgc3AsICM4XG4iCiAg
ICAiXHRwb3AgeyByOSB9XG4iCiAgICAiXHRwb3AgeyByNyB9XG4iCgogICIuTCIgIl9vZmZsaW5l
YXNtX3B1dEJ5SWRfX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzMwX3dyaXRlQmFycmllck9uT3Bl
cmFuZF9fd3JpdGVCYXJyaWVyRG9uZSIgIjpcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlJ
ZF9fMzBfd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fd3JpdGVCYXJyaWVyRG9uZSIgIjpcbiIKICAg
ICJcdGxkciByNCwgW3I5LCAjNF1cbiIKICAgICJcdGxkciByMSwgW3I5LCAjMTZdXG4iCiAgICAi
XHRtb3Z3IHI2LCAjMFxuIgogICAgIlx0bW92dCByNiwgIzE2Mzg0XG4iCiAgICAiXHRjbXAgcjQs
IHI2XG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkX19sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZF9fMzFfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdD
dXN0b21fX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjYsIHI3LCByNCwgbHNsICMzXG4iCiAg
ICAiXHRtdm4gcjEwLCAjNFxuIgogICAgIlx0bGRyIHIxMiwgW3I2LCAjNF1cbiIKICAgICJcdGNt
cCByMTIsIHIxMFxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fMzFfcHV0QnlJZF9f
b3BQdXRCeUlkU2xvdyIgIlxuIgogICAgIlx0bGRyIHIwLCBbcjcsIHI0LCBsc2wgIzNdXG4iCiAg
ICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlJZF9fbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWRfXzMxX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25l
IiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRfX2xvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkX18zMV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29u
c3RhbnQiICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjAsIFty
MCwgIzI3Nl1cbiIKICAgICJcdGFkZCByMTAsIHIwLCByNCwgbHNsICMzXG4iCiAgICAiXHRtdm4g
cjEyLCAjNFxuIgogICAgIlx0bGRyIHI2LCBbcjEwLCAjNF1cbiIKICAgICJcdGNtcCByNiwgcjEy
XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV8zMV9wdXRCeUlkX19vcFB1dEJ5SWRT
bG93IiAiXG4iCiAgICAiXHRsZHIgcjAsIFtyMCwgcjQsIGxzbCAjM11cbiIKCiAgIi5MIiAiX29m
ZmxpbmVhc21fcHV0QnlJZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzMxX2xvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lIiAiOlxuIgogICAgIlx0bGRy
IHIyLCBbcjksICMxMl1cbiIKICAgICJcdGxkciByNCwgW3IwLCAjOF1cbiIKICAgICJcdGxkciBy
MTIsIFtyMCwgIzBdXG4iCiAgICAiXHRjbXAgcjEyLCByMVxuIgogICAgIlx0Ym5lICIgIi5MIiAi
X29mZmxpbmVhc21fMzFfcHV0QnlJZF9fb3BQdXRCeUlkU2xvdyIgIlxuIgogICAgIlx0bGRyIHIx
LCBbcjksICMyMF1cbiIKICAgICJcdG1vdncgcjEyLCAjMFxuIgogICAgIlx0bW92dCByMTIsICMx
NjM4NFxuIgogICAgIlx0Y21wIHIyLCByMTJcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5l
YXNtX3B1dEJ5SWRfX2dldFByb3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX18zMV9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByMTIsIHI3LCBy
MiwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjAsIFtyMTIsICM0XVxuIgogICAgIlx0bGRyIHIyLCBb
cjcsIHIyLCBsc2wgIzNdXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlJZF9f
Z2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRpb25fXzMxX2xvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRfX2dldFByb3Bl
cnR5U3RvcmFnZV9fY29udGludWF0aW9uX18zMV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19f
Y29uc3RhbnQiICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjAs
IFtyMCwgIzI3Nl1cbiIKICAgICJcdGxzbHMgcjIsIHIyLCAjM1xuIgogICAgIlx0YWRkIHIwLCBy
MlxuIgogICAgIlx0bGRyIHIyLCBbcjAsICMwXVxuIgogICAgIlx0bGRyIHIwLCBbcjAsICM0XVxu
IgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkX19nZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRp
bnVhdGlvbl9fMzFfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUiICI6XG4iCiAgICAi
XHRhZGQgcjEyLCByNCwgcjEsIGxzbCAjMFxuIgogICAgIlx0c3RyIHIwLCBbcjEyLCAjNF1cbiIK
ICAgICJcdHN0ciByMiwgW3I0LCByMSwgbHNsICMwXVxuIgogICAgIlx0YWRkcyByOSwgIzM2XG4i
CiAgICAiXHRsZHIgcjEyLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTJcbiIKCiAgIi5M
IiAiX29mZmxpbmVhc21fMzFfcHV0QnlJZF9fb3BQdXRCeUlkU2xvdyIgIjpcbiIKICAgICJcdG1v
diByMCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJsbGludF9zbG93
X3BhdGhfcHV0X2J5X2lkIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCiAgICAiXHRhZGRzIHI5
LCAjMzZcbiIKICAgICJcdGxkciByMTIsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMlxu
IgoKIi5MIiAibGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0IiAiOlxuIgogICAg
Ilx0bGRyIHIxLCBbcjksICM0XVxuIgogICAgIlx0bW92dyByMTIsICMwXG4iCiAgICAiXHRtb3Z0
IHIxMiwgIzE2Mzg0XG4iCiAgICAiXHRjbXAgcjEsIHIxMlxuIgogICAgIlx0YmdlICIgIi5MIiAi
X29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzMyX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkVGFnQ3VzdG9tX19jb25zdGFudCIgIlxuIgogICAgIlx0YWRkIHIxMiwgcjcsIHIxLCBsc2wg
IzNcbiIKICAgICJcdG12biByNiwgIzRcbiIKICAgICJcdGxkciByMTAsIFtyMTIsICM0XVxuIgog
ICAgIlx0Y21wIHIxMCwgcjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5
SWRUcmFuc2l0aW9uX18zMl93cml0ZUJhcnJpZXJPbk9wZXJhbmRfX3dyaXRlQmFycmllckRvbmUi
ICJcbiIKICAgICJcdGxkciByMiwgW3I3LCByMSwgbHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIg
Il9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zMl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZFRhZ0N1c3RvbV9fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkVHJh
bnNpdGlvbl9fd3JpdGVCYXJyaWVyT25PcGVyYW5kX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZF9fMzJfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50
IiAiOlxuIgogICAgIlx0bGRyIHIyLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIyLCBbcjIsICMy
NzZdXG4iCiAgICAiXHRhZGQgcjYsIHIyLCByMSwgbHNsICMzXG4iCiAgICAiXHRtdm4gcjEwLCAj
NFxuIgogICAgIlx0bGRyIHIxMiwgW3I2LCAjNF1cbiIKICAgICJcdGNtcCByMTIsIHIxMFxuIgog
ICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fXzMyX3dyaXRl
QmFycmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9uZSIgIlxuIgogICAgIlx0bGRyIHIyLCBb
cjIsIHIxLCBsc2wgIzNdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9u
X193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18z
Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSIgIjpcbiIKICAg
ICJcdGxkcmIgcjEsIFtyMiwgIzddXG4iCiAgICAiXHR0c3QgcjEsIHIxXG4iCiAgICAiXHRibmUg
IiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fMzJfd3JpdGVCYXJyaWVyT25P
cGVyYW5kX193cml0ZUJhcnJpZXJEb25lIiAiXG4iCiAgICAiXHRwdXNoIHsgcjcgfVxuIgogICAg
Ilx0cHVzaCB7IHI5IH1cbiIKICAgICJcdHN1YnMgc3AsIHNwLCAjOFxuIgogICAgIlx0bW92IHIw
LCByN1xuIgogICAgIlx0bW92IHIxLCByMlxuIgogICAgIlx0Ymx4ICIgImxsaW50X3dyaXRlX2Jh
cnJpZXJfc2xvdyIgIlxuIgogICAgIlx0YWRkcyBzcCwgIzhcbiIKICAgICJcdHBvcCB7IHI5IH1c
biIKICAgICJcdHBvcCB7IHI3IH1cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlJZFRyYW5z
aXRpb25fXzMyX3dyaXRlQmFycmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9uZSIgIjpcbiIK
ICAgICJcdGxkciByNCwgW3I5LCAjNF1cbiIKICAgICJcdGxkciByMSwgW3I5LCAjMTZdXG4iCiAg
ICAiXHRtb3Z3IHIxMCwgIzBcbiIKICAgICJcdG1vdnQgcjEwLCAjMTYzODRcbiIKICAgICJcdGNt
cCByNCwgcjEwXG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNp
dGlvbl9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzMzX2xvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCIgIlxuIgogICAgIlx0YWRkIHIxMCwgcjcs
IHI0LCBsc2wgIzNcbiIKICAgICJcdG12biByMTIsICM0XG4iCiAgICAiXHRsZHIgcjYsIFtyMTAs
ICM0XVxuIgogICAgIlx0Y21wIHI2LCByMTJcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5l
YXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19vcFB1dEJ5SWRTbG93IiAiXG4iCiAgICAiXHRsZHIgcjAs
IFtyNywgcjQsIGxzbCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlk
VHJhbnNpdGlvbl9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzMzX2xvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5l
YXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzNf
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50IiAiOlxuIgog
ICAgIlx0bGRyIHIwLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIwLCBbcjAsICMyNzZdXG4iCiAg
ICAiXHRhZGQgcjEyLCByMCwgcjQsIGxzbCAjM1xuIgogICAgIlx0bXZuIHI2LCAjNFxuIgogICAg
Ilx0bGRyIHIxMCwgW3IxMiwgIzRdXG4iCiAgICAiXHRjbXAgcjEwLCByNlxuIgogICAgIlx0Ym5l
ICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX29wUHV0QnlJZFNsb3ciICJc
biIKICAgICJcdGxkciByMCwgW3IwLCByNCwgbHNsICMzXVxuIgoKICAiLkwiICJfb2ZmbGluZWFz
bV9wdXRCeUlkVHJhbnNpdGlvbl9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzMzX2xv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lIiAiOlxuIgogICAgIlx0
bGRyIHIyLCBbcjksICMxMl1cbiIKICAgICJcdGxkciByNiwgW3IwLCAjMF1cbiIKICAgICJcdGNt
cCByNiwgcjFcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0
aW9uX19vcFB1dEJ5SWRTbG93IiAiXG4iCiAgICAiXHRsZHIgcjEsIFtyOSwgIzIwXVxuIgogICAg
Ilx0YWRkcyByNCwgcjEsIHIwXG4iCiAgICAiXHRtb3Z3IHI2LCAjMFxuIgogICAgIlx0bW92dCBy
NiwgIzE2Mzg0XG4iCiAgICAiXHRjbXAgcjIsIHI2XG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2Zm
bGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRp
b25fXzMzX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCIgIlxuIgogICAgIlx0
YWRkIHI2LCByNywgcjIsIGxzbCAjM1xuIgogICAgIlx0bGRyIHIxLCBbcjYsICM0XVxuIgogICAg
Ilx0bGRyIHIyLCBbcjcsIHIyLCBsc2wgIzNdXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVh
c21fcHV0QnlJZFRyYW5zaXRpb25fX2dldFByb3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX18z
M19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGlu
ZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRpb25f
XzMzX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCIgIjpcbiIKICAgICJcdGxk
ciByMSwgW3I3LCAjOF1cbiIKICAgICJcdGxkciByMSwgW3IxLCAjMjc2XVxuIgogICAgIlx0bHNs
cyByMiwgcjIsICMzXG4iCiAgICAiXHRhZGQgcjEsIHIyXG4iCiAgICAiXHRsZHIgcjIsIFtyMSwg
IzBdXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgIzRdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1
dEJ5SWRUcmFuc2l0aW9uX19nZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fMzNfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUiICI6XG4iCiAgICAiXHRzdHIgcjEsIFtyNCwg
IzRdXG4iCiAgICAiXHRsZHIgcjEsIFtyOSwgIzI0XVxuIgogICAgIlx0c3RyIHIyLCBbcjQsICMw
XVxuIgogICAgIlx0c3RyIHIxLCBbcjAsICMwXVxuIgogICAgIlx0YWRkcyByOSwgIzM2XG4iCiAg
ICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgogICIuTCIgIl9v
ZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19vcFB1dEJ5SWRTbG93IiAiOlxuIgogICAgIlx0
bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgImxsaW50X3Ns
b3dfcGF0aF9wdXRfYnlfaWQiICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJcdGFkZHMg
cjksICMzNlxuIgogICAgIlx0bGRyIHI2LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxu
IgoKIi5MIiAibGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5l
IiAiOlxuIgogICAgIlx0bGRyIHIxLCBbcjksICM0XVxuIgogICAgIlx0bW92dyByNiwgIzBcbiIK
ICAgICJcdG1vdnQgcjYsICMxNjM4NFxuIgogICAgIlx0Y21wIHIxLCByNlxuIgogICAgIlx0Ymdl
ICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX3dyaXRlQmFycmllck9uT3Bl
cmFuZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzM0X2xvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCIgIlxuIgogICAgIlx0YWRkIHI2LCByNywg
cjEsIGxzbCAjM1xuIgogICAgIlx0bXZuIHIxMCwgIzRcbiIKICAgICJcdGxkciByMTIsIFtyNiwg
IzRdXG4iCiAgICAiXHRjbXAgcjEyLCByMTBcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5l
YXNtX3B1dEJ5SWRUcmFuc2l0aW9uX18zNF93cml0ZUJhcnJpZXJPbk9wZXJhbmRfX3dyaXRlQmFy
cmllckRvbmUiICJcbiIKICAgICJcdGxkciByMiwgW3I3LCByMSwgbHNsICMzXVxuIgogICAgIlx0
YiAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX193cml0ZUJhcnJpZXJPbk9w
ZXJhbmRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zNF9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9w
dXRCeUlkVHJhbnNpdGlvbl9fd3JpdGVCYXJyaWVyT25PcGVyYW5kX19sb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZF9fMzRfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21f
X2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIyLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIy
LCBbcjIsICMyNzZdXG4iCiAgICAiXHRhZGQgcjEwLCByMiwgcjEsIGxzbCAjM1xuIgogICAgIlx0
bXZuIHIxMiwgIzRcbiIKICAgICJcdGxkciByNiwgW3IxMCwgIzRdXG4iCiAgICAiXHRjbXAgcjYs
IHIxMlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25f
XzM0X3dyaXRlQmFycmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9uZSIgIlxuIgogICAgIlx0
bGRyIHIyLCBbcjIsIHIxLCBsc2wgIzNdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRU
cmFuc2l0aW9uX193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkX18zNF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSIg
IjpcbiIKICAgICJcdGxkcmIgcjEsIFtyMiwgIzddXG4iCiAgICAiXHR0c3QgcjEsIHIxXG4iCiAg
ICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fMzRfd3JpdGVC
YXJyaWVyT25PcGVyYW5kX193cml0ZUJhcnJpZXJEb25lIiAiXG4iCiAgICAiXHRwdXNoIHsgcjcg
fVxuIgogICAgIlx0cHVzaCB7IHI5IH1cbiIKICAgICJcdHN1YnMgc3AsIHNwLCAjOFxuIgogICAg
Ilx0bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByMlxuIgogICAgIlx0Ymx4ICIgImxsaW50
X3dyaXRlX2JhcnJpZXJfc2xvdyIgIlxuIgogICAgIlx0YWRkcyBzcCwgIzhcbiIKICAgICJcdHBv
cCB7IHI5IH1cbiIKICAgICJcdHBvcCB7IHI3IH1cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0
QnlJZFRyYW5zaXRpb25fXzM0X3dyaXRlQmFycmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9u
ZSIgIjpcbiIKICAgICJcdGxkciByNCwgW3I5LCAjNF1cbiIKICAgICJcdGxkciByMSwgW3I5LCAj
MTZdXG4iCiAgICAiXHRtb3Z3IHIxMiwgIzBcbiIKICAgICJcdG1vdnQgcjEyLCAjMTYzODRcbiIK
ICAgICJcdGNtcCByNCwgcjEyXG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRC
eUlkVHJhbnNpdGlvbl9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzM1X2xvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCIgIlxuIgogICAgIlx0YWRk
IHIxMiwgcjcsIHI0LCBsc2wgIzNcbiIKICAgICJcdG12biByNiwgIzRcbiIKICAgICJcdGxkciBy
MTAsIFtyMTIsICM0XVxuIgogICAgIlx0Y21wIHIxMCwgcjZcbiIKICAgICJcdGJuZSAiICIuTCIg
Il9vZmZsaW5lYXNtXzM1X3B1dEJ5SWRUcmFuc2l0aW9uX19vcFB1dEJ5SWRTbG93IiAiXG4iCiAg
ICAiXHRsZHIgcjAsIFtyNywgcjQsIGxzbCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGlu
ZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzM1
X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lIiAiXG4iCgogICIu
TCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19sb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZF9fMzVfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0
YW50IiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIwLCBbcjAs
ICMyNzZdXG4iCiAgICAiXHRhZGQgcjYsIHIwLCByNCwgbHNsICMzXG4iCiAgICAiXHRtdm4gcjEw
LCAjNFxuIgogICAgIlx0bGRyIHIxMiwgW3I2LCAjNF1cbiIKICAgICJcdGNtcCByMTIsIHIxMFxu
IgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fMzVfcHV0QnlJZFRyYW5zaXRpb25fX29w
UHV0QnlJZFNsb3ciICJcbiIKICAgICJcdGxkciByMCwgW3IwLCByNCwgbHNsICMzXVxuIgoKICAi
LkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWRfXzM1X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25l
IiAiOlxuIgogICAgIlx0bGRyIHIyLCBbcjksICMxMl1cbiIKICAgICJcdGxkciByMTAsIFtyMCwg
IzBdXG4iCiAgICAiXHRjbXAgcjEwLCByMVxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVh
c21fMzVfcHV0QnlJZFRyYW5zaXRpb25fX29wUHV0QnlJZFNsb3ciICJcbiIKICAgICJcdGxkciBy
MSwgW3I5LCAjMjBdXG4iCiAgICAiXHRsZHIgcjQsIFtyMCwgIzhdXG4iCiAgICAiXHRhZGRzIHI0
LCByMSwgcjRcbiIKICAgICJcdG1vdncgcjEwLCAjMFxuIgogICAgIlx0bW92dCByMTAsICMxNjM4
NFxuIgogICAgIlx0Y21wIHIyLCByMTBcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNt
X3B1dEJ5SWRUcmFuc2l0aW9uX19nZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fMzVf
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjEw
LCByNywgcjIsIGxzbCAjM1xuIgogICAgIlx0bGRyIHIxLCBbcjEwLCAjNF1cbiIKICAgICJcdGxk
ciByMiwgW3I3LCByMiwgbHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX3B1
dEJ5SWRUcmFuc2l0aW9uX19nZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fMzVfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21f
cHV0QnlJZFRyYW5zaXRpb25fX2dldFByb3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX18zNV9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQiICI6XG4iCiAgICAiXHRsZHIgcjEs
IFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgIzI3Nl1cbiIKICAgICJcdGxzbHMgcjIs
IHIyLCAjM1xuIgogICAgIlx0YWRkIHIxLCByMlxuIgogICAgIlx0bGRyIHIyLCBbcjEsICMwXVxu
IgogICAgIlx0bGRyIHIxLCBbcjEsICM0XVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlk
VHJhbnNpdGlvbl9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRpb25fXzM1X2xvYWRDb25z
dGFudE9yVmFyaWFibGUyUmVnX19kb25lIiAiOlxuIgogICAgIlx0c3RyIHIxLCBbcjQsICM0XVxu
IgogICAgIlx0bGRyIHIxLCBbcjksICMyNF1cbiIKICAgICJcdHN0ciByMiwgW3I0LCAjMF1cbiIK
ICAgICJcdHN0ciByMSwgW3IwLCAjMF1cbiIKICAgICJcdGFkZHMgcjksICMzNlxuIgogICAgIlx0
bGRyIHIxMCwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEwXG4iCgogICIuTCIgIl9vZmZs
aW5lYXNtXzM1X3B1dEJ5SWRUcmFuc2l0aW9uX19vcFB1dEJ5SWRTbG93IiAiOlxuIgogICAgIlx0
bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgImxsaW50X3Ns
b3dfcGF0aF9wdXRfYnlfaWQiICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJcdGFkZHMg
cjksICMzNlxuIgogICAgIlx0bGRyIHIxMCwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEw
XG4iCgoiLkwiICJsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwiICI6XG4iCiAg
ICAiXHRsZHIgcjEsIFtyOSwgIzRdXG4iCiAgICAiXHRtb3Z3IHIxMCwgIzBcbiIKICAgICJcdG1v
dnQgcjEwLCAjMTYzODRcbiIKICAgICJcdGNtcCByMSwgcjEwXG4iCiAgICAiXHRiZ2UgIiAiLkwi
ICJfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fd3JpdGVCYXJyaWVyT25PcGVyYW5kX19s
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzZfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWRUYWdDdXN0b21fX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjEwLCByNywgcjEsIGxz
bCAjM1xuIgogICAgIlx0bXZuIHIxMiwgIzRcbiIKICAgICJcdGxkciByNiwgW3IxMCwgIzRdXG4i
CiAgICAiXHRjbXAgcjYsIHIxMlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fcHV0
QnlJZFRyYW5zaXRpb25fXzM2X3dyaXRlQmFycmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9u
ZSIgIlxuIgogICAgIlx0bGRyIHIyLCBbcjcsIHIxLCBsc2wgIzNdXG4iCiAgICAiXHRiICIgIi5M
IiAiX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX3dyaXRlQmFycmllck9uT3BlcmFuZF9f
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzM2X2xvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkVGFnQ3VzdG9tX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRU
cmFuc2l0aW9uX193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkX18zNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3Rh
bnQiICI6XG4iCiAgICAiXHRsZHIgcjIsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjIsIFtyMiwg
IzI3Nl1cbiIKICAgICJcdGFkZCByMTIsIHIyLCByMSwgbHNsICMzXG4iCiAgICAiXHRtdm4gcjYs
ICM0XG4iCiAgICAiXHRsZHIgcjEwLCBbcjEyLCAjNF1cbiIKICAgICJcdGNtcCByMTAsIHI2XG4i
CiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fMzZfd3Jp
dGVCYXJyaWVyT25PcGVyYW5kX193cml0ZUJhcnJpZXJEb25lIiAiXG4iCiAgICAiXHRsZHIgcjIs
IFtyMiwgcjEsIGxzbCAjM11cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRp
b25fX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRf
XzM2X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lIiAiOlxuIgog
ICAgIlx0bGRyYiByMSwgW3IyLCAjN11cbiIKICAgICJcdHRzdCByMSwgcjFcbiIKICAgICJcdGJu
ZSAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX18zNl93cml0ZUJhcnJpZXJP
bk9wZXJhbmRfX3dyaXRlQmFycmllckRvbmUiICJcbiIKICAgICJcdHB1c2ggeyByNyB9XG4iCiAg
ICAiXHRwdXNoIHsgcjkgfVxuIgogICAgIlx0c3VicyBzcCwgc3AsICM4XG4iCiAgICAiXHRtb3Yg
cjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHIyXG4iCiAgICAiXHRibHggIiAibGxpbnRfd3JpdGVf
YmFycmllcl9zbG93IiAiXG4iCiAgICAiXHRhZGRzIHNwLCAjOFxuIgogICAgIlx0cG9wIHsgcjkg
fVxuIgogICAgIlx0cG9wIHsgcjcgfVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkVHJh
bnNpdGlvbl9fMzZfd3JpdGVCYXJyaWVyT25PcGVyYW5kX193cml0ZUJhcnJpZXJEb25lIiAiOlxu
IgogICAgIlx0bGRyIHI0LCBbcjksICM0XVxuIgogICAgIlx0bGRyIHIxLCBbcjksICMxNl1cbiIK
ICAgICJcdG1vdncgcjYsICMwXG4iCiAgICAiXHRtb3Z0IHI2LCAjMTYzODRcbiIKICAgICJcdGNt
cCByNCwgcjZcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0
aW9uX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzdfbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjYsIHI3LCBy
NCwgbHNsICMzXG4iCiAgICAiXHRtdm4gcjEwLCAjNFxuIgogICAgIlx0bGRyIHIxMiwgW3I2LCAj
NF1cbiIKICAgICJcdGNtcCByMTIsIHIxMFxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVh
c21fMzdfcHV0QnlJZFRyYW5zaXRpb25fX29wUHV0QnlJZFNsb3ciICJcbiIKICAgICJcdGxkciBy
MCwgW3I3LCByNCwgbHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5
SWRUcmFuc2l0aW9uX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzdfbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxp
bmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18z
N19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQiICI6XG4i
CiAgICAiXHRsZHIgcjAsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjAsIFtyMCwgIzI3Nl1cbiIK
ICAgICJcdGFkZCByMTAsIHIwLCByNCwgbHNsICMzXG4iCiAgICAiXHRtdm4gcjEyLCAjNFxuIgog
ICAgIlx0bGRyIHI2LCBbcjEwLCAjNF1cbiIKICAgICJcdGNtcCByNiwgcjEyXG4iCiAgICAiXHRi
bmUgIiAiLkwiICJfb2ZmbGluZWFzbV8zN19wdXRCeUlkVHJhbnNpdGlvbl9fb3BQdXRCeUlkU2xv
dyIgIlxuIgogICAgIlx0bGRyIHIwLCBbcjAsIHI0LCBsc2wgIzNdXG4iCgogICIuTCIgIl9vZmZs
aW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9f
MzdfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUiICI6XG4iCiAg
ICAiXHRsZHIgcjIsIFtyOSwgIzEyXVxuIgogICAgIlx0bGRyIHIxMiwgW3IwLCAjMF1cbiIKICAg
ICJcdGNtcCByMTIsIHIxXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV8zN19wdXRC
eUlkVHJhbnNpdGlvbl9fb3BQdXRCeUlkU2xvdyIgIlxuIgogICAgIlx0bGRyIHI0LCBbcjksICMy
OF1cbiIKICAgICJcdGxkciByNCwgW3I0LCAjOF1cbiIKICAgICJcdG12biByMTIsICMyXG4iCiAg
ICAiXHRsZHIgcjYsIFtyMSwgIzI4XVxuIgogICAgIlx0Y21wIHI2LCByMTJcbiIKICAgICJcdGJl
cSAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19hZGRpdGlvbmFsQ2hlY2tz
X19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19hZGRp
dGlvbmFsQ2hlY2tzX19sb29wIiAiOlxuIgogICAgIlx0bGRyIHIxLCBbcjEsICMyNF1cbiIKICAg
ICJcdGxkciByMSwgW3IxLCAjMF1cbiIKICAgICJcdGxkciByMTIsIFtyNCwgIzBdXG4iCiAgICAi
XHRjbXAgcjEsIHIxMlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fMzdfcHV0QnlJ
ZFRyYW5zaXRpb25fX29wUHV0QnlJZFNsb3ciICJcbiIKICAgICJcdGFkZHMgcjQsICM0XG4iCiAg
ICAiXHRtdm4gcjEyLCAjMlxuIgogICAgIlx0bGRyIHI2LCBbcjEsICMyOF1cbiIKICAgICJcdGNt
cCByNiwgcjEyXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNp
dGlvbl9fYWRkaXRpb25hbENoZWNrc19fbG9vcCIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9w
dXRCeUlkVHJhbnNpdGlvbl9fYWRkaXRpb25hbENoZWNrc19fZG9uZSIgIjpcbiIKICAgICJcdGxk
ciByMSwgW3I5LCAjMjBdXG4iCiAgICAiXHRhZGRzIHI0LCByMSwgcjBcbiIKICAgICJcdG1vdncg
cjEyLCAjMFxuIgogICAgIlx0bW92dCByMTIsICMxNjM4NFxuIgogICAgIlx0Y21wIHIyLCByMTJc
biIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19nZXRQ
cm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fMzdfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJS
ZWdfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjEyLCByNywgcjIsIGxzbCAjM1xuIgogICAg
Ilx0bGRyIHIxLCBbcjEyLCAjNF1cbiIKICAgICJcdGxkciByMiwgW3I3LCByMiwgbHNsICMzXVxu
IgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19nZXRQcm9w
ZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fMzdfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdf
X2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2dldFBy
b3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX18zN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
Z19fY29uc3RhbnQiICI6XG4iCiAgICAiXHRsZHIgcjEsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIg
cjEsIFtyMSwgIzI3Nl1cbiIKICAgICJcdGxzbHMgcjIsIHIyLCAjM1xuIgogICAgIlx0YWRkIHIx
LCByMlxuIgogICAgIlx0bGRyIHIyLCBbcjEsICMwXVxuIgogICAgIlx0bGRyIHIxLCBbcjEsICM0
XVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fZ2V0UHJvcGVydHlT
dG9yYWdlX19jb250aW51YXRpb25fXzM3X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25l
IiAiOlxuIgogICAgIlx0c3RyIHIxLCBbcjQsICM0XVxuIgogICAgIlx0bGRyIHIxLCBbcjksICMy
NF1cbiIKICAgICJcdHN0ciByMiwgW3I0LCAjMF1cbiIKICAgICJcdHN0ciByMSwgW3IwLCAjMF1c
biIKICAgICJcdGFkZHMgcjksICMzNlxuIgogICAgIlx0bGRyIHIxMiwgW3I5LCAjMF1cbiIKICAg
ICJcdG1vdiBwYywgcjEyXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzM3X3B1dEJ5SWRUcmFuc2l0
aW9uX19vcFB1dEJ5SWRTbG93IiAiOlxuIgogICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0bW92
IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgImxsaW50X3Nsb3dfcGF0aF9wdXRfYnlfaWQiICJcbiIK
ICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJcdGFkZHMgcjksICMzNlxuIgogICAgIlx0bGRyIHIx
MiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEyXG4iCgoiLkwiICJsbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmUiICI6XG4iCiAgICAiXHRsZHIgcjEs
IFtyOSwgIzRdXG4iCiAgICAiXHRtb3Z3IHIxMiwgIzBcbiIKICAgICJcdG1vdnQgcjEyLCAjMTYz
ODRcbiIKICAgICJcdGNtcCByMSwgcjEyXG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFz
bV9wdXRCeUlkVHJhbnNpdGlvbl9fd3JpdGVCYXJyaWVyT25PcGVyYW5kX19sb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZF9fMzhfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0
b21fX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjEyLCByNywgcjEsIGxzbCAjM1xuIgogICAg
Ilx0bXZuIHI2LCAjNFxuIgogICAgIlx0bGRyIHIxMCwgW3IxMiwgIzRdXG4iCiAgICAiXHRjbXAg
cjEwLCByNlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRp
b25fXzM4X3dyaXRlQmFycmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9uZSIgIlxuIgogICAg
Ilx0bGRyIHIyLCBbcjcsIHIxLCBsc2wgIzNdXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVh
c21fcHV0QnlJZFRyYW5zaXRpb25fX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRfXzM4X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3Vz
dG9tX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX193
cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zOF9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQiICI6XG4iCiAg
ICAiXHRsZHIgcjIsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjIsIFtyMiwgIzI3Nl1cbiIKICAg
ICJcdGFkZCByNiwgcjIsIHIxLCBsc2wgIzNcbiIKICAgICJcdG12biByMTAsICM0XG4iCiAgICAi
XHRsZHIgcjEyLCBbcjYsICM0XVxuIgogICAgIlx0Y21wIHIxMiwgcjEwXG4iCiAgICAiXHRibmUg
IiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fMzhfd3JpdGVCYXJyaWVyT25P
cGVyYW5kX193cml0ZUJhcnJpZXJEb25lIiAiXG4iCiAgICAiXHRsZHIgcjIsIFtyMiwgcjEsIGxz
bCAjM11cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX3dyaXRlQmFy
cmllck9uT3BlcmFuZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzM4X2xvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lIiAiOlxuIgogICAgIlx0bGRyYiBy
MSwgW3IyLCAjN11cbiIKICAgICJcdHRzdCByMSwgcjFcbiIKICAgICJcdGJuZSAiICIuTCIgIl9v
ZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX18zOF93cml0ZUJhcnJpZXJPbk9wZXJhbmRfX3dy
aXRlQmFycmllckRvbmUiICJcbiIKICAgICJcdHB1c2ggeyByNyB9XG4iCiAgICAiXHRwdXNoIHsg
cjkgfVxuIgogICAgIlx0c3VicyBzcCwgc3AsICM4XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAg
ICAiXHRtb3YgcjEsIHIyXG4iCiAgICAiXHRibHggIiAibGxpbnRfd3JpdGVfYmFycmllcl9zbG93
IiAiXG4iCiAgICAiXHRhZGRzIHNwLCAjOFxuIgogICAgIlx0cG9wIHsgcjkgfVxuIgogICAgIlx0
cG9wIHsgcjcgfVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fMzhf
d3JpdGVCYXJyaWVyT25PcGVyYW5kX193cml0ZUJhcnJpZXJEb25lIiAiOlxuIgogICAgIlx0bGRy
IHI0LCBbcjksICM0XVxuIgogICAgIlx0bGRyIHIxLCBbcjksICMxNl1cbiIKICAgICJcdG1vdncg
cjEwLCAjMFxuIgogICAgIlx0bW92dCByMTAsICMxNjM4NFxuIgogICAgIlx0Y21wIHI0LCByMTBc
biIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzlfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRUYWdDdXN0b21fX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjEwLCByNywgcjQsIGxzbCAj
M1xuIgogICAgIlx0bXZuIHIxMiwgIzRcbiIKICAgICJcdGxkciByNiwgW3IxMCwgIzRdXG4iCiAg
ICAiXHRjbXAgcjYsIHIxMlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fMzlfcHV0
QnlJZFRyYW5zaXRpb25fX29wUHV0QnlJZFNsb3ciICJcbiIKICAgICJcdGxkciByMCwgW3I3LCBy
NCwgbHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0
aW9uX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzlfbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0
QnlJZFRyYW5zaXRpb25fX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zOV9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQiICI6XG4iCiAgICAiXHRs
ZHIgcjAsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjAsIFtyMCwgIzI3Nl1cbiIKICAgICJcdGFk
ZCByMTIsIHIwLCByNCwgbHNsICMzXG4iCiAgICAiXHRtdm4gcjYsICM0XG4iCiAgICAiXHRsZHIg
cjEwLCBbcjEyLCAjNF1cbiIKICAgICJcdGNtcCByMTAsIHI2XG4iCiAgICAiXHRibmUgIiAiLkwi
ICJfb2ZmbGluZWFzbV8zOV9wdXRCeUlkVHJhbnNpdGlvbl9fb3BQdXRCeUlkU2xvdyIgIlxuIgog
ICAgIlx0bGRyIHIwLCBbcjAsIHI0LCBsc2wgIzNdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1
dEJ5SWRUcmFuc2l0aW9uX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzlfbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUiICI6XG4iCiAgICAiXHRsZHIg
cjIsIFtyOSwgIzEyXVxuIgogICAgIlx0bGRyIHI2LCBbcjAsICMwXVxuIgogICAgIlx0Y21wIHI2
LCByMVxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fMzlfcHV0QnlJZFRyYW5zaXRp
b25fX29wUHV0QnlJZFNsb3ciICJcbiIKICAgICJcdGxkciByNCwgW3I5LCAjMjhdXG4iCiAgICAi
XHRsZHIgcjQsIFtyNCwgIzhdXG4iCiAgICAiXHRtdm4gcjYsICMyXG4iCiAgICAiXHRsZHIgcjEw
LCBbcjEsICMyOF1cbiIKICAgICJcdGNtcCByMTAsIHI2XG4iCiAgICAiXHRiZXEgIiAiLkwiICJf
b2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fMzlfYWRkaXRpb25hbENoZWNrc19fZG9uZSIg
IlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fMzlfYWRkaXRpb25h
bENoZWNrc19fbG9vcCIgIjpcbiIKICAgICJcdGxkciByMSwgW3IxLCAjMjRdXG4iCiAgICAiXHRs
ZHIgcjEsIFtyMSwgIzBdXG4iCiAgICAiXHRsZHIgcjYsIFtyNCwgIzBdXG4iCiAgICAiXHRjbXAg
cjEsIHI2XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV8zOV9wdXRCeUlkVHJhbnNp
dGlvbl9fb3BQdXRCeUlkU2xvdyIgIlxuIgogICAgIlx0YWRkcyByNCwgIzRcbiIKICAgICJcdG12
biByNiwgIzJcbiIKICAgICJcdGxkciByMTAsIFtyMSwgIzI4XVxuIgogICAgIlx0Y21wIHIxMCwg
cjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX18z
OV9hZGRpdGlvbmFsQ2hlY2tzX19sb29wIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5
SWRUcmFuc2l0aW9uX18zOV9hZGRpdGlvbmFsQ2hlY2tzX19kb25lIiAiOlxuIgogICAgIlx0bGRy
IHIxLCBbcjksICMyMF1cbiIKICAgICJcdGxkciByNCwgW3IwLCAjOF1cbiIKICAgICJcdGFkZHMg
cjQsIHIxLCByNFxuIgogICAgIlx0bW92dyByNiwgIzBcbiIKICAgICJcdG1vdnQgcjYsICMxNjM4
NFxuIgogICAgIlx0Y21wIHIyLCByNlxuIgogICAgIlx0YmdlICIgIi5MIiAiX29mZmxpbmVhc21f
cHV0QnlJZFRyYW5zaXRpb25fX2dldFByb3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX18zOV9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByNiwg
cjcsIHIyLCBsc2wgIzNcbiIKICAgICJcdGxkciByMSwgW3I2LCAjNF1cbiIKICAgICJcdGxkciBy
MiwgW3I3LCByMiwgbHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5
SWRUcmFuc2l0aW9uX19nZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fMzlfbG9hZENv
bnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0
QnlJZFRyYW5zaXRpb25fX2dldFByb3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX18zOV9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQiICI6XG4iCiAgICAiXHRsZHIgcjEsIFty
NywgIzhdXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgIzI3Nl1cbiIKICAgICJcdGxzbHMgcjIsIHIy
LCAjM1xuIgogICAgIlx0YWRkIHIxLCByMlxuIgogICAgIlx0bGRyIHIyLCBbcjEsICMwXVxuIgog
ICAgIlx0bGRyIHIxLCBbcjEsICM0XVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeUlkVHJh
bnNpdGlvbl9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRpb25fXzM5X2xvYWRDb25zdGFu
dE9yVmFyaWFibGUyUmVnX19kb25lIiAiOlxuIgogICAgIlx0c3RyIHIxLCBbcjQsICM0XVxuIgog
ICAgIlx0bGRyIHIxLCBbcjksICMyNF1cbiIKICAgICJcdHN0ciByMiwgW3I0LCAjMF1cbiIKICAg
ICJcdHN0ciByMSwgW3IwLCAjMF1cbiIKICAgICJcdGFkZHMgcjksICMzNlxuIgogICAgIlx0bGRy
IHI2LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxuIgoKICAiLkwiICJfb2ZmbGluZWFz
bV8zOV9wdXRCeUlkVHJhbnNpdGlvbl9fb3BQdXRCeUlkU2xvdyIgIjpcbiIKICAgICJcdG1vdiBy
MCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJsbGludF9zbG93X3Bh
dGhfcHV0X2J5X2lkIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCiAgICAiXHRhZGRzIHI5LCAj
MzZcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIKCiIu
TCIgImxsaW50X29wX2dldF9ieV92YWwiICI6XG4iCiAgICAiXHRsZHIgcjIsIFtyOSwgIzhdXG4i
CiAgICAiXHRtb3Z3IHI2LCAjMFxuIgogICAgIlx0bW92dCByNiwgIzE2Mzg0XG4iCiAgICAiXHRj
bXAgcjIsIHI2XG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZF9fNDBfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0
b21fX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjYsIHI3LCByMiwgbHNsICMzXG4iCiAgICAi
XHRtdm4gcjEwLCAjNFxuIgogICAgIlx0bGRyIHIxMiwgW3I2LCAjNF1cbiIKICAgICJcdGNtcCBy
MTIsIHIxMFxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fb3BHZXRCeVZhbFNsb3ci
ICJcbiIKICAgICJcdGxkciByMCwgW3I3LCByMiwgbHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIg
Il9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX180MF9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGlu
ZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNDBfbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjcs
ICM4XVxuIgogICAgIlx0bGRyIHIwLCBbcjAsICMyNzZdXG4iCiAgICAiXHRhZGQgcjEwLCByMCwg
cjIsIGxzbCAjM1xuIgogICAgIlx0bXZuIHIxMiwgIzRcbiIKICAgICJcdGxkciByNiwgW3IxMCwg
IzRdXG4iCiAgICAiXHRjbXAgcjYsIHIxMlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVh
c21fb3BHZXRCeVZhbFNsb3ciICJcbiIKICAgICJcdGxkciByMCwgW3IwLCByMiwgbHNsICMzXVxu
IgoKICAiLkwiICJfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNDBf
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUiICI6XG4iCiAgICAi
XHRtb3YgcjIsIHIwXG4iCiAgICAiXHRsZHIgcjQsIFtyOSwgIzE2XVxuIgogICAgIlx0bGRyIHIx
LCBbcjIsICMwXVxuIgogICAgIlx0c3RyIHIxLCBbcjQsICM0XVxuIgogICAgIlx0bGRyYiByMiwg
W3IyLCAjNF1cbiIKICAgICJcdGxkciByNCwgW3I5LCAjMTJdXG4iCiAgICAiXHRtb3Z3IHIxMiwg
IzBcbiIKICAgICJcdG1vdnQgcjEyLCAjMTYzODRcbiIKICAgICJcdGNtcCByNCwgcjEyXG4iCiAg
ICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZF9fNDFfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50IiAi
XG4iCiAgICAiXHRhZGQgcjEyLCByNywgcjQsIGxzbCAjM1xuIgogICAgIlx0bXZuIHI2LCAjMFxu
IgogICAgIlx0bGRyIHIxMCwgW3IxMiwgIzRdXG4iCiAgICAiXHRjbXAgcjEwLCByNlxuIgogICAg
Ilx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fb3BHZXRCeVZhbFNsb3ciICJcbiIKICAgICJcdGxk
ciByMSwgW3I3LCByNCwgbHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX2xv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX180MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZFRhZ0N1c3RvbV9fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZF9fNDFfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdD
dXN0b21fX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIxLCBbcjcsICM4XVxuIgogICAgIlx0
bGRyIHIxLCBbcjEsICMyNzZdXG4iCiAgICAiXHRhZGQgcjYsIHIxLCByNCwgbHNsICMzXG4iCiAg
ICAiXHRtdm4gcjEwLCAjMFxuIgogICAgIlx0bGRyIHIxMiwgW3I2LCAjNF1cbiIKICAgICJcdGNt
cCByMTIsIHIxMFxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fb3BHZXRCeVZhbFNs
b3ciICJcbiIKICAgICJcdGxkciByMSwgW3IxLCByNCwgbHNsICMzXVxuIgoKICAiLkwiICJfb2Zm
bGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNDFfbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUiICI6XG4iCiAgICAiXHRsZHIgcjQsIFtyMCwg
IzhdXG4iCiAgICAiXHRhbmQgcjIsIHIyLCAjMzBcbiIKICAgICJcdGNtcCByMiwgIzIwXG4iCiAg
ICAiXHRiZXEgIiAiLkwiICJfb2ZmbGluZWFzbV9vcEdldEJ5VmFsSXNDb250aWd1b3VzIiAiXG4i
CiAgICAiXHRjbXAgcjIsICMyNlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fb3BH
ZXRCeVZhbE5vdENvbnRpZ3VvdXMiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fb3BHZXRCeVZh
bElzQ29udGlndW91cyIgIjpcbiIKICAgICJcdGxkciByMTAsIFtyNCwgIy04XVxuIgogICAgIlx0
Y21wIHIxLCByMTBcbiIKICAgICJcdGJocyAiICIuTCIgIl9vZmZsaW5lYXNtX29wR2V0QnlWYWxP
dXRPZkJvdW5kcyIgIlxuIgogICAgIlx0YWRkIHIxMCwgcjQsIHIxLCBsc2wgIzNcbiIKICAgICJc
dGxkciByMiwgW3IxMCwgIzRdXG4iCiAgICAiXHRsZHIgcjEsIFtyNCwgcjEsIGxzbCAjM11cbiIK
ICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9vcEdldEJ5VmFsRG9uZSIgIlxuIgoKICAiLkwi
ICJfb2ZmbGluZWFzbV9vcEdldEJ5VmFsTm90Q29udGlndW91cyIgIjpcbiIKICAgICJcdGNtcCBy
MiwgIzIyXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9vcEdldEJ5VmFsTm90RG91
YmxlIiAiXG4iCiAgICAiXHRsZHIgcjEwLCBbcjQsICMtOF1cbiIKICAgICJcdGNtcCByMSwgcjEw
XG4iCiAgICAiXHRiaHMgIiAiLkwiICJfb2ZmbGluZWFzbV9vcEdldEJ5VmFsT3V0T2ZCb3VuZHMi
ICJcbiIKICAgICJcdGFkZCByMTAsIHI0LCByMSwgbHNsICMzXG4iCiAgICAiXHR2bGRyLjY0IGQw
LCBbcjEwLCAjMF1cbiIKICAgICJcdHZjbXBlLmY2NCBkMCwgZDBcbiIKICAgICJcdHZtcnMgYXBz
cl9uemN2LCBmcHNjclxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fb3BHZXRCeVZh
bFNsb3ciICJcbiIKICAgICJcdHZtb3YgcjEsIHIyLCBkMFxuIgogICAgIlx0bGRyIHIwLCBbcjks
ICM0XVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX29wR2V0QnlWYWxOb3RFbXB0eSIg
IlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9vcEdldEJ5VmFsTm90RG91YmxlIiAiOlxuIgogICAg
Ilx0c3VicyByMiwgcjIsICMyOFxuIgogICAgIlx0Y21wIHIyLCAjMlxuIgogICAgIlx0YmhpICIg
Ii5MIiAiX29mZmxpbmVhc21fb3BHZXRCeVZhbFNsb3ciICJcbiIKICAgICJcdGxkciByMTAsIFty
NCwgIy00XVxuIgogICAgIlx0Y21wIHIxLCByMTBcbiIKICAgICJcdGJocyAiICIuTCIgIl9vZmZs
aW5lYXNtX29wR2V0QnlWYWxPdXRPZkJvdW5kcyIgIlxuIgogICAgIlx0YWRkIHIxMCwgcjQsIHIx
LCBsc2wgIzNcbiIKICAgICJcdGxkciByMiwgW3IxMCwgIzIwXVxuIgogICAgIlx0YWRkIHIxMCwg
cjQsIHIxLCBsc2wgIzNcbiIKICAgICJcdGxkciByMSwgW3IxMCwgIzE2XVxuIgoKICAiLkwiICJf
b2ZmbGluZWFzbV9vcEdldEJ5VmFsRG9uZSIgIjpcbiIKICAgICJcdGxkciByMCwgW3I5LCAjNF1c
biIKICAgICJcdG12biByMTAsICM1XG4iCiAgICAiXHRjbXAgcjIsIHIxMFxuIgogICAgIlx0YmVx
ICIgIi5MIiAiX29mZmxpbmVhc21fb3BHZXRCeVZhbE91dE9mQm91bmRzIiAiXG4iCgogICIuTCIg
Il9vZmZsaW5lYXNtX29wR2V0QnlWYWxOb3RFbXB0eSIgIjpcbiIKICAgICJcdGFkZCByMTAsIHI3
LCByMCwgbHNsICMzXG4iCiAgICAiXHRzdHIgcjIsIFtyMTAsICM0XVxuIgogICAgIlx0c3RyIHIx
LCBbcjcsIHIwLCBsc2wgIzNdXG4iCiAgICAiXHRsZHIgcjAsIFtyOSwgIzIwXVxuIgogICAgIlx0
c3RyIHIyLCBbcjAsICMyMF1cbiIKICAgICJcdHN0ciByMSwgW3IwLCAjMTZdXG4iCiAgICAiXHRh
ZGRzIHI5LCAjMjRcbiIKICAgICJcdGxkciByMTAsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMs
IHIxMFxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9vcEdldEJ5VmFsT3V0T2ZCb3VuZHMiICI6XG4i
CiAgICAiXHRsZHIgcjAsIFtyOSwgIzE2XVxuIgogICAgIlx0bW92IHIxMCwgIzFcbiIKICAgICJc
dHN0cmIgcjEwLCBbcjAsICM5XVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9vcEdldEJ5VmFsU2xv
dyIgIjpcbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJc
dGJseCAiICJsbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCIgIlxuIgogICAgIlx0bW92IHI5LCBy
MFxuIgogICAgIlx0YWRkcyByOSwgIzI0XG4iCiAgICAiXHRsZHIgcjEwLCBbcjksICMwXVxuIgog
ICAgIlx0bW92IHBjLCByMTBcbiIKCiIuTCIgImxsaW50X29wX2dldF9hcmd1bWVudF9ieV92YWwi
ICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyOSwgIzhdXG4iCiAgICAiXHRsZHIgcjEsIFtyOSwgIzEy
XVxuIgogICAgIlx0YWRkIHIxMCwgcjcsIHIwLCBsc2wgIzNcbiIKICAgICJcdG12biByMTIsICM1
XG4iCiAgICAiXHRsZHIgcjYsIFtyMTAsICM0XVxuIgogICAgIlx0Y21wIHI2LCByMTJcbiIKICAg
ICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX29wR2V0QXJndW1lbnRCeVZhbFNsb3ciICJcbiIK
ICAgICJcdG1vdncgcjEyLCAjMFxuIgogICAgIlx0bW92dCByMTIsICMxNjM4NFxuIgogICAgIlx0
Y21wIHIxLCByMTJcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtX2xvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkX180Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1
c3RvbV9fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByMTIsIHI3LCByMSwgbHNsICMzXG4iCiAg
ICAiXHRtdm4gcjYsICMwXG4iCiAgICAiXHRsZHIgcjEwLCBbcjEyLCAjNF1cbiIKICAgICJcdGNt
cCByMTAsIHI2XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9vcEdldEFyZ3VtZW50
QnlWYWxTbG93IiAiXG4iCiAgICAiXHRsZHIgcjIsIFtyNywgcjEsIGxzbCAjM11cbiIKICAgICJc
dGIgIiAiLkwiICJfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNDJf
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUiICJcbiIKCiAgIi5M
IiAiX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzQyX2xvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCIgIjpcbiIKICAgICJcdGxk
ciByMiwgW3I3LCAjOF1cbiIKICAgICJcdGxkciByMiwgW3IyLCAjMjc2XVxuIgogICAgIlx0YWRk
IHI2LCByMiwgcjEsIGxzbCAjM1xuIgogICAgIlx0bXZuIHIxMCwgIzBcbiIKICAgICJcdGxkciBy
MTIsIFtyNiwgIzRdXG4iCiAgICAiXHRjbXAgcjEyLCByMTBcbiIKICAgICJcdGJuZSAiICIuTCIg
Il9vZmZsaW5lYXNtX29wR2V0QXJndW1lbnRCeVZhbFNsb3ciICJcbiIKICAgICJcdGxkciByMiwg
W3IyLCByMSwgbHNsICMzXVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZF9fNDJfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21f
X2RvbmUiICI6XG4iCiAgICAiXHRhZGRzIHIyLCAjMVxuIgogICAgIlx0bGRyIHIxLCBbcjcsICMz
Ml1cbiIKICAgICJcdGNtcCByMiwgcjFcbiIKICAgICJcdGJocyAiICIuTCIgIl9vZmZsaW5lYXNt
X29wR2V0QXJndW1lbnRCeVZhbFNsb3ciICJcbiIKICAgICJcdGxkciByNCwgW3I5LCAjNF1cbiIK
ICAgICJcdGFkZCByMTAsIHI3LCByMiwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjAsIFtyMTAsICM0
NF1cbiIKICAgICJcdGFkZCByMTAsIHI3LCByMiwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjEsIFty
MTAsICM0MF1cbiIKICAgICJcdGFkZCByMTAsIHI3LCByNCwgbHNsICMzXG4iCiAgICAiXHRzdHIg
cjAsIFtyMTAsICM0XVxuIgogICAgIlx0c3RyIHIxLCBbcjcsIHI0LCBsc2wgIzNdXG4iCiAgICAi
XHRsZHIgcjIsIFtyOSwgIzIwXVxuIgogICAgIlx0c3RyIHIwLCBbcjIsICMyMF1cbiIKICAgICJc
dHN0ciByMSwgW3IyLCAjMTZdXG4iCiAgICAiXHRhZGRzIHI5LCAjMjRcbiIKICAgICJcdGxkciBy
MTAsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMFxuIgoKICAiLkwiICJfb2ZmbGluZWFz
bV9vcEdldEFyZ3VtZW50QnlWYWxTbG93IiAiOlxuIgogICAgIlx0bW92IHIwLCByN1xuIgogICAg
Ilx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgImxsaW50X3Nsb3dfcGF0aF9nZXRfYXJndW1l
bnRfYnlfdmFsIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCiAgICAiXHRhZGRzIHI5LCAjMjRc
biIKICAgICJcdGxkciByMTAsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMFxuIgoKIi5M
IiAibGxpbnRfb3BfcHV0X2J5X3ZhbCIgIjpcbiIKICAgICJcdGxkciByMSwgW3I5LCAjMTJdXG4i
CiAgICAiXHRtb3Z3IHIxMCwgIzBcbiIKICAgICJcdG1vdnQgcjEwLCAjMTYzODRcbiIKICAgICJc
dGNtcCByMSwgcjEwXG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9f
d3JpdGVCYXJyaWVyT25PcGVyYW5kc19fNDJfbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fY29u
c3RhbnQiICJcbiIKICAgICJcdGFkZCByMTAsIHI3LCByMSwgbHNsICMzXG4iCiAgICAiXHRsZHIg
cjAsIFtyMTAsICM0XVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX193
cml0ZUJhcnJpZXJPbk9wZXJhbmRzX180Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnX19kb25l
IiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX193cml0ZUJhcnJpZXJPbk9wZXJh
bmRzX180Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnX19jb25zdGFudCIgIjpcbiIKICAgICJc
dGxkciByMCwgW3I3LCAjOF1cbiIKICAgICJcdGxkciByMCwgW3IwLCAjMjc2XVxuIgogICAgIlx0
YWRkIHIxMCwgcjAsIHIxLCBsc2wgIzNcbiIKICAgICJcdGxkciByMCwgW3IxMCwgIzRdXG4iCgog
ICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX193cml0ZUJhcnJpZXJPbk9wZXJhbmRzX180Ml9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnX19kb25lIiAiOlxuIgogICAgIlx0bXZuIHIxMCwgIzRc
biIKICAgICJcdGNtcCByMCwgcjEwXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9w
dXRCeVZhbF9fNDNfd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fd3JpdGVCYXJyaWVyRG9uZSIgIlxu
IgogICAgIlx0bGRyIHIxLCBbcjksICM0XVxuIgogICAgIlx0bW92dyByMTAsICMwXG4iCiAgICAi
XHRtb3Z0IHIxMCwgIzE2Mzg0XG4iCiAgICAiXHRjbXAgcjEsIHIxMFxuIgogICAgIlx0YmdlICIg
Ii5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfX3dyaXRlQmFycmllck9uT3BlcmFuZHNfX3dyaXRl
QmFycmllck9uT3BlcmFuZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzQzX2xvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCIgIlxuIgogICAgIlx0
YWRkIHIxMCwgcjcsIHIxLCBsc2wgIzNcbiIKICAgICJcdG12biByMTIsICM0XG4iCiAgICAiXHRs
ZHIgcjYsIFtyMTAsICM0XVxuIgogICAgIlx0Y21wIHI2LCByMTJcbiIKICAgICJcdGJuZSAiICIu
TCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX193cml0ZUJhcnJpZXJPbk9wZXJhbmRzX180M193cml0
ZUJhcnJpZXJPbk9wZXJhbmRfX3dyaXRlQmFycmllckRvbmUiICJcbiIKICAgICJcdGxkciByMiwg
W3I3LCByMSwgbHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFs
X193cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkX180M19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRh
Z0N1c3RvbV9fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fd3JpdGVC
YXJyaWVyT25PcGVyYW5kc19fd3JpdGVCYXJyaWVyT25PcGVyYW5kX19sb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZF9fNDNfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21f
X2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIyLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIy
LCBbcjIsICMyNzZdXG4iCiAgICAiXHRhZGQgcjEyLCByMiwgcjEsIGxzbCAjM1xuIgogICAgIlx0
bXZuIHI2LCAjNFxuIgogICAgIlx0bGRyIHIxMCwgW3IxMiwgIzRdXG4iCiAgICAiXHRjbXAgcjEw
LCByNlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfX3dyaXRlQmFy
cmllck9uT3BlcmFuZHNfXzQzX3dyaXRlQmFycmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9u
ZSIgIlxuIgogICAgIlx0bGRyIHIyLCBbcjIsIHIxLCBsc2wgIzNdXG4iCgogICIuTCIgIl9vZmZs
aW5lYXNtX3B1dEJ5VmFsX193cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJPbk9w
ZXJhbmRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX180M19sb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSIgIjpcbiIKICAgICJcdGxkcmIgcjEsIFtyMiwg
IzddXG4iCiAgICAiXHR0c3QgcjEsIHIxXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFz
bV9wdXRCeVZhbF9fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fNDNfd3JpdGVCYXJyaWVyT25PcGVy
YW5kX193cml0ZUJhcnJpZXJEb25lIiAiXG4iCiAgICAiXHRwdXNoIHsgcjcgfVxuIgogICAgIlx0
cHVzaCB7IHI5IH1cbiIKICAgICJcdHN1YnMgc3AsIHNwLCAjOFxuIgogICAgIlx0bW92IHIwLCBy
N1xuIgogICAgIlx0bW92IHIxLCByMlxuIgogICAgIlx0Ymx4ICIgImxsaW50X3dyaXRlX2JhcnJp
ZXJfc2xvdyIgIlxuIgogICAgIlx0YWRkcyBzcCwgIzhcbiIKICAgICJcdHBvcCB7IHI5IH1cbiIK
ICAgICJcdHBvcCB7IHI3IH1cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfX3dyaXRl
QmFycmllck9uT3BlcmFuZHNfXzQzX3dyaXRlQmFycmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVy
RG9uZSIgIjpcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfXzQzX3dyaXRlQmFycmll
ck9uT3BlcmFuZHNfX3dyaXRlQmFycmllckRvbmUiICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyOSwg
IzRdXG4iCiAgICAiXHRtb3Z3IHI2LCAjMFxuIgogICAgIlx0bW92dCByNiwgIzE2Mzg0XG4iCiAg
ICAiXHRjbXAgcjAsIHI2XG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZh
bF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzQ0X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCIgIlxuIgogICAgIlx0YWRkIHI2LCByNywgcjAs
IGxzbCAjM1xuIgogICAgIlx0bXZuIHIxMCwgIzRcbiIKICAgICJcdGxkciByMTIsIFtyNiwgIzRd
XG4iCiAgICAiXHRjbXAgcjEyLCByMTBcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNt
X3B1dEJ5VmFsX19vcFB1dEJ5VmFsU2xvdyIgIlxuIgogICAgIlx0bGRyIHIxLCBbcjcsIHIwLCBs
c2wgIzNdXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfX2xvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkX180NF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRh
Z0N1c3RvbV9fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzQ0X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
VGFnQ3VzdG9tX19jb25zdGFudCIgIjpcbiIKICAgICJcdGxkciByMSwgW3I3LCAjOF1cbiIKICAg
ICJcdGxkciByMSwgW3IxLCAjMjc2XVxuIgogICAgIlx0YWRkIHIxMCwgcjEsIHIwLCBsc2wgIzNc
biIKICAgICJcdG12biByMTIsICM0XG4iCiAgICAiXHRsZHIgcjYsIFtyMTAsICM0XVxuIgogICAg
Ilx0Y21wIHI2LCByMTJcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFs
X19vcFB1dEJ5VmFsU2xvdyIgIlxuIgogICAgIlx0bGRyIHIxLCBbcjEsIHIwLCBsc2wgIzNdXG4i
CgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZF9fNDRfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUiICI6
XG4iCiAgICAiXHRtb3YgcjIsIHIxXG4iCiAgICAiXHRsZHIgcjQsIFtyOSwgIzE2XVxuIgogICAg
Ilx0bGRyIHIwLCBbcjIsICMwXVxuIgogICAgIlx0c3RyIHIwLCBbcjQsICM0XVxuIgogICAgIlx0
bGRyYiByMiwgW3IyLCAjNF1cbiIKICAgICJcdGxkciByMCwgW3I5LCAjOF1cbiIKICAgICJcdG1v
dncgcjEyLCAjMFxuIgogICAgIlx0bW92dCByMTIsICMxNjM4NFxuIgogICAgIlx0Y21wIHIwLCBy
MTJcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX19sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZF9fNDVfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdD
dXN0b21fX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjEyLCByNywgcjAsIGxzbCAjM1xuIgog
ICAgIlx0bXZuIHI2LCAjMFxuIgogICAgIlx0bGRyIHIxMCwgW3IxMiwgIzRdXG4iCiAgICAiXHRj
bXAgcjEwLCByNlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfX29w
UHV0QnlWYWxTbG93IiAiXG4iCiAgICAiXHRsZHIgcjQsIFtyNywgcjAsIGxzbCAjM11cbiIKICAg
ICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWRfXzQ1X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25l
IiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX19sb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZF9fNDVfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2Nv
bnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHI0LCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHI0LCBb
cjQsICMyNzZdXG4iCiAgICAiXHRhZGQgcjYsIHI0LCByMCwgbHNsICMzXG4iCiAgICAiXHRtdm4g
cjEwLCAjMFxuIgogICAgIlx0bGRyIHIxMiwgW3I2LCAjNF1cbiIKICAgICJcdGNtcCByMTIsIHIx
MFxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfX29wUHV0QnlWYWxT
bG93IiAiXG4iCiAgICAiXHRsZHIgcjQsIFtyNCwgcjAsIGxzbCAjM11cbiIKCiAgIi5MIiAiX29m
ZmxpbmVhc21fcHV0QnlWYWxfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX180NV9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSIgIjpcbiIKICAgICJcdGxk
ciByMCwgW3IxLCAjOF1cbiIKICAgICJcdGFuZCByMiwgcjIsICMzMFxuIgogICAgIlx0Y21wIHIy
LCAjMjBcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX19vcFB1dEJ5
VmFsTm90SW50MzIiICJcbiIKICAgICJcdGxkciByMTAsIFtyMCwgIy04XVxuIgogICAgIlx0Y21w
IHI0LCByMTBcbiIKICAgICJcdGJocyAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX19jb250
aWd1b3VzUHV0QnlWYWxfX291dE9mQm91bmRzIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1
dEJ5VmFsX19jb250aWd1b3VzUHV0QnlWYWxfX3N0b3JlUmVzdWx0IiAiOlxuIgogICAgIlx0bGRy
IHIyLCBbcjksICMxMl1cbiIKICAgICJcdG1vdncgcjEwLCAjMFxuIgogICAgIlx0bW92dCByMTAs
ICMxNjM4NFxuIgogICAgIlx0Y21wIHIyLCByMTBcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZs
aW5lYXNtX3B1dEJ5VmFsX19jb250aWd1b3VzUHV0QnlWYWxfX3N0b3JlQ2FsbGJhY2tfX2xvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkX180Nl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZFRhZ0N1c3RvbV9fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByMTAsIHI3LCByMiwgbHNsICMz
XG4iCiAgICAiXHRtdm4gcjEyLCAjMFxuIgogICAgIlx0bGRyIHI2LCBbcjEwLCAjNF1cbiIKICAg
ICJcdGNtcCByNiwgcjEyXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZh
bF9fb3BQdXRCeVZhbFNsb3ciICJcbiIKICAgICJcdGxkciByMSwgW3I3LCByMiwgbHNsICMzXVxu
IgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX19jb250aWd1b3VzUHV0QnlW
YWxfX3N0b3JlQ2FsbGJhY2tfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX180Nl9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSIgIlxuIgoKICAiLkwiICJf
b2ZmbGluZWFzbV9wdXRCeVZhbF9fY29udGlndW91c1B1dEJ5VmFsX19zdG9yZUNhbGxiYWNrX19s
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNDZfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWRUYWdDdXN0b21fX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIxLCBbcjcsICM4XVxu
IgogICAgIlx0bGRyIHIxLCBbcjEsICMyNzZdXG4iCiAgICAiXHRhZGQgcjEyLCByMSwgcjIsIGxz
bCAjM1xuIgogICAgIlx0bXZuIHI2LCAjMFxuIgogICAgIlx0bGRyIHIxMCwgW3IxMiwgIzRdXG4i
CiAgICAiXHRjbXAgcjEwLCByNlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fcHV0
QnlWYWxfX29wUHV0QnlWYWxTbG93IiAiXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgcjIsIGxzbCAj
M11cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfX2NvbnRpZ3VvdXNQdXRCeVZhbF9f
c3RvcmVDYWxsYmFja19fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzQ2X2xvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lIiAiOlxuIgogICAgIlx0YWRkIHI2
LCByMCwgcjQsIGxzbCAjM1xuIgogICAgIlx0bXZuIHIxMCwgIzBcbiIKICAgICJcdHN0ciByMTAs
IFtyNiwgIzRdXG4iCiAgICAiXHRzdHIgcjEsIFtyMCwgcjQsIGxzbCAjM11cbiIKICAgICJcdGFk
ZHMgcjksICMyMFxuIgogICAgIlx0bGRyIHI2LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCBy
NlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fY29udGlndW91c1B1dEJ5VmFsX19v
dXRPZkJvdW5kcyIgIjpcbiIKICAgICJcdGxkciByNiwgW3IwLCAjLTRdXG4iCiAgICAiXHRjbXAg
cjQsIHI2XG4iCiAgICAiXHRiaHMgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fb3BQdXRC
eVZhbE91dE9mQm91bmRzIiAiXG4iCiAgICAiXHRsZHIgcjIsIFtyOSwgIzE2XVxuIgogICAgIlx0
bW92IHI2LCAjMVxuIgogICAgIlx0c3RyYiByNiwgW3IyLCAjOF1cbiIKICAgICJcdGFkZHMgcjIs
IHI0LCAjMVxuIgogICAgIlx0c3RyIHIyLCBbcjAsICMtOF1cbiIKICAgICJcdGIgIiAiLkwiICJf
b2ZmbGluZWFzbV9wdXRCeVZhbF9fY29udGlndW91c1B1dEJ5VmFsX19zdG9yZVJlc3VsdCIgIlxu
IgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fb3BQdXRCeVZhbE5vdEludDMyIiAiOlxu
IgogICAgIlx0Y21wIHIyLCAjMjJcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX3B1
dEJ5VmFsX19vcFB1dEJ5VmFsTm90RG91YmxlIiAiXG4iCiAgICAiXHRsZHIgcjYsIFtyMCwgIy04
XVxuIgogICAgIlx0Y21wIHI0LCByNlxuIgogICAgIlx0YmhzICIgIi5MIiAiX29mZmxpbmVhc21f
cHV0QnlWYWxfXzQ2X2NvbnRpZ3VvdXNQdXRCeVZhbF9fb3V0T2ZCb3VuZHMiICJcbiIKCiAgIi5M
IiAiX29mZmxpbmVhc21fcHV0QnlWYWxfXzQ2X2NvbnRpZ3VvdXNQdXRCeVZhbF9fc3RvcmVSZXN1
bHQiICI6XG4iCiAgICAiXHRsZHIgcjIsIFtyOSwgIzEyXVxuIgogICAgIlx0bW92dyByNiwgIzBc
biIKICAgICJcdG1vdnQgcjYsICMxNjM4NFxuIgogICAgIlx0Y21wIHIyLCByNlxuIgogICAgIlx0
YmdlICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfX2NvbnRpZ3VvdXNQdXRCeVZhbF9fc3Rv
cmVDYWxsYmFja19fNDZfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50IiAiXG4i
CiAgICAiXHRhZGQgcjYsIHI3LCByMiwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjEsIFtyNiwgIzRd
XG4iCiAgICAiXHRsZHIgcjIsIFtyNywgcjIsIGxzbCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJf
b2ZmbGluZWFzbV9wdXRCeVZhbF9fY29udGlndW91c1B1dEJ5VmFsX19zdG9yZUNhbGxiYWNrX180
Nl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGlu
ZWFzbV9wdXRCeVZhbF9fY29udGlndW91c1B1dEJ5VmFsX19zdG9yZUNhbGxiYWNrX180Nl9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQiICI6XG4iCiAgICAiXHRsZHIgcjEsIFty
NywgIzhdXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgIzI3Nl1cbiIKICAgICJcdGxzbHMgcjIsIHIy
LCAjM1xuIgogICAgIlx0YWRkIHIxLCByMlxuIgogICAgIlx0bGRyIHIyLCBbcjEsICMwXVxuIgog
ICAgIlx0bGRyIHIxLCBbcjEsICM0XVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9f
Y29udGlndW91c1B1dEJ5VmFsX19zdG9yZUNhbGxiYWNrX180Nl9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZ19fZG9uZSIgIjpcbiIKICAgICJcdG12biByNiwgIzBcbiIKICAgICJcdGNtcCByMSwg
cjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX19jb250aWd1b3Vz
UHV0QnlWYWxfX3N0b3JlQ2FsbGJhY2tfX25vdEludCIgIlxuIgogICAgIlx0dm1vdiBzMCwgcjJc
biIKICAgICJcdHZjdnQuZjY0LnMzMiBkMCwgczBcbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGlu
ZWFzbV9wdXRCeVZhbF9fY29udGlndW91c1B1dEJ5VmFsX19zdG9yZUNhbGxiYWNrX19yZWFkeSIg
IlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fY29udGlndW91c1B1dEJ5VmFsX19z
dG9yZUNhbGxiYWNrX19ub3RJbnQiICI6XG4iCiAgICAiXHR2bW92IGQwLCByMiwgcjFcbiIKICAg
ICJcdHZjbXBlLmY2NCBkMCwgZDBcbiIKICAgICJcdHZtcnMgYXBzcl9uemN2LCBmcHNjclxuIgog
ICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfX29wUHV0QnlWYWxTbG93IiAi
XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX19jb250aWd1b3VzUHV0QnlWYWxfX3N0
b3JlQ2FsbGJhY2tfX3JlYWR5IiAiOlxuIgogICAgIlx0YWRkIHI2LCByMCwgcjQsIGxzbCAjM1xu
IgogICAgIlx0dnN0ci42NCBkMCwgW3I2LCAjMF1cbiIKICAgICJcdGFkZHMgcjksICMyMFxuIgog
ICAgIlx0bGRyIHI2LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxuIgoKICAiLkwiICJf
b2ZmbGluZWFzbV9wdXRCeVZhbF9fNDZfY29udGlndW91c1B1dEJ5VmFsX19vdXRPZkJvdW5kcyIg
IjpcbiIKICAgICJcdGxkciByNiwgW3IwLCAjLTRdXG4iCiAgICAiXHRjbXAgcjQsIHI2XG4iCiAg
ICAiXHRiaHMgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fb3BQdXRCeVZhbE91dE9mQm91
bmRzIiAiXG4iCiAgICAiXHRsZHIgcjIsIFtyOSwgIzE2XVxuIgogICAgIlx0bW92IHI2LCAjMVxu
IgogICAgIlx0c3RyYiByNiwgW3IyLCAjOF1cbiIKICAgICJcdGFkZHMgcjIsIHI0LCAjMVxuIgog
ICAgIlx0c3RyIHIyLCBbcjAsICMtOF1cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9w
dXRCeVZhbF9fNDZfY29udGlndW91c1B1dEJ5VmFsX19zdG9yZVJlc3VsdCIgIlxuIgoKICAiLkwi
ICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fb3BQdXRCeVZhbE5vdERvdWJsZSIgIjpcbiIKICAgICJc
dGNtcCByMiwgIzI2XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9f
b3BQdXRCeVZhbE5vdENvbnRpZ3VvdXMiICJcbiIKICAgICJcdGxkciByNiwgW3IwLCAjLThdXG4i
CiAgICAiXHRjbXAgcjQsIHI2XG4iCiAgICAiXHRiaHMgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRC
eVZhbF9fNDdfY29udGlndW91c1B1dEJ5VmFsX19vdXRPZkJvdW5kcyIgIlxuIgoKICAiLkwiICJf
b2ZmbGluZWFzbV9wdXRCeVZhbF9fNDdfY29udGlndW91c1B1dEJ5VmFsX19zdG9yZVJlc3VsdCIg
IjpcbiIKICAgICJcdGxkciByMiwgW3I5LCAjMTJdXG4iCiAgICAiXHRtb3Z3IHI2LCAjMFxuIgog
ICAgIlx0bW92dCByNiwgIzE2Mzg0XG4iCiAgICAiXHRjbXAgcjIsIHI2XG4iCiAgICAiXHRiZ2Ug
IiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fY29udGlndW91c1B1dEJ5VmFsX19zdG9yZUNh
bGxiYWNrX180N19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQiICJcbiIKICAg
ICJcdGFkZCByNiwgcjcsIHIyLCBsc2wgIzNcbiIKICAgICJcdGxkciByMSwgW3I2LCAjNF1cbiIK
ICAgICJcdGxkciByMiwgW3I3LCByMiwgbHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZs
aW5lYXNtX3B1dEJ5VmFsX19jb250aWd1b3VzUHV0QnlWYWxfX3N0b3JlQ2FsbGJhY2tfXzQ3X2xv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNt
X3B1dEJ5VmFsX19jb250aWd1b3VzUHV0QnlWYWxfX3N0b3JlQ2FsbGJhY2tfXzQ3X2xvYWRDb25z
dGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCIgIjpcbiIKICAgICJcdGxkciByMSwgW3I3LCAj
OF1cbiIKICAgICJcdGxkciByMSwgW3IxLCAjMjc2XVxuIgogICAgIlx0bHNscyByMiwgcjIsICMz
XG4iCiAgICAiXHRhZGQgcjEsIHIyXG4iCiAgICAiXHRsZHIgcjIsIFtyMSwgIzBdXG4iCiAgICAi
XHRsZHIgcjEsIFtyMSwgIzRdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX19jb250
aWd1b3VzUHV0QnlWYWxfX3N0b3JlQ2FsbGJhY2tfXzQ3X2xvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnX19kb25lIiAiOlxuIgogICAgIlx0YWRkIHI2LCByMCwgcjQsIGxzbCAjM1xuIgogICAgIlx0
c3RyIHIxLCBbcjYsICM0XVxuIgogICAgIlx0c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzNdXG4iCiAg
ICAiXHRhZGRzIHI5LCAjMjBcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1v
diBwYywgcjZcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfXzQ3X2NvbnRpZ3VvdXNQ
dXRCeVZhbF9fb3V0T2ZCb3VuZHMiICI6XG4iCiAgICAiXHRsZHIgcjYsIFtyMCwgIy00XVxuIgog
ICAgIlx0Y21wIHI0LCByNlxuIgogICAgIlx0YmhzICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlW
YWxfX29wUHV0QnlWYWxPdXRPZkJvdW5kcyIgIlxuIgogICAgIlx0bGRyIHIyLCBbcjksICMxNl1c
biIKICAgICJcdG1vdiByNiwgIzFcbiIKICAgICJcdHN0cmIgcjYsIFtyMiwgIzhdXG4iCiAgICAi
XHRhZGRzIHIyLCByNCwgIzFcbiIKICAgICJcdHN0ciByMiwgW3IwLCAjLThdXG4iCiAgICAiXHRi
ICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfXzQ3X2NvbnRpZ3VvdXNQdXRCeVZhbF9fc3Rv
cmVSZXN1bHQiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfX29wUHV0QnlWYWxO
b3RDb250aWd1b3VzIiAiOlxuIgogICAgIlx0Y21wIHIyLCAjMjhcbiIKICAgICJcdGJuZSAiICIu
TCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX19vcFB1dEJ5VmFsU2xvdyIgIlxuIgogICAgIlx0bGRy
IHI2LCBbcjAsICMtNF1cbiIKICAgICJcdGNtcCByNCwgcjZcbiIKICAgICJcdGJocyAiICIuTCIg
Il9vZmZsaW5lYXNtX3B1dEJ5VmFsX19vcFB1dEJ5VmFsT3V0T2ZCb3VuZHMiICJcbiIKICAgICJc
dGFkZCByNiwgcjAsIHI0LCBsc2wgIzNcbiIKICAgICJcdG12biByMTAsICM1XG4iCiAgICAiXHRs
ZHIgcjEyLCBbcjYsICMyMF1cbiIKICAgICJcdGNtcCByMTIsIHIxMFxuIgogICAgIlx0YmVxICIg
Ii5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfX29wUHV0QnlWYWxBcnJheVN0b3JhZ2VFbXB0eSIg
IlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fb3BQdXRCeVZhbEFycmF5U3RvcmFn
ZVN0b3JlUmVzdWx0IiAiOlxuIgogICAgIlx0bGRyIHIyLCBbcjksICMxMl1cbiIKICAgICJcdG1v
dncgcjEwLCAjMFxuIgogICAgIlx0bW92dCByMTAsICMxNjM4NFxuIgogICAgIlx0Y21wIHIyLCBy
MTBcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX180OF9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByMTAsIHI3LCBy
MiwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjEsIFtyMTAsICM0XVxuIgogICAgIlx0bGRyIHIyLCBb
cjcsIHIyLCBsc2wgIzNdXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxf
XzQ4X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZs
aW5lYXNtX3B1dEJ5VmFsX180OF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQi
ICI6XG4iCiAgICAiXHRsZHIgcjEsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgIzI3
Nl1cbiIKICAgICJcdGxzbHMgcjIsIHIyLCAjM1xuIgogICAgIlx0YWRkIHIxLCByMlxuIgogICAg
Ilx0bGRyIHIyLCBbcjEsICMwXVxuIgogICAgIlx0bGRyIHIxLCBbcjEsICM0XVxuIgoKICAiLkwi
ICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fNDhfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2Rv
bmUiICI6XG4iCiAgICAiXHRhZGQgcjEwLCByMCwgcjQsIGxzbCAjM1xuIgogICAgIlx0c3RyIHIx
LCBbcjEwLCAjMjBdXG4iCiAgICAiXHRhZGQgcjEwLCByMCwgcjQsIGxzbCAjM1xuIgogICAgIlx0
c3RyIHIyLCBbcjEwLCAjMTZdXG4iCiAgICAiXHRhZGRzIHI5LCAjMjBcbiIKICAgICJcdGxkciBy
MTAsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMFxuIgoKICAiLkwiICJfb2ZmbGluZWFz
bV9wdXRCeVZhbF9fb3BQdXRCeVZhbEFycmF5U3RvcmFnZUVtcHR5IiAiOlxuIgogICAgIlx0bGRy
IHIxLCBbcjksICMxNl1cbiIKICAgICJcdG1vdiByMTAsICMxXG4iCiAgICAiXHRzdHJiIHIxMCwg
W3IxLCAjOF1cbiIKICAgICJcdGxkciByMTAsIFtyMCwgIzhdXG4iCiAgICAiXHRhZGRzIHIxMCwg
IzFcbiIKICAgICJcdHN0ciByMTAsIFtyMCwgIzhdXG4iCiAgICAiXHRsZHIgcjEwLCBbcjAsICMt
OF1cbiIKICAgICJcdGNtcCByNCwgcjEwXG4iCiAgICAiXHRibG8gIiAiLkwiICJfb2ZmbGluZWFz
bV9wdXRCeVZhbF9fb3BQdXRCeVZhbEFycmF5U3RvcmFnZVN0b3JlUmVzdWx0IiAiXG4iCiAgICAi
XHRhZGRzIHIxLCByNCwgIzFcbiIKICAgICJcdHN0ciByMSwgW3IwLCAjLThdXG4iCiAgICAiXHRi
ICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfX29wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9y
ZVJlc3VsdCIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fb3BQdXRCeVZhbE91
dE9mQm91bmRzIiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjksICMxNl1cbiIKICAgICJcdG1vdiBy
MTAsICMxXG4iCiAgICAiXHRzdHJiIHIxMCwgW3IwLCAjOV1cbiIKCiAgIi5MIiAiX29mZmxpbmVh
c21fcHV0QnlWYWxfX29wUHV0QnlWYWxTbG93IiAiOlxuIgogICAgIlx0bW92IHIwLCByN1xuIgog
ICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgImxsaW50X3Nsb3dfcGF0aF9wdXRfYnlf
dmFsIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCiAgICAiXHRhZGRzIHI5LCAjMjBcbiIKICAg
ICJcdGxkciByMTAsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMFxuIgoKIi5MIiAibGxp
bnRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QiICI6XG4iCiAgICAiXHRsZHIgcjEsIFtyOSwgIzEyXVxu
IgogICAgIlx0bW92dyByMTAsICMwXG4iCiAgICAiXHRtb3Z0IHIxMCwgIzE2Mzg0XG4iCiAgICAi
XHRjbXAgcjEsIHIxMFxuIgogICAgIlx0YmdlICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxf
X3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzQ4X2xvYWRDb25zdGFudE9yVmFyaWFibGVUYWdfX2Nv
bnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjEwLCByNywgcjEsIGxzbCAjM1xuIgogICAgIlx0bGRy
IHIwLCBbcjEwLCAjNF1cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9f
d3JpdGVCYXJyaWVyT25PcGVyYW5kc19fNDhfbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fZG9u
ZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fd3JpdGVCYXJyaWVyT25PcGVy
YW5kc19fNDhfbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fY29uc3RhbnQiICI6XG4iCiAgICAi
XHRsZHIgcjAsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjAsIFtyMCwgIzI3Nl1cbiIKICAgICJc
dGFkZCByMTAsIHIwLCByMSwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjAsIFtyMTAsICM0XVxuIgoK
ICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fNDhf
bG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fZG9uZSIgIjpcbiIKICAgICJcdG12biByMTAsICM0
XG4iCiAgICAiXHRjbXAgcjAsIHIxMFxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21f
cHV0QnlWYWxfXzQ4X3dyaXRlQmFycmllck9uT3BlcmFuZHNfX3dyaXRlQmFycmllckRvbmUiICJc
biIKICAgICJcdGxkciByMSwgW3I5LCAjNF1cbiIKICAgICJcdG1vdncgcjEwLCAjMFxuIgogICAg
Ilx0bW92dCByMTAsICMxNjM4NFxuIgogICAgIlx0Y21wIHIxLCByMTBcbiIKICAgICJcdGJnZSAi
ICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX193cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0
ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX180OF9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQiICJcbiIKICAgICJc
dGFkZCByMTAsIHI3LCByMSwgbHNsICMzXG4iCiAgICAiXHRtdm4gcjEyLCAjNFxuIgogICAgIlx0
bGRyIHI2LCBbcjEwLCAjNF1cbiIKICAgICJcdGNtcCByNiwgcjEyXG4iCiAgICAiXHRibmUgIiAi
LkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fNDhfd3Jp
dGVCYXJyaWVyT25PcGVyYW5kX193cml0ZUJhcnJpZXJEb25lIiAiXG4iCiAgICAiXHRsZHIgcjIs
IFtyNywgcjEsIGxzbCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZh
bF9fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fd3JpdGVCYXJyaWVyT25PcGVyYW5kX19sb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNDhfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRU
YWdDdXN0b21fX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfX3dyaXRl
QmFycmllck9uT3BlcmFuZHNfX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRfXzQ4X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9t
X19jb25zdGFudCIgIjpcbiIKICAgICJcdGxkciByMiwgW3I3LCAjOF1cbiIKICAgICJcdGxkciBy
MiwgW3IyLCAjMjc2XVxuIgogICAgIlx0YWRkIHIxMiwgcjIsIHIxLCBsc2wgIzNcbiIKICAgICJc
dG12biByNiwgIzRcbiIKICAgICJcdGxkciByMTAsIFtyMTIsICM0XVxuIgogICAgIlx0Y21wIHIx
MCwgcjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX193cml0ZUJh
cnJpZXJPbk9wZXJhbmRzX180OF93cml0ZUJhcnJpZXJPbk9wZXJhbmRfX3dyaXRlQmFycmllckRv
bmUiICJcbiIKICAgICJcdGxkciByMiwgW3IyLCByMSwgbHNsICMzXVxuIgoKICAiLkwiICJfb2Zm
bGluZWFzbV9wdXRCeVZhbF9fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fd3JpdGVCYXJyaWVyT25P
cGVyYW5kX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNDhfbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUiICI6XG4iCiAgICAiXHRsZHJiIHIxLCBbcjIs
ICM3XVxuIgogICAgIlx0dHN0IHIxLCByMVxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVh
c21fcHV0QnlWYWxfX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzQ4X3dyaXRlQmFycmllck9uT3Bl
cmFuZF9fd3JpdGVCYXJyaWVyRG9uZSIgIlxuIgogICAgIlx0cHVzaCB7IHI3IH1cbiIKICAgICJc
dHB1c2ggeyByOSB9XG4iCiAgICAiXHRzdWJzIHNwLCBzcCwgIzhcbiIKICAgICJcdG1vdiByMCwg
cjdcbiIKICAgICJcdG1vdiByMSwgcjJcbiIKICAgICJcdGJseCAiICJsbGludF93cml0ZV9iYXJy
aWVyX3Nsb3ciICJcbiIKICAgICJcdGFkZHMgc3AsICM4XG4iCiAgICAiXHRwb3AgeyByOSB9XG4i
CiAgICAiXHRwb3AgeyByNyB9XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX193cml0
ZUJhcnJpZXJPbk9wZXJhbmRzX180OF93cml0ZUJhcnJpZXJPbk9wZXJhbmRfX3dyaXRlQmFycmll
ckRvbmUiICI6XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX180OF93cml0ZUJhcnJp
ZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJEb25lIiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjks
ICM0XVxuIgogICAgIlx0bW92dyByNiwgIzBcbiIKICAgICJcdG1vdnQgcjYsICMxNjM4NFxuIgog
ICAgIlx0Y21wIHIwLCByNlxuIgogICAgIlx0YmdlICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlW
YWxfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX180OV9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByNiwgcjcsIHIw
LCBsc2wgIzNcbiIKICAgICJcdG12biByMTAsICM0XG4iCiAgICAiXHRsZHIgcjEyLCBbcjYsICM0
XVxuIgogICAgIlx0Y21wIHIxMiwgcjEwXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFz
bV81M19wdXRCeVZhbF9fb3BQdXRCeVZhbFNsb3ciICJcbiIKICAgICJcdGxkciByMSwgW3I3LCBy
MCwgbHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX19sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNDlfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRUYWdDdXN0b21fX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfX2xv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX180OV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQiICI6XG4iCiAgICAiXHRsZHIgcjEsIFtyNywgIzhdXG4i
CiAgICAiXHRsZHIgcjEsIFtyMSwgIzI3Nl1cbiIKICAgICJcdGFkZCByMTAsIHIxLCByMCwgbHNs
ICMzXG4iCiAgICAiXHRtdm4gcjEyLCAjNFxuIgogICAgIlx0bGRyIHI2LCBbcjEwLCAjNF1cbiIK
ICAgICJcdGNtcCByNiwgcjEyXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV81M19w
dXRCeVZhbF9fb3BQdXRCeVZhbFNsb3ciICJcbiIKICAgICJcdGxkciByMSwgW3IxLCByMCwgbHNs
ICMzXVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWRfXzQ5X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19k
b25lIiAiOlxuIgogICAgIlx0bW92IHIyLCByMVxuIgogICAgIlx0bGRyIHI0LCBbcjksICMxNl1c
biIKICAgICJcdGxkciByMCwgW3IyLCAjMF1cbiIKICAgICJcdHN0ciByMCwgW3I0LCAjNF1cbiIK
ICAgICJcdGxkcmIgcjIsIFtyMiwgIzRdXG4iCiAgICAiXHRsZHIgcjAsIFtyOSwgIzhdXG4iCiAg
ICAiXHRtb3Z3IHIxMiwgIzBcbiIKICAgICJcdG1vdnQgcjEyLCAjMTYzODRcbiIKICAgICJcdGNt
cCByMCwgcjEyXG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzUwX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkVGFnQ3VzdG9tX19jb25zdGFudCIgIlxuIgogICAgIlx0YWRkIHIxMiwgcjcsIHIwLCBsc2wg
IzNcbiIKICAgICJcdG12biByNiwgIzBcbiIKICAgICJcdGxkciByMTAsIFtyMTIsICM0XVxuIgog
ICAgIlx0Y21wIHIxMCwgcjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtXzUzX3B1
dEJ5VmFsX19vcFB1dEJ5VmFsU2xvdyIgIlxuIgogICAgIlx0bGRyIHI0LCBbcjcsIHIwLCBsc2wg
IzNdXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfX2xvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkX181MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1
c3RvbV9fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWRfXzUwX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFn
Q3VzdG9tX19jb25zdGFudCIgIjpcbiIKICAgICJcdGxkciByNCwgW3I3LCAjOF1cbiIKICAgICJc
dGxkciByNCwgW3I0LCAjMjc2XVxuIgogICAgIlx0YWRkIHI2LCByNCwgcjAsIGxzbCAjM1xuIgog
ICAgIlx0bXZuIHIxMCwgIzBcbiIKICAgICJcdGxkciByMTIsIFtyNiwgIzRdXG4iCiAgICAiXHRj
bXAgcjEyLCByMTBcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtXzUzX3B1dEJ5VmFs
X19vcFB1dEJ5VmFsU2xvdyIgIlxuIgogICAgIlx0bGRyIHI0LCBbcjQsIHIwLCBsc2wgIzNdXG4i
CgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZF9fNTBfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUiICI6
XG4iCiAgICAiXHRsZHIgcjAsIFtyMSwgIzhdXG4iCiAgICAiXHRhbmQgcjIsIHIyLCAjMzBcbiIK
ICAgICJcdGNtcCByMiwgIzIwXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV81M19w
dXRCeVZhbF9fb3BQdXRCeVZhbE5vdEludDMyIiAiXG4iCiAgICAiXHRsZHIgcjEwLCBbcjAsICMt
OF1cbiIKICAgICJcdGNtcCByNCwgcjEwXG4iCiAgICAiXHRiaHMgIiAiLkwiICJfb2ZmbGluZWFz
bV9wdXRCeVZhbF9fNTFfY29udGlndW91c1B1dEJ5VmFsX19vdXRPZkJvdW5kcyIgIlxuIgoKICAi
LkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fNTFfY29udGlndW91c1B1dEJ5VmFsX19zdG9yZVJl
c3VsdCIgIjpcbiIKICAgICJcdGxkciByMiwgW3I5LCAjMTJdXG4iCiAgICAiXHRtb3Z3IHIxMCwg
IzBcbiIKICAgICJcdG1vdnQgcjEwLCAjMTYzODRcbiIKICAgICJcdGNtcCByMiwgcjEwXG4iCiAg
ICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fY29udGlndW91c1B1dEJ5VmFs
X19zdG9yZUNhbGxiYWNrX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNTFfbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50IiAiXG4iCiAgICAiXHRh
ZGQgcjEwLCByNywgcjIsIGxzbCAjM1xuIgogICAgIlx0bXZuIHIxMiwgIzBcbiIKICAgICJcdGxk
ciByNiwgW3IxMCwgIzRdXG4iCiAgICAiXHRjbXAgcjYsIHIxMlxuIgogICAgIlx0Ym5lICIgIi5M
IiAiX29mZmxpbmVhc21fNTNfcHV0QnlWYWxfX29wUHV0QnlWYWxTbG93IiAiXG4iCiAgICAiXHRs
ZHIgcjEsIFtyNywgcjIsIGxzbCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9w
dXRCeVZhbF9fY29udGlndW91c1B1dEJ5VmFsX19zdG9yZUNhbGxiYWNrX19sb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZF9fNTFfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0
b21fX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfX2NvbnRpZ3VvdXNQ
dXRCeVZhbF9fc3RvcmVDYWxsYmFja19fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzUx
X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCIgIjpcbiIK
ICAgICJcdGxkciByMSwgW3I3LCAjOF1cbiIKICAgICJcdGxkciByMSwgW3IxLCAjMjc2XVxuIgog
ICAgIlx0YWRkIHIxMiwgcjEsIHIyLCBsc2wgIzNcbiIKICAgICJcdG12biByNiwgIzBcbiIKICAg
ICJcdGxkciByMTAsIFtyMTIsICM0XVxuIgogICAgIlx0Y21wIHIxMCwgcjZcbiIKICAgICJcdGJu
ZSAiICIuTCIgIl9vZmZsaW5lYXNtXzUzX3B1dEJ5VmFsX19vcFB1dEJ5VmFsU2xvdyIgIlxuIgog
ICAgIlx0bGRyIHIxLCBbcjEsIHIyLCBsc2wgIzNdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1
dEJ5VmFsX19jb250aWd1b3VzUHV0QnlWYWxfX3N0b3JlQ2FsbGJhY2tfX2xvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkX181MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3Rv
bV9fZG9uZSIgIjpcbiIKICAgICJcdGFkZCByNiwgcjAsIHI0LCBsc2wgIzNcbiIKICAgICJcdG12
biByMTAsICMwXG4iCiAgICAiXHRzdHIgcjEwLCBbcjYsICM0XVxuIgogICAgIlx0c3RyIHIxLCBb
cjAsIHI0LCBsc2wgIzNdXG4iCiAgICAiXHRhZGRzIHI5LCAjMjBcbiIKICAgICJcdGxkciByNiwg
W3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0
QnlWYWxfXzUxX2NvbnRpZ3VvdXNQdXRCeVZhbF9fb3V0T2ZCb3VuZHMiICI6XG4iCiAgICAiXHRs
ZHIgcjYsIFtyMCwgIy00XVxuIgogICAgIlx0Y21wIHI0LCByNlxuIgogICAgIlx0YmhzICIgIi5M
IiAiX29mZmxpbmVhc21fNTNfcHV0QnlWYWxfX29wUHV0QnlWYWxPdXRPZkJvdW5kcyIgIlxuIgog
ICAgIlx0bGRyIHIyLCBbcjksICMxNl1cbiIKICAgICJcdG1vdiByNiwgIzFcbiIKICAgICJcdHN0
cmIgcjYsIFtyMiwgIzhdXG4iCiAgICAiXHRhZGRzIHIyLCByNCwgIzFcbiIKICAgICJcdHN0ciBy
MiwgW3IwLCAjLThdXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfXzUx
X2NvbnRpZ3VvdXNQdXRCeVZhbF9fc3RvcmVSZXN1bHQiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVh
c21fNTNfcHV0QnlWYWxfX29wUHV0QnlWYWxOb3RJbnQzMiIgIjpcbiIKICAgICJcdGNtcCByMiwg
IzIyXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV81M19wdXRCeVZhbF9fb3BQdXRC
eVZhbE5vdERvdWJsZSIgIlxuIgogICAgIlx0bGRyIHI2LCBbcjAsICMtOF1cbiIKICAgICJcdGNt
cCByNCwgcjZcbiIKICAgICJcdGJocyAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX181Ml9j
b250aWd1b3VzUHV0QnlWYWxfX291dE9mQm91bmRzIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNt
X3B1dEJ5VmFsX181Ml9jb250aWd1b3VzUHV0QnlWYWxfX3N0b3JlUmVzdWx0IiAiOlxuIgogICAg
Ilx0bGRyIHIyLCBbcjksICMxMl1cbiIKICAgICJcdG1vdncgcjYsICMwXG4iCiAgICAiXHRtb3Z0
IHI2LCAjMTYzODRcbiIKICAgICJcdGNtcCByMiwgcjZcbiIKICAgICJcdGJnZSAiICIuTCIgIl9v
ZmZsaW5lYXNtX3B1dEJ5VmFsX19jb250aWd1b3VzUHV0QnlWYWxfX3N0b3JlQ2FsbGJhY2tfXzUx
X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCIgIlxuIgogICAgIlx0YWRkIHI2
LCByNywgcjIsIGxzbCAjM1xuIgogICAgIlx0bGRyIHIxLCBbcjYsICM0XVxuIgogICAgIlx0bGRy
IHIyLCBbcjcsIHIyLCBsc2wgIzNdXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fcHV0
QnlWYWxfX2NvbnRpZ3VvdXNQdXRCeVZhbF9fc3RvcmVDYWxsYmFja19fNTFfbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWdfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxf
X2NvbnRpZ3VvdXNQdXRCeVZhbF9fc3RvcmVDYWxsYmFja19fNTFfbG9hZENvbnN0YW50T3JWYXJp
YWJsZTJSZWdfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIxLCBbcjcsICM4XVxuIgogICAg
Ilx0bGRyIHIxLCBbcjEsICMyNzZdXG4iCiAgICAiXHRsc2xzIHIyLCByMiwgIzNcbiIKICAgICJc
dGFkZCByMSwgcjJcbiIKICAgICJcdGxkciByMiwgW3IxLCAjMF1cbiIKICAgICJcdGxkciByMSwg
W3IxLCAjNF1cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfX2NvbnRpZ3VvdXNQdXRC
eVZhbF9fc3RvcmVDYWxsYmFja19fNTFfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUi
ICI6XG4iCiAgICAiXHRtdm4gcjYsICMwXG4iCiAgICAiXHRjbXAgcjEsIHI2XG4iCiAgICAiXHRi
bmUgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fY29udGlndW91c1B1dEJ5VmFsX181MV9z
dG9yZUNhbGxiYWNrX19ub3RJbnQiICJcbiIKICAgICJcdHZtb3YgczAsIHIyXG4iCiAgICAiXHR2
Y3Z0LmY2NC5zMzIgZDAsIHMwXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlW
YWxfX2NvbnRpZ3VvdXNQdXRCeVZhbF9fNTFfc3RvcmVDYWxsYmFja19fcmVhZHkiICJcbiIKCiAg
Ii5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfX2NvbnRpZ3VvdXNQdXRCeVZhbF9fNTFfc3RvcmVD
YWxsYmFja19fbm90SW50IiAiOlxuIgogICAgIlx0dm1vdiBkMCwgcjIsIHIxXG4iCiAgICAiXHR2
Y21wZS5mNjQgZDAsIGQwXG4iCiAgICAiXHR2bXJzIGFwc3JfbnpjdiwgZnBzY3JcbiIKICAgICJc
dGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtXzUzX3B1dEJ5VmFsX19vcFB1dEJ5VmFsU2xvdyIgIlxu
IgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fY29udGlndW91c1B1dEJ5VmFsX181MV9z
dG9yZUNhbGxiYWNrX19yZWFkeSIgIjpcbiIKICAgICJcdGFkZCByNiwgcjAsIHI0LCBsc2wgIzNc
biIKICAgICJcdHZzdHIuNjQgZDAsIFtyNiwgIzBdXG4iCiAgICAiXHRhZGRzIHI5LCAjMjBcbiIK
ICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIKCiAgIi5MIiAi
X29mZmxpbmVhc21fcHV0QnlWYWxfXzUyX2NvbnRpZ3VvdXNQdXRCeVZhbF9fb3V0T2ZCb3VuZHMi
ICI6XG4iCiAgICAiXHRsZHIgcjYsIFtyMCwgIy00XVxuIgogICAgIlx0Y21wIHI0LCByNlxuIgog
ICAgIlx0YmhzICIgIi5MIiAiX29mZmxpbmVhc21fNTNfcHV0QnlWYWxfX29wUHV0QnlWYWxPdXRP
ZkJvdW5kcyIgIlxuIgogICAgIlx0bGRyIHIyLCBbcjksICMxNl1cbiIKICAgICJcdG1vdiByNiwg
IzFcbiIKICAgICJcdHN0cmIgcjYsIFtyMiwgIzhdXG4iCiAgICAiXHRhZGRzIHIyLCByNCwgIzFc
biIKICAgICJcdHN0ciByMiwgW3IwLCAjLThdXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVh
c21fcHV0QnlWYWxfXzUyX2NvbnRpZ3VvdXNQdXRCeVZhbF9fc3RvcmVSZXN1bHQiICJcbiIKCiAg
Ii5MIiAiX29mZmxpbmVhc21fNTNfcHV0QnlWYWxfX29wUHV0QnlWYWxOb3REb3VibGUiICI6XG4i
CiAgICAiXHRjbXAgcjIsICMyNlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fNTNf
cHV0QnlWYWxfX29wUHV0QnlWYWxOb3RDb250aWd1b3VzIiAiXG4iCiAgICAiXHRsZHIgcjYsIFty
MCwgIy04XVxuIgogICAgIlx0Y21wIHI0LCByNlxuIgogICAgIlx0YmhzICIgIi5MIiAiX29mZmxp
bmVhc21fcHV0QnlWYWxfXzUzX2NvbnRpZ3VvdXNQdXRCeVZhbF9fb3V0T2ZCb3VuZHMiICJcbiIK
CiAgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfXzUzX2NvbnRpZ3VvdXNQdXRCeVZhbF9fc3Rv
cmVSZXN1bHQiICI6XG4iCiAgICAiXHRsZHIgcjIsIFtyOSwgIzEyXVxuIgogICAgIlx0bW92dyBy
NiwgIzBcbiIKICAgICJcdG1vdnQgcjYsICMxNjM4NFxuIgogICAgIlx0Y21wIHIyLCByNlxuIgog
ICAgIlx0YmdlICIgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfX2NvbnRpZ3VvdXNQdXRCeVZh
bF9fc3RvcmVDYWxsYmFja19fNTJfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50
IiAiXG4iCiAgICAiXHRhZGQgcjYsIHI3LCByMiwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjEsIFty
NiwgIzRdXG4iCiAgICAiXHRsZHIgcjIsIFtyNywgcjIsIGxzbCAjM11cbiIKICAgICJcdGIgIiAi
LkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fY29udGlndW91c1B1dEJ5VmFsX19zdG9yZUNhbGxi
YWNrX181Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSIgIlxuIgoKICAiLkwiICJf
b2ZmbGluZWFzbV9wdXRCeVZhbF9fY29udGlndW91c1B1dEJ5VmFsX19zdG9yZUNhbGxiYWNrX181
Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQiICI6XG4iCiAgICAiXHRsZHIg
cjEsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgIzI3Nl1cbiIKICAgICJcdGxzbHMg
cjIsIHIyLCAjM1xuIgogICAgIlx0YWRkIHIxLCByMlxuIgogICAgIlx0bGRyIHIyLCBbcjEsICMw
XVxuIgogICAgIlx0bGRyIHIxLCBbcjEsICM0XVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRC
eVZhbF9fY29udGlndW91c1B1dEJ5VmFsX19zdG9yZUNhbGxiYWNrX181Ml9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZ19fZG9uZSIgIjpcbiIKICAgICJcdGFkZCByNiwgcjAsIHI0LCBsc2wgIzNc
biIKICAgICJcdHN0ciByMSwgW3I2LCAjNF1cbiIKICAgICJcdHN0ciByMiwgW3IwLCByNCwgbHNs
ICMzXVxuIgogICAgIlx0YWRkcyByOSwgIzIwXG4iCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4i
CiAgICAiXHRtb3YgcGMsIHI2XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX181M19j
b250aWd1b3VzUHV0QnlWYWxfX291dE9mQm91bmRzIiAiOlxuIgogICAgIlx0bGRyIHI2LCBbcjAs
ICMtNF1cbiIKICAgICJcdGNtcCByNCwgcjZcbiIKICAgICJcdGJocyAiICIuTCIgIl9vZmZsaW5l
YXNtXzUzX3B1dEJ5VmFsX19vcFB1dEJ5VmFsT3V0T2ZCb3VuZHMiICJcbiIKICAgICJcdGxkciBy
MiwgW3I5LCAjMTZdXG4iCiAgICAiXHRtb3YgcjYsICMxXG4iCiAgICAiXHRzdHJiIHI2LCBbcjIs
ICM4XVxuIgogICAgIlx0YWRkcyByMiwgcjQsICMxXG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgIy04
XVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX181M19jb250aWd1b3Vz
UHV0QnlWYWxfX3N0b3JlUmVzdWx0IiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzUzX3B1dEJ5
VmFsX19vcFB1dEJ5VmFsTm90Q29udGlndW91cyIgIjpcbiIKICAgICJcdGNtcCByMiwgIzI4XG4i
CiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV81M19wdXRCeVZhbF9fb3BQdXRCeVZhbFNs
b3ciICJcbiIKICAgICJcdGxkciByNiwgW3IwLCAjLTRdXG4iCiAgICAiXHRjbXAgcjQsIHI2XG4i
CiAgICAiXHRiaHMgIiAiLkwiICJfb2ZmbGluZWFzbV81M19wdXRCeVZhbF9fb3BQdXRCeVZhbE91
dE9mQm91bmRzIiAiXG4iCiAgICAiXHRhZGQgcjYsIHIwLCByNCwgbHNsICMzXG4iCiAgICAiXHRt
dm4gcjEwLCAjNVxuIgogICAgIlx0bGRyIHIxMiwgW3I2LCAjMjBdXG4iCiAgICAiXHRjbXAgcjEy
LCByMTBcbiIKICAgICJcdGJlcSAiICIuTCIgIl9vZmZsaW5lYXNtXzUzX3B1dEJ5VmFsX19vcFB1
dEJ5VmFsQXJyYXlTdG9yYWdlRW1wdHkiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fNTNfcHV0
QnlWYWxfX29wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdCIgIjpcbiIKICAgICJcdGxk
ciByMiwgW3I5LCAjMTJdXG4iCiAgICAiXHRtb3Z3IHIxMCwgIzBcbiIKICAgICJcdG1vdnQgcjEw
LCAjMTYzODRcbiIKICAgICJcdGNtcCByMiwgcjEwXG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2Zm
bGluZWFzbV9wdXRCeVZhbF9fNTNfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50
IiAiXG4iCiAgICAiXHRhZGQgcjEwLCByNywgcjIsIGxzbCAjM1xuIgogICAgIlx0bGRyIHIxLCBb
cjEwLCAjNF1cbiIKICAgICJcdGxkciByMiwgW3I3LCByMiwgbHNsICMzXVxuIgogICAgIlx0YiAi
ICIuTCIgIl9vZmZsaW5lYXNtX3B1dEJ5VmFsX181M19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
Z19fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRCeVZhbF9fNTNfbG9hZENvbnN0
YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIxLCBbcjcsICM4
XVxuIgogICAgIlx0bGRyIHIxLCBbcjEsICMyNzZdXG4iCiAgICAiXHRsc2xzIHIyLCByMiwgIzNc
biIKICAgICJcdGFkZCByMSwgcjJcbiIKICAgICJcdGxkciByMiwgW3IxLCAjMF1cbiIKICAgICJc
dGxkciByMSwgW3IxLCAjNF1cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0QnlWYWxfXzUzX2xv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lIiAiOlxuIgogICAgIlx0YWRkIHIxMCwgcjAs
IHI0LCBsc2wgIzNcbiIKICAgICJcdHN0ciByMSwgW3IxMCwgIzIwXVxuIgogICAgIlx0YWRkIHIx
MCwgcjAsIHI0LCBsc2wgIzNcbiIKICAgICJcdHN0ciByMiwgW3IxMCwgIzE2XVxuIgogICAgIlx0
YWRkcyByOSwgIzIwXG4iCiAgICAiXHRsZHIgcjEwLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBj
LCByMTBcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fNTNfcHV0QnlWYWxfX29wUHV0QnlWYWxBcnJh
eVN0b3JhZ2VFbXB0eSIgIjpcbiIKICAgICJcdGxkciByMSwgW3I5LCAjMTZdXG4iCiAgICAiXHRt
b3YgcjEwLCAjMVxuIgogICAgIlx0c3RyYiByMTAsIFtyMSwgIzhdXG4iCiAgICAiXHRsZHIgcjEw
LCBbcjAsICM4XVxuIgogICAgIlx0YWRkcyByMTAsICMxXG4iCiAgICAiXHRzdHIgcjEwLCBbcjAs
ICM4XVxuIgogICAgIlx0bGRyIHIxMCwgW3IwLCAjLThdXG4iCiAgICAiXHRjbXAgcjQsIHIxMFxu
IgogICAgIlx0YmxvICIgIi5MIiAiX29mZmxpbmVhc21fNTNfcHV0QnlWYWxfX29wUHV0QnlWYWxB
cnJheVN0b3JhZ2VTdG9yZVJlc3VsdCIgIlxuIgogICAgIlx0YWRkcyByMSwgcjQsICMxXG4iCiAg
ICAiXHRzdHIgcjEsIFtyMCwgIy04XVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtXzUz
X3B1dEJ5VmFsX19vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlU3RvcmVSZXN1bHQiICJcbiIKCiAgIi5M
IiAiX29mZmxpbmVhc21fNTNfcHV0QnlWYWxfX29wUHV0QnlWYWxPdXRPZkJvdW5kcyIgIjpcbiIK
ICAgICJcdGxkciByMCwgW3I5LCAjMTZdXG4iCiAgICAiXHRtb3YgcjEwLCAjMVxuIgogICAgIlx0
c3RyYiByMTAsIFtyMCwgIzldXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzUzX3B1dEJ5VmFsX19v
cFB1dEJ5VmFsU2xvdyIgIjpcbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiByMSwg
cjlcbiIKICAgICJcdGJseCAiICJsbGludF9zbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QiICJc
biIKICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJcdGFkZHMgcjksICMyMFxuIgogICAgIlx0bGRy
IHIxMCwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEwXG4iCgoiLkwiICJsbGludF9vcF9q
bXAiICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyOSwgIzRdXG4iCiAgICAiXHRsc2xzIHIwLCByMCwg
IzJcbiIKICAgICJcdGFkZCByOSwgcjBcbiIKICAgICJcdGxkciByMTAsIFtyOSwgIzBdXG4iCiAg
ICAiXHRtb3YgcGMsIHIxMFxuIgoKIi5MIiAibGxpbnRfb3BfamVxX251bGwiICI6XG4iCiAgICAi
XHRsZHIgcjAsIFtyOSwgIzRdXG4iCiAgICAiXHRhZGQgcjEwLCByNywgcjAsIGxzbCAjM1xuIgog
ICAgIlx0bGRyIHIxLCBbcjEwLCAjNF1cbiIKICAgICJcdGxkciByMCwgW3I3LCByMCwgbHNsICMz
XVxuIgogICAgIlx0bXZuIHIxMCwgIzRcbiIKICAgICJcdGNtcCByMSwgcjEwXG4iCiAgICAiXHRi
bmUgIiAiLkwiICJfb2ZmbGluZWFzbV9lcXVhbE51bGxfX2ltbWVkaWF0ZSIgIlxuIgogICAgIlx0
bGRyIHIyLCBbcjAsICMwXVxuIgogICAgIlx0bGRyYiByMTAsIFtyMCwgIzZdXG4iCiAgICAiXHR0
c3QgcjEwLCAjMVxuIgogICAgIlx0YmVxICIgIi5MIiAiX29mZmxpbmVhc21fZXF1YWxOdWxsX19j
ZWxsSGFuZGxlcl9fb3BKZXFOdWxsTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCIgIlxuIgogICAg
Ilx0bGRyIHIwLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIwLCBbcjAsICMyMF1cbiIKICAgICJc
dGxkciByMTAsIFtyMiwgIzIwXVxuIgogICAgIlx0Y21wIHIxMCwgcjBcbiIKICAgICJcdGJlcSAi
ICIuTCIgIl9vZmZsaW5lYXNtX2VxdWFsTnVsbF9fdGFyZ2V0IiAiXG4iCgogICIuTCIgIl9vZmZs
aW5lYXNtX2VxdWFsTnVsbF9fY2VsbEhhbmRsZXJfX29wSmVxTnVsbE5vdE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQiICI6XG4iCiAgICAiXHRhZGRzIHI5LCAjMTJcbiIKICAgICJcdGxkciByMTAsIFty
OSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMFxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9lcXVh
bE51bGxfX3RhcmdldCIgIjpcbiIKICAgICJcdGxkciByMCwgW3I5LCAjOF1cbiIKICAgICJcdGxz
bHMgcjAsIHIwLCAjMlxuIgogICAgIlx0YWRkIHI5LCByMFxuIgogICAgIlx0bGRyIHIxMCwgW3I5
LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEwXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2VxdWFs
TnVsbF9faW1tZWRpYXRlIiAiOlxuIgogICAgIlx0b3JyIHIxLCByMSwgIzFcbiIKICAgICJcdG12
biByMTAsICMyXG4iCiAgICAiXHRjbXAgcjEsIHIxMFxuIgogICAgIlx0YmVxICIgIi5MIiAiX29m
ZmxpbmVhc21fZXF1YWxOdWxsX190YXJnZXQiICJcbiIKICAgICJcdGFkZHMgcjksICMxMlxuIgog
ICAgIlx0bGRyIHIxMCwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEwXG4iCgoiLkwiICJs
bGludF9vcF9qbmVxX251bGwiICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyOSwgIzRdXG4iCiAgICAi
XHRhZGQgcjEwLCByNywgcjAsIGxzbCAjM1xuIgogICAgIlx0bGRyIHIxLCBbcjEwLCAjNF1cbiIK
ICAgICJcdGxkciByMCwgW3I3LCByMCwgbHNsICMzXVxuIgogICAgIlx0bXZuIHIxMCwgIzRcbiIK
ICAgICJcdGNtcCByMSwgcjEwXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV81M19l
cXVhbE51bGxfX2ltbWVkaWF0ZSIgIlxuIgogICAgIlx0bGRyIHIyLCBbcjAsICMwXVxuIgogICAg
Ilx0bGRyYiByMTAsIFtyMCwgIzZdXG4iCiAgICAiXHR0c3QgcjEwLCAjMVxuIgogICAgIlx0YmVx
ICIgIi5MIiAiX29mZmxpbmVhc21fNTNfZXF1YWxOdWxsX190YXJnZXQiICJcbiIKICAgICJcdGxk
ciByMCwgW3I3LCAjOF1cbiIKICAgICJcdGxkciByMCwgW3IwLCAjMjBdXG4iCiAgICAiXHRsZHIg
cjEwLCBbcjIsICMyMF1cbiIKICAgICJcdGNtcCByMTAsIHIwXG4iCiAgICAiXHRibmUgIiAiLkwi
ICJfb2ZmbGluZWFzbV81M19lcXVhbE51bGxfX3RhcmdldCIgIlxuIgogICAgIlx0YWRkcyByOSwg
IzEyXG4iCiAgICAiXHRsZHIgcjEwLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTBcbiIK
CiAgIi5MIiAiX29mZmxpbmVhc21fNTNfZXF1YWxOdWxsX190YXJnZXQiICI6XG4iCiAgICAiXHRs
ZHIgcjAsIFtyOSwgIzhdXG4iCiAgICAiXHRsc2xzIHIwLCByMCwgIzJcbiIKICAgICJcdGFkZCBy
OSwgcjBcbiIKICAgICJcdGxkciByMTAsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMFxu
IgoKICAiLkwiICJfb2ZmbGluZWFzbV81M19lcXVhbE51bGxfX2ltbWVkaWF0ZSIgIjpcbiIKICAg
ICJcdG9yciByMSwgcjEsICMxXG4iCiAgICAiXHRtdm4gcjEwLCAjMlxuIgogICAgIlx0Y21wIHIx
LCByMTBcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtXzUzX2VxdWFsTnVsbF9fdGFy
Z2V0IiAiXG4iCiAgICAiXHRhZGRzIHI5LCAjMTJcbiIKICAgICJcdGxkciByMTAsIFtyOSwgIzBd
XG4iCiAgICAiXHRtb3YgcGMsIHIxMFxuIgoKIi5MIiAibGxpbnRfb3Bfam5lcV9wdHIiICI6XG4i
CiAgICAiXHRsZHIgcjAsIFtyOSwgIzRdXG4iCiAgICAiXHRsZHIgcjEsIFtyOSwgIzhdXG4iCiAg
ICAiXHRsZHIgcjIsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjIsIFtyMiwgIzIwXVxuIgogICAg
Ilx0YWRkIHIxMCwgcjcsIHIwLCBsc2wgIzNcbiIKICAgICJcdG12biByMTIsICM0XG4iCiAgICAi
XHRsZHIgcjYsIFtyMTAsICM0XVxuIgogICAgIlx0Y21wIHI2LCByMTJcbiIKICAgICJcdGJuZSAi
ICIuTCIgIl9vZmZsaW5lYXNtX29wSm5lcVB0ckJyYW5jaCIgIlxuIgogICAgIlx0YWRkIHIxMiwg
cjIsIHIxLCBsc2wgIzJcbiIKICAgICJcdGxkciByMSwgW3IxMiwgIzU2MF1cbiIKICAgICJcdGxk
ciByMTIsIFtyNywgcjAsIGxzbCAjM11cbiIKICAgICJcdGNtcCByMTIsIHIxXG4iCiAgICAiXHRi
ZXEgIiAiLkwiICJfb2ZmbGluZWFzbV9vcEpuZXFQdHJGYWxsVGhyb3VnaCIgIlxuIgoKICAiLkwi
ICJfb2ZmbGluZWFzbV9vcEpuZXFQdHJCcmFuY2giICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyOSwg
IzEyXVxuIgogICAgIlx0bHNscyByMCwgcjAsICMyXG4iCiAgICAiXHRhZGQgcjksIHIwXG4iCiAg
ICAiXHRsZHIgcjEyLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTJcbiIKCiAgIi5MIiAi
X29mZmxpbmVhc21fb3BKbmVxUHRyRmFsbFRocm91Z2giICI6XG4iCiAgICAiXHRhZGRzIHI5LCAj
MTZcbiIKICAgICJcdGxkciByMTIsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMlxuIgoK
Ii5MIiAibGxpbnRfb3Bfc3dpdGNoX2ltbSIgIjpcbiIKICAgICJcdGxkciByMiwgW3I5LCAjMTJd
XG4iCiAgICAiXHRsZHIgcjQsIFtyOSwgIzRdXG4iCiAgICAiXHRtb3Z3IHIxMiwgIzBcbiIKICAg
ICJcdG1vdnQgcjEyLCAjMTYzODRcbiIKICAgICJcdGNtcCByMiwgcjEyXG4iCiAgICAiXHRiZ2Ug
IiAiLkwiICJfb2ZmbGluZWFzbV81M19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCIg
IlxuIgogICAgIlx0YWRkIHIxMiwgcjcsIHIyLCBsc2wgIzNcbiIKICAgICJcdGxkciByMSwgW3Ix
MiwgIzRdXG4iCiAgICAiXHRsZHIgcjAsIFtyNywgcjIsIGxzbCAjM11cbiIKICAgICJcdGIgIiAi
LkwiICJfb2ZmbGluZWFzbV81M19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lIiAiXG4iCgog
ICIuTCIgIl9vZmZsaW5lYXNtXzUzX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50IiAi
OlxuIgogICAgIlx0bGRyIHIwLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIwLCBbcjAsICMyNzZd
XG4iCiAgICAiXHRhZGQgcjEyLCByMCwgcjIsIGxzbCAjM1xuIgogICAgIlx0bGRyIHIxLCBbcjEy
LCAjNF1cbiIKICAgICJcdGxkciByMCwgW3IwLCByMiwgbHNsICMzXVxuIgoKICAiLkwiICJfb2Zm
bGluZWFzbV81M19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lIiAiOlxuIgogICAgIlx0bGRy
IHIyLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIyLCBbcjIsICMzNjRdXG4iCiAgICAiXHRtb3Yg
cjEyLCAjMzJcbiIKICAgICJcdG11bCByNCwgcjQsIHIxMlxuIgogICAgIlx0bGRyIHIyLCBbcjIs
ICMyNF1cbiIKICAgICJcdGFkZCByMiwgcjRcbiIKICAgICJcdG12biByMTIsICMwXG4iCiAgICAi
XHRjbXAgcjEsIHIxMlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fb3BTd2l0Y2hJ
bW1Ob3RJbnQiICJcbiIKICAgICJcdGxkciByMTIsIFtyMiwgIzEyXVxuIgogICAgIlx0c3VicyBy
MCwgcjEyXG4iCiAgICAiXHRsZHIgcjEyLCBbcjIsICM4XVxuIgogICAgIlx0Y21wIHIwLCByMTJc
biIKICAgICJcdGJocyAiICIuTCIgIl9vZmZsaW5lYXNtX29wU3dpdGNoSW1tRmFsbFRocm91Z2gi
ICJcbiIKICAgICJcdGxkciByNCwgW3IyLCAjMF1cbiIKICAgICJcdGxkciByMSwgW3I0LCByMCwg
bHNsICMyXVxuIgogICAgIlx0dHN0IHIxLCByMVxuIgogICAgIlx0YmVxICIgIi5MIiAiX29mZmxp
bmVhc21fb3BTd2l0Y2hJbW1GYWxsVGhyb3VnaCIgIlxuIgogICAgIlx0bHNscyByMSwgcjEsICMy
XG4iCiAgICAiXHRhZGQgcjksIHIxXG4iCiAgICAiXHRsZHIgcjEyLCBbcjksICMwXVxuIgogICAg
Ilx0bW92IHBjLCByMTJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fb3BTd2l0Y2hJbW1Ob3RJbnQi
ICI6XG4iCiAgICAiXHRtdm4gcjEyLCAjNlxuIgogICAgIlx0Y21wIHIxLCByMTJcbiIKICAgICJc
dGJsbyAiICIuTCIgIl9vZmZsaW5lYXNtX29wU3dpdGNoSW1tU2xvdyIgIlxuIgoKICAiLkwiICJf
b2ZmbGluZWFzbV9vcFN3aXRjaEltbUZhbGxUaHJvdWdoIiAiOlxuIgogICAgIlx0bGRyIHIwLCBb
cjksICM4XVxuIgogICAgIlx0bHNscyByMCwgcjAsICMyXG4iCiAgICAiXHRhZGQgcjksIHIwXG4i
CiAgICAiXHRsZHIgcjEyLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTJcbiIKCiAgIi5M
IiAiX29mZmxpbmVhc21fb3BTd2l0Y2hJbW1TbG93IiAiOlxuIgogICAgIlx0bW92IHIwLCByN1xu
IgogICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgImxsaW50X3Nsb3dfcGF0aF9zd2l0
Y2hfaW1tIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCgoKICAgICJcdGxkciByMTIsIFtyOSwg
IzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMlxuIgoKIi5MIiAibGxpbnRfb3Bfc3dpdGNoX2NoYXIi
ICI6XG4iCiAgICAiXHRsZHIgcjIsIFtyOSwgIzEyXVxuIgogICAgIlx0bGRyIHI0LCBbcjksICM0
XVxuIgogICAgIlx0bW92dyByMTIsICMwXG4iCiAgICAiXHRtb3Z0IHIxMiwgIzE2Mzg0XG4iCiAg
ICAiXHRjbXAgcjIsIHIxMlxuIgogICAgIlx0YmdlICIgIi5MIiAiX29mZmxpbmVhc21fNTRfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByMTIsIHI3LCBy
MiwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjEsIFtyMTIsICM0XVxuIgogICAgIlx0bGRyIHIwLCBb
cjcsIHIyLCBsc2wgIzNdXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fNTRfbG9hZENv
bnN0YW50T3JWYXJpYWJsZV9fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV81NF9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCIgIjpcbiIKICAgICJcdGxkciByMCwgW3I3LCAj
OF1cbiIKICAgICJcdGxkciByMCwgW3IwLCAjMjc2XVxuIgogICAgIlx0YWRkIHIxMiwgcjAsIHIy
LCBsc2wgIzNcbiIKICAgICJcdGxkciByMSwgW3IxMiwgIzRdXG4iCiAgICAiXHRsZHIgcjAsIFty
MCwgcjIsIGxzbCAjM11cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fNTRfbG9hZENvbnN0YW50T3JW
YXJpYWJsZV9fZG9uZSIgIjpcbiIKICAgICJcdGxkciByMiwgW3I3LCAjOF1cbiIKICAgICJcdGxk
ciByMiwgW3IyLCAjMzY0XVxuIgogICAgIlx0bW92IHIxMiwgIzMyXG4iCiAgICAiXHRtdWwgcjQs
IHI0LCByMTJcbiIKICAgICJcdGxkciByMiwgW3IyLCAjMjRdXG4iCiAgICAiXHRhZGQgcjIsIHI0
XG4iCiAgICAiXHRtdm4gcjEyLCAjNFxuIgogICAgIlx0Y21wIHIxLCByMTJcbiIKICAgICJcdGJu
ZSAiICIuTCIgIl9vZmZsaW5lYXNtX29wU3dpdGNoQ2hhckZhbGxUaHJvdWdoIiAiXG4iCiAgICAi
XHRsZHJiIHIxMiwgW3IwLCAjNV1cbiIKICAgICJcdGNtcCByMTIsICM2XG4iCiAgICAiXHRibmUg
IiAiLkwiICJfb2ZmbGluZWFzbV9vcFN3aXRjaENoYXJGYWxsVGhyb3VnaCIgIlxuIgogICAgIlx0
bGRyIHIxMiwgW3IwLCAjMTJdXG4iCiAgICAiXHRjbXAgcjEyLCAjMVxuIgogICAgIlx0Ym5lICIg
Ii5MIiAiX29mZmxpbmVhc21fb3BTd2l0Y2hDaGFyRmFsbFRocm91Z2giICJcbiIKICAgICJcdGxk
ciByMCwgW3IwLCAjMTZdXG4iCiAgICAiXHR0c3QgcjAsIHIwXG4iCiAgICAiXHRiZXEgIiAiLkwi
ICJfb2ZmbGluZWFzbV9vcFN3aXRjaE9uUm9wZSIgIlxuIgogICAgIlx0bGRyIHIxLCBbcjAsICM4
XVxuIgogICAgIlx0bGRyIHIxMiwgW3IwLCAjMTJdXG4iCiAgICAiXHR0c3QgcjEyLCAjMzJcbiIK
ICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX29wU3dpdGNoQ2hhcjhCaXQiICJcbiIKICAg
ICJcdGxkcmggcjAsIFtyMSwgIzBdXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fb3BT
d2l0Y2hDaGFyUmVhZHkiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fb3BTd2l0Y2hDaGFyOEJp
dCIgIjpcbiIKICAgICJcdGxkcmIgcjAsIFtyMSwgIzBdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNt
X29wU3dpdGNoQ2hhclJlYWR5IiAiOlxuIgogICAgIlx0bGRyIHIxMiwgW3IyLCAjMTJdXG4iCiAg
ICAiXHRzdWJzIHIwLCByMTJcbiIKICAgICJcdGxkciByMTIsIFtyMiwgIzhdXG4iCiAgICAiXHRj
bXAgcjAsIHIxMlxuIgogICAgIlx0YmhzICIgIi5MIiAiX29mZmxpbmVhc21fb3BTd2l0Y2hDaGFy
RmFsbFRocm91Z2giICJcbiIKICAgICJcdGxkciByMiwgW3IyLCAjMF1cbiIKICAgICJcdGxkciBy
MSwgW3IyLCByMCwgbHNsICMyXVxuIgogICAgIlx0dHN0IHIxLCByMVxuIgogICAgIlx0YmVxICIg
Ii5MIiAiX29mZmxpbmVhc21fb3BTd2l0Y2hDaGFyRmFsbFRocm91Z2giICJcbiIKICAgICJcdGxz
bHMgcjEsIHIxLCAjMlxuIgogICAgIlx0YWRkIHI5LCByMVxuIgogICAgIlx0bGRyIHIxMiwgW3I5
LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEyXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX29wU3dp
dGNoQ2hhckZhbGxUaHJvdWdoIiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjksICM4XVxuIgogICAg
Ilx0bHNscyByMCwgcjAsICMyXG4iCiAgICAiXHRhZGQgcjksIHIwXG4iCiAgICAiXHRsZHIgcjEy
LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21f
b3BTd2l0Y2hPblJvcGUiICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRtb3YgcjEs
IHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc2xvd19wYXRoX3N3aXRjaF9jaGFyIiAiXG4iCiAg
ICAiXHRtb3YgcjksIHIwXG4iCgoKICAgICJcdGxkciByMTIsIFtyOSwgIzBdXG4iCiAgICAiXHRt
b3YgcGMsIHIxMlxuIgoKIi5MIiAibGxpbnRfb3BfbmV3X2Z1bmMiICI6XG4iCiAgICAiXHRsZHIg
cjEyLCBbcjksICMxMl1cbiIKICAgICJcdHRzdCByMTIsIHIxMlxuIgogICAgIlx0YmVxICIgIi5M
IiAiX29mZmxpbmVhc21fb3BOZXdGdW5jVW5jaGVja2VkIiAiXG4iCiAgICAiXHRsZHIgcjEsIFty
OSwgIzRdXG4iCiAgICAiXHRhZGQgcjEyLCByNywgcjEsIGxzbCAjM1xuIgogICAgIlx0bXZuIHI2
LCAjNVxuIgogICAgIlx0bGRyIHIxMCwgW3IxMiwgIzRdXG4iCiAgICAiXHRjbXAgcjEwLCByNlxu
IgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fb3BOZXdGdW5jRG9uZSIgIlxuIgoKICAi
LkwiICJfb2ZmbGluZWFzbV9vcE5ld0Z1bmNVbmNoZWNrZWQiICI6XG4iCiAgICAiXHRtb3YgcjAs
IHI3XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc2xvd19wYXRo
X25ld19mdW5jIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCgogICIuTCIgIl9vZmZsaW5lYXNt
X29wTmV3RnVuY0RvbmUiICI6XG4iCiAgICAiXHRhZGRzIHI5LCAjMTZcbiIKICAgICJcdGxkciBy
NiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIKCiIuTCIgImxsaW50X29wX25ld19j
YXB0dXJlZF9mdW5jIiAiOlxuIgogICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCBy
OVxuIgogICAgIlx0Ymx4ICIgInNsb3dfcGF0aF9uZXdfY2FwdHVyZWRfZnVuYyIgIlxuIgogICAg
Ilx0bW92IHI5LCByMFxuIgogICAgIlx0YWRkcyByOSwgIzE2XG4iCiAgICAiXHRsZHIgcjYsIFty
OSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgoiLkwiICJsbGludF9vcF90ZWFyX29mZl9h
Y3RpdmF0aW9uIiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjksICM0XVxuIgogICAgIlx0YWRkIHI2
LCByNywgcjAsIGxzbCAjM1xuIgogICAgIlx0bXZuIHIxMCwgIzVcbiIKICAgICJcdGxkciByMTIs
IFtyNiwgIzRdXG4iCiAgICAiXHRjbXAgcjEyLCByMTBcbiIKICAgICJcdGJlcSAiICIuTCIgIl9v
ZmZsaW5lYXNtX29wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkIiAiXG4iCiAgICAiXHRtb3Yg
cjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc2xvd19w
YXRoX3RlYXJfb2ZmX2FjdGl2YXRpb24iICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIKCiAgIi5M
IiAiX29mZmxpbmVhc21fb3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0ZWQiICI6XG4iCiAgICAi
XHRhZGRzIHI5LCAjOFxuIgogICAgIlx0bGRyIHIxMCwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBw
YywgcjEwXG4iCgoiLkwiICJsbGludF9vcF90ZWFyX29mZl9hcmd1bWVudHMiICI6XG4iCiAgICAi
XHRsZHIgcjAsIFtyOSwgIzRdXG4iCiAgICAiXHRhZGRzIHIwLCAjMVxuIgogICAgIlx0YWRkIHIx
MCwgcjcsIHIwLCBsc2wgIzNcbiIKICAgICJcdG12biByMTIsICM1XG4iCiAgICAiXHRsZHIgcjYs
IFtyMTAsICM0XVxuIgogICAgIlx0Y21wIHI2LCByMTJcbiIKICAgICJcdGJlcSAiICIuTCIgIl9v
ZmZsaW5lYXNtX29wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQiICJcbiIKICAgICJcdG1vdiBy
MCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJsbGludF9zbG93X3Bh
dGhfdGVhcl9vZmZfYXJndW1lbnRzIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCgogICIuTCIg
Il9vZmZsaW5lYXNtX29wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQiICI6XG4iCiAgICAiXHRh
ZGRzIHI5LCAjMTJcbiIKICAgICJcdGxkciByMTIsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMs
IHIxMlxuIgoKIi5MIiAibGxpbnRfb3BfcmV0IiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjcsICM4
XVxuIgogICAgIlx0bGRyIHIxMiwgW3IwLCAjMzE2XVxuIgogICAgIlx0YWRkcyByMTIsICMxMFxu
IgogICAgIlx0c3RyIHIxMiwgW3IwLCAjMzE2XVxuIgogICAgIlx0Ym1pICIgIi5MIiAiX29mZmxp
bmVhc21fY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlX19jaGVja1N3aXRjaFRvSklUX19jb250
aW51ZSIgIlxuIgogICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByOVxuIgogICAg
Ilx0Ymx4ICIgImxsaW50X3JlcGxhY2UiICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIKCiAgIi5M
IiAiX29mZmxpbmVhc21fY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlX19jaGVja1N3aXRjaFRv
SklUX19jb250aW51ZSIgIjpcbiIKICAgICJcdGxkciByMiwgW3I5LCAjNF1cbiIKICAgICJcdG1v
dncgcjEyLCAjMFxuIgogICAgIlx0bW92dCByMTIsICMxNjM4NFxuIgogICAgIlx0Y21wIHIyLCBy
MTJcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtXzU1X2xvYWRDb25zdGFudE9yVmFy
aWFibGVfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjEyLCByNywgcjIsIGxzbCAjM1xuIgog
ICAgIlx0bGRyIHIxLCBbcjEyLCAjNF1cbiIKICAgICJcdGxkciByMCwgW3I3LCByMiwgbHNsICMz
XVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtXzU1X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fNTVfbG9hZENvbnN0YW50T3JWYXJp
YWJsZV9fY29uc3RhbnQiICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyNywgIzhdXG4iCiAgICAiXHRs
ZHIgcjAsIFtyMCwgIzI3Nl1cbiIKICAgICJcdGFkZCByMTIsIHIwLCByMiwgbHNsICMzXG4iCiAg
ICAiXHRsZHIgcjEsIFtyMTIsICM0XVxuIgogICAgIlx0bGRyIHIwLCBbcjAsIHIyLCBsc2wgIzNd
XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzU1X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUi
ICI6XG4iCiAgICAiXHRtb3Ygc3AsIHI3XG4iCiAgICAiXHRwb3AgeyByNyB9XG4iCiAgICAiXHRw
b3AgeyBsciB9XG4iCiAgICAiXHRieCBsclxuIgoKIi5MIiAibGxpbnRfb3BfcmV0X29iamVjdF9v
cl90aGlzIiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIxMiwg
W3IwLCAjMzE2XVxuIgogICAgIlx0YWRkcyByMTIsICMxMFxuIgogICAgIlx0c3RyIHIxMiwgW3Iw
LCAjMzE2XVxuIgogICAgIlx0Ym1pICIgIi5MIiAiX29mZmxpbmVhc21fY2hlY2tTd2l0Y2hUb0pJ
VEZvckVwaWxvZ3VlX181NV9jaGVja1N3aXRjaFRvSklUX19jb250aW51ZSIgIlxuIgogICAgIlx0
bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgImxsaW50X3Jl
cGxhY2UiICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fY2hl
Y2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlX181NV9jaGVja1N3aXRjaFRvSklUX19jb250aW51ZSIg
IjpcbiIKICAgICJcdGxkciByMiwgW3I5LCAjNF1cbiIKICAgICJcdG1vdncgcjEyLCAjMFxuIgog
ICAgIlx0bW92dCByMTIsICMxNjM4NFxuIgogICAgIlx0Y21wIHIyLCByMTJcbiIKICAgICJcdGJn
ZSAiICIuTCIgIl9vZmZsaW5lYXNtXzU2X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50
IiAiXG4iCiAgICAiXHRhZGQgcjEyLCByNywgcjIsIGxzbCAjM1xuIgogICAgIlx0bGRyIHIxLCBb
cjEyLCAjNF1cbiIKICAgICJcdGxkciByMCwgW3I3LCByMiwgbHNsICMzXVxuIgogICAgIlx0YiAi
ICIuTCIgIl9vZmZsaW5lYXNtXzU2X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUiICJcbiIK
CiAgIi5MIiAiX29mZmxpbmVhc21fNTZfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQi
ICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjAsIFtyMCwgIzI3
Nl1cbiIKICAgICJcdGFkZCByMTIsIHIwLCByMiwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjEsIFty
MTIsICM0XVxuIgogICAgIlx0bGRyIHIwLCBbcjAsIHIyLCBsc2wgIzNdXG4iCgogICIuTCIgIl9v
ZmZsaW5lYXNtXzU2X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUiICI6XG4iCiAgICAiXHRt
dm4gcjEyLCAjNFxuIgogICAgIlx0Y21wIHIxLCByMTJcbiIKICAgICJcdGJuZSAiICIuTCIgIl9v
ZmZsaW5lYXNtX29wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0IiAiXG4iCiAgICAiXHRsZHJiIHIx
MiwgW3IwLCAjNV1cbiIKICAgICJcdGNtcCByMTIsICMxN1xuIgogICAgIlx0YmxvICIgIi5MIiAi
X29mZmxpbmVhc21fb3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QiICJcbiIKICAgICJcdG1vdiBz
cCwgcjdcbiIKICAgICJcdHBvcCB7IHI3IH1cbiIKICAgICJcdHBvcCB7IGxyIH1cbiIKICAgICJc
dGJ4IGxyXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX29wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0
IiAiOlxuIgogICAgIlx0bGRyIHIyLCBbcjksICM4XVxuIgogICAgIlx0bW92dyByMTIsICMwXG4i
CiAgICAiXHRtb3Z0IHIxMiwgIzE2Mzg0XG4iCiAgICAiXHRjbXAgcjIsIHIxMlxuIgogICAgIlx0
YmdlICIgIi5MIiAiX29mZmxpbmVhc21fNTdfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3Rh
bnQiICJcbiIKICAgICJcdGFkZCByMTIsIHI3LCByMiwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjEs
IFtyMTIsICM0XVxuIgogICAgIlx0bGRyIHIwLCBbcjcsIHIyLCBsc2wgIzNdXG4iCiAgICAiXHRi
ICIgIi5MIiAiX29mZmxpbmVhc21fNTdfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSIgIlxu
IgoKICAiLkwiICJfb2ZmbGluZWFzbV81N19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFu
dCIgIjpcbiIKICAgICJcdGxkciByMCwgW3I3LCAjOF1cbiIKICAgICJcdGxkciByMCwgW3IwLCAj
Mjc2XVxuIgogICAgIlx0YWRkIHIxMiwgcjAsIHIyLCBsc2wgIzNcbiIKICAgICJcdGxkciByMSwg
W3IxMiwgIzRdXG4iCiAgICAiXHRsZHIgcjAsIFtyMCwgcjIsIGxzbCAjM11cbiIKCiAgIi5MIiAi
X29mZmxpbmVhc21fNTdfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSIgIjpcbiIKICAgICJc
dG1vdiBzcCwgcjdcbiIKICAgICJcdHBvcCB7IHI3IH1cbiIKICAgICJcdHBvcCB7IGxyIH1cbiIK
ICAgICJcdGJ4IGxyXG4iCgoiLkwiICJsbGludF9vcF90b19wcmltaXRpdmUiICI6XG4iCiAgICAi
XHRsZHIgcjIsIFtyOSwgIzhdXG4iCiAgICAiXHRsZHIgcjQsIFtyOSwgIzRdXG4iCiAgICAiXHRt
b3Z3IHIxMiwgIzBcbiIKICAgICJcdG1vdnQgcjEyLCAjMTYzODRcbiIKICAgICJcdGNtcCByMiwg
cjEyXG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV81OF9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlX19jb25zdGFudCIgIlxuIgogICAgIlx0YWRkIHIxMiwgcjcsIHIyLCBsc2wgIzNcbiIK
ICAgICJcdGxkciByMSwgW3IxMiwgIzRdXG4iCiAgICAiXHRsZHIgcjAsIFtyNywgcjIsIGxzbCAj
M11cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV81OF9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzU4X2xvYWRDb25zdGFudE9yVmFy
aWFibGVfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjcsICM4XVxuIgogICAgIlx0
bGRyIHIwLCBbcjAsICMyNzZdXG4iCiAgICAiXHRhZGQgcjEyLCByMCwgcjIsIGxzbCAjM1xuIgog
ICAgIlx0bGRyIHIxLCBbcjEyLCAjNF1cbiIKICAgICJcdGxkciByMCwgW3IwLCByMiwgbHNsICMz
XVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV81OF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25l
IiAiOlxuIgogICAgIlx0bXZuIHIxMiwgIzRcbiIKICAgICJcdGNtcCByMSwgcjEyXG4iCiAgICAi
XHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9vcFRvUHJpbWl0aXZlSXNJbW0iICJcbiIKICAgICJc
dGxkcmIgcjEyLCBbcjAsICM1XVxuIgogICAgIlx0Y21wIHIxMiwgIzZcbiIKICAgICJcdGJuZSAi
ICIuTCIgIl9vZmZsaW5lYXNtX29wVG9QcmltaXRpdmVTbG93Q2FzZSIgIlxuIgoKICAiLkwiICJf
b2ZmbGluZWFzbV9vcFRvUHJpbWl0aXZlSXNJbW0iICI6XG4iCiAgICAiXHRhZGQgcjEyLCByNywg
cjQsIGxzbCAjM1xuIgogICAgIlx0c3RyIHIxLCBbcjEyLCAjNF1cbiIKICAgICJcdHN0ciByMCwg
W3I3LCByNCwgbHNsICMzXVxuIgogICAgIlx0YWRkcyByOSwgIzEyXG4iCiAgICAiXHRsZHIgcjEy
LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21f
b3BUb1ByaW1pdGl2ZVNsb3dDYXNlIiAiOlxuIgogICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0
bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgInNsb3dfcGF0aF90b19wcmltaXRpdmUiICJcbiIK
ICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJcdGFkZHMgcjksICMxMlxuIgogICAgIlx0bGRyIHIx
MiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEyXG4iCgoiLkwiICJsbGludF9vcF9jYXRj
aCIgIjpcbiIKICAgICJcdGxkciByNCwgW3I3LCAjMTZdXG4iCiAgICAiXHRtb3Z3IHIxMiwgIzBc
biIKICAgICJcdG1vdnQgcjEyLCAjNjU1MzVcbiIKICAgICJcdGFuZHMgcjQsIHIxMlxuIgogICAg
Ilx0bGRyIHI0LCBbcjQsICMxMDc2XVxuIgogICAgIlx0bW92dyByMTIsICMyNjkwOFxuIgogICAg
Ilx0YWRkIHIxMiwgcjRcbiIKICAgICJcdGxkciByNywgW3IxMiwgIzBdXG4iCiAgICAiXHRsZHIg
cjIsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjgsIFtyMiwgIzI4XVxuIgogICAgIlx0bHNscyBy
OCwgcjgsICMzXG4iCiAgICAiXHRhZGRzIHI4LCAjMjRcbiIKICAgICJcdHN1YnMgcjgsIHI3LCBy
OFxuIgogICAgIlx0bW92IHNwLCByOFxuIgogICAgIlx0bW92dyByMTIsICMyNjkxNlxuIgogICAg
Ilx0YWRkIHIxMiwgcjRcbiIKICAgICJcdGxkciByOSwgW3IxMiwgIzBdXG4iCiAgICAiXHRtb3Z3
IHIxMiwgIzI3MDU2XG4iCiAgICAiXHRhZGQgcjEyLCByNFxuIgogICAgIlx0bGRyIHIwLCBbcjEy
LCAjMF1cbiIKICAgICJcdG1vdncgcjEyLCAjMjcwNjBcbiIKICAgICJcdGFkZCByMTIsIHI0XG4i
CiAgICAiXHRsZHIgcjEsIFtyMTIsICMwXVxuIgogICAgIlx0bW92dyByMTIsICMyNzA1NlxuIgog
ICAgIlx0YWRkIHIxMiwgcjRcbiIKICAgICJcdG1vdiByNiwgIzBcbiIKICAgICJcdHN0ciByNiwg
W3IxMiwgIzBdXG4iCiAgICAiXHRtb3Z3IHIxMiwgIzI3MDYwXG4iCiAgICAiXHRhZGQgcjEyLCBy
NFxuIgogICAgIlx0bXZuIHI2LCAjNVxuIgogICAgIlx0c3RyIHI2LCBbcjEyLCAjMF1cbiIKICAg
ICJcdGxkciByMiwgW3I5LCAjNF1cbiIKICAgICJcdHN0ciByMCwgW3I3LCByMiwgbHNsICMzXVxu
IgogICAgIlx0YWRkIHIxMiwgcjcsIHIyLCBsc2wgIzNcbiIKICAgICJcdHN0ciByMSwgW3IxMiwg
IzRdXG4iCiAgICAiXHRhZGRzIHI5LCAjOFxuIgogICAgIlx0bGRyIHIxMiwgW3I5LCAjMF1cbiIK
ICAgICJcdG1vdiBwYywgcjEyXG4iCgoiLkwiICJsbGludF9vcF9lbmQiICI6XG4iCiAgICAiXHRs
ZHIgcjAsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjEyLCBbcjAsICMzMTZdXG4iCiAgICAiXHRh
ZGRzIHIxMiwgIzEwXG4iCiAgICAiXHRzdHIgcjEyLCBbcjAsICMzMTZdXG4iCiAgICAiXHRibWkg
IiAiLkwiICJfb2ZmbGluZWFzbV9jaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWVfXzU4X2NoZWNr
U3dpdGNoVG9KSVRfX2NvbnRpbnVlIiAiXG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRt
b3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfcmVwbGFjZSIgIlxuIgogICAgIlx0bW92
IHI5LCByMFxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9jaGVja1N3aXRjaFRvSklURm9yRXBpbG9n
dWVfXzU4X2NoZWNrU3dpdGNoVG9KSVRfX2NvbnRpbnVlIiAiOlxuIgogICAgIlx0bGRyIHIwLCBb
cjksICM0XVxuIgogICAgIlx0YWRkIHIxMiwgcjcsIHIwLCBsc2wgIzNcbiIKICAgICJcdGxkciBy
MSwgW3IxMiwgIzRdXG4iCiAgICAiXHRsZHIgcjAsIFtyNywgcjAsIGxzbCAjM11cbiIKICAgICJc
dG1vdiBzcCwgcjdcbiIKICAgICJcdHBvcCB7IHI3IH1cbiIKICAgICJcdHBvcCB7IGxyIH1cbiIK
ICAgICJcdGJ4IGxyXG4iCgoiLkwiICJsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9s
aW5lIiAiOlxuIgogICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByOVxuIgogICAg
Ilx0Ymx4ICIgImxsaW50X3Nsb3dfcGF0aF9oYW5kbGVfZXhjZXB0aW9uIiAiXG4iCiAgICAiXHRt
b3YgcjksIHIwXG4iCiAgICAiXHRsZHIgcjEsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjEsIFty
MSwgIzU2XVxuIgogICAgIlx0bW92dyByMTIsICMyNjkxMlxuIgogICAgIlx0YWRkIHIxMiwgcjFc
biIKICAgICJcdGxkciByNiwgW3IxMiwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgoiLkwi
ICJsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lIiAiOlxuIgogICAgIlx0bW92IHIy
LCBsclxuIgogICAgIlx0YiAiICIuTCIgImxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1w
b2xpbmUiICJcbiIKCiIuTCIgImxsaW50X29wX3Jlc29sdmVfc2NvcGUiICI6XG4iCiAgICAiXHRs
ZHIgcjAsIFtyOSwgIzEyXVxuIgogICAgIlx0dHN0IHIwLCByMFxuIgogICAgIlx0Ym5lICIgIi5M
IiAiX29mZmxpbmVhc21fckdsb2JhbFZhciIgIlxuIgogICAgIlx0bGRyIHIwLCBbcjcsICM4XVxu
IgogICAgIlx0bGRyIHIwLCBbcjAsICMyMF1cbiIKICAgICJcdGxkciByMSwgW3I5LCAjNF1cbiIK
ICAgICJcdGFkZCByNiwgcjcsIHIxLCBsc2wgIzNcbiIKICAgICJcdG12biByMTIsICM0XG4iCiAg
ICAiXHRzdHIgcjEyLCBbcjYsICM0XVxuIgogICAgIlx0c3RyIHIwLCBbcjcsIHIxLCBsc2wgIzNd
XG4iCiAgICAiXHRhZGRzIHI5LCAjMjRcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAg
ICJcdG1vdiBwYywgcjZcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fckdsb2JhbFZhciIgIjpcbiIK
ICAgICJcdGNtcCByMCwgIzFcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX3JDbG9z
dXJlVmFyIiAiXG4iCiAgICAiXHRsZHIgcjAsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjAsIFty
MCwgIzIwXVxuIgogICAgIlx0bGRyIHIxLCBbcjksICM0XVxuIgogICAgIlx0YWRkIHI2LCByNywg
cjEsIGxzbCAjM1xuIgogICAgIlx0bXZuIHIxMiwgIzRcbiIKICAgICJcdHN0ciByMTIsIFtyNiwg
IzRdXG4iCiAgICAiXHRzdHIgcjAsIFtyNywgcjEsIGxzbCAjM11cbiIKICAgICJcdGFkZHMgcjks
ICMyNFxuIgogICAgIlx0bGRyIHI2LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxuIgoK
ICAiLkwiICJfb2ZmbGluZWFzbV9yQ2xvc3VyZVZhciIgIjpcbiIKICAgICJcdGNtcCByMCwgIzJc
biIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX3JHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJ
bmplY3Rpb25DaGVja3MiICJcbiIKICAgICJcdGxkciByMCwgW3I3LCAjOF1cbiIKICAgICJcdGxk
ciByMiwgW3I5LCAjMTZdXG4iCiAgICAiXHRsZHJiIHI2LCBbcjAsICM4MV1cbiIKICAgICJcdHRz
dCByNiwgcjZcbiIKICAgICJcdGJlcSAiICIuTCIgIl9vZmZsaW5lYXNtX3Jlc29sdmVTY29wZV9f
cmVzb2x2ZVNjb3BlQWZ0ZXJBY3RpdmF0aW9uQ2hlY2siICJcbiIKICAgICJcdGxkciByMSwgW3Iw
LCAjNzZdXG4iCiAgICAiXHRhZGRzIHIyLCAjMVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9yZXNv
bHZlU2NvcGVfX3Jlc29sdmVTY29wZUFmdGVyQWN0aXZhdGlvbkNoZWNrIiAiOlxuIgogICAgIlx0
bGRyIHIwLCBbcjcsICMxNl1cbiIKICAgICJcdHRzdCByMiwgcjJcbiIKICAgICJcdGJlcSAiICIu
TCIgIl9vZmZsaW5lYXNtX3Jlc29sdmVTY29wZV9fcmVzb2x2ZVNjb3BlTG9vcEVuZCIgIlxuIgoK
ICAiLkwiICJfb2ZmbGluZWFzbV9yZXNvbHZlU2NvcGVfX3Jlc29sdmVTY29wZUxvb3AiICI6XG4i
CiAgICAiXHRsZHIgcjAsIFtyMCwgIzE2XVxuIgogICAgIlx0c3VicyByMiwgcjIsICMxXG4iCiAg
ICAiXHR0c3QgcjIsIHIyXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9yZXNvbHZl
U2NvcGVfX3Jlc29sdmVTY29wZUxvb3AiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcmVzb2x2
ZVNjb3BlX19yZXNvbHZlU2NvcGVMb29wRW5kIiAiOlxuIgogICAgIlx0bGRyIHIxLCBbcjksICM0
XVxuIgogICAgIlx0YWRkIHI2LCByNywgcjEsIGxzbCAjM1xuIgogICAgIlx0bXZuIHIxMiwgIzRc
biIKICAgICJcdHN0ciByMTIsIFtyNiwgIzRdXG4iCiAgICAiXHRzdHIgcjAsIFtyNywgcjEsIGxz
bCAjM11cbiIKICAgICJcdGFkZHMgcjksICMyNFxuIgogICAgIlx0bGRyIHI2LCBbcjksICMwXVxu
IgogICAgIlx0bW92IHBjLCByNlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9yR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIiAiOlxuIgogICAgIlx0Y21wIHIwLCAjM1xuIgogICAg
Ilx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fckdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVj
a3MiICJcbiIKICAgICJcdGxkciByMCwgW3I3LCAjOF1cbiIKICAgICJcdGxkciByMCwgW3IwLCAj
MjBdXG4iCiAgICAiXHRsZHIgcjAsIFtyMCwgIzU5Nl1cbiIKICAgICJcdGxkcmIgcjYsIFtyMCwg
IzRdXG4iCiAgICAiXHRjbXAgcjYsICMyXG4iCiAgICAiXHRiZXEgIiAiLkwiICJfb2ZmbGluZWFz
bV9yRHluYW1pYyIgIlxuIgogICAgIlx0bGRyIHIwLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIw
LCBbcjAsICMyMF1cbiIKICAgICJcdGxkciByMSwgW3I5LCAjNF1cbiIKICAgICJcdGFkZCByNiwg
cjcsIHIxLCBsc2wgIzNcbiIKICAgICJcdG12biByMTIsICM0XG4iCiAgICAiXHRzdHIgcjEyLCBb
cjYsICM0XVxuIgogICAgIlx0c3RyIHIwLCBbcjcsIHIxLCBsc2wgIzNdXG4iCiAgICAiXHRhZGRz
IHI5LCAjMjRcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZc
biIKCiAgIi5MIiAiX29mZmxpbmVhc21fckdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3Mi
ICI6XG4iCiAgICAiXHRjbXAgcjAsICM0XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFz
bV9yQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MiICJcbiIKICAgICJcdGxkciByMCwg
W3I3LCAjOF1cbiIKICAgICJcdGxkciByMCwgW3IwLCAjMjBdXG4iCiAgICAiXHRsZHIgcjAsIFty
MCwgIzU5Nl1cbiIKICAgICJcdGxkcmIgcjYsIFtyMCwgIzRdXG4iCiAgICAiXHRjbXAgcjYsICMy
XG4iCiAgICAiXHRiZXEgIiAiLkwiICJfb2ZmbGluZWFzbV9yRHluYW1pYyIgIlxuIgogICAgIlx0
bGRyIHIwLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIwLCBbcjAsICMyMF1cbiIKICAgICJcdGxk
ciByMSwgW3I5LCAjNF1cbiIKICAgICJcdGFkZCByNiwgcjcsIHIxLCBsc2wgIzNcbiIKICAgICJc
dG12biByMTIsICM0XG4iCiAgICAiXHRzdHIgcjEyLCBbcjYsICM0XVxuIgogICAgIlx0c3RyIHIw
LCBbcjcsIHIxLCBsc2wgIzNdXG4iCiAgICAiXHRhZGRzIHI5LCAjMjRcbiIKICAgICJcdGxkciBy
NiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21f
ckNsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIiAiOlxuIgogICAgIlx0Y21wIHIwLCAj
NVxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fckR5bmFtaWMiICJcbiIKICAgICJc
dGxkciByMCwgW3I3LCAjOF1cbiIKICAgICJcdGxkciByMCwgW3IwLCAjMjBdXG4iCiAgICAiXHRs
ZHIgcjAsIFtyMCwgIzU5Nl1cbiIKICAgICJcdGxkcmIgcjYsIFtyMCwgIzRdXG4iCiAgICAiXHRj
bXAgcjYsICMyXG4iCiAgICAiXHRiZXEgIiAiLkwiICJfb2ZmbGluZWFzbV9yRHluYW1pYyIgIlxu
IgogICAgIlx0bGRyIHIwLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIyLCBbcjksICMxNl1cbiIK
ICAgICJcdGxkcmIgcjYsIFtyMCwgIzgxXVxuIgogICAgIlx0dHN0IHI2LCByNlxuIgogICAgIlx0
YmVxICIgIi5MIiAiX29mZmxpbmVhc21fNThfcmVzb2x2ZVNjb3BlX19yZXNvbHZlU2NvcGVBZnRl
ckFjdGl2YXRpb25DaGVjayIgIlxuIgogICAgIlx0bGRyIHIxLCBbcjAsICM3Nl1cbiIKICAgICJc
dGFkZHMgcjIsICMxXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzU4X3Jlc29sdmVTY29wZV9fcmVz
b2x2ZVNjb3BlQWZ0ZXJBY3RpdmF0aW9uQ2hlY2siICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyNywg
IzE2XVxuIgogICAgIlx0dHN0IHIyLCByMlxuIgogICAgIlx0YmVxICIgIi5MIiAiX29mZmxpbmVh
c21fNThfcmVzb2x2ZVNjb3BlX19yZXNvbHZlU2NvcGVMb29wRW5kIiAiXG4iCgogICIuTCIgIl9v
ZmZsaW5lYXNtXzU4X3Jlc29sdmVTY29wZV9fcmVzb2x2ZVNjb3BlTG9vcCIgIjpcbiIKICAgICJc
dGxkciByMCwgW3IwLCAjMTZdXG4iCiAgICAiXHRzdWJzIHIyLCByMiwgIzFcbiIKICAgICJcdHRz
dCByMiwgcjJcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtXzU4X3Jlc29sdmVTY29w
ZV9fcmVzb2x2ZVNjb3BlTG9vcCIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV81OF9yZXNvbHZl
U2NvcGVfX3Jlc29sdmVTY29wZUxvb3BFbmQiICI6XG4iCiAgICAiXHRsZHIgcjEsIFtyOSwgIzRd
XG4iCiAgICAiXHRhZGQgcjYsIHI3LCByMSwgbHNsICMzXG4iCiAgICAiXHRtdm4gcjEyLCAjNFxu
IgogICAgIlx0c3RyIHIxMiwgW3I2LCAjNF1cbiIKICAgICJcdHN0ciByMCwgW3I3LCByMSwgbHNs
ICMzXVxuIgogICAgIlx0YWRkcyByOSwgIzI0XG4iCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4i
CiAgICAiXHRtb3YgcGMsIHI2XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3JEeW5hbWljIiAiOlxu
IgogICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIg
ImxsaW50X3Nsb3dfcGF0aF9yZXNvbHZlX3Njb3BlIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4i
CiAgICAiXHRhZGRzIHI5LCAjMjRcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJc
dG1vdiBwYywgcjZcbiIKCiIuTCIgImxsaW50X29wX2dldF9mcm9tX3Njb3BlIiAiOlxuIgogICAg
Ilx0bGRyIHIwLCBbcjksICMxNl1cbiIKICAgICJcdG1vdncgcjYsICM2NTUzNVxuIgogICAgIlx0
YW5kcyByMCwgcjZcbiIKICAgICJcdHRzdCByMCwgcjBcbiIKICAgICJcdGJuZSAiICIuTCIgIl9v
ZmZsaW5lYXNtX2dHbG9iYWxWYXIiICJcbiIKICAgICJcdGxkciByMCwgW3I5LCAjOF1cbiIKICAg
ICJcdGxkciByMCwgW3I3LCByMCwgbHNsICMzXVxuIgogICAgIlx0bGRyIHIxLCBbcjksICMyMF1c
biIKICAgICJcdGxkciByNiwgW3IwLCAjMF1cbiIKICAgICJcdGNtcCByNiwgcjFcbiIKICAgICJc
dGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX2dEeW5hbWljIiAiXG4iCiAgICAiXHRsZHIgcjQsIFty
OSwgIzI0XVxuIgogICAgIlx0Y21wIHI0LCAjMTAwXG4iCiAgICAiXHRibHQgIiAiLkwiICJfb2Zm
bGluZWFzbV9nZXRQcm9wZXJ0eV9fbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldF9faXNJbmxp
bmUiICJcbiIKICAgICJcdGxkciByMCwgW3IwLCAjOF1cbiIKICAgICJcdHJzYnMgcjQsIHI0LCAj
MFxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX2dldFByb3BlcnR5X19sb2FkUHJvcGVy
dHlBdFZhcmlhYmxlT2Zmc2V0X19yZWFkeSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9nZXRQ
cm9wZXJ0eV9fbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldF9faXNJbmxpbmUiICI6XG4iCiAg
ICAiXHRtb3Z3IHI2LCAjNjQ3NjhcbiIKICAgICJcdG1vdnQgcjYsICM2NTUzNVxuIgogICAgIlx0
YWRkIHIwLCByNlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9nZXRQcm9wZXJ0eV9fbG9hZFByb3Bl
cnR5QXRWYXJpYWJsZU9mZnNldF9fcmVhZHkiICI6XG4iCiAgICAiXHRhZGQgcjYsIHIwLCByNCwg
bHNsICMzXG4iCiAgICAiXHRsZHIgcjEsIFtyNiwgIzc4OF1cbiIKICAgICJcdGFkZCByNiwgcjAs
IHI0LCBsc2wgIzNcbiIKICAgICJcdGxkciByMiwgW3I2LCAjNzg0XVxuIgogICAgIlx0bGRyIHIw
LCBbcjksICMyOF1cbiIKICAgICJcdHN0ciByMSwgW3IwLCAjMjBdXG4iCiAgICAiXHRzdHIgcjIs
IFtyMCwgIzE2XVxuIgogICAgIlx0bGRyIHIwLCBbcjksICM0XVxuIgogICAgIlx0YWRkIHI2LCBy
NywgcjAsIGxzbCAjM1xuIgogICAgIlx0c3RyIHIxLCBbcjYsICM0XVxuIgogICAgIlx0c3RyIHIy
LCBbcjcsIHIwLCBsc2wgIzNdXG4iCiAgICAiXHRhZGRzIHI5LCAjMzJcbiIKICAgICJcdGxkciBy
NiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21f
Z0dsb2JhbFZhciIgIjpcbiIKICAgICJcdGNtcCByMCwgIzFcbiIKICAgICJcdGJuZSAiICIuTCIg
Il9vZmZsaW5lYXNtX2dDbG9zdXJlVmFyIiAiXG4iCiAgICAiXHRsZHIgcjAsIFtyOSwgIzI0XVxu
IgogICAgIlx0bGRyIHIxLCBbcjAsICM0XVxuIgogICAgIlx0bGRyIHIyLCBbcjAsICMwXVxuIgog
ICAgIlx0bGRyIHIwLCBbcjksICMyOF1cbiIKICAgICJcdHN0ciByMSwgW3IwLCAjMjBdXG4iCiAg
ICAiXHRzdHIgcjIsIFtyMCwgIzE2XVxuIgogICAgIlx0bGRyIHIwLCBbcjksICM0XVxuIgogICAg
Ilx0YWRkIHI2LCByNywgcjAsIGxzbCAjM1xuIgogICAgIlx0c3RyIHIxLCBbcjYsICM0XVxuIgog
ICAgIlx0c3RyIHIyLCBbcjcsIHIwLCBsc2wgIzNdXG4iCiAgICAiXHRhZGRzIHI5LCAjMzJcbiIK
ICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIKCiAgIi5MIiAi
X29mZmxpbmVhc21fZ0Nsb3N1cmVWYXIiICI6XG4iCiAgICAiXHRjbXAgcjAsICMyXG4iCiAgICAi
XHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9nR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzIiAiXG4iCiAgICAiXHRsZHIgcjIsIFtyOSwgIzhdXG4iCiAgICAiXHRhZGQgcjYsIHI3
LCByMiwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjEsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIgcjAs
IFtyNywgcjIsIGxzbCAjM11cbiIKICAgICJcdGxkciByMCwgW3IwLCAjMjRdXG4iCiAgICAiXHRs
ZHIgcjQsIFtyOSwgIzI0XVxuIgogICAgIlx0YWRkIHI2LCByMCwgcjQsIGxzbCAjM1xuIgogICAg
Ilx0bGRyIHIxLCBbcjYsICM0XVxuIgogICAgIlx0bGRyIHIyLCBbcjAsIHI0LCBsc2wgIzNdXG4i
CiAgICAiXHRsZHIgcjAsIFtyOSwgIzI4XVxuIgogICAgIlx0c3RyIHIxLCBbcjAsICMyMF1cbiIK
ICAgICJcdHN0ciByMiwgW3IwLCAjMTZdXG4iCiAgICAiXHRsZHIgcjAsIFtyOSwgIzRdXG4iCiAg
ICAiXHRhZGQgcjYsIHI3LCByMCwgbHNsICMzXG4iCiAgICAiXHRzdHIgcjEsIFtyNiwgIzRdXG4i
CiAgICAiXHRzdHIgcjIsIFtyNywgcjAsIGxzbCAjM11cbiIKICAgICJcdGFkZHMgcjksICMzMlxu
IgogICAgIlx0bGRyIHI2LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxuIgoKICAiLkwi
ICJfb2ZmbGluZWFzbV9nR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIiAiOlxu
IgogICAgIlx0Y21wIHIwLCAjM1xuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fZ0ds
b2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MiICJcbiIKICAgICJcdGxkciByMCwgW3I5LCAj
OF1cbiIKICAgICJcdGxkciByMCwgW3I3LCByMCwgbHNsICMzXVxuIgogICAgIlx0bGRyIHIxLCBb
cjksICMyMF1cbiIKICAgICJcdGxkciByNiwgW3IwLCAjMF1cbiIKICAgICJcdGNtcCByNiwgcjFc
biIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX2dEeW5hbWljIiAiXG4iCiAgICAiXHRs
ZHIgcjQsIFtyOSwgIzI0XVxuIgogICAgIlx0Y21wIHI0LCAjMTAwXG4iCiAgICAiXHRibHQgIiAi
LkwiICJfb2ZmbGluZWFzbV9nZXRQcm9wZXJ0eV9fNThfbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9m
ZnNldF9faXNJbmxpbmUiICJcbiIKICAgICJcdGxkciByMCwgW3IwLCAjOF1cbiIKICAgICJcdHJz
YnMgcjQsIHI0LCAjMFxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX2dldFByb3BlcnR5
X181OF9sb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0X19yZWFkeSIgIlxuIgoKICAiLkwiICJf
b2ZmbGluZWFzbV9nZXRQcm9wZXJ0eV9fNThfbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldF9f
aXNJbmxpbmUiICI6XG4iCiAgICAiXHRtb3Z3IHI2LCAjNjQ3NjhcbiIKICAgICJcdG1vdnQgcjYs
ICM2NTUzNVxuIgogICAgIlx0YWRkIHIwLCByNlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9nZXRQ
cm9wZXJ0eV9fNThfbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldF9fcmVhZHkiICI6XG4iCiAg
ICAiXHRhZGQgcjYsIHIwLCByNCwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjEsIFtyNiwgIzc4OF1c
biIKICAgICJcdGFkZCByNiwgcjAsIHI0LCBsc2wgIzNcbiIKICAgICJcdGxkciByMiwgW3I2LCAj
Nzg0XVxuIgogICAgIlx0bGRyIHIwLCBbcjksICMyOF1cbiIKICAgICJcdHN0ciByMSwgW3IwLCAj
MjBdXG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgIzE2XVxuIgogICAgIlx0bGRyIHIwLCBbcjksICM0
XVxuIgogICAgIlx0YWRkIHI2LCByNywgcjAsIGxzbCAjM1xuIgogICAgIlx0c3RyIHIxLCBbcjYs
ICM0XVxuIgogICAgIlx0c3RyIHIyLCBbcjcsIHIwLCBsc2wgIzNdXG4iCiAgICAiXHRhZGRzIHI5
LCAjMzJcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIK
CiAgIi5MIiAiX29mZmxpbmVhc21fZ0dsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MiICI6
XG4iCiAgICAiXHRjbXAgcjAsICM0XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9n
Q2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MiICJcbiIKICAgICJcdGxkciByMCwgW3I3
LCAjOF1cbiIKICAgICJcdGxkciByMCwgW3IwLCAjMjBdXG4iCiAgICAiXHRsZHIgcjAsIFtyMCwg
IzU5Nl1cbiIKICAgICJcdGxkcmIgcjYsIFtyMCwgIzRdXG4iCiAgICAiXHRjbXAgcjYsICMyXG4i
CiAgICAiXHRiZXEgIiAiLkwiICJfb2ZmbGluZWFzbV9nRHluYW1pYyIgIlxuIgogICAgIlx0bGRy
IHIyLCBbcjksICM4XVxuIgogICAgIlx0YWRkIHI2LCByNywgcjIsIGxzbCAjM1xuIgogICAgIlx0
bGRyIHIxLCBbcjYsICM0XVxuIgogICAgIlx0bGRyIHIwLCBbcjcsIHIyLCBsc2wgIzNdXG4iCiAg
ICAiXHRsZHIgcjAsIFtyOSwgIzI0XVxuIgogICAgIlx0bGRyIHIxLCBbcjAsICM0XVxuIgogICAg
Ilx0bGRyIHIyLCBbcjAsICMwXVxuIgogICAgIlx0bGRyIHIwLCBbcjksICMyOF1cbiIKICAgICJc
dHN0ciByMSwgW3IwLCAjMjBdXG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgIzE2XVxuIgogICAgIlx0
bGRyIHIwLCBbcjksICM0XVxuIgogICAgIlx0YWRkIHI2LCByNywgcjAsIGxzbCAjM1xuIgogICAg
Ilx0c3RyIHIxLCBbcjYsICM0XVxuIgogICAgIlx0c3RyIHIyLCBbcjcsIHIwLCBsc2wgIzNdXG4i
CiAgICAiXHRhZGRzIHI5LCAjMzJcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJc
dG1vdiBwYywgcjZcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fZ0Nsb3N1cmVWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzIiAiOlxuIgogICAgIlx0Y21wIHIwLCAjNVxuIgogICAgIlx0Ym5lICIgIi5M
IiAiX29mZmxpbmVhc21fZ0R5bmFtaWMiICJcbiIKICAgICJcdGxkciByMCwgW3I3LCAjOF1cbiIK
ICAgICJcdGxkciByMCwgW3IwLCAjMjBdXG4iCiAgICAiXHRsZHIgcjAsIFtyMCwgIzU5Nl1cbiIK
ICAgICJcdGxkcmIgcjYsIFtyMCwgIzRdXG4iCiAgICAiXHRjbXAgcjYsICMyXG4iCiAgICAiXHRi
ZXEgIiAiLkwiICJfb2ZmbGluZWFzbV9nRHluYW1pYyIgIlxuIgogICAgIlx0bGRyIHIyLCBbcjks
ICM4XVxuIgogICAgIlx0YWRkIHI2LCByNywgcjIsIGxzbCAjM1xuIgogICAgIlx0bGRyIHIxLCBb
cjYsICM0XVxuIgogICAgIlx0bGRyIHIwLCBbcjcsIHIyLCBsc2wgIzNdXG4iCiAgICAiXHRsZHIg
cjAsIFtyMCwgIzI0XVxuIgogICAgIlx0bGRyIHI0LCBbcjksICMyNF1cbiIKICAgICJcdGFkZCBy
NiwgcjAsIHI0LCBsc2wgIzNcbiIKICAgICJcdGxkciByMSwgW3I2LCAjNF1cbiIKICAgICJcdGxk
ciByMiwgW3IwLCByNCwgbHNsICMzXVxuIgogICAgIlx0bGRyIHIwLCBbcjksICMyOF1cbiIKICAg
ICJcdHN0ciByMSwgW3IwLCAjMjBdXG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgIzE2XVxuIgogICAg
Ilx0bGRyIHIwLCBbcjksICM0XVxuIgogICAgIlx0YWRkIHI2LCByNywgcjAsIGxzbCAjM1xuIgog
ICAgIlx0c3RyIHIxLCBbcjYsICM0XVxuIgogICAgIlx0c3RyIHIyLCBbcjcsIHIwLCBsc2wgIzNd
XG4iCiAgICAiXHRhZGRzIHI5LCAjMzJcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAg
ICJcdG1vdiBwYywgcjZcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fZ0R5bmFtaWMiICI6XG4iCiAg
ICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxp
bnRfc2xvd19wYXRoX2dldF9mcm9tX3Njb3BlIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCiAg
ICAiXHRhZGRzIHI5LCAjMzJcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1v
diBwYywgcjZcbiIKCiIuTCIgImxsaW50X29wX3B1dF90b19zY29wZSIgIjpcbiIKICAgICJcdGxk
ciByMCwgW3I5LCAjMTZdXG4iCiAgICAiXHRtb3Z3IHI2LCAjNjU1MzVcbiIKICAgICJcdGFuZHMg
cjAsIHI2XG4iCiAgICAiXHR0c3QgcjAsIHIwXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGlu
ZWFzbV9wR2xvYmFsVmFyIiAiXG4iCiAgICAiXHRsZHIgcjEsIFtyOSwgIzEyXVxuIgogICAgIlx0
bW92dyByNiwgIzBcbiIKICAgICJcdG1vdnQgcjYsICMxNjM4NFxuIgogICAgIlx0Y21wIHIxLCBy
NlxuIgogICAgIlx0YmdlICIgIi5MIiAiX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25PcGVyYW5k
c19fNThfbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fY29uc3RhbnQiICJcbiIKICAgICJcdGFk
ZCByNiwgcjcsIHIxLCBsc2wgIzNcbiIKICAgICJcdGxkciByMCwgW3I2LCAjNF1cbiIKICAgICJc
dGIgIiAiLkwiICJfb2ZmbGluZWFzbV93cml0ZUJhcnJpZXJPbk9wZXJhbmRzX181OF9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlVGFnX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3dyaXRl
QmFycmllck9uT3BlcmFuZHNfXzU4X2xvYWRDb25zdGFudE9yVmFyaWFibGVUYWdfX2NvbnN0YW50
IiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIwLCBbcjAsICMy
NzZdXG4iCiAgICAiXHRhZGQgcjYsIHIwLCByMSwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjAsIFty
NiwgIzRdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzU4
X2xvYWRDb25zdGFudE9yVmFyaWFibGVUYWdfX2RvbmUiICI6XG4iCiAgICAiXHRtdm4gcjYsICM0
XG4iCiAgICAiXHRjbXAgcjAsIHI2XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV81
OF93cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJEb25lIiAiXG4iCiAgICAiXHRs
ZHIgcjEsIFtyOSwgIzRdXG4iCiAgICAiXHRtb3Z3IHI2LCAjMFxuIgogICAgIlx0bW92dCByNiwg
IzE2Mzg0XG4iCiAgICAiXHRjbXAgcjEsIHI2XG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGlu
ZWFzbV93cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkX181OF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZFRhZ0N1c3RvbV9fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByNiwgcjcsIHIxLCBsc2wgIzNc
biIKICAgICJcdG12biByMTIsICM0XG4iCiAgICAiXHRsZHIgcjEwLCBbcjYsICM0XVxuIgogICAg
Ilx0Y21wIHIxMCwgcjEyXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV93cml0ZUJh
cnJpZXJPbk9wZXJhbmRzX181OF93cml0ZUJhcnJpZXJPbk9wZXJhbmRfX3dyaXRlQmFycmllckRv
bmUiICJcbiIKICAgICJcdGxkciByMiwgW3I3LCByMSwgbHNsICMzXVxuIgogICAgIlx0YiAiICIu
TCIgIl9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9uT3BlcmFuZHNfX3dyaXRlQmFycmllck9uT3Bl
cmFuZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzU4X2xvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3dy
aXRlQmFycmllck9uT3BlcmFuZHNfX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRfXzU4X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3Vz
dG9tX19jb25zdGFudCIgIjpcbiIKICAgICJcdGxkciByMiwgW3I3LCAjOF1cbiIKICAgICJcdGxk
ciByMiwgW3IyLCAjMjc2XVxuIgogICAgIlx0YWRkIHIxMiwgcjIsIHIxLCBsc2wgIzNcbiIKICAg
ICJcdG12biByMTAsICM0XG4iCiAgICAiXHRsZHIgcjYsIFtyMTIsICM0XVxuIgogICAgIlx0Y21w
IHI2LCByMTBcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9u
T3BlcmFuZHNfXzU4X3dyaXRlQmFycmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9uZSIgIlxu
IgogICAgIlx0bGRyIHIyLCBbcjIsIHIxLCBsc2wgIzNdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNt
X3dyaXRlQmFycmllck9uT3BlcmFuZHNfX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWRfXzU4X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFn
Q3VzdG9tX19kb25lIiAiOlxuIgogICAgIlx0bGRyYiByMSwgW3IyLCAjN11cbiIKICAgICJcdHRz
dCByMSwgcjFcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9u
T3BlcmFuZHNfXzU4X3dyaXRlQmFycmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9uZSIgIlxu
IgogICAgIlx0cHVzaCB7IHI3IH1cbiIKICAgICJcdHB1c2ggeyByOSB9XG4iCiAgICAiXHRzdWJz
IHNwLCBzcCwgIzhcbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjJcbiIK
ICAgICJcdGJseCAiICJsbGludF93cml0ZV9iYXJyaWVyX3Nsb3ciICJcbiIKICAgICJcdGFkZHMg
c3AsICM4XG4iCiAgICAiXHRwb3AgeyByOSB9XG4iCiAgICAiXHRwb3AgeyByNyB9XG4iCgogICIu
TCIgIl9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzU4X3dyaXRlQmFycmllck9u
T3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9uZSIgIjpcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fNThf
d3JpdGVCYXJyaWVyT25PcGVyYW5kc19fd3JpdGVCYXJyaWVyRG9uZSIgIjpcbiIKICAgICJcdGxk
ciByMCwgW3I5LCAjNF1cbiIKICAgICJcdGxkciByMCwgW3I3LCByMCwgbHNsICMzXVxuIgogICAg
Ilx0bGRyIHIxLCBbcjksICMyMF1cbiIKICAgICJcdGxkciByMTAsIFtyMCwgIzBdXG4iCiAgICAi
XHRjbXAgcjEwLCByMVxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fcER5bmFtaWMi
ICJcbiIKICAgICJcdGxkciByMSwgW3I5LCAjMTJdXG4iCiAgICAiXHRtb3Z3IHIxMCwgIzBcbiIK
ICAgICJcdG1vdnQgcjEwLCAjMTYzODRcbiIKICAgICJcdGNtcCByMSwgcjEwXG4iCiAgICAiXHRi
Z2UgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRQcm9wZXJ0eV9fNTlfbG9hZENvbnN0YW50T3JWYXJp
YWJsZV9fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByMTAsIHI3LCByMSwgbHNsICMzXG4iCiAg
ICAiXHRsZHIgcjIsIFtyMTAsICM0XVxuIgogICAgIlx0bGRyIHI0LCBbcjcsIHIxLCBsc2wgIzNd
XG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fcHV0UHJvcGVydHlfXzU5X2xvYWRDb25z
dGFudE9yVmFyaWFibGVfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0UHJvcGVy
dHlfXzU5X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRy
IHI0LCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHI0LCBbcjQsICMyNzZdXG4iCiAgICAiXHRhZGQg
cjEwLCByNCwgcjEsIGxzbCAjM1xuIgogICAgIlx0bGRyIHIyLCBbcjEwLCAjNF1cbiIKICAgICJc
dGxkciByNCwgW3I0LCByMSwgbHNsICMzXVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRQcm9w
ZXJ0eV9fNTlfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSIgIjpcbiIKICAgICJcdGxkciBy
MSwgW3I5LCAjMjRdXG4iCiAgICAiXHRjbXAgcjEsICMxMDBcbiIKICAgICJcdGJsdCAiICIuTCIg
Il9vZmZsaW5lYXNtX3B1dFByb3BlcnR5X19zdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldF9f
aXNJbmxpbmUiICJcbiIKICAgICJcdGxkciByMCwgW3IwLCAjOF1cbiIKICAgICJcdHJzYnMgcjEs
IHIxLCAjMFxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dFByb3BlcnR5X19zdG9y
ZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldF9fcmVhZHkiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVh
c21fcHV0UHJvcGVydHlfX3N0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0X19pc0lubGluZSIg
IjpcbiIKICAgICJcdG1vdncgcjEwLCAjNjQ3NjhcbiIKICAgICJcdG1vdnQgcjEwLCAjNjU1MzVc
biIKICAgICJcdGFkZCByMCwgcjEwXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dFByb3BlcnR5
X19zdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldF9fcmVhZHkiICI6XG4iCiAgICAiXHRhZGQg
cjEwLCByMCwgcjEsIGxzbCAjM1xuIgogICAgIlx0c3RyIHIyLCBbcjEwLCAjNzg4XVxuIgogICAg
Ilx0YWRkIHIxMCwgcjAsIHIxLCBsc2wgIzNcbiIKICAgICJcdHN0ciByNCwgW3IxMCwgIzc4NF1c
biIKICAgICJcdGFkZHMgcjksICMyOFxuIgogICAgIlx0bGRyIHIxMCwgW3I5LCAjMF1cbiIKICAg
ICJcdG1vdiBwYywgcjEwXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3BHbG9iYWxWYXIiICI6XG4i
CiAgICAiXHRjbXAgcjAsICMxXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9wQ2xv
c3VyZVZhciIgIlxuIgogICAgIlx0bGRyIHIxLCBbcjksICMxMl1cbiIKICAgICJcdG1vdncgcjEw
LCAjMFxuIgogICAgIlx0bW92dCByMTAsICMxNjM4NFxuIgogICAgIlx0Y21wIHIxLCByMTBcbiIK
ICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9uR2xvYmFsT2JqZWN0
X181OV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnX19jb25zdGFudCIgIlxuIgogICAgIlx0YWRk
IHIxMCwgcjcsIHIxLCBsc2wgIzNcbiIKICAgICJcdGxkciByMCwgW3IxMCwgIzRdXG4iCiAgICAi
XHRiICIgIi5MIiAiX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25HbG9iYWxPYmplY3RfXzU5X2xv
YWRDb25zdGFudE9yVmFyaWFibGVUYWdfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21f
d3JpdGVCYXJyaWVyT25HbG9iYWxPYmplY3RfXzU5X2xvYWRDb25zdGFudE9yVmFyaWFibGVUYWdf
X2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIw
LCBbcjAsICMyNzZdXG4iCiAgICAiXHRhZGQgcjEwLCByMCwgcjEsIGxzbCAjM1xuIgogICAgIlx0
bGRyIHIwLCBbcjEwLCAjNF1cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25H
bG9iYWxPYmplY3RfXzU5X2xvYWRDb25zdGFudE9yVmFyaWFibGVUYWdfX2RvbmUiICI6XG4iCiAg
ICAiXHRtdm4gcjEwLCAjNFxuIgogICAgIlx0Y21wIHIwLCByMTBcbiIKICAgICJcdGJuZSAiICIu
TCIgIl9vZmZsaW5lYXNtXzU5X3dyaXRlQmFycmllck9uR2xvYmFsT2JqZWN0X193cml0ZUJhcnJp
ZXJEb25lIiAiXG4iCiAgICAiXHRsZHIgcjQsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjQsIFty
NCwgIzIwXVxuIgogICAgIlx0bGRyYiByMSwgW3I0LCAjN11cbiIKICAgICJcdHRzdCByMSwgcjFc
biIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtXzU5X3dyaXRlQmFycmllck9uR2xvYmFs
T2JqZWN0X193cml0ZUJhcnJpZXJEb25lIiAiXG4iCiAgICAiXHRwdXNoIHsgcjcgfVxuIgogICAg
Ilx0cHVzaCB7IHI5IH1cbiIKICAgICJcdHN1YnMgc3AsIHNwLCAjOFxuIgogICAgIlx0bW92IHIw
LCByN1xuIgogICAgIlx0bW92IHIxLCByNFxuIgogICAgIlx0Ymx4ICIgImxsaW50X3dyaXRlX2Jh
cnJpZXJfc2xvdyIgIlxuIgogICAgIlx0YWRkcyBzcCwgIzhcbiIKICAgICJcdHBvcCB7IHI5IH1c
biIKICAgICJcdHBvcCB7IHI3IH1cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fNTlfd3JpdGVCYXJy
aWVyT25HbG9iYWxPYmplY3RfX3dyaXRlQmFycmllckRvbmUiICI6XG4iCiAgICAiXHRsZHIgcjAs
IFtyOSwgIzEyXVxuIgogICAgIlx0bW92dyByMTAsICMwXG4iCiAgICAiXHRtb3Z0IHIxMCwgIzE2
Mzg0XG4iCiAgICAiXHRjbXAgcjAsIHIxMFxuIgogICAgIlx0YmdlICIgIi5MIiAiX29mZmxpbmVh
c21fcHV0R2xvYmFsVmFyX182MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCIgIlxu
IgogICAgIlx0YWRkIHIxMCwgcjcsIHIwLCBsc2wgIzNcbiIKICAgICJcdGxkciByMSwgW3IxMCwg
IzRdXG4iCiAgICAiXHRsZHIgcjIsIFtyNywgcjAsIGxzbCAjM11cbiIKICAgICJcdGIgIiAiLkwi
ICJfb2ZmbGluZWFzbV9wdXRHbG9iYWxWYXJfXzYwX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Rv
bmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0R2xvYmFsVmFyX182MF9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlX19jb25zdGFudCIgIjpcbiIKICAgICJcdGxkciByMiwgW3I3LCAjOF1cbiIK
ICAgICJcdGxkciByMiwgW3IyLCAjMjc2XVxuIgogICAgIlx0YWRkIHIxMCwgcjIsIHIwLCBsc2wg
IzNcbiIKICAgICJcdGxkciByMSwgW3IxMCwgIzRdXG4iCiAgICAiXHRsZHIgcjIsIFtyMiwgcjAs
IGxzbCAjM11cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0R2xvYmFsVmFyX182MF9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19kb25lIiAiOlxuIgogICAgIlx0bGRyIHI0LCBbcjksICMyMF1cbiIK
ICAgICJcdGxkcmIgcjAsIFtyNCwgIzRdXG4iCiAgICAiXHRjbXAgcjAsICMyXG4iCiAgICAiXHRi
ZXEgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRHbG9iYWxWYXJfXzYwX25vdGlmeVdyaXRlX19kb25l
IiAiXG4iCiAgICAiXHRsZHIgcjEwLCBbcjQsICMzMl1cbiIKICAgICJcdGNtcCByMiwgcjEwXG4i
CiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9wRHluYW1pYyIgIlxuIgogICAgIlx0bGRy
IHIxMCwgW3I0LCAjMzZdXG4iCiAgICAiXHRjbXAgcjEsIHIxMFxuIgogICAgIlx0Ym5lICIgIi5M
IiAiX29mZmxpbmVhc21fcER5bmFtaWMiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0R2xv
YmFsVmFyX182MF9ub3RpZnlXcml0ZV9fZG9uZSIgIjpcbiIKICAgICJcdGxkciByMCwgW3I5LCAj
MjRdXG4iCiAgICAiXHRzdHIgcjEsIFtyMCwgIzRdXG4iCiAgICAiXHRzdHIgcjIsIFtyMCwgIzBd
XG4iCiAgICAiXHRhZGRzIHI5LCAjMjhcbiIKICAgICJcdGxkciByMTAsIFtyOSwgIzBdXG4iCiAg
ICAiXHRtb3YgcGMsIHIxMFxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wQ2xvc3VyZVZhciIgIjpc
biIKICAgICJcdGNtcCByMCwgIzJcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX3BH
bG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MiICJcbiIKICAgICJcdGxkciByMSwg
W3I5LCAjMTJdXG4iCiAgICAiXHRtb3Z3IHIxMCwgIzBcbiIKICAgICJcdG1vdnQgcjEwLCAjMTYz
ODRcbiIKICAgICJcdGNtcCByMSwgcjEwXG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFz
bV93cml0ZUJhcnJpZXJPbk9wZXJhbmRzX182MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnX19j
b25zdGFudCIgIlxuIgogICAgIlx0YWRkIHIxMCwgcjcsIHIxLCBsc2wgIzNcbiIKICAgICJcdGxk
ciByMCwgW3IxMCwgIzRdXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fd3JpdGVCYXJy
aWVyT25PcGVyYW5kc19fNjBfbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fZG9uZSIgIlxuIgoK
ICAiLkwiICJfb2ZmbGluZWFzbV93cml0ZUJhcnJpZXJPbk9wZXJhbmRzX182MF9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlVGFnX19jb25zdGFudCIgIjpcbiIKICAgICJcdGxkciByMCwgW3I3LCAjOF1c
biIKICAgICJcdGxkciByMCwgW3IwLCAjMjc2XVxuIgogICAgIlx0YWRkIHIxMCwgcjAsIHIxLCBs
c2wgIzNcbiIKICAgICJcdGxkciByMCwgW3IxMCwgIzRdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNt
X3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzYwX2xvYWRDb25zdGFudE9yVmFyaWFibGVUYWdfX2Rv
bmUiICI6XG4iCiAgICAiXHRtdm4gcjEwLCAjNFxuIgogICAgIlx0Y21wIHIwLCByMTBcbiIKICAg
ICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtXzYwX3dyaXRlQmFycmllck9uT3BlcmFuZHNfX3dy
aXRlQmFycmllckRvbmUiICJcbiIKICAgICJcdGxkciByMSwgW3I5LCAjNF1cbiIKICAgICJcdG1v
dncgcjEwLCAjMFxuIgogICAgIlx0bW92dCByMTAsICMxNjM4NFxuIgogICAgIlx0Y21wIHIxLCBy
MTBcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9uT3BlcmFu
ZHNfX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRf
XzYwX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCIgIlxu
IgogICAgIlx0YWRkIHIxMCwgcjcsIHIxLCBsc2wgIzNcbiIKICAgICJcdG12biByNiwgIzRcbiIK
ICAgICJcdGxkciByMTIsIFtyMTAsICM0XVxuIgogICAgIlx0Y21wIHIxMiwgcjZcbiIKICAgICJc
dGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzYwX3dyaXRl
QmFycmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9uZSIgIlxuIgogICAgIlx0bGRyIHIyLCBb
cjcsIHIxLCBsc2wgIzNdXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fd3JpdGVCYXJy
aWVyT25PcGVyYW5kc19fd3JpdGVCYXJyaWVyT25PcGVyYW5kX19sb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZF9fNjBfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2Rv
bmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fd3Jp
dGVCYXJyaWVyT25PcGVyYW5kX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNjBfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50IiAiOlxuIgogICAg
Ilx0bGRyIHIyLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIyLCBbcjIsICMyNzZdXG4iCiAgICAi
XHRhZGQgcjYsIHIyLCByMSwgbHNsICMzXG4iCiAgICAiXHRtdm4gcjEyLCAjNFxuIgogICAgIlx0
bGRyIHIxMCwgW3I2LCAjNF1cbiIKICAgICJcdGNtcCByMTAsIHIxMlxuIgogICAgIlx0Ym5lICIg
Ii5MIiAiX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fNjBfd3JpdGVCYXJyaWVy
T25PcGVyYW5kX193cml0ZUJhcnJpZXJEb25lIiAiXG4iCiAgICAiXHRsZHIgcjIsIFtyMiwgcjEs
IGxzbCAjM11cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19f
d3JpdGVCYXJyaWVyT25PcGVyYW5kX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNjBf
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUiICI6XG4iCiAgICAi
XHRsZHJiIHIxLCBbcjIsICM3XVxuIgogICAgIlx0dHN0IHIxLCByMVxuIgogICAgIlx0Ym5lICIg
Ii5MIiAiX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fNjBfd3JpdGVCYXJyaWVy
T25PcGVyYW5kX193cml0ZUJhcnJpZXJEb25lIiAiXG4iCiAgICAiXHRwdXNoIHsgcjcgfVxuIgog
ICAgIlx0cHVzaCB7IHI5IH1cbiIKICAgICJcdHN1YnMgc3AsIHNwLCAjOFxuIgogICAgIlx0bW92
IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByMlxuIgogICAgIlx0Ymx4ICIgImxsaW50X3dyaXRl
X2JhcnJpZXJfc2xvdyIgIlxuIgogICAgIlx0YWRkcyBzcCwgIzhcbiIKICAgICJcdHBvcCB7IHI5
IH1cbiIKICAgICJcdHBvcCB7IHI3IH1cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fd3JpdGVCYXJy
aWVyT25PcGVyYW5kc19fNjBfd3JpdGVCYXJyaWVyT25PcGVyYW5kX193cml0ZUJhcnJpZXJEb25l
IiAiOlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV82MF93cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193
cml0ZUJhcnJpZXJEb25lIiAiOlxuIgogICAgIlx0bGRyIHIyLCBbcjksICM0XVxuIgogICAgIlx0
YWRkIHIxMiwgcjcsIHIyLCBsc2wgIzNcbiIKICAgICJcdGxkciByMSwgW3IxMiwgIzRdXG4iCiAg
ICAiXHRsZHIgcjAsIFtyNywgcjIsIGxzbCAjM11cbiIKICAgICJcdGxkciByMSwgW3I5LCAjMTJd
XG4iCiAgICAiXHRtb3Z3IHIxMiwgIzBcbiIKICAgICJcdG1vdnQgcjEyLCAjMTYzODRcbiIKICAg
ICJcdGNtcCByMSwgcjEyXG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRDbG9z
dXJlVmFyX182MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCIgIlxuIgogICAgIlx0
YWRkIHIxMiwgcjcsIHIxLCBsc2wgIzNcbiIKICAgICJcdGxkciByMiwgW3IxMiwgIzRdXG4iCiAg
ICAiXHRsZHIgcjQsIFtyNywgcjEsIGxzbCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGlu
ZWFzbV9wdXRDbG9zdXJlVmFyX182MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lIiAiXG4i
CgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dENsb3N1cmVWYXJfXzYxX2xvYWRDb25zdGFudE9yVmFy
aWFibGVfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHI0LCBbcjcsICM4XVxuIgogICAgIlx0
bGRyIHI0LCBbcjQsICMyNzZdXG4iCiAgICAiXHRhZGQgcjEyLCByNCwgcjEsIGxzbCAjM1xuIgog
ICAgIlx0bGRyIHIyLCBbcjEyLCAjNF1cbiIKICAgICJcdGxkciByNCwgW3I0LCByMSwgbHNsICMz
XVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRDbG9zdXJlVmFyX182MV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlX19kb25lIiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjAsICMyNF1cbiIKICAgICJc
dGxkciByMSwgW3I5LCAjMjRdXG4iCiAgICAiXHRhZGQgcjEyLCByMCwgcjEsIGxzbCAjM1xuIgog
ICAgIlx0c3RyIHIyLCBbcjEyLCAjNF1cbiIKICAgICJcdHN0ciByNCwgW3IwLCByMSwgbHNsICMz
XVxuIgogICAgIlx0YWRkcyByOSwgIzI4XG4iCiAgICAiXHRsZHIgcjEyLCBbcjksICMwXVxuIgog
ICAgIlx0bW92IHBjLCByMTJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcEdsb2JhbFByb3BlcnR5
V2l0aFZhckluamVjdGlvbkNoZWNrcyIgIjpcbiIKICAgICJcdGNtcCByMCwgIzNcbiIKICAgICJc
dGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX3BHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
IiAiXG4iCiAgICAiXHRsZHIgcjEsIFtyOSwgIzEyXVxuIgogICAgIlx0bW92dyByMTIsICMwXG4i
CiAgICAiXHRtb3Z0IHIxMiwgIzE2Mzg0XG4iCiAgICAiXHRjbXAgcjEsIHIxMlxuIgogICAgIlx0
YmdlICIgIi5MIiAiX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fNjFfbG9hZENv
bnN0YW50T3JWYXJpYWJsZVRhZ19fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByMTIsIHI3LCBy
MSwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjAsIFtyMTIsICM0XVxuIgogICAgIlx0YiAiICIuTCIg
Il9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzYxX2xvYWRDb25zdGFudE9yVmFy
aWFibGVUYWdfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25P
cGVyYW5kc19fNjFfbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fY29uc3RhbnQiICI6XG4iCiAg
ICAiXHRsZHIgcjAsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjAsIFtyMCwgIzI3Nl1cbiIKICAg
ICJcdGFkZCByMTIsIHIwLCByMSwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjAsIFtyMTIsICM0XVxu
IgoKICAiLkwiICJfb2ZmbGluZWFzbV93cml0ZUJhcnJpZXJPbk9wZXJhbmRzX182MV9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlVGFnX19kb25lIiAiOlxuIgogICAgIlx0bXZuIHIxMiwgIzRcbiIKICAg
ICJcdGNtcCByMCwgcjEyXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV82MV93cml0
ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJEb25lIiAiXG4iCiAgICAiXHRsZHIgcjEs
IFtyOSwgIzRdXG4iCiAgICAiXHRtb3Z3IHIxMiwgIzBcbiIKICAgICJcdG1vdnQgcjEyLCAjMTYz
ODRcbiIKICAgICJcdGNtcCByMSwgcjEyXG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFz
bV93cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkX182MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRh
Z0N1c3RvbV9fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByMTIsIHI3LCByMSwgbHNsICMzXG4i
CiAgICAiXHRtdm4gcjEwLCAjNFxuIgogICAgIlx0bGRyIHI2LCBbcjEyLCAjNF1cbiIKICAgICJc
dGNtcCByNiwgcjEwXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV93cml0ZUJhcnJp
ZXJPbk9wZXJhbmRzX182MV93cml0ZUJhcnJpZXJPbk9wZXJhbmRfX3dyaXRlQmFycmllckRvbmUi
ICJcbiIKICAgICJcdGxkciByMiwgW3I3LCByMSwgbHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIg
Il9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9uT3BlcmFuZHNfX3dyaXRlQmFycmllck9uT3BlcmFu
ZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzYxX2xvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3dyaXRl
QmFycmllck9uT3BlcmFuZHNfX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRfXzYxX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9t
X19jb25zdGFudCIgIjpcbiIKICAgICJcdGxkciByMiwgW3I3LCAjOF1cbiIKICAgICJcdGxkciBy
MiwgW3IyLCAjMjc2XVxuIgogICAgIlx0YWRkIHIxMCwgcjIsIHIxLCBsc2wgIzNcbiIKICAgICJc
dG12biByNiwgIzRcbiIKICAgICJcdGxkciByMTIsIFtyMTAsICM0XVxuIgogICAgIlx0Y21wIHIx
MiwgcjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9uT3Bl
cmFuZHNfXzYxX3dyaXRlQmFycmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9uZSIgIlxuIgog
ICAgIlx0bGRyIHIyLCBbcjIsIHIxLCBsc2wgIzNdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3dy
aXRlQmFycmllck9uT3BlcmFuZHNfX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRfXzYxX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3Vz
dG9tX19kb25lIiAiOlxuIgogICAgIlx0bGRyYiByMSwgW3IyLCAjN11cbiIKICAgICJcdHRzdCBy
MSwgcjFcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9uT3Bl
cmFuZHNfXzYxX3dyaXRlQmFycmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9uZSIgIlxuIgog
ICAgIlx0cHVzaCB7IHI3IH1cbiIKICAgICJcdHB1c2ggeyByOSB9XG4iCiAgICAiXHRzdWJzIHNw
LCBzcCwgIzhcbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjJcbiIKICAg
ICJcdGJseCAiICJsbGludF93cml0ZV9iYXJyaWVyX3Nsb3ciICJcbiIKICAgICJcdGFkZHMgc3As
ICM4XG4iCiAgICAiXHRwb3AgeyByOSB9XG4iCiAgICAiXHRwb3AgeyByNyB9XG4iCgogICIuTCIg
Il9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzYxX3dyaXRlQmFycmllck9uT3Bl
cmFuZF9fd3JpdGVCYXJyaWVyRG9uZSIgIjpcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fNjFfd3Jp
dGVCYXJyaWVyT25PcGVyYW5kc19fd3JpdGVCYXJyaWVyRG9uZSIgIjpcbiIKICAgICJcdGxkciBy
MCwgW3I5LCAjNF1cbiIKICAgICJcdGxkciByMCwgW3I3LCByMCwgbHNsICMzXVxuIgogICAgIlx0
bGRyIHIxLCBbcjksICMyMF1cbiIKICAgICJcdGxkciByNiwgW3IwLCAjMF1cbiIKICAgICJcdGNt
cCByNiwgcjFcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX3BEeW5hbWljIiAiXG4i
CiAgICAiXHRsZHIgcjEsIFtyOSwgIzEyXVxuIgogICAgIlx0bW92dyByNiwgIzBcbiIKICAgICJc
dG1vdnQgcjYsICMxNjM4NFxuIgogICAgIlx0Y21wIHIxLCByNlxuIgogICAgIlx0YmdlICIgIi5M
IiAiX29mZmxpbmVhc21fcHV0UHJvcGVydHlfXzYyX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Nv
bnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjYsIHI3LCByMSwgbHNsICMzXG4iCiAgICAiXHRsZHIg
cjIsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIgcjQsIFtyNywgcjEsIGxzbCAjM11cbiIKICAgICJc
dGIgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRQcm9wZXJ0eV9fNjJfbG9hZENvbnN0YW50T3JWYXJp
YWJsZV9fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRQcm9wZXJ0eV9fNjJfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQiICI6XG4iCiAgICAiXHRsZHIgcjQsIFtyNywg
IzhdXG4iCiAgICAiXHRsZHIgcjQsIFtyNCwgIzI3Nl1cbiIKICAgICJcdGFkZCByNiwgcjQsIHIx
LCBsc2wgIzNcbiIKICAgICJcdGxkciByMiwgW3I2LCAjNF1cbiIKICAgICJcdGxkciByNCwgW3I0
LCByMSwgbHNsICMzXVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRQcm9wZXJ0eV9fNjJfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSIgIjpcbiIKICAgICJcdGxkciByMSwgW3I5LCAjMjRd
XG4iCiAgICAiXHRjbXAgcjEsICMxMDBcbiIKICAgICJcdGJsdCAiICIuTCIgIl9vZmZsaW5lYXNt
X3B1dFByb3BlcnR5X182Ml9zdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldF9faXNJbmxpbmUi
ICJcbiIKICAgICJcdGxkciByMCwgW3IwLCAjOF1cbiIKICAgICJcdHJzYnMgcjEsIHIxLCAjMFxu
IgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dFByb3BlcnR5X182Ml9zdG9yZVByb3Bl
cnR5QXRWYXJpYWJsZU9mZnNldF9fcmVhZHkiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcHV0
UHJvcGVydHlfXzYyX3N0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0X19pc0lubGluZSIgIjpc
biIKICAgICJcdG1vdncgcjYsICM2NDc2OFxuIgogICAgIlx0bW92dCByNiwgIzY1NTM1XG4iCiAg
ICAiXHRhZGQgcjAsIHI2XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dFByb3BlcnR5X182Ml9z
dG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldF9fcmVhZHkiICI6XG4iCiAgICAiXHRhZGQgcjYs
IHIwLCByMSwgbHNsICMzXG4iCiAgICAiXHRzdHIgcjIsIFtyNiwgIzc4OF1cbiIKICAgICJcdGFk
ZCByNiwgcjAsIHIxLCBsc2wgIzNcbiIKICAgICJcdHN0ciByNCwgW3I2LCAjNzg0XVxuIgogICAg
Ilx0YWRkcyByOSwgIzI4XG4iCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3Yg
cGMsIHI2XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3BHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzIiAiOlxuIgogICAgIlx0Y21wIHIwLCAjNFxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29m
ZmxpbmVhc21fcENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIiAiXG4iCiAgICAiXHRs
ZHIgcjEsIFtyOSwgIzEyXVxuIgogICAgIlx0bW92dyByNiwgIzBcbiIKICAgICJcdG1vdnQgcjYs
ICMxNjM4NFxuIgogICAgIlx0Y21wIHIxLCByNlxuIgogICAgIlx0YmdlICIgIi5MIiAiX29mZmxp
bmVhc21fd3JpdGVCYXJyaWVyT25HbG9iYWxPYmplY3RfXzYyX2xvYWRDb25zdGFudE9yVmFyaWFi
bGVUYWdfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjYsIHI3LCByMSwgbHNsICMzXG4iCiAg
ICAiXHRsZHIgcjAsIFtyNiwgIzRdXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fd3Jp
dGVCYXJyaWVyT25HbG9iYWxPYmplY3RfXzYyX2xvYWRDb25zdGFudE9yVmFyaWFibGVUYWdfX2Rv
bmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25HbG9iYWxPYmplY3Rf
XzYyX2xvYWRDb25zdGFudE9yVmFyaWFibGVUYWdfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRy
IHIwLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIwLCBbcjAsICMyNzZdXG4iCiAgICAiXHRhZGQg
cjYsIHIwLCByMSwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjAsIFtyNiwgIzRdXG4iCgogICIuTCIg
Il9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9uR2xvYmFsT2JqZWN0X182Ml9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlVGFnX19kb25lIiAiOlxuIgogICAgIlx0bXZuIHI2LCAjNFxuIgogICAgIlx0Y21w
IHIwLCByNlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fNjJfd3JpdGVCYXJyaWVy
T25HbG9iYWxPYmplY3RfX3dyaXRlQmFycmllckRvbmUiICJcbiIKICAgICJcdGxkciByNCwgW3I3
LCAjOF1cbiIKICAgICJcdGxkciByNCwgW3I0LCAjMjBdXG4iCiAgICAiXHRsZHJiIHIxLCBbcjQs
ICM3XVxuIgogICAgIlx0dHN0IHIxLCByMVxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVh
c21fNjJfd3JpdGVCYXJyaWVyT25HbG9iYWxPYmplY3RfX3dyaXRlQmFycmllckRvbmUiICJcbiIK
ICAgICJcdHB1c2ggeyByNyB9XG4iCiAgICAiXHRwdXNoIHsgcjkgfVxuIgogICAgIlx0c3VicyBz
cCwgc3AsICM4XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHI0XG4iCiAg
ICAiXHRibHggIiAibGxpbnRfd3JpdGVfYmFycmllcl9zbG93IiAiXG4iCiAgICAiXHRhZGRzIHNw
LCAjOFxuIgogICAgIlx0cG9wIHsgcjkgfVxuIgogICAgIlx0cG9wIHsgcjcgfVxuIgoKICAiLkwi
ICJfb2ZmbGluZWFzbV82Ml93cml0ZUJhcnJpZXJPbkdsb2JhbE9iamVjdF9fd3JpdGVCYXJyaWVy
RG9uZSIgIjpcbiIKICAgICJcdGxkciByMCwgW3I3LCAjOF1cbiIKICAgICJcdGxkciByMCwgW3Iw
LCAjMjBdXG4iCiAgICAiXHRsZHIgcjAsIFtyMCwgIzU5Nl1cbiIKICAgICJcdGxkcmIgcjYsIFty
MCwgIzRdXG4iCiAgICAiXHRjbXAgcjYsICMyXG4iCiAgICAiXHRiZXEgIiAiLkwiICJfb2ZmbGlu
ZWFzbV9wRHluYW1pYyIgIlxuIgogICAgIlx0bGRyIHIwLCBbcjksICMxMl1cbiIKICAgICJcdG1v
dncgcjYsICMwXG4iCiAgICAiXHRtb3Z0IHI2LCAjMTYzODRcbiIKICAgICJcdGNtcCByMCwgcjZc
biIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEdsb2JhbFZhcl9fNjNfbG9hZENv
bnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByNiwgcjcsIHIwLCBs
c2wgIzNcbiIKICAgICJcdGxkciByMSwgW3I2LCAjNF1cbiIKICAgICJcdGxkciByMiwgW3I3LCBy
MCwgbHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX3B1dEdsb2JhbFZhcl9f
NjNfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFz
bV9wdXRHbG9iYWxWYXJfXzYzX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50IiAiOlxu
IgogICAgIlx0bGRyIHIyLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIyLCBbcjIsICMyNzZdXG4i
CiAgICAiXHRhZGQgcjYsIHIyLCByMCwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjEsIFtyNiwgIzRd
XG4iCiAgICAiXHRsZHIgcjIsIFtyMiwgcjAsIGxzbCAjM11cbiIKCiAgIi5MIiAiX29mZmxpbmVh
c21fcHV0R2xvYmFsVmFyX182M19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lIiAiOlxuIgog
ICAgIlx0bGRyIHI0LCBbcjksICMyMF1cbiIKICAgICJcdGxkcmIgcjAsIFtyNCwgIzRdXG4iCiAg
ICAiXHRjbXAgcjAsICMyXG4iCiAgICAiXHRiZXEgIiAiLkwiICJfb2ZmbGluZWFzbV9wdXRHbG9i
YWxWYXJfXzYzX25vdGlmeVdyaXRlX19kb25lIiAiXG4iCiAgICAiXHRsZHIgcjYsIFtyNCwgIzMy
XVxuIgogICAgIlx0Y21wIHIyLCByNlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21f
cER5bmFtaWMiICJcbiIKICAgICJcdGxkciByNiwgW3I0LCAjMzZdXG4iCiAgICAiXHRjbXAgcjEs
IHI2XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9wRHluYW1pYyIgIlxuIgoKICAi
LkwiICJfb2ZmbGluZWFzbV9wdXRHbG9iYWxWYXJfXzYzX25vdGlmeVdyaXRlX19kb25lIiAiOlxu
IgogICAgIlx0bGRyIHIwLCBbcjksICMyNF1cbiIKICAgICJcdHN0ciByMSwgW3IwLCAjNF1cbiIK
ICAgICJcdHN0ciByMiwgW3IwLCAjMF1cbiIKICAgICJcdGFkZHMgcjksICMyOFxuIgogICAgIlx0
bGRyIHI2LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxuIgoKICAiLkwiICJfb2ZmbGlu
ZWFzbV9wQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MiICI6XG4iCiAgICAiXHRjbXAg
cjAsICM1XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9wRHluYW1pYyIgIlxuIgog
ICAgIlx0bGRyIHIxLCBbcjksICMxMl1cbiIKICAgICJcdG1vdncgcjYsICMwXG4iCiAgICAiXHRt
b3Z0IHI2LCAjMTYzODRcbiIKICAgICJcdGNtcCByMSwgcjZcbiIKICAgICJcdGJnZSAiICIuTCIg
Il9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzYzX2xvYWRDb25zdGFudE9yVmFy
aWFibGVUYWdfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjYsIHI3LCByMSwgbHNsICMzXG4i
CiAgICAiXHRsZHIgcjAsIFtyNiwgIzRdXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21f
d3JpdGVCYXJyaWVyT25PcGVyYW5kc19fNjNfbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fZG9u
ZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV93cml0ZUJhcnJpZXJPbk9wZXJhbmRzX182M19s
b2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnX19jb25zdGFudCIgIjpcbiIKICAgICJcdGxkciByMCwg
W3I3LCAjOF1cbiIKICAgICJcdGxkciByMCwgW3IwLCAjMjc2XVxuIgogICAgIlx0YWRkIHI2LCBy
MCwgcjEsIGxzbCAjM1xuIgogICAgIlx0bGRyIHIwLCBbcjYsICM0XVxuIgoKICAiLkwiICJfb2Zm
bGluZWFzbV93cml0ZUJhcnJpZXJPbk9wZXJhbmRzX182M19sb2FkQ29uc3RhbnRPclZhcmlhYmxl
VGFnX19kb25lIiAiOlxuIgogICAgIlx0bXZuIHI2LCAjNFxuIgogICAgIlx0Y21wIHIwLCByNlxu
IgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fNjNfd3JpdGVCYXJyaWVyT25PcGVyYW5k
c19fd3JpdGVCYXJyaWVyRG9uZSIgIlxuIgogICAgIlx0bGRyIHIxLCBbcjksICM0XVxuIgogICAg
Ilx0bW92dyByNiwgIzBcbiIKICAgICJcdG1vdnQgcjYsICMxNjM4NFxuIgogICAgIlx0Y21wIHIx
LCByNlxuIgogICAgIlx0YmdlICIgIi5MIiAiX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25PcGVy
YW5kc19fd3JpdGVCYXJyaWVyT25PcGVyYW5kX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZF9fNjNfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50IiAi
XG4iCiAgICAiXHRhZGQgcjYsIHI3LCByMSwgbHNsICMzXG4iCiAgICAiXHRtdm4gcjEyLCAjNFxu
IgogICAgIlx0bGRyIHIxMCwgW3I2LCAjNF1cbiIKICAgICJcdGNtcCByMTAsIHIxMlxuIgogICAg
Ilx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fNjNfd3Jp
dGVCYXJyaWVyT25PcGVyYW5kX193cml0ZUJhcnJpZXJEb25lIiAiXG4iCiAgICAiXHRsZHIgcjIs
IFtyNywgcjEsIGxzbCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV93cml0ZUJh
cnJpZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkX182M19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9f
ZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV93cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193
cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX182M19s
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQiICI6XG4iCiAg
ICAiXHRsZHIgcjIsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjIsIFtyMiwgIzI3Nl1cbiIKICAg
ICJcdGFkZCByMTIsIHIyLCByMSwgbHNsICMzXG4iCiAgICAiXHRtdm4gcjEwLCAjNFxuIgogICAg
Ilx0bGRyIHI2LCBbcjEyLCAjNF1cbiIKICAgICJcdGNtcCByNiwgcjEwXG4iCiAgICAiXHRibmUg
IiAiLkwiICJfb2ZmbGluZWFzbV93cml0ZUJhcnJpZXJPbk9wZXJhbmRzX182M193cml0ZUJhcnJp
ZXJPbk9wZXJhbmRfX3dyaXRlQmFycmllckRvbmUiICJcbiIKICAgICJcdGxkciByMiwgW3IyLCBy
MSwgbHNsICMzXVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV93cml0ZUJhcnJpZXJPbk9wZXJhbmRz
X193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX182
M19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSIgIjpcbiIKICAg
ICJcdGxkcmIgcjEsIFtyMiwgIzddXG4iCiAgICAiXHR0c3QgcjEsIHIxXG4iCiAgICAiXHRibmUg
IiAiLkwiICJfb2ZmbGluZWFzbV93cml0ZUJhcnJpZXJPbk9wZXJhbmRzX182M193cml0ZUJhcnJp
ZXJPbk9wZXJhbmRfX3dyaXRlQmFycmllckRvbmUiICJcbiIKICAgICJcdHB1c2ggeyByNyB9XG4i
CiAgICAiXHRwdXNoIHsgcjkgfVxuIgogICAgIlx0c3VicyBzcCwgc3AsICM4XG4iCiAgICAiXHRt
b3YgcjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHIyXG4iCiAgICAiXHRibHggIiAibGxpbnRfd3Jp
dGVfYmFycmllcl9zbG93IiAiXG4iCiAgICAiXHRhZGRzIHNwLCAjOFxuIgogICAgIlx0cG9wIHsg
cjkgfVxuIgogICAgIlx0cG9wIHsgcjcgfVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV93cml0ZUJh
cnJpZXJPbk9wZXJhbmRzX182M193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX3dyaXRlQmFycmllckRv
bmUiICI6XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzYzX3dyaXRlQmFycmllck9uT3BlcmFuZHNf
X3dyaXRlQmFycmllckRvbmUiICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyNywgIzhdXG4iCiAgICAi
XHRsZHIgcjAsIFtyMCwgIzIwXVxuIgogICAgIlx0bGRyIHIwLCBbcjAsICM1OTZdXG4iCiAgICAi
XHRsZHJiIHIxMCwgW3IwLCAjNF1cbiIKICAgICJcdGNtcCByMTAsICMyXG4iCiAgICAiXHRiZXEg
IiAiLkwiICJfb2ZmbGluZWFzbV9wRHluYW1pYyIgIlxuIgogICAgIlx0bGRyIHIyLCBbcjksICM0
XVxuIgogICAgIlx0YWRkIHIxMCwgcjcsIHIyLCBsc2wgIzNcbiIKICAgICJcdGxkciByMSwgW3Ix
MCwgIzRdXG4iCiAgICAiXHRsZHIgcjAsIFtyNywgcjIsIGxzbCAjM11cbiIKICAgICJcdGxkciBy
MSwgW3I5LCAjMTJdXG4iCiAgICAiXHRtb3Z3IHIxMCwgIzBcbiIKICAgICJcdG1vdnQgcjEwLCAj
MTYzODRcbiIKICAgICJcdGNtcCByMSwgcjEwXG4iCiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGlu
ZWFzbV9wdXRDbG9zdXJlVmFyX182NF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCIg
IlxuIgogICAgIlx0YWRkIHIxMCwgcjcsIHIxLCBsc2wgIzNcbiIKICAgICJcdGxkciByMiwgW3Ix
MCwgIzRdXG4iCiAgICAiXHRsZHIgcjQsIFtyNywgcjEsIGxzbCAjM11cbiIKICAgICJcdGIgIiAi
LkwiICJfb2ZmbGluZWFzbV9wdXRDbG9zdXJlVmFyX182NF9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
X19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3B1dENsb3N1cmVWYXJfXzY0X2xvYWRD
b25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHI0LCBbcjcsICM4
XVxuIgogICAgIlx0bGRyIHI0LCBbcjQsICMyNzZdXG4iCiAgICAiXHRhZGQgcjEwLCByNCwgcjEs
IGxzbCAjM1xuIgogICAgIlx0bGRyIHIyLCBbcjEwLCAjNF1cbiIKICAgICJcdGxkciByNCwgW3I0
LCByMSwgbHNsICMzXVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9wdXRDbG9zdXJlVmFyX182NF9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lIiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjAsICMy
NF1cbiIKICAgICJcdGxkciByMSwgW3I5LCAjMjRdXG4iCiAgICAiXHRhZGQgcjEwLCByMCwgcjEs
IGxzbCAjM1xuIgogICAgIlx0c3RyIHIyLCBbcjEwLCAjNF1cbiIKICAgICJcdHN0ciByNCwgW3Iw
LCByMSwgbHNsICMzXVxuIgogICAgIlx0YWRkcyByOSwgIzI4XG4iCiAgICAiXHRsZHIgcjEwLCBb
cjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTBcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fcER5
bmFtaWMiICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAg
ICAiXHRibHggIiAibGxpbnRfc2xvd19wYXRoX3B1dF90b19zY29wZSIgIlxuIgogICAgIlx0bW92
IHI5LCByMFxuIgogICAgIlx0YWRkcyByOSwgIzI4XG4iCiAgICAiXHRsZHIgcjEwLCBbcjksICMw
XVxuIgogICAgIlx0bW92IHBjLCByMTBcbiIKCiIuTCIgImxsaW50X29wX3RvdWNoX2VudHJ5IiAi
OlxuIgogICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4
ICIgInNsb3dfcGF0aF90b3VjaF9lbnRyeSIgIlxuIgogICAgIlx0bW92IHI5LCByMFxuIgogICAg
Ilx0YWRkcyByOSwgIzRcbiIKICAgICJcdGxkciByMTAsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3Yg
cGMsIHIxMFxuIgoKIi5MIiAibGxpbnRfb3BfbmV3X2FycmF5IiAiOlxuIgogICAgIlx0bW92IHIw
LCByN1xuIgogICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgImxsaW50X3Nsb3dfcGF0
aF9uZXdfYXJyYXkiICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJcdGFkZHMgcjksICMy
MFxuIgogICAgIlx0bGRyIHIxMCwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEwXG4iCgoi
LkwiICJsbGludF9vcF9uZXdfYXJyYXlfd2l0aF9zaXplIiAiOlxuIgogICAgIlx0bW92IHIwLCBy
N1xuIgogICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgImxsaW50X3Nsb3dfcGF0aF9u
ZXdfYXJyYXlfd2l0aF9zaXplIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCiAgICAiXHRhZGRz
IHI5LCAjMTZcbiIKICAgICJcdGxkciByMTAsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIx
MFxuIgoKIi5MIiAibGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlciIgIjpcbiIKICAgICJcdG1vdiBy
MCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJsbGludF9zbG93X3Bh
dGhfbmV3X2FycmF5X2J1ZmZlciIgIlxuIgogICAgIlx0bW92IHI5LCByMFxuIgogICAgIlx0YWRk
cyByOSwgIzIwXG4iCiAgICAiXHRsZHIgcjEwLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCBy
MTBcbiIKCiIuTCIgImxsaW50X29wX25ld19yZWdleHAiICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3
XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc2xvd19wYXRoX25l
d19yZWdleHAiICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJcdGFkZHMgcjksICMxMlxu
IgogICAgIlx0bGRyIHIxMCwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEwXG4iCgoiLkwi
ICJsbGludF9vcF9sZXNzIiAiOlxuIgogICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIx
LCByOVxuIgogICAgIlx0Ymx4ICIgInNsb3dfcGF0aF9sZXNzIiAiXG4iCiAgICAiXHRtb3Ygcjks
IHIwXG4iCiAgICAiXHRhZGRzIHI5LCAjMTZcbiIKICAgICJcdGxkciByMTAsIFtyOSwgIzBdXG4i
CiAgICAiXHRtb3YgcGMsIHIxMFxuIgoKIi5MIiAibGxpbnRfb3BfbGVzc2VxIiAiOlxuIgogICAg
Ilx0bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgInNsb3df
cGF0aF9sZXNzZXEiICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJcdGFkZHMgcjksICMx
NlxuIgogICAgIlx0bGRyIHIxMCwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEwXG4iCgoi
LkwiICJsbGludF9vcF9ncmVhdGVyIiAiOlxuIgogICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0
bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgInNsb3dfcGF0aF9ncmVhdGVyIiAiXG4iCiAgICAi
XHRtb3YgcjksIHIwXG4iCiAgICAiXHRhZGRzIHI5LCAjMTZcbiIKICAgICJcdGxkciByMTAsIFty
OSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMFxuIgoKIi5MIiAibGxpbnRfb3BfZ3JlYXRlcmVx
IiAiOlxuIgogICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0
Ymx4ICIgInNsb3dfcGF0aF9ncmVhdGVyZXEiICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIKICAg
ICJcdGFkZHMgcjksICMxNlxuIgogICAgIlx0bGRyIHIxMCwgW3I5LCAjMF1cbiIKICAgICJcdG1v
diBwYywgcjEwXG4iCgoiLkwiICJsbGludF9vcF9tb2QiICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3
XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAic2xvd19wYXRoX21vZCIgIlxu
IgogICAgIlx0bW92IHI5LCByMFxuIgogICAgIlx0YWRkcyByOSwgIzE2XG4iCiAgICAiXHRsZHIg
cjEwLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTBcbiIKCiIuTCIgImxsaW50X29wX3R5
cGVvZiIgIjpcbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIKICAg
ICJcdGJseCAiICJzbG93X3BhdGhfdHlwZW9mIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCiAg
ICAiXHRhZGRzIHI5LCAjMTJcbiIKICAgICJcdGxkciByMTAsIFtyOSwgIzBdXG4iCiAgICAiXHRt
b3YgcGMsIHIxMFxuIgoKIi5MIiAibGxpbnRfb3BfaXNfb2JqZWN0IiAiOlxuIgogICAgIlx0bW92
IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgInNsb3dfcGF0aF9p
c19vYmplY3QiICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJcdGFkZHMgcjksICMxMlxu
IgogICAgIlx0bGRyIHIxMCwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEwXG4iCgoiLkwi
ICJsbGludF9vcF9pc19mdW5jdGlvbiIgIjpcbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJc
dG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJzbG93X3BhdGhfaXNfZnVuY3Rpb24iICJcbiIK
ICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJcdGFkZHMgcjksICMxMlxuIgogICAgIlx0bGRyIHIx
MCwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEwXG4iCgoiLkwiICJsbGludF9vcF9pbiIg
IjpcbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJs
eCAiICJzbG93X3BhdGhfaW4iICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJcdGFkZHMg
cjksICMxNlxuIgogICAgIlx0bGRyIHIxMCwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEw
XG4iCgoiLkwiICJsbGludF9vcF9kZWxfYnlfaWQiICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4i
CiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc2xvd19wYXRoX2RlbF9i
eV9pZCIgIlxuIgogICAgIlx0bW92IHI5LCByMFxuIgogICAgIlx0YWRkcyByOSwgIzE2XG4iCiAg
ICAiXHRsZHIgcjEwLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTBcbiIKCiIuTCIgImxs
aW50X29wX2RlbF9ieV92YWwiICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRtb3Yg
cjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc2xvd19wYXRoX2RlbF9ieV92YWwiICJcbiIK
ICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJcdGFkZHMgcjksICMxNlxuIgogICAgIlx0bGRyIHIx
MCwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEwXG4iCgoiLkwiICJsbGludF9vcF9wdXRf
YnlfaW5kZXgiICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4i
CiAgICAiXHRibHggIiAibGxpbnRfc2xvd19wYXRoX3B1dF9ieV9pbmRleCIgIlxuIgogICAgIlx0
bW92IHI5LCByMFxuIgogICAgIlx0YWRkcyByOSwgIzE2XG4iCiAgICAiXHRsZHIgcjEwLCBbcjks
ICMwXVxuIgogICAgIlx0bW92IHBjLCByMTBcbiIKCiIuTCIgImxsaW50X29wX3B1dF9nZXR0ZXJf
c2V0dGVyIiAiOlxuIgogICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByOVxuIgog
ICAgIlx0Ymx4ICIgImxsaW50X3Nsb3dfcGF0aF9wdXRfZ2V0dGVyX3NldHRlciIgIlxuIgogICAg
Ilx0bW92IHI5LCByMFxuIgogICAgIlx0YWRkcyByOSwgIzIwXG4iCiAgICAiXHRsZHIgcjEwLCBb
cjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTBcbiIKCiIuTCIgImxsaW50X29wX2p0cnVlIiAi
OlxuIgogICAgIlx0bGRyIHIxLCBbcjksICM0XVxuIgogICAgIlx0bW92dyByMTAsICMwXG4iCiAg
ICAiXHRtb3Z0IHIxMCwgIzE2Mzg0XG4iCiAgICAiXHRjbXAgcjEsIHIxMFxuIgogICAgIlx0Ymdl
ICIgIi5MIiAiX29mZmxpbmVhc21fanVtcFRydWVPckZhbHNlX19sb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZF9fNjRfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2Nv
bnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjEwLCByNywgcjEsIGxzbCAjM1xuIgogICAgIlx0bXZu
IHI2LCAjMVxuIgogICAgIlx0bGRyIHIxMiwgW3IxMCwgIzRdXG4iCiAgICAiXHRjbXAgcjEyLCBy
NlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fanVtcFRydWVPckZhbHNlX19zbG93
IiAiXG4iCiAgICAiXHRsZHIgcjAsIFtyNywgcjEsIGxzbCAjM11cbiIKICAgICJcdGIgIiAiLkwi
ICJfb2ZmbGluZWFzbV9qdW1wVHJ1ZU9yRmFsc2VfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkX182NF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSIgIlxu
IgoKICAiLkwiICJfb2ZmbGluZWFzbV9qdW1wVHJ1ZU9yRmFsc2VfX2xvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkX182NF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9f
Y29uc3RhbnQiICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjAs
IFtyMCwgIzI3Nl1cbiIKICAgICJcdGFkZCByNiwgcjAsIHIxLCBsc2wgIzNcbiIKICAgICJcdG12
biByMTIsICMxXG4iCiAgICAiXHRsZHIgcjEwLCBbcjYsICM0XVxuIgogICAgIlx0Y21wIHIxMCwg
cjEyXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV9qdW1wVHJ1ZU9yRmFsc2VfX3Ns
b3ciICJcbiIKICAgICJcdGxkciByMCwgW3IwLCByMSwgbHNsICMzXVxuIgoKICAiLkwiICJfb2Zm
bGluZWFzbV9qdW1wVHJ1ZU9yRmFsc2VfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX182
NF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSIgIjpcbiIKICAg
ICJcdHRzdCByMCwgcjBcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX2p1bXBUcnVl
T3JGYWxzZV9fdGFyZ2V0IiAiXG4iCiAgICAiXHRhZGRzIHI5LCAjMTJcbiIKICAgICJcdGxkciBy
MTIsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMlxuIgoKICAiLkwiICJfb2ZmbGluZWFz
bV9qdW1wVHJ1ZU9yRmFsc2VfX3RhcmdldCIgIjpcbiIKICAgICJcdGxkciByMCwgW3I5LCAjOF1c
biIKICAgICJcdGxzbHMgcjAsIHIwLCAjMlxuIgogICAgIlx0YWRkIHI5LCByMFxuIgogICAgIlx0
bGRyIHIxMiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEyXG4iCgogICIuTCIgIl9vZmZs
aW5lYXNtX2p1bXBUcnVlT3JGYWxzZV9fc2xvdyIgIjpcbiIKICAgICJcdG1vdiByMCwgcjdcbiIK
ICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJsbGludF9zbG93X3BhdGhfanRydWUi
ICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIKCgogICAgIlx0bGRyIHIxMiwgW3I5LCAjMF1cbiIK
ICAgICJcdG1vdiBwYywgcjEyXG4iCgoiLkwiICJsbGludF9vcF9qZmFsc2UiICI6XG4iCiAgICAi
XHRsZHIgcjEsIFtyOSwgIzRdXG4iCiAgICAiXHRtb3Z3IHIxMiwgIzBcbiIKICAgICJcdG1vdnQg
cjEyLCAjMTYzODRcbiIKICAgICJcdGNtcCByMSwgcjEyXG4iCiAgICAiXHRiZ2UgIiAiLkwiICJf
b2ZmbGluZWFzbV9qdW1wVHJ1ZU9yRmFsc2VfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
X182NV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQiICJc
biIKICAgICJcdGFkZCByMTIsIHI3LCByMSwgbHNsICMzXG4iCiAgICAiXHRtdm4gcjEwLCAjMVxu
IgogICAgIlx0bGRyIHI2LCBbcjEyLCAjNF1cbiIKICAgICJcdGNtcCByNiwgcjEwXG4iCiAgICAi
XHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV82NV9qdW1wVHJ1ZU9yRmFsc2VfX3Nsb3ciICJcbiIK
ICAgICJcdGxkciByMCwgW3I3LCByMSwgbHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZs
aW5lYXNtX2p1bXBUcnVlT3JGYWxzZV9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzY1
X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lIiAiXG4iCgogICIu
TCIgIl9vZmZsaW5lYXNtX2p1bXBUcnVlT3JGYWxzZV9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWRfXzY1X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFu
dCIgIjpcbiIKICAgICJcdGxkciByMCwgW3I3LCAjOF1cbiIKICAgICJcdGxkciByMCwgW3IwLCAj
Mjc2XVxuIgogICAgIlx0YWRkIHIxMCwgcjAsIHIxLCBsc2wgIzNcbiIKICAgICJcdG12biByNiwg
IzFcbiIKICAgICJcdGxkciByMTIsIFtyMTAsICM0XVxuIgogICAgIlx0Y21wIHIxMiwgcjZcbiIK
ICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtXzY1X2p1bXBUcnVlT3JGYWxzZV9fc2xvdyIg
IlxuIgogICAgIlx0bGRyIHIwLCBbcjAsIHIxLCBsc2wgIzNdXG4iCgogICIuTCIgIl9vZmZsaW5l
YXNtX2p1bXBUcnVlT3JGYWxzZV9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzY1X2xv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lIiAiOlxuIgogICAgIlx0
dHN0IHIwLCByMFxuIgogICAgIlx0YmVxICIgIi5MIiAiX29mZmxpbmVhc21fNjVfanVtcFRydWVP
ckZhbHNlX190YXJnZXQiICJcbiIKICAgICJcdGFkZHMgcjksICMxMlxuIgogICAgIlx0bGRyIHI2
LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV82
NV9qdW1wVHJ1ZU9yRmFsc2VfX3RhcmdldCIgIjpcbiIKICAgICJcdGxkciByMCwgW3I5LCAjOF1c
biIKICAgICJcdGxzbHMgcjAsIHIwLCAjMlxuIgogICAgIlx0YWRkIHI5LCByMFxuIgogICAgIlx0
bGRyIHI2LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxuIgoKICAiLkwiICJfb2ZmbGlu
ZWFzbV82NV9qdW1wVHJ1ZU9yRmFsc2VfX3Nsb3ciICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4i
CiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc2xvd19wYXRoX2pmYWxz
ZSIgIlxuIgogICAgIlx0bW92IHI5LCByMFxuIgoKCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4i
CiAgICAiXHRtb3YgcGMsIHI2XG4iCgoiLkwiICJsbGludF9vcF9qbGVzcyIgIjpcbiIKICAgICJc
dGxkciByMiwgW3I5LCAjNF1cbiIKICAgICJcdGxkciByNCwgW3I5LCAjOF1cbiIKICAgICJcdG1v
dncgcjYsICMwXG4iCiAgICAiXHRtb3Z0IHI2LCAjMTYzODRcbiIKICAgICJcdGNtcCByMiwgcjZc
biIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVfXzY1X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjYsIHI3LCByMiwgbHNsICMz
XG4iCiAgICAiXHRsZHIgcjAsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIgcjEsIFtyNywgcjIsIGxz
bCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9jb21wYXJlX182NV9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVf
XzY1X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIx
LCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIxLCBbcjEsICMyNzZdXG4iCiAgICAiXHRhZGQgcjYs
IHIxLCByMiwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjAsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIg
cjEsIFtyMSwgcjIsIGxzbCAjM11cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9fNjVf
bG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSIgIjpcbiIKICAgICJcdG1vdncgcjYsICMwXG4i
CiAgICAiXHRtb3Z0IHI2LCAjMTYzODRcbiIKICAgICJcdGNtcCByNCwgcjZcbiIKICAgICJcdGJn
ZSAiICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVfXzY1X2xvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnX19jb25zdGFudCIgIlxuIgogICAgIlx0YWRkIHI2LCByNywgcjQsIGxzbCAjM1xuIgogICAg
Ilx0bGRyIHIyLCBbcjYsICM0XVxuIgogICAgIlx0bGRyIHI0LCBbcjcsIHI0LCBsc2wgIzNdXG4i
CiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9fNjVfbG9hZENvbnN0YW50T3JW
YXJpYWJsZTJSZWdfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9fNjVf
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIy
LCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIyLCBbcjIsICMyNzZdXG4iCiAgICAiXHRsc2xzIHI0
LCByNCwgIzNcbiIKICAgICJcdGFkZCByMiwgcjRcbiIKICAgICJcdGxkciByNCwgW3IyLCAjMF1c
biIKICAgICJcdGxkciByMiwgW3IyLCAjNF1cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fY29tcGFy
ZV9fNjVfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUiICI6XG4iCiAgICAiXHRtdm4g
cjYsICMwXG4iCiAgICAiXHRjbXAgcjAsIHI2XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGlu
ZWFzbV9jb21wYXJlX19vcDFOb3RJbnQiICJcbiIKICAgICJcdG12biByNiwgIzBcbiIKICAgICJc
dGNtcCByMiwgcjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVfX29w
Mk5vdEludCIgIlxuIgogICAgIlx0Y21wIHIxLCByNFxuIgogICAgIlx0Ymx0ICIgIi5MIiAiX29m
ZmxpbmVhc21fY29tcGFyZV9fanVtcFRhcmdldCIgIlxuIgogICAgIlx0YWRkcyByOSwgIzE2XG4i
CiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgogICIuTCIg
Il9vZmZsaW5lYXNtX2NvbXBhcmVfX29wMU5vdEludCIgIjpcbiIKICAgICJcdG12biByNiwgIzZc
biIKICAgICJcdGNtcCByMCwgcjZcbiIKICAgICJcdGJoaSAiICIuTCIgIl9vZmZsaW5lYXNtX2Nv
bXBhcmVfX3Nsb3ciICJcbiIKICAgICJcdG12biByNiwgIzZcbiIKICAgICJcdGNtcCByMiwgcjZc
biIKICAgICJcdGJsbyAiICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVfX29wMU5vdEludE9wMkRv
dWJsZSIgIlxuIgogICAgIlx0bXZuIHI2LCAjMFxuIgogICAgIlx0Y21wIHIyLCByNlxuIgogICAg
Ilx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9fc2xvdyIgIlxuIgogICAgIlx0dm1v
diBzMiwgcjRcbiIKICAgICJcdHZjdnQuZjY0LnMzMiBkMSwgczJcbiIKICAgICJcdGIgIiAiLkwi
ICJfb2ZmbGluZWFzbV9jb21wYXJlX19vcDFOb3RJbnRSZWFkeSIgIlxuIgoKICAiLkwiICJfb2Zm
bGluZWFzbV9jb21wYXJlX19vcDFOb3RJbnRPcDJEb3VibGUiICI6XG4iCiAgICAiXHR2bW92IGQx
LCByNCwgcjJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9fb3AxTm90SW50UmVhZHki
ICI6XG4iCiAgICAiXHR2bW92IGQwLCByMSwgcjBcbiIKICAgICJcdHZjbXBlLmY2NCBkMCwgZDFc
biIKICAgICJcdHZtcnMgYXBzcl9uemN2LCBmcHNjclxuIgogICAgIlx0Ym1pICIgIi5MIiAiX29m
ZmxpbmVhc21fY29tcGFyZV9fanVtcFRhcmdldCIgIlxuIgogICAgIlx0YWRkcyByOSwgIzE2XG4i
CiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgogICIuTCIg
Il9vZmZsaW5lYXNtX2NvbXBhcmVfX29wMk5vdEludCIgIjpcbiIKICAgICJcdHZtb3YgczAsIHIx
XG4iCiAgICAiXHR2Y3Z0LmY2NC5zMzIgZDAsIHMwXG4iCiAgICAiXHRtdm4gcjYsICM2XG4iCiAg
ICAiXHRjbXAgcjIsIHI2XG4iCiAgICAiXHRiaGkgIiAiLkwiICJfb2ZmbGluZWFzbV9jb21wYXJl
X19zbG93IiAiXG4iCiAgICAiXHR2bW92IGQxLCByNCwgcjJcbiIKICAgICJcdHZjbXBlLmY2NCBk
MCwgZDFcbiIKICAgICJcdHZtcnMgYXBzcl9uemN2LCBmcHNjclxuIgogICAgIlx0Ym1pICIgIi5M
IiAiX29mZmxpbmVhc21fY29tcGFyZV9fanVtcFRhcmdldCIgIlxuIgogICAgIlx0YWRkcyByOSwg
IzE2XG4iCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgog
ICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVfX2p1bXBUYXJnZXQiICI6XG4iCiAgICAiXHRsZHIg
cjAsIFtyOSwgIzEyXVxuIgogICAgIlx0bHNscyByMCwgcjAsICMyXG4iCiAgICAiXHRhZGQgcjks
IHIwXG4iCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgog
ICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVfX3Nsb3ciICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3
XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc2xvd19wYXRoX2ps
ZXNzIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCgoKICAgICJcdGxkciByNiwgW3I5LCAjMF1c
biIKICAgICJcdG1vdiBwYywgcjZcbiIKCiIuTCIgImxsaW50X29wX2pubGVzcyIgIjpcbiIKICAg
ICJcdGxkciByMiwgW3I5LCAjNF1cbiIKICAgICJcdGxkciByNCwgW3I5LCAjOF1cbiIKICAgICJc
dG1vdncgcjYsICMwXG4iCiAgICAiXHRtb3Z0IHI2LCAjMTYzODRcbiIKICAgICJcdGNtcCByMiwg
cjZcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVfXzY2X2xvYWRDb25z
dGFudE9yVmFyaWFibGVfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjYsIHI3LCByMiwgbHNs
ICMzXG4iCiAgICAiXHRsZHIgcjAsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIgcjEsIFtyNywgcjIs
IGxzbCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9jb21wYXJlX182Nl9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBh
cmVfXzY2X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRy
IHIxLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIxLCBbcjEsICMyNzZdXG4iCiAgICAiXHRhZGQg
cjYsIHIxLCByMiwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjAsIFtyNiwgIzRdXG4iCiAgICAiXHRs
ZHIgcjEsIFtyMSwgcjIsIGxzbCAjM11cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9f
NjZfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSIgIjpcbiIKICAgICJcdG1vdncgcjYsICMw
XG4iCiAgICAiXHRtb3Z0IHI2LCAjMTYzODRcbiIKICAgICJcdGNtcCByNCwgcjZcbiIKICAgICJc
dGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVfXzY2X2xvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnX19jb25zdGFudCIgIlxuIgogICAgIlx0YWRkIHI2LCByNywgcjQsIGxzbCAjM1xuIgog
ICAgIlx0bGRyIHIyLCBbcjYsICM0XVxuIgogICAgIlx0bGRyIHI0LCBbcjcsIHI0LCBsc2wgIzNd
XG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9fNjZfbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWdfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9f
NjZfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRy
IHIyLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIyLCBbcjIsICMyNzZdXG4iCiAgICAiXHRsc2xz
IHI0LCByNCwgIzNcbiIKICAgICJcdGFkZCByMiwgcjRcbiIKICAgICJcdGxkciByNCwgW3IyLCAj
MF1cbiIKICAgICJcdGxkciByMiwgW3IyLCAjNF1cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fY29t
cGFyZV9fNjZfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUiICI6XG4iCiAgICAiXHRt
dm4gcjYsICMwXG4iCiAgICAiXHRjbXAgcjAsIHI2XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2Zm
bGluZWFzbV82Nl9jb21wYXJlX19vcDFOb3RJbnQiICJcbiIKICAgICJcdG12biByNiwgIzBcbiIK
ICAgICJcdGNtcCByMiwgcjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtXzY2X2Nv
bXBhcmVfX29wMk5vdEludCIgIlxuIgogICAgIlx0Y21wIHIxLCByNFxuIgogICAgIlx0YmdlICIg
Ii5MIiAiX29mZmxpbmVhc21fNjZfY29tcGFyZV9fanVtcFRhcmdldCIgIlxuIgogICAgIlx0YWRk
cyByOSwgIzE2XG4iCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2
XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzY2X2NvbXBhcmVfX29wMU5vdEludCIgIjpcbiIKICAg
ICJcdG12biByNiwgIzZcbiIKICAgICJcdGNtcCByMCwgcjZcbiIKICAgICJcdGJoaSAiICIuTCIg
Il9vZmZsaW5lYXNtXzY2X2NvbXBhcmVfX3Nsb3ciICJcbiIKICAgICJcdG12biByNiwgIzZcbiIK
ICAgICJcdGNtcCByMiwgcjZcbiIKICAgICJcdGJsbyAiICIuTCIgIl9vZmZsaW5lYXNtXzY2X2Nv
bXBhcmVfX29wMU5vdEludE9wMkRvdWJsZSIgIlxuIgogICAgIlx0bXZuIHI2LCAjMFxuIgogICAg
Ilx0Y21wIHIyLCByNlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fNjZfY29tcGFy
ZV9fc2xvdyIgIlxuIgogICAgIlx0dm1vdiBzMiwgcjRcbiIKICAgICJcdHZjdnQuZjY0LnMzMiBk
MSwgczJcbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV82Nl9jb21wYXJlX19vcDFOb3RJ
bnRSZWFkeSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV82Nl9jb21wYXJlX19vcDFOb3RJbnRP
cDJEb3VibGUiICI6XG4iCiAgICAiXHR2bW92IGQxLCByNCwgcjJcbiIKCiAgIi5MIiAiX29mZmxp
bmVhc21fNjZfY29tcGFyZV9fb3AxTm90SW50UmVhZHkiICI6XG4iCiAgICAiXHR2bW92IGQwLCBy
MSwgcjBcbiIKICAgICJcdHZjbXBlLmY2NCBkMCwgZDFcbiIKICAgICJcdHZtcnMgYXBzcl9uemN2
LCBmcHNjclxuIgogICAgIlx0YnBsICIgIi5MIiAiX29mZmxpbmVhc21fNjZfY29tcGFyZV9fanVt
cFRhcmdldCIgIlxuIgogICAgIlx0YWRkcyByOSwgIzE2XG4iCiAgICAiXHRsZHIgcjYsIFtyOSwg
IzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzY2X2NvbXBh
cmVfX29wMk5vdEludCIgIjpcbiIKICAgICJcdHZtb3YgczAsIHIxXG4iCiAgICAiXHR2Y3Z0LmY2
NC5zMzIgZDAsIHMwXG4iCiAgICAiXHRtdm4gcjYsICM2XG4iCiAgICAiXHRjbXAgcjIsIHI2XG4i
CiAgICAiXHRiaGkgIiAiLkwiICJfb2ZmbGluZWFzbV82Nl9jb21wYXJlX19zbG93IiAiXG4iCiAg
ICAiXHR2bW92IGQxLCByNCwgcjJcbiIKICAgICJcdHZjbXBlLmY2NCBkMCwgZDFcbiIKICAgICJc
dHZtcnMgYXBzcl9uemN2LCBmcHNjclxuIgogICAgIlx0YnBsICIgIi5MIiAiX29mZmxpbmVhc21f
NjZfY29tcGFyZV9fanVtcFRhcmdldCIgIlxuIgogICAgIlx0YWRkcyByOSwgIzE2XG4iCiAgICAi
XHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgogICIuTCIgIl9vZmZs
aW5lYXNtXzY2X2NvbXBhcmVfX2p1bXBUYXJnZXQiICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyOSwg
IzEyXVxuIgogICAgIlx0bHNscyByMCwgcjAsICMyXG4iCiAgICAiXHRhZGQgcjksIHIwXG4iCiAg
ICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgogICIuTCIgIl9v
ZmZsaW5lYXNtXzY2X2NvbXBhcmVfX3Nsb3ciICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAg
ICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc2xvd19wYXRoX2pubGVzcyIg
IlxuIgogICAgIlx0bW92IHI5LCByMFxuIgoKCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAg
ICAiXHRtb3YgcGMsIHI2XG4iCgoiLkwiICJsbGludF9vcF9qZ3JlYXRlciIgIjpcbiIKICAgICJc
dGxkciByMiwgW3I5LCAjNF1cbiIKICAgICJcdGxkciByNCwgW3I5LCAjOF1cbiIKICAgICJcdG1v
dncgcjYsICMwXG4iCiAgICAiXHRtb3Z0IHI2LCAjMTYzODRcbiIKICAgICJcdGNtcCByMiwgcjZc
biIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVfXzY3X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjYsIHI3LCByMiwgbHNsICMz
XG4iCiAgICAiXHRsZHIgcjAsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIgcjEsIFtyNywgcjIsIGxz
bCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9jb21wYXJlX182N19sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVf
XzY3X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIx
LCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIxLCBbcjEsICMyNzZdXG4iCiAgICAiXHRhZGQgcjYs
IHIxLCByMiwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjAsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIg
cjEsIFtyMSwgcjIsIGxzbCAjM11cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9fNjdf
bG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSIgIjpcbiIKICAgICJcdG1vdncgcjYsICMwXG4i
CiAgICAiXHRtb3Z0IHI2LCAjMTYzODRcbiIKICAgICJcdGNtcCByNCwgcjZcbiIKICAgICJcdGJn
ZSAiICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVfXzY3X2xvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnX19jb25zdGFudCIgIlxuIgogICAgIlx0YWRkIHI2LCByNywgcjQsIGxzbCAjM1xuIgogICAg
Ilx0bGRyIHIyLCBbcjYsICM0XVxuIgogICAgIlx0bGRyIHI0LCBbcjcsIHI0LCBsc2wgIzNdXG4i
CiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9fNjdfbG9hZENvbnN0YW50T3JW
YXJpYWJsZTJSZWdfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9fNjdf
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIy
LCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIyLCBbcjIsICMyNzZdXG4iCiAgICAiXHRsc2xzIHI0
LCByNCwgIzNcbiIKICAgICJcdGFkZCByMiwgcjRcbiIKICAgICJcdGxkciByNCwgW3IyLCAjMF1c
biIKICAgICJcdGxkciByMiwgW3IyLCAjNF1cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fY29tcGFy
ZV9fNjdfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUiICI6XG4iCiAgICAiXHRtdm4g
cjYsICMwXG4iCiAgICAiXHRjbXAgcjAsIHI2XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGlu
ZWFzbV82N19jb21wYXJlX19vcDFOb3RJbnQiICJcbiIKICAgICJcdG12biByNiwgIzBcbiIKICAg
ICJcdGNtcCByMiwgcjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtXzY3X2NvbXBh
cmVfX29wMk5vdEludCIgIlxuIgogICAgIlx0Y21wIHIxLCByNFxuIgogICAgIlx0Ymd0ICIgIi5M
IiAiX29mZmxpbmVhc21fNjdfY29tcGFyZV9fanVtcFRhcmdldCIgIlxuIgogICAgIlx0YWRkcyBy
OSwgIzE2XG4iCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4i
CgogICIuTCIgIl9vZmZsaW5lYXNtXzY3X2NvbXBhcmVfX29wMU5vdEludCIgIjpcbiIKICAgICJc
dG12biByNiwgIzZcbiIKICAgICJcdGNtcCByMCwgcjZcbiIKICAgICJcdGJoaSAiICIuTCIgIl9v
ZmZsaW5lYXNtXzY3X2NvbXBhcmVfX3Nsb3ciICJcbiIKICAgICJcdG12biByNiwgIzZcbiIKICAg
ICJcdGNtcCByMiwgcjZcbiIKICAgICJcdGJsbyAiICIuTCIgIl9vZmZsaW5lYXNtXzY3X2NvbXBh
cmVfX29wMU5vdEludE9wMkRvdWJsZSIgIlxuIgogICAgIlx0bXZuIHI2LCAjMFxuIgogICAgIlx0
Y21wIHIyLCByNlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fNjdfY29tcGFyZV9f
c2xvdyIgIlxuIgogICAgIlx0dm1vdiBzMiwgcjRcbiIKICAgICJcdHZjdnQuZjY0LnMzMiBkMSwg
czJcbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV82N19jb21wYXJlX19vcDFOb3RJbnRS
ZWFkeSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV82N19jb21wYXJlX19vcDFOb3RJbnRPcDJE
b3VibGUiICI6XG4iCiAgICAiXHR2bW92IGQxLCByNCwgcjJcbiIKCiAgIi5MIiAiX29mZmxpbmVh
c21fNjdfY29tcGFyZV9fb3AxTm90SW50UmVhZHkiICI6XG4iCiAgICAiXHR2bW92IGQwLCByMSwg
cjBcbiIKICAgICJcdHZjbXBlLmY2NCBkMCwgZDFcbiIKICAgICJcdHZtcnMgYXBzcl9uemN2LCBm
cHNjclxuIgogICAgIlx0Ymd0ICIgIi5MIiAiX29mZmxpbmVhc21fNjdfY29tcGFyZV9fanVtcFRh
cmdldCIgIlxuIgogICAgIlx0YWRkcyByOSwgIzE2XG4iCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBd
XG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzY3X2NvbXBhcmVf
X29wMk5vdEludCIgIjpcbiIKICAgICJcdHZtb3YgczAsIHIxXG4iCiAgICAiXHR2Y3Z0LmY2NC5z
MzIgZDAsIHMwXG4iCiAgICAiXHRtdm4gcjYsICM2XG4iCiAgICAiXHRjbXAgcjIsIHI2XG4iCiAg
ICAiXHRiaGkgIiAiLkwiICJfb2ZmbGluZWFzbV82N19jb21wYXJlX19zbG93IiAiXG4iCiAgICAi
XHR2bW92IGQxLCByNCwgcjJcbiIKICAgICJcdHZjbXBlLmY2NCBkMCwgZDFcbiIKICAgICJcdHZt
cnMgYXBzcl9uemN2LCBmcHNjclxuIgogICAgIlx0Ymd0ICIgIi5MIiAiX29mZmxpbmVhc21fNjdf
Y29tcGFyZV9fanVtcFRhcmdldCIgIlxuIgogICAgIlx0YWRkcyByOSwgIzE2XG4iCiAgICAiXHRs
ZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgogICIuTCIgIl9vZmZsaW5l
YXNtXzY3X2NvbXBhcmVfX2p1bXBUYXJnZXQiICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyOSwgIzEy
XVxuIgogICAgIlx0bHNscyByMCwgcjAsICMyXG4iCiAgICAiXHRhZGQgcjksIHIwXG4iCiAgICAi
XHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgogICIuTCIgIl9vZmZs
aW5lYXNtXzY3X2NvbXBhcmVfX3Nsb3ciICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAi
XHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc2xvd19wYXRoX2pncmVhdGVyIiAi
XG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCgoKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAg
ICJcdG1vdiBwYywgcjZcbiIKCiIuTCIgImxsaW50X29wX2puZ3JlYXRlciIgIjpcbiIKICAgICJc
dGxkciByMiwgW3I5LCAjNF1cbiIKICAgICJcdGxkciByNCwgW3I5LCAjOF1cbiIKICAgICJcdG1v
dncgcjYsICMwXG4iCiAgICAiXHRtb3Z0IHI2LCAjMTYzODRcbiIKICAgICJcdGNtcCByMiwgcjZc
biIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVfXzY4X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjYsIHI3LCByMiwgbHNsICMz
XG4iCiAgICAiXHRsZHIgcjAsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIgcjEsIFtyNywgcjIsIGxz
bCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9jb21wYXJlX182OF9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVf
XzY4X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIx
LCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIxLCBbcjEsICMyNzZdXG4iCiAgICAiXHRhZGQgcjYs
IHIxLCByMiwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjAsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIg
cjEsIFtyMSwgcjIsIGxzbCAjM11cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9fNjhf
bG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSIgIjpcbiIKICAgICJcdG1vdncgcjYsICMwXG4i
CiAgICAiXHRtb3Z0IHI2LCAjMTYzODRcbiIKICAgICJcdGNtcCByNCwgcjZcbiIKICAgICJcdGJn
ZSAiICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVfXzY4X2xvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnX19jb25zdGFudCIgIlxuIgogICAgIlx0YWRkIHI2LCByNywgcjQsIGxzbCAjM1xuIgogICAg
Ilx0bGRyIHIyLCBbcjYsICM0XVxuIgogICAgIlx0bGRyIHI0LCBbcjcsIHI0LCBsc2wgIzNdXG4i
CiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9fNjhfbG9hZENvbnN0YW50T3JW
YXJpYWJsZTJSZWdfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9fNjhf
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIy
LCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIyLCBbcjIsICMyNzZdXG4iCiAgICAiXHRsc2xzIHI0
LCByNCwgIzNcbiIKICAgICJcdGFkZCByMiwgcjRcbiIKICAgICJcdGxkciByNCwgW3IyLCAjMF1c
biIKICAgICJcdGxkciByMiwgW3IyLCAjNF1cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fY29tcGFy
ZV9fNjhfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUiICI6XG4iCiAgICAiXHRtdm4g
cjYsICMwXG4iCiAgICAiXHRjbXAgcjAsIHI2XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGlu
ZWFzbV82OF9jb21wYXJlX19vcDFOb3RJbnQiICJcbiIKICAgICJcdG12biByNiwgIzBcbiIKICAg
ICJcdGNtcCByMiwgcjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtXzY4X2NvbXBh
cmVfX29wMk5vdEludCIgIlxuIgogICAgIlx0Y21wIHIxLCByNFxuIgogICAgIlx0YmxlICIgIi5M
IiAiX29mZmxpbmVhc21fNjhfY29tcGFyZV9fanVtcFRhcmdldCIgIlxuIgogICAgIlx0YWRkcyBy
OSwgIzE2XG4iCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4i
CgogICIuTCIgIl9vZmZsaW5lYXNtXzY4X2NvbXBhcmVfX29wMU5vdEludCIgIjpcbiIKICAgICJc
dG12biByNiwgIzZcbiIKICAgICJcdGNtcCByMCwgcjZcbiIKICAgICJcdGJoaSAiICIuTCIgIl9v
ZmZsaW5lYXNtXzY4X2NvbXBhcmVfX3Nsb3ciICJcbiIKICAgICJcdG12biByNiwgIzZcbiIKICAg
ICJcdGNtcCByMiwgcjZcbiIKICAgICJcdGJsbyAiICIuTCIgIl9vZmZsaW5lYXNtXzY4X2NvbXBh
cmVfX29wMU5vdEludE9wMkRvdWJsZSIgIlxuIgogICAgIlx0bXZuIHI2LCAjMFxuIgogICAgIlx0
Y21wIHIyLCByNlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fNjhfY29tcGFyZV9f
c2xvdyIgIlxuIgogICAgIlx0dm1vdiBzMiwgcjRcbiIKICAgICJcdHZjdnQuZjY0LnMzMiBkMSwg
czJcbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV82OF9jb21wYXJlX19vcDFOb3RJbnRS
ZWFkeSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV82OF9jb21wYXJlX19vcDFOb3RJbnRPcDJE
b3VibGUiICI6XG4iCiAgICAiXHR2bW92IGQxLCByNCwgcjJcbiIKCiAgIi5MIiAiX29mZmxpbmVh
c21fNjhfY29tcGFyZV9fb3AxTm90SW50UmVhZHkiICI6XG4iCiAgICAiXHR2bW92IGQwLCByMSwg
cjBcbiIKICAgICJcdHZjbXBlLmY2NCBkMCwgZDFcbiIKICAgICJcdHZtcnMgYXBzcl9uemN2LCBm
cHNjclxuIgogICAgIlx0YmxlICIgIi5MIiAiX29mZmxpbmVhc21fNjhfY29tcGFyZV9fanVtcFRh
cmdldCIgIlxuIgogICAgIlx0YWRkcyByOSwgIzE2XG4iCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBd
XG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzY4X2NvbXBhcmVf
X29wMk5vdEludCIgIjpcbiIKICAgICJcdHZtb3YgczAsIHIxXG4iCiAgICAiXHR2Y3Z0LmY2NC5z
MzIgZDAsIHMwXG4iCiAgICAiXHRtdm4gcjYsICM2XG4iCiAgICAiXHRjbXAgcjIsIHI2XG4iCiAg
ICAiXHRiaGkgIiAiLkwiICJfb2ZmbGluZWFzbV82OF9jb21wYXJlX19zbG93IiAiXG4iCiAgICAi
XHR2bW92IGQxLCByNCwgcjJcbiIKICAgICJcdHZjbXBlLmY2NCBkMCwgZDFcbiIKICAgICJcdHZt
cnMgYXBzcl9uemN2LCBmcHNjclxuIgogICAgIlx0YmxlICIgIi5MIiAiX29mZmxpbmVhc21fNjhf
Y29tcGFyZV9fanVtcFRhcmdldCIgIlxuIgogICAgIlx0YWRkcyByOSwgIzE2XG4iCiAgICAiXHRs
ZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgogICIuTCIgIl9vZmZsaW5l
YXNtXzY4X2NvbXBhcmVfX2p1bXBUYXJnZXQiICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyOSwgIzEy
XVxuIgogICAgIlx0bHNscyByMCwgcjAsICMyXG4iCiAgICAiXHRhZGQgcjksIHIwXG4iCiAgICAi
XHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgogICIuTCIgIl9vZmZs
aW5lYXNtXzY4X2NvbXBhcmVfX3Nsb3ciICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAi
XHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc2xvd19wYXRoX2puZ3JlYXRlciIg
IlxuIgogICAgIlx0bW92IHI5LCByMFxuIgoKCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAg
ICAiXHRtb3YgcGMsIHI2XG4iCgoiLkwiICJsbGludF9vcF9qbGVzc2VxIiAiOlxuIgogICAgIlx0
bGRyIHIyLCBbcjksICM0XVxuIgogICAgIlx0bGRyIHI0LCBbcjksICM4XVxuIgogICAgIlx0bW92
dyByNiwgIzBcbiIKICAgICJcdG1vdnQgcjYsICMxNjM4NFxuIgogICAgIlx0Y21wIHIyLCByNlxu
IgogICAgIlx0YmdlICIgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9fNjlfbG9hZENvbnN0YW50
T3JWYXJpYWJsZV9fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByNiwgcjcsIHIyLCBsc2wgIzNc
biIKICAgICJcdGxkciByMCwgW3I2LCAjNF1cbiIKICAgICJcdGxkciByMSwgW3I3LCByMiwgbHNs
ICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVfXzY5X2xvYWRDb25z
dGFudE9yVmFyaWFibGVfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9f
NjlfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQiICI6XG4iCiAgICAiXHRsZHIgcjEs
IFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgIzI3Nl1cbiIKICAgICJcdGFkZCByNiwg
cjEsIHIyLCBsc2wgIzNcbiIKICAgICJcdGxkciByMCwgW3I2LCAjNF1cbiIKICAgICJcdGxkciBy
MSwgW3IxLCByMiwgbHNsICMzXVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9jb21wYXJlX182OV9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lIiAiOlxuIgogICAgIlx0bW92dyByNiwgIzBcbiIK
ICAgICJcdG1vdnQgcjYsICMxNjM4NFxuIgogICAgIlx0Y21wIHI0LCByNlxuIgogICAgIlx0Ymdl
ICIgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9fNjlfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJS
ZWdfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjYsIHI3LCByNCwgbHNsICMzXG4iCiAgICAi
XHRsZHIgcjIsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIgcjQsIFtyNywgcjQsIGxzbCAjM11cbiIK
ICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9jb21wYXJlX182OV9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZ19fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9jb21wYXJlX182OV9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQiICI6XG4iCiAgICAiXHRsZHIgcjIs
IFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjIsIFtyMiwgIzI3Nl1cbiIKICAgICJcdGxzbHMgcjQs
IHI0LCAjM1xuIgogICAgIlx0YWRkIHIyLCByNFxuIgogICAgIlx0bGRyIHI0LCBbcjIsICMwXVxu
IgogICAgIlx0bGRyIHIyLCBbcjIsICM0XVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9jb21wYXJl
X182OV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSIgIjpcbiIKICAgICJcdG12biBy
NiwgIzBcbiIKICAgICJcdGNtcCByMCwgcjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5l
YXNtXzY5X2NvbXBhcmVfX29wMU5vdEludCIgIlxuIgogICAgIlx0bXZuIHI2LCAjMFxuIgogICAg
Ilx0Y21wIHIyLCByNlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fNjlfY29tcGFy
ZV9fb3AyTm90SW50IiAiXG4iCiAgICAiXHRjbXAgcjEsIHI0XG4iCiAgICAiXHRibGUgIiAiLkwi
ICJfb2ZmbGluZWFzbV82OV9jb21wYXJlX19qdW1wVGFyZ2V0IiAiXG4iCiAgICAiXHRhZGRzIHI5
LCAjMTZcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIK
CiAgIi5MIiAiX29mZmxpbmVhc21fNjlfY29tcGFyZV9fb3AxTm90SW50IiAiOlxuIgogICAgIlx0
bXZuIHI2LCAjNlxuIgogICAgIlx0Y21wIHIwLCByNlxuIgogICAgIlx0YmhpICIgIi5MIiAiX29m
ZmxpbmVhc21fNjlfY29tcGFyZV9fc2xvdyIgIlxuIgogICAgIlx0bXZuIHI2LCAjNlxuIgogICAg
Ilx0Y21wIHIyLCByNlxuIgogICAgIlx0YmxvICIgIi5MIiAiX29mZmxpbmVhc21fNjlfY29tcGFy
ZV9fb3AxTm90SW50T3AyRG91YmxlIiAiXG4iCiAgICAiXHRtdm4gcjYsICMwXG4iCiAgICAiXHRj
bXAgcjIsIHI2XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV82OV9jb21wYXJlX19z
bG93IiAiXG4iCiAgICAiXHR2bW92IHMyLCByNFxuIgogICAgIlx0dmN2dC5mNjQuczMyIGQxLCBz
MlxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtXzY5X2NvbXBhcmVfX29wMU5vdEludFJl
YWR5IiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzY5X2NvbXBhcmVfX29wMU5vdEludE9wMkRv
dWJsZSIgIjpcbiIKICAgICJcdHZtb3YgZDEsIHI0LCByMlxuIgoKICAiLkwiICJfb2ZmbGluZWFz
bV82OV9jb21wYXJlX19vcDFOb3RJbnRSZWFkeSIgIjpcbiIKICAgICJcdHZtb3YgZDAsIHIxLCBy
MFxuIgogICAgIlx0dmNtcGUuZjY0IGQwLCBkMVxuIgogICAgIlx0dm1ycyBhcHNyX256Y3YsIGZw
c2NyXG4iCiAgICAiXHRibHMgIiAiLkwiICJfb2ZmbGluZWFzbV82OV9jb21wYXJlX19qdW1wVGFy
Z2V0IiAiXG4iCiAgICAiXHRhZGRzIHI5LCAjMTZcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1c
biIKICAgICJcdG1vdiBwYywgcjZcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fNjlfY29tcGFyZV9f
b3AyTm90SW50IiAiOlxuIgogICAgIlx0dm1vdiBzMCwgcjFcbiIKICAgICJcdHZjdnQuZjY0LnMz
MiBkMCwgczBcbiIKICAgICJcdG12biByNiwgIzZcbiIKICAgICJcdGNtcCByMiwgcjZcbiIKICAg
ICJcdGJoaSAiICIuTCIgIl9vZmZsaW5lYXNtXzY5X2NvbXBhcmVfX3Nsb3ciICJcbiIKICAgICJc
dHZtb3YgZDEsIHI0LCByMlxuIgogICAgIlx0dmNtcGUuZjY0IGQwLCBkMVxuIgogICAgIlx0dm1y
cyBhcHNyX256Y3YsIGZwc2NyXG4iCiAgICAiXHRibHMgIiAiLkwiICJfb2ZmbGluZWFzbV82OV9j
b21wYXJlX19qdW1wVGFyZ2V0IiAiXG4iCiAgICAiXHRhZGRzIHI5LCAjMTZcbiIKICAgICJcdGxk
ciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIKCiAgIi5MIiAiX29mZmxpbmVh
c21fNjlfY29tcGFyZV9fanVtcFRhcmdldCIgIjpcbiIKICAgICJcdGxkciByMCwgW3I5LCAjMTJd
XG4iCiAgICAiXHRsc2xzIHIwLCByMCwgIzJcbiIKICAgICJcdGFkZCByOSwgcjBcbiIKICAgICJc
dGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIKCiAgIi5MIiAiX29mZmxp
bmVhc21fNjlfY29tcGFyZV9fc2xvdyIgIjpcbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJc
dG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJsbGludF9zbG93X3BhdGhfamxlc3NlcSIgIlxu
IgogICAgIlx0bW92IHI5LCByMFxuIgoKCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAi
XHRtb3YgcGMsIHI2XG4iCgoiLkwiICJsbGludF9vcF9qbmxlc3NlcSIgIjpcbiIKICAgICJcdGxk
ciByMiwgW3I5LCAjNF1cbiIKICAgICJcdGxkciByNCwgW3I5LCAjOF1cbiIKICAgICJcdG1vdncg
cjYsICMwXG4iCiAgICAiXHRtb3Z0IHI2LCAjMTYzODRcbiIKICAgICJcdGNtcCByMiwgcjZcbiIK
ICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVfXzcwX2xvYWRDb25zdGFudE9y
VmFyaWFibGVfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjYsIHI3LCByMiwgbHNsICMzXG4i
CiAgICAiXHRsZHIgcjAsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIgcjEsIFtyNywgcjIsIGxzbCAj
M11cbiIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9jb21wYXJlX183MF9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVfXzcw
X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIxLCBb
cjcsICM4XVxuIgogICAgIlx0bGRyIHIxLCBbcjEsICMyNzZdXG4iCiAgICAiXHRhZGQgcjYsIHIx
LCByMiwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjAsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIgcjEs
IFtyMSwgcjIsIGxzbCAjM11cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9fNzBfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSIgIjpcbiIKICAgICJcdG1vdncgcjYsICMwXG4iCiAg
ICAiXHRtb3Z0IHI2LCAjMTYzODRcbiIKICAgICJcdGNtcCByNCwgcjZcbiIKICAgICJcdGJnZSAi
ICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVfXzcwX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVn
X19jb25zdGFudCIgIlxuIgogICAgIlx0YWRkIHI2LCByNywgcjQsIGxzbCAjM1xuIgogICAgIlx0
bGRyIHIyLCBbcjYsICM0XVxuIgogICAgIlx0bGRyIHI0LCBbcjcsIHI0LCBsc2wgIzNdXG4iCiAg
ICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9fNzBfbG9hZENvbnN0YW50T3JWYXJp
YWJsZTJSZWdfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9fNzBfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHIyLCBb
cjcsICM4XVxuIgogICAgIlx0bGRyIHIyLCBbcjIsICMyNzZdXG4iCiAgICAiXHRsc2xzIHI0LCBy
NCwgIzNcbiIKICAgICJcdGFkZCByMiwgcjRcbiIKICAgICJcdGxkciByNCwgW3IyLCAjMF1cbiIK
ICAgICJcdGxkciByMiwgW3IyLCAjNF1cbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9f
NzBfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUiICI6XG4iCiAgICAiXHRtdm4gcjYs
ICMwXG4iCiAgICAiXHRjbXAgcjAsIHI2XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFz
bV83MF9jb21wYXJlX19vcDFOb3RJbnQiICJcbiIKICAgICJcdG12biByNiwgIzBcbiIKICAgICJc
dGNtcCByMiwgcjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtXzcwX2NvbXBhcmVf
X29wMk5vdEludCIgIlxuIgogICAgIlx0Y21wIHIxLCByNFxuIgogICAgIlx0Ymd0ICIgIi5MIiAi
X29mZmxpbmVhc21fNzBfY29tcGFyZV9fanVtcFRhcmdldCIgIlxuIgogICAgIlx0YWRkcyByOSwg
IzE2XG4iCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgog
ICIuTCIgIl9vZmZsaW5lYXNtXzcwX2NvbXBhcmVfX29wMU5vdEludCIgIjpcbiIKICAgICJcdG12
biByNiwgIzZcbiIKICAgICJcdGNtcCByMCwgcjZcbiIKICAgICJcdGJoaSAiICIuTCIgIl9vZmZs
aW5lYXNtXzcwX2NvbXBhcmVfX3Nsb3ciICJcbiIKICAgICJcdG12biByNiwgIzZcbiIKICAgICJc
dGNtcCByMiwgcjZcbiIKICAgICJcdGJsbyAiICIuTCIgIl9vZmZsaW5lYXNtXzcwX2NvbXBhcmVf
X29wMU5vdEludE9wMkRvdWJsZSIgIlxuIgogICAgIlx0bXZuIHI2LCAjMFxuIgogICAgIlx0Y21w
IHIyLCByNlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fNzBfY29tcGFyZV9fc2xv
dyIgIlxuIgogICAgIlx0dm1vdiBzMiwgcjRcbiIKICAgICJcdHZjdnQuZjY0LnMzMiBkMSwgczJc
biIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV83MF9jb21wYXJlX19vcDFOb3RJbnRSZWFk
eSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV83MF9jb21wYXJlX19vcDFOb3RJbnRPcDJEb3Vi
bGUiICI6XG4iCiAgICAiXHR2bW92IGQxLCByNCwgcjJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21f
NzBfY29tcGFyZV9fb3AxTm90SW50UmVhZHkiICI6XG4iCiAgICAiXHR2bW92IGQwLCByMSwgcjBc
biIKICAgICJcdHZjbXBlLmY2NCBkMCwgZDFcbiIKICAgICJcdHZtcnMgYXBzcl9uemN2LCBmcHNj
clxuIgogICAgIlx0YmhpICIgIi5MIiAiX29mZmxpbmVhc21fNzBfY29tcGFyZV9fanVtcFRhcmdl
dCIgIlxuIgogICAgIlx0YWRkcyByOSwgIzE2XG4iCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4i
CiAgICAiXHRtb3YgcGMsIHI2XG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzcwX2NvbXBhcmVfX29w
Mk5vdEludCIgIjpcbiIKICAgICJcdHZtb3YgczAsIHIxXG4iCiAgICAiXHR2Y3Z0LmY2NC5zMzIg
ZDAsIHMwXG4iCiAgICAiXHRtdm4gcjYsICM2XG4iCiAgICAiXHRjbXAgcjIsIHI2XG4iCiAgICAi
XHRiaGkgIiAiLkwiICJfb2ZmbGluZWFzbV83MF9jb21wYXJlX19zbG93IiAiXG4iCiAgICAiXHR2
bW92IGQxLCByNCwgcjJcbiIKICAgICJcdHZjbXBlLmY2NCBkMCwgZDFcbiIKICAgICJcdHZtcnMg
YXBzcl9uemN2LCBmcHNjclxuIgogICAgIlx0YmhpICIgIi5MIiAiX29mZmxpbmVhc21fNzBfY29t
cGFyZV9fanVtcFRhcmdldCIgIlxuIgogICAgIlx0YWRkcyByOSwgIzE2XG4iCiAgICAiXHRsZHIg
cjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgogICIuTCIgIl9vZmZsaW5lYXNt
XzcwX2NvbXBhcmVfX2p1bXBUYXJnZXQiICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyOSwgIzEyXVxu
IgogICAgIlx0bHNscyByMCwgcjAsICMyXG4iCiAgICAiXHRhZGQgcjksIHIwXG4iCiAgICAiXHRs
ZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgogICIuTCIgIl9vZmZsaW5l
YXNtXzcwX2NvbXBhcmVfX3Nsb3ciICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRt
b3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc2xvd19wYXRoX2pubGVzc2VxIiAiXG4i
CiAgICAiXHRtb3YgcjksIHIwXG4iCgoKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJc
dG1vdiBwYywgcjZcbiIKCiIuTCIgImxsaW50X29wX2pncmVhdGVyZXEiICI6XG4iCiAgICAiXHRs
ZHIgcjIsIFtyOSwgIzRdXG4iCiAgICAiXHRsZHIgcjQsIFtyOSwgIzhdXG4iCiAgICAiXHRtb3Z3
IHI2LCAjMFxuIgogICAgIlx0bW92dCByNiwgIzE2Mzg0XG4iCiAgICAiXHRjbXAgcjIsIHI2XG4i
CiAgICAiXHRiZ2UgIiAiLkwiICJfb2ZmbGluZWFzbV9jb21wYXJlX183MV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlX19jb25zdGFudCIgIlxuIgogICAgIlx0YWRkIHI2LCByNywgcjIsIGxzbCAjM1xu
IgogICAgIlx0bGRyIHIwLCBbcjYsICM0XVxuIgogICAgIlx0bGRyIHIxLCBbcjcsIHIyLCBsc2wg
IzNdXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9fNzFfbG9hZENvbnN0
YW50T3JWYXJpYWJsZV9fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9jb21wYXJlX183
MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCIgIjpcbiIKICAgICJcdGxkciByMSwg
W3I3LCAjOF1cbiIKICAgICJcdGxkciByMSwgW3IxLCAjMjc2XVxuIgogICAgIlx0YWRkIHI2LCBy
MSwgcjIsIGxzbCAjM1xuIgogICAgIlx0bGRyIHIwLCBbcjYsICM0XVxuIgogICAgIlx0bGRyIHIx
LCBbcjEsIHIyLCBsc2wgIzNdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVfXzcxX2xv
YWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUiICI6XG4iCiAgICAiXHRtb3Z3IHI2LCAjMFxuIgog
ICAgIlx0bW92dCByNiwgIzE2Mzg0XG4iCiAgICAiXHRjbXAgcjQsIHI2XG4iCiAgICAiXHRiZ2Ug
IiAiLkwiICJfb2ZmbGluZWFzbV9jb21wYXJlX183MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
Z19fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByNiwgcjcsIHI0LCBsc2wgIzNcbiIKICAgICJc
dGxkciByMiwgW3I2LCAjNF1cbiIKICAgICJcdGxkciByNCwgW3I3LCByNCwgbHNsICMzXVxuIgog
ICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVfXzcxX2xvYWRDb25zdGFudE9yVmFy
aWFibGUyUmVnX19kb25lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVfXzcxX2xv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCIgIjpcbiIKICAgICJcdGxkciByMiwg
W3I3LCAjOF1cbiIKICAgICJcdGxkciByMiwgW3IyLCAjMjc2XVxuIgogICAgIlx0bHNscyByNCwg
cjQsICMzXG4iCiAgICAiXHRhZGQgcjIsIHI0XG4iCiAgICAiXHRsZHIgcjQsIFtyMiwgIzBdXG4i
CiAgICAiXHRsZHIgcjIsIFtyMiwgIzRdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVf
XzcxX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lIiAiOlxuIgogICAgIlx0bXZuIHI2
LCAjMFxuIgogICAgIlx0Y21wIHIwLCByNlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVh
c21fNzFfY29tcGFyZV9fb3AxTm90SW50IiAiXG4iCiAgICAiXHRtdm4gcjYsICMwXG4iCiAgICAi
XHRjbXAgcjIsIHI2XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV83MV9jb21wYXJl
X19vcDJOb3RJbnQiICJcbiIKICAgICJcdGNtcCByMSwgcjRcbiIKICAgICJcdGJnZSAiICIuTCIg
Il9vZmZsaW5lYXNtXzcxX2NvbXBhcmVfX2p1bXBUYXJnZXQiICJcbiIKICAgICJcdGFkZHMgcjks
ICMxNlxuIgogICAgIlx0bGRyIHI2LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxuIgoK
ICAiLkwiICJfb2ZmbGluZWFzbV83MV9jb21wYXJlX19vcDFOb3RJbnQiICI6XG4iCiAgICAiXHRt
dm4gcjYsICM2XG4iCiAgICAiXHRjbXAgcjAsIHI2XG4iCiAgICAiXHRiaGkgIiAiLkwiICJfb2Zm
bGluZWFzbV83MV9jb21wYXJlX19zbG93IiAiXG4iCiAgICAiXHRtdm4gcjYsICM2XG4iCiAgICAi
XHRjbXAgcjIsIHI2XG4iCiAgICAiXHRibG8gIiAiLkwiICJfb2ZmbGluZWFzbV83MV9jb21wYXJl
X19vcDFOb3RJbnRPcDJEb3VibGUiICJcbiIKICAgICJcdG12biByNiwgIzBcbiIKICAgICJcdGNt
cCByMiwgcjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZsaW5lYXNtXzcxX2NvbXBhcmVfX3Ns
b3ciICJcbiIKICAgICJcdHZtb3YgczIsIHI0XG4iCiAgICAiXHR2Y3Z0LmY2NC5zMzIgZDEsIHMy
XG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fNzFfY29tcGFyZV9fb3AxTm90SW50UmVh
ZHkiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fNzFfY29tcGFyZV9fb3AxTm90SW50T3AyRG91
YmxlIiAiOlxuIgogICAgIlx0dm1vdiBkMSwgcjQsIHIyXG4iCgogICIuTCIgIl9vZmZsaW5lYXNt
XzcxX2NvbXBhcmVfX29wMU5vdEludFJlYWR5IiAiOlxuIgogICAgIlx0dm1vdiBkMCwgcjEsIHIw
XG4iCiAgICAiXHR2Y21wZS5mNjQgZDAsIGQxXG4iCiAgICAiXHR2bXJzIGFwc3JfbnpjdiwgZnBz
Y3JcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtXzcxX2NvbXBhcmVfX2p1bXBUYXJn
ZXQiICJcbiIKICAgICJcdGFkZHMgcjksICMxNlxuIgogICAgIlx0bGRyIHI2LCBbcjksICMwXVxu
IgogICAgIlx0bW92IHBjLCByNlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV83MV9jb21wYXJlX19v
cDJOb3RJbnQiICI6XG4iCiAgICAiXHR2bW92IHMwLCByMVxuIgogICAgIlx0dmN2dC5mNjQuczMy
IGQwLCBzMFxuIgogICAgIlx0bXZuIHI2LCAjNlxuIgogICAgIlx0Y21wIHIyLCByNlxuIgogICAg
Ilx0YmhpICIgIi5MIiAiX29mZmxpbmVhc21fNzFfY29tcGFyZV9fc2xvdyIgIlxuIgogICAgIlx0
dm1vdiBkMSwgcjQsIHIyXG4iCiAgICAiXHR2Y21wZS5mNjQgZDAsIGQxXG4iCiAgICAiXHR2bXJz
IGFwc3JfbnpjdiwgZnBzY3JcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZsaW5lYXNtXzcxX2Nv
bXBhcmVfX2p1bXBUYXJnZXQiICJcbiIKICAgICJcdGFkZHMgcjksICMxNlxuIgogICAgIlx0bGRy
IHI2LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxuIgoKICAiLkwiICJfb2ZmbGluZWFz
bV83MV9jb21wYXJlX19qdW1wVGFyZ2V0IiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjksICMxMl1c
biIKICAgICJcdGxzbHMgcjAsIHIwLCAjMlxuIgogICAgIlx0YWRkIHI5LCByMFxuIgogICAgIlx0
bGRyIHI2LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxuIgoKICAiLkwiICJfb2ZmbGlu
ZWFzbV83MV9jb21wYXJlX19zbG93IiAiOlxuIgogICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0
bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgImxsaW50X3Nsb3dfcGF0aF9qZ3JlYXRlcmVxIiAi
XG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCgoKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAg
ICJcdG1vdiBwYywgcjZcbiIKCiIuTCIgImxsaW50X29wX2puZ3JlYXRlcmVxIiAiOlxuIgogICAg
Ilx0bGRyIHIyLCBbcjksICM0XVxuIgogICAgIlx0bGRyIHI0LCBbcjksICM4XVxuIgogICAgIlx0
bW92dyByNiwgIzBcbiIKICAgICJcdG1vdnQgcjYsICMxNjM4NFxuIgogICAgIlx0Y21wIHIyLCBy
NlxuIgogICAgIlx0YmdlICIgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9fNzJfbG9hZENvbnN0
YW50T3JWYXJpYWJsZV9fY29uc3RhbnQiICJcbiIKICAgICJcdGFkZCByNiwgcjcsIHIyLCBsc2wg
IzNcbiIKICAgICJcdGxkciByMCwgW3I2LCAjNF1cbiIKICAgICJcdGxkciByMSwgW3I3LCByMiwg
bHNsICMzXVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX2NvbXBhcmVfXzcyX2xvYWRD
b25zdGFudE9yVmFyaWFibGVfX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fY29tcGFy
ZV9fNzJfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQiICI6XG4iCiAgICAiXHRsZHIg
cjEsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgIzI3Nl1cbiIKICAgICJcdGFkZCBy
NiwgcjEsIHIyLCBsc2wgIzNcbiIKICAgICJcdGxkciByMCwgW3I2LCAjNF1cbiIKICAgICJcdGxk
ciByMSwgW3IxLCByMiwgbHNsICMzXVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9jb21wYXJlX183
Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lIiAiOlxuIgogICAgIlx0bW92dyByNiwgIzBc
biIKICAgICJcdG1vdnQgcjYsICMxNjM4NFxuIgogICAgIlx0Y21wIHI0LCByNlxuIgogICAgIlx0
YmdlICIgIi5MIiAiX29mZmxpbmVhc21fY29tcGFyZV9fNzJfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWdfX2NvbnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjYsIHI3LCByNCwgbHNsICMzXG4iCiAg
ICAiXHRsZHIgcjIsIFtyNiwgIzRdXG4iCiAgICAiXHRsZHIgcjQsIFtyNywgcjQsIGxzbCAjM11c
biIKICAgICJcdGIgIiAiLkwiICJfb2ZmbGluZWFzbV9jb21wYXJlX183Ml9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZ19fZG9uZSIgIlxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9jb21wYXJlX183
Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQiICI6XG4iCiAgICAiXHRsZHIg
cjIsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjIsIFtyMiwgIzI3Nl1cbiIKICAgICJcdGxzbHMg
cjQsIHI0LCAjM1xuIgogICAgIlx0YWRkIHIyLCByNFxuIgogICAgIlx0bGRyIHI0LCBbcjIsICMw
XVxuIgogICAgIlx0bGRyIHIyLCBbcjIsICM0XVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9jb21w
YXJlX183Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSIgIjpcbiIKICAgICJcdG12
biByNiwgIzBcbiIKICAgICJcdGNtcCByMCwgcjZcbiIKICAgICJcdGJuZSAiICIuTCIgIl9vZmZs
aW5lYXNtXzcyX2NvbXBhcmVfX29wMU5vdEludCIgIlxuIgogICAgIlx0bXZuIHI2LCAjMFxuIgog
ICAgIlx0Y21wIHIyLCByNlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fNzJfY29t
cGFyZV9fb3AyTm90SW50IiAiXG4iCiAgICAiXHRjbXAgcjEsIHI0XG4iCiAgICAiXHRibHQgIiAi
LkwiICJfb2ZmbGluZWFzbV83Ml9jb21wYXJlX19qdW1wVGFyZ2V0IiAiXG4iCiAgICAiXHRhZGRz
IHI5LCAjMTZcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZc
biIKCiAgIi5MIiAiX29mZmxpbmVhc21fNzJfY29tcGFyZV9fb3AxTm90SW50IiAiOlxuIgogICAg
Ilx0bXZuIHI2LCAjNlxuIgogICAgIlx0Y21wIHIwLCByNlxuIgogICAgIlx0YmhpICIgIi5MIiAi
X29mZmxpbmVhc21fNzJfY29tcGFyZV9fc2xvdyIgIlxuIgogICAgIlx0bXZuIHI2LCAjNlxuIgog
ICAgIlx0Y21wIHIyLCByNlxuIgogICAgIlx0YmxvICIgIi5MIiAiX29mZmxpbmVhc21fNzJfY29t
cGFyZV9fb3AxTm90SW50T3AyRG91YmxlIiAiXG4iCiAgICAiXHRtdm4gcjYsICMwXG4iCiAgICAi
XHRjbXAgcjIsIHI2XG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV83Ml9jb21wYXJl
X19zbG93IiAiXG4iCiAgICAiXHR2bW92IHMyLCByNFxuIgogICAgIlx0dmN2dC5mNjQuczMyIGQx
LCBzMlxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtXzcyX2NvbXBhcmVfX29wMU5vdElu
dFJlYWR5IiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzcyX2NvbXBhcmVfX29wMU5vdEludE9w
MkRvdWJsZSIgIjpcbiIKICAgICJcdHZtb3YgZDEsIHI0LCByMlxuIgoKICAiLkwiICJfb2ZmbGlu
ZWFzbV83Ml9jb21wYXJlX19vcDFOb3RJbnRSZWFkeSIgIjpcbiIKICAgICJcdHZtb3YgZDAsIHIx
LCByMFxuIgogICAgIlx0dmNtcGUuZjY0IGQwLCBkMVxuIgogICAgIlx0dm1ycyBhcHNyX256Y3Ys
IGZwc2NyXG4iCiAgICAiXHRibHQgIiAiLkwiICJfb2ZmbGluZWFzbV83Ml9jb21wYXJlX19qdW1w
VGFyZ2V0IiAiXG4iCiAgICAiXHRhZGRzIHI5LCAjMTZcbiIKICAgICJcdGxkciByNiwgW3I5LCAj
MF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fNzJfY29tcGFy
ZV9fb3AyTm90SW50IiAiOlxuIgogICAgIlx0dm1vdiBzMCwgcjFcbiIKICAgICJcdHZjdnQuZjY0
LnMzMiBkMCwgczBcbiIKICAgICJcdG12biByNiwgIzZcbiIKICAgICJcdGNtcCByMiwgcjZcbiIK
ICAgICJcdGJoaSAiICIuTCIgIl9vZmZsaW5lYXNtXzcyX2NvbXBhcmVfX3Nsb3ciICJcbiIKICAg
ICJcdHZtb3YgZDEsIHI0LCByMlxuIgogICAgIlx0dmNtcGUuZjY0IGQwLCBkMVxuIgogICAgIlx0
dm1ycyBhcHNyX256Y3YsIGZwc2NyXG4iCiAgICAiXHRibHQgIiAiLkwiICJfb2ZmbGluZWFzbV83
Ml9jb21wYXJlX19qdW1wVGFyZ2V0IiAiXG4iCiAgICAiXHRhZGRzIHI5LCAjMTZcbiIKICAgICJc
dGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIKCiAgIi5MIiAiX29mZmxp
bmVhc21fNzJfY29tcGFyZV9fanVtcFRhcmdldCIgIjpcbiIKICAgICJcdGxkciByMCwgW3I5LCAj
MTJdXG4iCiAgICAiXHRsc2xzIHIwLCByMCwgIzJcbiIKICAgICJcdGFkZCByOSwgcjBcbiIKICAg
ICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIKCiAgIi5MIiAiX29m
ZmxpbmVhc21fNzJfY29tcGFyZV9fc2xvdyIgIjpcbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAg
ICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJsbGludF9zbG93X3BhdGhfam5ncmVhdGVy
ZXEiICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIKCgogICAgIlx0bGRyIHI2LCBbcjksICMwXVxu
IgogICAgIlx0bW92IHBjLCByNlxuIgoKIi5MIiAibGxpbnRfb3BfbG9vcF9oaW50IiAiOlxuIgog
ICAgIlx0bGRyIHIxLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIxLCBbcjEsICM1Nl1cbiIKICAg
ICJcdG1vdncgcjYsICMyMjk1NlxuIgogICAgIlx0YWRkIHI2LCByMVxuIgogICAgIlx0bGRyYiBy
MCwgW3I2LCAjMF1cbiIKICAgICJcdHRzdCByMCwgcjBcbiIKICAgICJcdGJuZSAiICIuTCIgIl9v
ZmZsaW5lYXNtX2hhbmRsZVdhdGNoZG9nVGltZXIiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21f
YWZ0ZXJXYXRjaGRvZ1RpbWVyQ2hlY2siICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyNywgIzhdXG4i
CiAgICAiXHRsZHIgcjYsIFtyMCwgIzMxNl1cbiIKICAgICJcdGFkZHMgcjYsICMxXG4iCiAgICAi
XHRzdHIgcjYsIFtyMCwgIzMxNl1cbiIKICAgICJcdGJtaSAiICIuTCIgIl9vZmZsaW5lYXNtX2No
ZWNrU3dpdGNoVG9KSVRGb3JMb29wX183Ml9jaGVja1N3aXRjaFRvSklUX19jb250aW51ZSIgIlxu
IgogICAgIlx0c3RyIHI5LCBbcjcsICMzNl1cbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJc
dG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJsbGludF9sb29wX29zciIgIlxuIgogICAgIlx0
dHN0IHIwLCByMFxuIgogICAgIlx0YmVxICIgIi5MIiAiX29mZmxpbmVhc21fY2hlY2tTd2l0Y2hU
b0pJVEZvckxvb3BfX2NoZWNrU3dpdGNoVG9KSVRfX2FjdGlvbl9fcmVjb3ZlciIgIlxuIgogICAg
Ilx0bW92IHNwLCByMVxuIgogICAgIlx0bW92IHBjLCByMFxuIgoKICAiLkwiICJfb2ZmbGluZWFz
bV9jaGVja1N3aXRjaFRvSklURm9yTG9vcF9fY2hlY2tTd2l0Y2hUb0pJVF9fYWN0aW9uX19yZWNv
dmVyIiAiOlxuIgogICAgIlx0bGRyIHI5LCBbcjcsICMzNl1cbiIKCiAgIi5MIiAiX29mZmxpbmVh
c21fY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3BfXzcyX2NoZWNrU3dpdGNoVG9KSVRfX2NvbnRpbnVl
IiAiOlxuIgogICAgIlx0YWRkcyByOSwgIzRcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIK
ICAgICJcdG1vdiBwYywgcjZcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21faGFuZGxlV2F0Y2hkb2dU
aW1lciIgIjpcbiIKICAgICJcdHN0ciByOSwgW3I3LCAjMzZdXG4iCiAgICAiXHRtb3YgcjAsIHI3
XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc2xvd19wYXRoX2hh
bmRsZV93YXRjaGRvZ190aW1lciIgIlxuIgogICAgIlx0dHN0IHIwLCByMFxuIgogICAgIlx0Ym5l
ICIgIi5MIiAiX29mZmxpbmVhc21fdGhyb3dIYW5kbGVyIiAiXG4iCiAgICAiXHRsZHIgcjksIFty
NywgIzM2XVxuIgogICAgIlx0YiAiICIuTCIgIl9vZmZsaW5lYXNtX2FmdGVyV2F0Y2hkb2dUaW1l
ckNoZWNrIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX3Rocm93SGFuZGxlciIgIjpcbiIKICAg
ICJcdGIgIiAiLkwiICJsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lIiAiXG4i
CgoiLkwiICJsbGludF9vcF9zd2l0Y2hfc3RyaW5nIiAiOlxuIgogICAgIlx0bW92IHIwLCByN1xu
IgogICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgImxsaW50X3Nsb3dfcGF0aF9zd2l0
Y2hfc3RyaW5nIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCgoKICAgICJcdGxkciByNiwgW3I5
LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIKCiIuTCIgImxsaW50X29wX25ld19mdW5jX2V4
cCIgIjpcbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJc
dGJseCAiICJsbGludF9zbG93X3BhdGhfbmV3X2Z1bmNfZXhwIiAiXG4iCiAgICAiXHRtb3Ygcjks
IHIwXG4iCiAgICAiXHRhZGRzIHI5LCAjMTJcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIK
ICAgICJcdG1vdiBwYywgcjZcbiIKCiIuTCIgImxsaW50X29wX2NhbGwiICI6XG4iCiAgICAiXHRs
ZHIgcjQsIFtyOSwgIzE2XVxuIgogICAgIlx0cnNicyByNCwgcjQsICMwXG4iCiAgICAiXHRhZGQg
cjYsIHI3LCByNCwgbHNsICMzXG4iCiAgICAiXHRtdm4gcjEyLCAjNFxuIgogICAgIlx0bGRyIHIx
MCwgW3I2LCAjNDRdXG4iCiAgICAiXHRjbXAgcjEwLCByMTJcbiIKICAgICJcdGJuZSAiICIuTCIg
Il9vZmZsaW5lYXNtX2FycmF5UHJvZmlsZUZvckNhbGxfX2RvbmUiICJcbiIKICAgICJcdGFkZCBy
MTIsIHI3LCByNCwgbHNsICMzXG4iCiAgICAiXHRsZHIgcjAsIFtyMTIsICM0MF1cbiIKICAgICJc
dGxkciByMCwgW3IwLCAjMF1cbiIKICAgICJcdGxkciByMSwgW3I5LCAjMjhdXG4iCiAgICAiXHRz
dHIgcjAsIFtyMSwgIzRdXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2FycmF5UHJvZmlsZUZvckNh
bGxfX2RvbmUiICI6XG4iCiAgICAiXHRsZHIgcjAsIFtyOSwgIzhdXG4iCiAgICAiXHRsZHIgcjEs
IFtyOSwgIzIwXVxuIgogICAgIlx0bGRyIHIyLCBbcjEsICM4XVxuIgogICAgIlx0bW92dyByMTIs
ICMwXG4iCiAgICAiXHRtb3Z0IHIxMiwgIzE2Mzg0XG4iCiAgICAiXHRjbXAgcjAsIHIxMlxuIgog
ICAgIlx0YmdlICIgIi5MIiAiX29mZmxpbmVhc21fZG9DYWxsX19sb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZF9fNzJfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2Nv
bnN0YW50IiAiXG4iCiAgICAiXHRhZGQgcjEyLCByNywgcjAsIGxzbCAjM1xuIgogICAgIlx0bXZu
IHIxMCwgIzRcbiIKICAgICJcdGxkciByNiwgW3IxMiwgIzRdXG4iCiAgICAiXHRjbXAgcjYsIHIx
MFxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fZG9DYWxsX19vcENhbGxTbG93IiAi
XG4iCiAgICAiXHRsZHIgcjQsIFtyNywgcjAsIGxzbCAjM11cbiIKICAgICJcdGIgIiAiLkwiICJf
b2ZmbGluZWFzbV9kb0NhbGxfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX183Ml9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSIgIlxuIgoKICAiLkwiICJf
b2ZmbGluZWFzbV9kb0NhbGxfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX183Ml9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQiICI6XG4iCiAgICAi
XHRsZHIgcjQsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjQsIFtyNCwgIzI3Nl1cbiIKICAgICJc
dGFkZCByMTAsIHI0LCByMCwgbHNsICMzXG4iCiAgICAiXHRtdm4gcjYsICM0XG4iCiAgICAiXHRs
ZHIgcjEyLCBbcjEwLCAjNF1cbiIKICAgICJcdGNtcCByMTIsIHI2XG4iCiAgICAiXHRibmUgIiAi
LkwiICJfb2ZmbGluZWFzbV9kb0NhbGxfX29wQ2FsbFNsb3ciICJcbiIKICAgICJcdGxkciByNCwg
W3I0LCByMCwgbHNsICMzXVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9kb0NhbGxfX2xvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkX183Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRh
Z0N1c3RvbV9fZG9uZSIgIjpcbiIKICAgICJcdGNtcCByNCwgcjJcbiIKICAgICJcdGJuZSAiICIu
TCIgIl9vZmZsaW5lYXNtX2RvQ2FsbF9fb3BDYWxsU2xvdyIgIlxuIgogICAgIlx0bGRyIHI0LCBb
cjksICMxNl1cbiIKICAgICJcdGxzbHMgcjQsIHI0LCAjM1xuIgogICAgIlx0cnNicyByNCwgcjQs
ICMwXG4iCiAgICAiXHRhZGQgcjQsIHI3XG4iCiAgICAiXHRsZHIgcjAsIFtyMiwgIzI0XVxuIgog
ICAgIlx0c3RyIHIyLCBbcjQsICMyNF1cbiIKICAgICJcdHN0ciByMCwgW3I0LCAjMTZdXG4iCiAg
ICAiXHRsZHIgcjIsIFtyOSwgIzEyXVxuIgogICAgIlx0c3RyIHI5LCBbcjcsICMzNl1cbiIKICAg
ICJcdHN0ciByMiwgW3I0LCAjMzJdXG4iCiAgICAiXHRtdm4gcjYsICM0XG4iCiAgICAiXHRzdHIg
cjYsIFtyNCwgIzI4XVxuIgogICAgIlx0bXZuIHI2LCAjNFxuIgogICAgIlx0c3RyIHI2LCBbcjQs
ICMyMF1cbiIKICAgICJcdGFkZHMgcjQsICM4XG4iCiAgICAiXHRtb3Ygc3AsIHI0XG4iCiAgICAi
XHRsZHIgcjYsIFtyMSwgIzE2XVxuIgogICAgIlx0Ymx4IHI2XG4iCiAgICAiXHRsZHIgcjIsIFty
NywgIzhdXG4iCiAgICAiXHRsZHIgcjgsIFtyMiwgIzI4XVxuIgogICAgIlx0bHNscyByOCwgcjgs
ICMzXG4iCiAgICAiXHRhZGRzIHI4LCAjMjRcbiIKICAgICJcdHN1YnMgcjgsIHI3LCByOFxuIgog
ICAgIlx0bW92IHNwLCByOFxuIgogICAgIlx0bGRyIHI5LCBbcjcsICMzNl1cbiIKICAgICJcdGxk
ciByMiwgW3I5LCAjNF1cbiIKICAgICJcdGFkZCByNiwgcjcsIHIyLCBsc2wgIzNcbiIKICAgICJc
dHN0ciByMSwgW3I2LCAjNF1cbiIKICAgICJcdHN0ciByMCwgW3I3LCByMiwgbHNsICMzXVxuIgog
ICAgIlx0bGRyIHI0LCBbcjksICMzMl1cbiIKICAgICJcdHN0ciByMSwgW3I0LCAjMjBdXG4iCiAg
ICAiXHRzdHIgcjAsIFtyNCwgIzE2XVxuIgogICAgIlx0YWRkcyByOSwgIzM2XG4iCiAgICAiXHRs
ZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgogICIuTCIgIl9vZmZsaW5l
YXNtX2RvQ2FsbF9fb3BDYWxsU2xvdyIgIjpcbiIKICAgICJcdHN0ciByOSwgW3I3LCAjMzZdXG4i
CiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAi
bGxpbnRfc2xvd19wYXRoX2NhbGwiICJcbiIKICAgICJcdHRzdCByMSwgcjFcbiIKICAgICJcdGJl
cSAiICIuTCIgIl9vZmZsaW5lYXNtX2RvQ2FsbF9fc2xvd1BhdGhGb3JDYWxsX19jYWxsQ2FsbFNs
b3dQYXRoX19hY3Rpb25fX2RvbnRVcGRhdGVTUCIgIlxuIgogICAgIlx0YWRkcyByMSwgcjEsICM4
XG4iCiAgICAiXHRtb3Ygc3AsIHIxXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX2RvQ2FsbF9fc2xv
d1BhdGhGb3JDYWxsX19jYWxsQ2FsbFNsb3dQYXRoX19hY3Rpb25fX2RvbnRVcGRhdGVTUCIgIjpc
biIKICAgICJcdGJseCByMFxuIgogICAgIlx0bGRyIHIyLCBbcjcsICM4XVxuIgogICAgIlx0bGRy
IHI4LCBbcjIsICMyOF1cbiIKICAgICJcdGxzbHMgcjgsIHI4LCAjM1xuIgogICAgIlx0YWRkcyBy
OCwgIzI0XG4iCiAgICAiXHRzdWJzIHI4LCByNywgcjhcbiIKICAgICJcdG1vdiBzcCwgcjhcbiIK
ICAgICJcdGxkciByOSwgW3I3LCAjMzZdXG4iCiAgICAiXHRsZHIgcjIsIFtyOSwgIzRdXG4iCiAg
ICAiXHRhZGQgcjYsIHI3LCByMiwgbHNsICMzXG4iCiAgICAiXHRzdHIgcjEsIFtyNiwgIzRdXG4i
CiAgICAiXHRzdHIgcjAsIFtyNywgcjIsIGxzbCAjM11cbiIKICAgICJcdGxkciByNCwgW3I5LCAj
MzJdXG4iCiAgICAiXHRzdHIgcjEsIFtyNCwgIzIwXVxuIgogICAgIlx0c3RyIHIwLCBbcjQsICMx
Nl1cbiIKICAgICJcdGFkZHMgcjksICMzNlxuIgogICAgIlx0bGRyIHI2LCBbcjksICMwXVxuIgog
ICAgIlx0bW92IHBjLCByNlxuIgoKIi5MIiAibGxpbnRfb3BfY29uc3RydWN0IiAiOlxuIgogICAg
Ilx0bGRyIHIwLCBbcjksICM4XVxuIgogICAgIlx0bGRyIHIxLCBbcjksICMyMF1cbiIKICAgICJc
dGxkciByMiwgW3IxLCAjOF1cbiIKICAgICJcdG1vdncgcjYsICMwXG4iCiAgICAiXHRtb3Z0IHI2
LCAjMTYzODRcbiIKICAgICJcdGNtcCByMCwgcjZcbiIKICAgICJcdGJnZSAiICIuTCIgIl9vZmZs
aW5lYXNtX2RvQ2FsbF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzczX2xvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCIgIlxuIgogICAgIlx0YWRk
IHI2LCByNywgcjAsIGxzbCAjM1xuIgogICAgIlx0bXZuIHIxMiwgIzRcbiIKICAgICJcdGxkciBy
MTAsIFtyNiwgIzRdXG4iCiAgICAiXHRjbXAgcjEwLCByMTJcbiIKICAgICJcdGJuZSAiICIuTCIg
Il9vZmZsaW5lYXNtXzczX2RvQ2FsbF9fb3BDYWxsU2xvdyIgIlxuIgogICAgIlx0bGRyIHI0LCBb
cjcsIHIwLCBsc2wgIzNdXG4iCiAgICAiXHRiICIgIi5MIiAiX29mZmxpbmVhc21fZG9DYWxsX19s
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNzNfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWRUYWdDdXN0b21fX2RvbmUiICJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fZG9DYWxsX19s
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNzNfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWRUYWdDdXN0b21fX2NvbnN0YW50IiAiOlxuIgogICAgIlx0bGRyIHI0LCBbcjcsICM4XVxu
IgogICAgIlx0bGRyIHI0LCBbcjQsICMyNzZdXG4iCiAgICAiXHRhZGQgcjEyLCByNCwgcjAsIGxz
bCAjM1xuIgogICAgIlx0bXZuIHIxMCwgIzRcbiIKICAgICJcdGxkciByNiwgW3IxMiwgIzRdXG4i
CiAgICAiXHRjbXAgcjYsIHIxMFxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fNzNf
ZG9DYWxsX19vcENhbGxTbG93IiAiXG4iCiAgICAiXHRsZHIgcjQsIFtyNCwgcjAsIGxzbCAjM11c
biIKCiAgIi5MIiAiX29mZmxpbmVhc21fZG9DYWxsX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZF9fNzNfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUiICI6
XG4iCiAgICAiXHRjbXAgcjQsIHIyXG4iCiAgICAiXHRibmUgIiAiLkwiICJfb2ZmbGluZWFzbV83
M19kb0NhbGxfX29wQ2FsbFNsb3ciICJcbiIKICAgICJcdGxkciByNCwgW3I5LCAjMTZdXG4iCiAg
ICAiXHRsc2xzIHI0LCByNCwgIzNcbiIKICAgICJcdHJzYnMgcjQsIHI0LCAjMFxuIgogICAgIlx0
YWRkIHI0LCByN1xuIgogICAgIlx0bGRyIHIwLCBbcjIsICMyNF1cbiIKICAgICJcdHN0ciByMiwg
W3I0LCAjMjRdXG4iCiAgICAiXHRzdHIgcjAsIFtyNCwgIzE2XVxuIgogICAgIlx0bGRyIHIyLCBb
cjksICMxMl1cbiIKICAgICJcdHN0ciByOSwgW3I3LCAjMzZdXG4iCiAgICAiXHRzdHIgcjIsIFty
NCwgIzMyXVxuIgogICAgIlx0bXZuIHIxMCwgIzRcbiIKICAgICJcdHN0ciByMTAsIFtyNCwgIzI4
XVxuIgogICAgIlx0bXZuIHIxMCwgIzRcbiIKICAgICJcdHN0ciByMTAsIFtyNCwgIzIwXVxuIgog
ICAgIlx0YWRkcyByNCwgIzhcbiIKICAgICJcdG1vdiBzcCwgcjRcbiIKICAgICJcdGxkciByMTAs
IFtyMSwgIzE2XVxuIgogICAgIlx0Ymx4IHIxMFxuIgogICAgIlx0bGRyIHIyLCBbcjcsICM4XVxu
IgogICAgIlx0bGRyIHI4LCBbcjIsICMyOF1cbiIKICAgICJcdGxzbHMgcjgsIHI4LCAjM1xuIgog
ICAgIlx0YWRkcyByOCwgIzI0XG4iCiAgICAiXHRzdWJzIHI4LCByNywgcjhcbiIKICAgICJcdG1v
diBzcCwgcjhcbiIKICAgICJcdGxkciByOSwgW3I3LCAjMzZdXG4iCiAgICAiXHRsZHIgcjIsIFty
OSwgIzRdXG4iCiAgICAiXHRhZGQgcjEwLCByNywgcjIsIGxzbCAjM1xuIgogICAgIlx0c3RyIHIx
LCBbcjEwLCAjNF1cbiIKICAgICJcdHN0ciByMCwgW3I3LCByMiwgbHNsICMzXVxuIgogICAgIlx0
bGRyIHI0LCBbcjksICMzMl1cbiIKICAgICJcdHN0ciByMSwgW3I0LCAjMjBdXG4iCiAgICAiXHRz
dHIgcjAsIFtyNCwgIzE2XVxuIgogICAgIlx0YWRkcyByOSwgIzM2XG4iCiAgICAiXHRsZHIgcjEw
LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTBcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21f
NzNfZG9DYWxsX19vcENhbGxTbG93IiAiOlxuIgogICAgIlx0c3RyIHI5LCBbcjcsICMzNl1cbiIK
ICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJs
bGludF9zbG93X3BhdGhfY29uc3RydWN0IiAiXG4iCiAgICAiXHR0c3QgcjEsIHIxXG4iCiAgICAi
XHRiZXEgIiAiLkwiICJfb2ZmbGluZWFzbV9kb0NhbGxfX3Nsb3dQYXRoRm9yQ2FsbF9fY2FsbENh
bGxTbG93UGF0aF9fNzNfYWN0aW9uX19kb250VXBkYXRlU1AiICJcbiIKICAgICJcdGFkZHMgcjEs
IHIxLCAjOFxuIgogICAgIlx0bW92IHNwLCByMVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9kb0Nh
bGxfX3Nsb3dQYXRoRm9yQ2FsbF9fY2FsbENhbGxTbG93UGF0aF9fNzNfYWN0aW9uX19kb250VXBk
YXRlU1AiICI6XG4iCiAgICAiXHRibHggcjBcbiIKICAgICJcdGxkciByMiwgW3I3LCAjOF1cbiIK
ICAgICJcdGxkciByOCwgW3IyLCAjMjhdXG4iCiAgICAiXHRsc2xzIHI4LCByOCwgIzNcbiIKICAg
ICJcdGFkZHMgcjgsICMyNFxuIgogICAgIlx0c3VicyByOCwgcjcsIHI4XG4iCiAgICAiXHRtb3Yg
c3AsIHI4XG4iCiAgICAiXHRsZHIgcjksIFtyNywgIzM2XVxuIgogICAgIlx0bGRyIHIyLCBbcjks
ICM0XVxuIgogICAgIlx0YWRkIHIxMCwgcjcsIHIyLCBsc2wgIzNcbiIKICAgICJcdHN0ciByMSwg
W3IxMCwgIzRdXG4iCiAgICAiXHRzdHIgcjAsIFtyNywgcjIsIGxzbCAjM11cbiIKICAgICJcdGxk
ciByNCwgW3I5LCAjMzJdXG4iCiAgICAiXHRzdHIgcjEsIFtyNCwgIzIwXVxuIgogICAgIlx0c3Ry
IHIwLCBbcjQsICMxNl1cbiIKICAgICJcdGFkZHMgcjksICMzNlxuIgogICAgIlx0bGRyIHIxMCwg
W3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjEwXG4iCgoiLkwiICJsbGludF9vcF9jYWxsX3Zh
cmFyZ3MiICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAg
ICAiXHRibHggIiAibGxpbnRfc2xvd19wYXRoX3NpemVfZnJhbWVfZm9yX3ZhcmFyZ3MiICJcbiIK
ICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJcdGxkciByNCwgW3I3LCAjMTZdXG4iCiAgICAiXHRt
b3Z3IHIxMCwgIzBcbiIKICAgICJcdG1vdnQgcjEwLCAjNjU1MzVcbiIKICAgICJcdGFuZHMgcjQs
IHIxMFxuIgogICAgIlx0bGRyIHI0LCBbcjQsICMxMDc2XVxuIgogICAgIlx0bW92dyByMTAsICMy
NzA2MFxuIgogICAgIlx0YWRkIHIxMCwgcjRcbiIKICAgICJcdG12biByNiwgIzVcbiIKICAgICJc
dGxkciByMTIsIFtyMTAsICMwXVxuIgogICAgIlx0Y21wIHIxMiwgcjZcbiIKICAgICJcdGJlcSAi
ICIuTCIgIl9vZmZsaW5lYXNtX2JyYW5jaElmRXhjZXB0aW9uX19ub0V4Y2VwdGlvbiIgIlxuIgog
ICAgIlx0YiAiICIuTCIgImxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUiICJc
biIKCiAgIi5MIiAiX29mZmxpbmVhc21fYnJhbmNoSWZFeGNlcHRpb25fX25vRXhjZXB0aW9uIiAi
OlxuIgogICAgIlx0c3VicyByMiwgcjEsICM4XG4iCiAgICAiXHRtb3Ygc3AsIHIyXG4iCiAgICAi
XHRzdHIgcjksIFtyNywgIzM2XVxuIgogICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIx
LCByOVxuIgogICAgIlx0Ymx4ICIgImxsaW50X3Nsb3dfcGF0aF9jYWxsX3ZhcmFyZ3MiICJcbiIK
ICAgICJcdHRzdCByMSwgcjFcbiIKICAgICJcdGJlcSAiICIuTCIgIl9vZmZsaW5lYXNtX3Nsb3dQ
YXRoRm9yQ2FsbF9fY2FsbENhbGxTbG93UGF0aF9fNzRfYWN0aW9uX19kb250VXBkYXRlU1AiICJc
biIKICAgICJcdGFkZHMgcjEsIHIxLCAjOFxuIgogICAgIlx0bW92IHNwLCByMVxuIgoKICAiLkwi
ICJfb2ZmbGluZWFzbV9zbG93UGF0aEZvckNhbGxfX2NhbGxDYWxsU2xvd1BhdGhfXzc0X2FjdGlv
bl9fZG9udFVwZGF0ZVNQIiAiOlxuIgogICAgIlx0Ymx4IHIwXG4iCiAgICAiXHRsZHIgcjIsIFty
NywgIzhdXG4iCiAgICAiXHRsZHIgcjgsIFtyMiwgIzI4XVxuIgogICAgIlx0bHNscyByOCwgcjgs
ICMzXG4iCiAgICAiXHRhZGRzIHI4LCAjMjRcbiIKICAgICJcdHN1YnMgcjgsIHI3LCByOFxuIgog
ICAgIlx0bW92IHNwLCByOFxuIgogICAgIlx0bGRyIHI5LCBbcjcsICMzNl1cbiIKICAgICJcdGxk
ciByMiwgW3I5LCAjNF1cbiIKICAgICJcdGFkZCByNiwgcjcsIHIyLCBsc2wgIzNcbiIKICAgICJc
dHN0ciByMSwgW3I2LCAjNF1cbiIKICAgICJcdHN0ciByMCwgW3I3LCByMiwgbHNsICMzXVxuIgog
ICAgIlx0bGRyIHI0LCBbcjksICMzMl1cbiIKICAgICJcdHN0ciByMSwgW3I0LCAjMjBdXG4iCiAg
ICAiXHRzdHIgcjAsIFtyNCwgIzE2XVxuIgogICAgIlx0YWRkcyByOSwgIzM2XG4iCiAgICAiXHRs
ZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgoiLkwiICJsbGludF9vcF9j
b25zdHJ1Y3RfdmFyYXJncyIgIjpcbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiBy
MSwgcjlcbiIKICAgICJcdGJseCAiICJsbGludF9zbG93X3BhdGhfc2l6ZV9mcmFtZV9mb3JfdmFy
YXJncyIgIlxuIgogICAgIlx0bW92IHI5LCByMFxuIgogICAgIlx0bGRyIHI0LCBbcjcsICMxNl1c
biIKICAgICJcdG1vdncgcjYsICMwXG4iCiAgICAiXHRtb3Z0IHI2LCAjNjU1MzVcbiIKICAgICJc
dGFuZHMgcjQsIHI2XG4iCiAgICAiXHRsZHIgcjQsIFtyNCwgIzEwNzZdXG4iCiAgICAiXHRtb3Z3
IHI2LCAjMjcwNjBcbiIKICAgICJcdGFkZCByNiwgcjRcbiIKICAgICJcdG12biByMTIsICM1XG4i
CiAgICAiXHRsZHIgcjEwLCBbcjYsICMwXVxuIgogICAgIlx0Y21wIHIxMCwgcjEyXG4iCiAgICAi
XHRiZXEgIiAiLkwiICJfb2ZmbGluZWFzbV83NF9icmFuY2hJZkV4Y2VwdGlvbl9fbm9FeGNlcHRp
b24iICJcbiIKICAgICJcdGIgIiAiLkwiICJsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFt
cG9saW5lIiAiXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtXzc0X2JyYW5jaElmRXhjZXB0aW9uX19u
b0V4Y2VwdGlvbiIgIjpcbiIKICAgICJcdHN1YnMgcjIsIHIxLCAjOFxuIgogICAgIlx0bW92IHNw
LCByMlxuIgogICAgIlx0c3RyIHI5LCBbcjcsICMzNl1cbiIKICAgICJcdG1vdiByMCwgcjdcbiIK
ICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJsbGludF9zbG93X3BhdGhfY29uc3Ry
dWN0X3ZhcmFyZ3MiICJcbiIKICAgICJcdHRzdCByMSwgcjFcbiIKICAgICJcdGJlcSAiICIuTCIg
Il9vZmZsaW5lYXNtX3Nsb3dQYXRoRm9yQ2FsbF9fY2FsbENhbGxTbG93UGF0aF9fNzVfYWN0aW9u
X19kb250VXBkYXRlU1AiICJcbiIKICAgICJcdGFkZHMgcjEsIHIxLCAjOFxuIgogICAgIlx0bW92
IHNwLCByMVxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9zbG93UGF0aEZvckNhbGxfX2NhbGxDYWxs
U2xvd1BhdGhfXzc1X2FjdGlvbl9fZG9udFVwZGF0ZVNQIiAiOlxuIgogICAgIlx0Ymx4IHIwXG4i
CiAgICAiXHRsZHIgcjIsIFtyNywgIzhdXG4iCiAgICAiXHRsZHIgcjgsIFtyMiwgIzI4XVxuIgog
ICAgIlx0bHNscyByOCwgcjgsICMzXG4iCiAgICAiXHRhZGRzIHI4LCAjMjRcbiIKICAgICJcdHN1
YnMgcjgsIHI3LCByOFxuIgogICAgIlx0bW92IHNwLCByOFxuIgogICAgIlx0bGRyIHI5LCBbcjcs
ICMzNl1cbiIKICAgICJcdGxkciByMiwgW3I5LCAjNF1cbiIKICAgICJcdGFkZCByMTIsIHI3LCBy
MiwgbHNsICMzXG4iCiAgICAiXHRzdHIgcjEsIFtyMTIsICM0XVxuIgogICAgIlx0c3RyIHIwLCBb
cjcsIHIyLCBsc2wgIzNdXG4iCiAgICAiXHRsZHIgcjQsIFtyOSwgIzMyXVxuIgogICAgIlx0c3Ry
IHIxLCBbcjQsICMyMF1cbiIKICAgICJcdHN0ciByMCwgW3I0LCAjMTZdXG4iCiAgICAiXHRhZGRz
IHI5LCAjMzZcbiIKICAgICJcdGxkciByMTIsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIx
MlxuIgoKIi5MIiAibGxpbnRfb3BfY2FsbF9ldmFsIiAiOlxuIgogICAgIlx0c3RyIHI5LCBbcjcs
ICMzNl1cbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJc
dGJseCAiICJsbGludF9zbG93X3BhdGhfY2FsbF9ldmFsIiAiXG4iCiAgICAiXHR0c3QgcjEsIHIx
XG4iCiAgICAiXHRiZXEgIiAiLkwiICJfb2ZmbGluZWFzbV9zbG93UGF0aEZvckNhbGxfX2NhbGxD
YWxsU2xvd1BhdGhfXzc2X2FjdGlvbl9fZG9udFVwZGF0ZVNQIiAiXG4iCiAgICAiXHRhZGRzIHIx
LCByMSwgIzhcbiIKICAgICJcdG1vdiBzcCwgcjFcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fc2xv
d1BhdGhGb3JDYWxsX19jYWxsQ2FsbFNsb3dQYXRoX183Nl9hY3Rpb25fX2RvbnRVcGRhdGVTUCIg
IjpcbiIKICAgICJcdGJseCByMFxuIgogICAgIlx0bGRyIHIyLCBbcjcsICM4XVxuIgogICAgIlx0
bGRyIHI4LCBbcjIsICMyOF1cbiIKICAgICJcdGxzbHMgcjgsIHI4LCAjM1xuIgogICAgIlx0YWRk
cyByOCwgIzI0XG4iCiAgICAiXHRzdWJzIHI4LCByNywgcjhcbiIKICAgICJcdG1vdiBzcCwgcjhc
biIKICAgICJcdGxkciByOSwgW3I3LCAjMzZdXG4iCiAgICAiXHRsZHIgcjIsIFtyOSwgIzRdXG4i
CiAgICAiXHRhZGQgcjEyLCByNywgcjIsIGxzbCAjM1xuIgogICAgIlx0c3RyIHIxLCBbcjEyLCAj
NF1cbiIKICAgICJcdHN0ciByMCwgW3I3LCByMiwgbHNsICMzXVxuIgogICAgIlx0bGRyIHI0LCBb
cjksICMzMl1cbiIKICAgICJcdHN0ciByMSwgW3I0LCAjMjBdXG4iCiAgICAiXHRzdHIgcjAsIFty
NCwgIzE2XVxuIgogICAgIlx0YWRkcyByOSwgIzM2XG4iCiAgICAiXHRsZHIgcjEyLCBbcjksICMw
XVxuIgogICAgIlx0bW92IHBjLCByMTJcbiIKCiIuTCIgImxsaW50X2dlbmVyaWNfcmV0dXJuX3Bv
aW50IiAiOlxuIgogICAgIlx0bGRyIHI5LCBbcjcsICMzNl1cbiIKICAgICJcdGxkciByMiwgW3I5
LCAjNF1cbiIKICAgICJcdGFkZCByMTIsIHI3LCByMiwgbHNsICMzXG4iCiAgICAiXHRzdHIgcjEs
IFtyMTIsICM0XVxuIgogICAgIlx0c3RyIHIwLCBbcjcsIHIyLCBsc2wgIzNdXG4iCiAgICAiXHRs
ZHIgcjQsIFtyOSwgIzMyXVxuIgogICAgIlx0c3RyIHIxLCBbcjQsICMyMF1cbiIKICAgICJcdHN0
ciByMCwgW3I0LCAjMTZdXG4iCiAgICAiXHRhZGRzIHI5LCAjMzZcbiIKICAgICJcdGxkciByMTIs
IFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMlxuIgoKIi5MIiAibGxpbnRfb3Bfc3RyY2F0
IiAiOlxuIgogICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0
Ymx4ICIgInNsb3dfcGF0aF9zdHJjYXQiICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJc
dGFkZHMgcjksICMxNlxuIgogICAgIlx0bGRyIHIxMiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBw
YywgcjEyXG4iCgoiLkwiICJsbGludF9vcF9wdXNoX3dpdGhfc2NvcGUiICI6XG4iCiAgICAiXHRt
b3YgcjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc2xv
d19wYXRoX3B1c2hfd2l0aF9zY29wZSIgIlxuIgogICAgIlx0bW92IHI5LCByMFxuIgogICAgIlx0
YWRkcyByOSwgIzhcbiIKICAgICJcdGxkciByMTIsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMs
IHIxMlxuIgoKIi5MIiAibGxpbnRfb3BfcG9wX3Njb3BlIiAiOlxuIgogICAgIlx0bW92IHIwLCBy
N1xuIgogICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgImxsaW50X3Nsb3dfcGF0aF9w
b3Bfc2NvcGUiICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJcdGFkZHMgcjksICM0XG4i
CiAgICAiXHRsZHIgcjEyLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTJcbiIKCiIuTCIg
ImxsaW50X29wX3B1c2hfbmFtZV9zY29wZSIgIjpcbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAg
ICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJsbGludF9zbG93X3BhdGhfcHVzaF9uYW1l
X3Njb3BlIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCiAgICAiXHRhZGRzIHI5LCAjMTZcbiIK
ICAgICJcdGxkciByMTIsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHIxMlxuIgoKIi5MIiAi
bGxpbnRfb3BfdGhyb3ciICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRtb3YgcjEs
IHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc2xvd19wYXRoX3Rocm93IiAiXG4iCiAgICAiXHRt
b3YgcjksIHIwXG4iCiAgICAiXHRhZGRzIHI5LCAjOFxuIgogICAgIlx0bGRyIHIxMiwgW3I5LCAj
MF1cbiIKICAgICJcdG1vdiBwYywgcjEyXG4iCgoiLkwiICJsbGludF9vcF90aHJvd19zdGF0aWNf
ZXJyb3IiICI6XG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAg
ICAiXHRibHggIiAibGxpbnRfc2xvd19wYXRoX3Rocm93X3N0YXRpY19lcnJvciIgIlxuIgogICAg
Ilx0bW92IHI5LCByMFxuIgogICAgIlx0YWRkcyByOSwgIzEyXG4iCiAgICAiXHRsZHIgcjEyLCBb
cjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTJcbiIKCiIuTCIgImxsaW50X29wX3Byb2ZpbGVf
d2lsbF9jYWxsIiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIw
LCBbcjAsICM1Nl1cbiIKICAgICJcdG1vdncgcjEyLCAjMjcwNzJcbiIKICAgICJcdGFkZCByMTIs
IHIwXG4iCiAgICAiXHRsZHIgcjAsIFtyMTIsICMwXVxuIgogICAgIlx0dHN0IHIwLCByMFxuIgog
ICAgIlx0YmVxICIgIi5MIiAiX29mZmxpbmVhc21fb3BQcm9maWxlcldpbGxDYWxsRG9uZSIgIlxu
IgogICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIg
ImxsaW50X3Nsb3dfcGF0aF9wcm9maWxlX3dpbGxfY2FsbCIgIlxuIgogICAgIlx0bW92IHI5LCBy
MFxuIgoKICAiLkwiICJfb2ZmbGluZWFzbV9vcFByb2ZpbGVyV2lsbENhbGxEb25lIiAiOlxuIgog
ICAgIlx0YWRkcyByOSwgIzhcbiIKICAgICJcdGxkciByMTIsIFtyOSwgIzBdXG4iCiAgICAiXHRt
b3YgcGMsIHIxMlxuIgoKIi5MIiAibGxpbnRfb3BfcHJvZmlsZV9kaWRfY2FsbCIgIjpcbiIKICAg
ICJcdGxkciByMCwgW3I3LCAjOF1cbiIKICAgICJcdGxkciByMCwgW3IwLCAjNTZdXG4iCiAgICAi
XHRtb3Z3IHIxMiwgIzI3MDcyXG4iCiAgICAiXHRhZGQgcjEyLCByMFxuIgogICAgIlx0bGRyIHIw
LCBbcjEyLCAjMF1cbiIKICAgICJcdHRzdCByMCwgcjBcbiIKICAgICJcdGJlcSAiICIuTCIgIl9v
ZmZsaW5lYXNtX29wUHJvZmlsZXJEaWRDYWxsRG9uZSIgIlxuIgogICAgIlx0bW92IHIwLCByN1xu
IgogICAgIlx0bW92IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgImxsaW50X3Nsb3dfcGF0aF9wcm9m
aWxlX2RpZF9jYWxsIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCgogICIuTCIgIl9vZmZsaW5l
YXNtX29wUHJvZmlsZXJEaWRDYWxsRG9uZSIgIjpcbiIKICAgICJcdGFkZHMgcjksICM4XG4iCiAg
ICAiXHRsZHIgcjEyLCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByMTJcbiIKCiIuTCIgImxs
aW50X29wX2RlYnVnIiAiOlxuIgogICAgIlx0bGRyIHIwLCBbcjcsICM4XVxuIgogICAgIlx0bGRy
IHIwLCBbcjAsICM0OF1cbiIKICAgICJcdHRzdCByMCwgcjBcbiIKICAgICJcdGJlcSAiICIuTCIg
Il9vZmZsaW5lYXNtX29wRGVidWdEb25lIiAiXG4iCiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAi
XHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAibGxpbnRfc2xvd19wYXRoX2RlYnVnIiAiXG4i
CiAgICAiXHRtb3YgcjksIHIwXG4iCgogICIuTCIgIl9vZmZsaW5lYXNtX29wRGVidWdEb25lIiAi
OlxuIgogICAgIlx0YWRkcyByOSwgIzEyXG4iCiAgICAiXHRsZHIgcjEyLCBbcjksICMwXVxuIgog
ICAgIlx0bW92IHBjLCByMTJcbiIKCiIuTCIgImxsaW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmUi
ICI6XG4iCiAgICAiXHRwdXNoIHsgbHIgfVxuIgogICAgIlx0cHVzaCB7IHI3IH1cbiIKICAgICJc
dG1vdiByNywgc3BcbiIKICAgICJcdG1vdiByMTIsICMwXG4iCiAgICAiXHRzdHIgcjEyLCBbcjcs
ICM4XVxuIgogICAgIlx0bGRyIHIwLCBbcjcsICMwXVxuIgogICAgIlx0bGRyIHIxLCBbcjAsICMx
Nl1cbiIKICAgICJcdG12biByMTIsICM0XG4iCiAgICAiXHRzdHIgcjEyLCBbcjcsICMyMF1cbiIK
ICAgICJcdHN0ciByMSwgW3I3LCAjMTZdXG4iCiAgICAiXHRzdWJzIHNwLCBzcCwgIzhcbiIKICAg
ICJcdG1vdncgcjEyLCAjMFxuIgogICAgIlx0bW92dCByMTIsICM2NTUzNVxuIgogICAgIlx0YW5k
cyByMSwgcjEyXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgIzEwNzZdXG4iCiAgICAiXHRtb3Z3IHIx
MiwgIzIyOTUyXG4iCiAgICAiXHRhZGQgcjEyLCByMVxuIgogICAgIlx0c3RyIHI3LCBbcjEyLCAj
MF1cbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJcdGxkciByMSwgW3I3LCAjMjRdXG4iCiAg
ICAiXHRsZHIgcjEsIFtyMSwgIzIwXVxuIgogICAgIlx0bW92IHI0LCBzcFxuIgogICAgIlx0YW5k
IHI0LCByNCwgIzE1XG4iCiAgICAiXHR0c3QgcjQsIHI0XG4iCiAgICAiXHRiZXEgIiAiLkwiICJf
b2ZmbGluZWFzbV9uYXRpdmVDYWxsVHJhbXBvbGluZV9fNzZfY2hlY2tTdGFja1BvaW50ZXJBbGln
bm1lbnRfX3N0YWNrUG9pbnRlck9rYXkiICJcbiIKICAgICJcdG1vdncgcjQsICMxXG4iCiAgICAi
XHRtb3Z0IHI0LCAjNTcwMDVcbiIKICAgICJcdGJrcHQgIzBcbiIKCiAgIi5MIiAiX29mZmxpbmVh
c21fbmF0aXZlQ2FsbFRyYW1wb2xpbmVfXzc2X2NoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50X19z
dGFja1BvaW50ZXJPa2F5IiAiOlxuIgogICAgIlx0bGRyIHIxMiwgW3IxLCAjNDhdXG4iCiAgICAi
XHRibHggcjEyXG4iCiAgICAiXHRsZHIgcjQsIFtyNywgIzE2XVxuIgogICAgIlx0bW92dyByMTIs
ICMwXG4iCiAgICAiXHRtb3Z0IHIxMiwgIzY1NTM1XG4iCiAgICAiXHRhbmRzIHI0LCByMTJcbiIK
ICAgICJcdGxkciByNCwgW3I0LCAjMTA3Nl1cbiIKICAgICJcdGFkZHMgc3AsICM4XG4iCiAgICAi
XHRwb3AgeyByNyB9XG4iCiAgICAiXHRwb3AgeyBsciB9XG4iCiAgICAiXHRtb3Z3IHIxMiwgIzI3
MDYwXG4iCiAgICAiXHRhZGQgcjEyLCByNFxuIgogICAgIlx0bXZuIHIxMCwgIzVcbiIKICAgICJc
dGxkciByNiwgW3IxMiwgIzBdXG4iCiAgICAiXHRjbXAgcjYsIHIxMFxuIgogICAgIlx0Ym5lICIg
Ii5MIiAiX29mZmxpbmVhc21fbmF0aXZlQ2FsbFRyYW1wb2xpbmVfX2hhbmRsZUV4Y2VwdGlvbiIg
IlxuIgogICAgIlx0YnggbHJcbiIKCiAgIi5MIiAiX29mZmxpbmVhc21fbmF0aXZlQ2FsbFRyYW1w
b2xpbmVfX2hhbmRsZUV4Y2VwdGlvbiIgIjpcbiIKICAgICJcdG1vdncgcjEwLCAjMjI5NTJcbiIK
ICAgICJcdGFkZCByMTAsIHI0XG4iCiAgICAiXHRzdHIgcjcsIFtyMTAsICMwXVxuIgogICAgIlx0
bGRyIHIyLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHI4LCBbcjIsICMyOF1cbiIKICAgICJcdGxz
bHMgcjgsIHI4LCAjM1xuIgogICAgIlx0YWRkcyByOCwgIzI0XG4iCiAgICAiXHRzdWJzIHI4LCBy
NywgcjhcbiIKICAgICJcdG1vdiBzcCwgcjhcbiIKICAgICJcdGIgIiAiLkwiICJsbGludF90aHJv
d19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lIiAiXG4iCgoiLkwiICJsbGludF9uYXRpdmVfY29u
c3RydWN0X3RyYW1wb2xpbmUiICI6XG4iCiAgICAiXHRwdXNoIHsgbHIgfVxuIgogICAgIlx0cHVz
aCB7IHI3IH1cbiIKICAgICJcdG1vdiByNywgc3BcbiIKICAgICJcdG1vdiByMTAsICMwXG4iCiAg
ICAiXHRzdHIgcjEwLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHIwLCBbcjcsICMwXVxuIgogICAg
Ilx0bGRyIHIxLCBbcjAsICMxNl1cbiIKICAgICJcdG12biByMTAsICM0XG4iCiAgICAiXHRzdHIg
cjEwLCBbcjcsICMyMF1cbiIKICAgICJcdHN0ciByMSwgW3I3LCAjMTZdXG4iCiAgICAiXHRzdWJz
IHNwLCBzcCwgIzhcbiIKICAgICJcdG1vdncgcjEwLCAjMFxuIgogICAgIlx0bW92dCByMTAsICM2
NTUzNVxuIgogICAgIlx0YW5kcyByMSwgcjEwXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgIzEwNzZd
XG4iCiAgICAiXHRtb3Z3IHIxMCwgIzIyOTUyXG4iCiAgICAiXHRhZGQgcjEwLCByMVxuIgogICAg
Ilx0c3RyIHI3LCBbcjEwLCAjMF1cbiIKICAgICJcdG1vdiByMCwgcjdcbiIKICAgICJcdGxkciBy
MSwgW3I3LCAjMjRdXG4iCiAgICAiXHRsZHIgcjEsIFtyMSwgIzIwXVxuIgogICAgIlx0bW92IHI0
LCBzcFxuIgogICAgIlx0YW5kIHI0LCByNCwgIzE1XG4iCiAgICAiXHR0c3QgcjQsIHI0XG4iCiAg
ICAiXHRiZXEgIiAiLkwiICJfb2ZmbGluZWFzbV9uYXRpdmVDYWxsVHJhbXBvbGluZV9fNzdfY2hl
Y2tTdGFja1BvaW50ZXJBbGlnbm1lbnRfX3N0YWNrUG9pbnRlck9rYXkiICJcbiIKICAgICJcdG1v
dncgcjQsICMxXG4iCiAgICAiXHRtb3Z0IHI0LCAjNTcwMDVcbiIKICAgICJcdGJrcHQgIzBcbiIK
CiAgIi5MIiAiX29mZmxpbmVhc21fbmF0aXZlQ2FsbFRyYW1wb2xpbmVfXzc3X2NoZWNrU3RhY2tQ
b2ludGVyQWxpZ25tZW50X19zdGFja1BvaW50ZXJPa2F5IiAiOlxuIgogICAgIlx0bGRyIHIxMCwg
W3IxLCAjNTJdXG4iCiAgICAiXHRibHggcjEwXG4iCiAgICAiXHRsZHIgcjQsIFtyNywgIzE2XVxu
IgogICAgIlx0bW92dyByMTAsICMwXG4iCiAgICAiXHRtb3Z0IHIxMCwgIzY1NTM1XG4iCiAgICAi
XHRhbmRzIHI0LCByMTBcbiIKICAgICJcdGxkciByNCwgW3I0LCAjMTA3Nl1cbiIKICAgICJcdGFk
ZHMgc3AsICM4XG4iCiAgICAiXHRwb3AgeyByNyB9XG4iCiAgICAiXHRwb3AgeyBsciB9XG4iCiAg
ICAiXHRtb3Z3IHIxMCwgIzI3MDYwXG4iCiAgICAiXHRhZGQgcjEwLCByNFxuIgogICAgIlx0bXZu
IHI2LCAjNVxuIgogICAgIlx0bGRyIHIxMiwgW3IxMCwgIzBdXG4iCiAgICAiXHRjbXAgcjEyLCBy
NlxuIgogICAgIlx0Ym5lICIgIi5MIiAiX29mZmxpbmVhc21fNzdfbmF0aXZlQ2FsbFRyYW1wb2xp
bmVfX2hhbmRsZUV4Y2VwdGlvbiIgIlxuIgogICAgIlx0YnggbHJcbiIKCiAgIi5MIiAiX29mZmxp
bmVhc21fNzdfbmF0aXZlQ2FsbFRyYW1wb2xpbmVfX2hhbmRsZUV4Y2VwdGlvbiIgIjpcbiIKICAg
ICJcdG1vdncgcjYsICMyMjk1MlxuIgogICAgIlx0YWRkIHI2LCByNFxuIgogICAgIlx0c3RyIHI3
LCBbcjYsICMwXVxuIgogICAgIlx0bGRyIHIyLCBbcjcsICM4XVxuIgogICAgIlx0bGRyIHI4LCBb
cjIsICMyOF1cbiIKICAgICJcdGxzbHMgcjgsIHI4LCAjM1xuIgogICAgIlx0YWRkcyByOCwgIzI0
XG4iCiAgICAiXHRzdWJzIHI4LCByNywgcjhcbiIKICAgICJcdG1vdiBzcCwgcjhcbiIKICAgICJc
dGIgIiAiLkwiICJsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lIiAiXG4iCgoi
LkwiICJsbGludF9vcF9nZXRfZW51bWVyYWJsZV9sZW5ndGgiICI6XG4iCiAgICAiXHRtb3YgcjAs
IHI3XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAic2xvd19wYXRoX2dldF9l
bnVtZXJhYmxlX2xlbmd0aCIgIlxuIgogICAgIlx0bW92IHI5LCByMFxuIgogICAgIlx0YWRkcyBy
OSwgIzEyXG4iCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4i
CgoiLkwiICJsbGludF9vcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eSIgIjpcbiIKICAgICJcdG1vdiBy
MCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJzbG93X3BhdGhfaGFz
X2luZGV4ZWRfcHJvcGVydHkiICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJcdGFkZHMg
cjksICMyMFxuIgogICAgIlx0bGRyIHI2LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxu
IgoKIi5MIiAibGxpbnRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSIgIjpcbiIKICAgICJcdG1v
diByMCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJzbG93X3BhdGhf
aGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSIgIlxuIgogICAgIlx0bW92IHI5LCByMFxuIgogICAgIlx0
YWRkcyByOSwgIzIwXG4iCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMs
IHI2XG4iCgoiLkwiICJsbGludF9vcF9oYXNfZ2VuZXJpY19wcm9wZXJ0eSIgIjpcbiIKICAgICJc
dG1vdiByMCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJzbG93X3Bh
dGhfaGFzX2dlbmVyaWNfcHJvcGVydHkiICJcbiIKICAgICJcdG1vdiByOSwgcjBcbiIKICAgICJc
dGFkZHMgcjksICMxNlxuIgogICAgIlx0bGRyIHI2LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBj
LCByNlxuIgoKIi5MIiAibGxpbnRfb3BfZ2V0X2RpcmVjdF9wbmFtZSIgIjpcbiIKICAgICJcdG1v
diByMCwgcjdcbiIKICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJzbG93X3BhdGhf
Z2V0X2RpcmVjdF9wbmFtZSIgIlxuIgogICAgIlx0bW92IHI5LCByMFxuIgogICAgIlx0YWRkcyBy
OSwgIzI4XG4iCiAgICAiXHRsZHIgcjYsIFtyOSwgIzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4i
CgoiLkwiICJsbGludF9vcF9nZXRfc3RydWN0dXJlX3Byb3BlcnR5X2VudW1lcmF0b3IiICI6XG4i
CiAgICAiXHRtb3YgcjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAi
c2xvd19wYXRoX2dldF9zdHJ1Y3R1cmVfcHJvcGVydHlfZW51bWVyYXRvciIgIlxuIgogICAgIlx0
bW92IHI5LCByMFxuIgogICAgIlx0YWRkcyByOSwgIzE2XG4iCiAgICAiXHRsZHIgcjYsIFtyOSwg
IzBdXG4iCiAgICAiXHRtb3YgcGMsIHI2XG4iCgoiLkwiICJsbGludF9vcF9nZXRfZ2VuZXJpY19w
cm9wZXJ0eV9lbnVtZXJhdG9yIiAiOlxuIgogICAgIlx0bW92IHIwLCByN1xuIgogICAgIlx0bW92
IHIxLCByOVxuIgogICAgIlx0Ymx4ICIgInNsb3dfcGF0aF9nZXRfZ2VuZXJpY19wcm9wZXJ0eV9l
bnVtZXJhdG9yIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCiAgICAiXHRhZGRzIHI5LCAjMjBc
biIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIKCiIuTCIg
ImxsaW50X29wX25leHRfZW51bWVyYXRvcl9wbmFtZSIgIjpcbiIKICAgICJcdG1vdiByMCwgcjdc
biIKICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJzbG93X3BhdGhfbmV4dF9lbnVt
ZXJhdG9yX3BuYW1lIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCiAgICAiXHRhZGRzIHI5LCAj
MTZcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIKCiIu
TCIgImxsaW50X29wX3RvX2luZGV4X3N0cmluZyIgIjpcbiIKICAgICJcdG1vdiByMCwgcjdcbiIK
ICAgICJcdG1vdiByMSwgcjlcbiIKICAgICJcdGJseCAiICJzbG93X3BhdGhfdG9faW5kZXhfc3Ry
aW5nIiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4iCiAgICAiXHRhZGRzIHI5LCAjMTJcbiIKICAg
ICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJcdG1vdiBwYywgcjZcbiIKCiIuTCIgImxsaW50
X29wX2luaXRfZ2xvYmFsX2NvbnN0X25vcCIgIjpcbiIKICAgICJcdGFkZHMgcjksICMyMFxuIgog
ICAgIlx0bGRyIHI2LCBbcjksICMwXVxuIgogICAgIlx0bW92IHBjLCByNlxuIgoKIi5MIiAibGxp
bnRfb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkiICI6XG4iCiAgICAiXHRtb3Yg
cjAsIHI3XG4iCiAgICAiXHRtb3YgcjEsIHI5XG4iCiAgICAiXHRibHggIiAic2xvd19wYXRoX3By
b2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5IiAiXG4iCiAgICAiXHRtb3YgcjksIHIwXG4i
CiAgICAiXHRhZGRzIHI5LCAjMjRcbiIKICAgICJcdGxkciByNiwgW3I5LCAjMF1cbiIKICAgICJc
dG1vdiBwYywgcjZcbiIKKTsKIyA1MjkgIi9ob21lL3dlYmtpdGJ1aWxkYm90L3NsYXZlcy9lZmwt
QVJNdjctdGh1bWIyLWJ1aWxkL2J1aWxkc2xhdmUvZWZsLWFybXY3LXRodW1iMi1idWlsZC9idWls
ZC9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAiIDIK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>236734</attachid>
            <date>2014-08-17 12:42:21 -0700</date>
            <delta_ts>2014-08-17 12:43:34 -0700</delta_ts>
            <desc>assembly</desc>
            <filename>LowLevelInterpreter.s</filename>
            <type>text/plain</type>
            <size>211380</size>
            <attacher name="Csaba Osztrogonác">ossy</attacher>
            
              <data encoding="base64">CS5zeW50YXggdW5pZmllZAoJLmNwdSBjb3J0ZXgtYTkKCS5lYWJpX2F0dHJpYnV0ZSAyNywgMwoJ
LmVhYmlfYXR0cmlidXRlIDI4LCAxCgkuZnB1IHZmcAoJLmVhYmlfYXR0cmlidXRlIDIwLCAxCgku
ZWFiaV9hdHRyaWJ1dGUgMjEsIDEKCS5lYWJpX2F0dHJpYnV0ZSAyMywgMwoJLmVhYmlfYXR0cmli
dXRlIDI0LCAxCgkuZWFiaV9hdHRyaWJ1dGUgMjUsIDEKCS5lYWJpX2F0dHJpYnV0ZSAyNiwgMgoJ
LmVhYmlfYXR0cmlidXRlIDMwLCAyCgkuZWFiaV9hdHRyaWJ1dGUgMzQsIDEKCS5lYWJpX2F0dHJp
YnV0ZSAxOCwgNAoJLnRodW1iCgkuZmlsZQkiTG93TGV2ZWxJbnRlcnByZXRlci5jcHAiCiNBUFAK
CS50ZXh0Ci5hbGlnbiA0Ci5nbG9ibCB2bUVudHJ5VG9KYXZhU2NyaXB0Ci5oaWRkZW4gdm1FbnRy
eVRvSmF2YVNjcmlwdAoudGh1bWIKLnRodW1iX2Z1bmMgCnZtRW50cnlUb0phdmFTY3JpcHQ6Cglw
dXNoIHsgbHIgfQoJcHVzaCB7IHI3IH0KCW1vdiByNywgc3AKCXB1c2gge3I0LXI2LCByOC1yMTF9
CglzdWJzIHNwLCByNywgIzQ4CglzdHIgcjEsIFtzcCwgIzBdCgltb3Z3IHIxMiwgIzIyOTUyCglh
ZGQgcjEyLCByMQoJbGRyIHI4LCBbcjEyLCAjMF0KCXN0ciByOCwgW3NwLCAjNF0KCW1vdncgcjEy
LCAjMjI5NDgKCWFkZCByMTIsIHIxCglsZHIgcjgsIFtyMTIsICMwXQoJc3RyIHI4LCBbc3AsICM4
XQoJYWRkcyByNCwgc3AsICM4CgliaWMgcjQsIHI0LCAjMTUKCXN1YnMgc3AsIHI0LCAjOAoJbGRy
IHI4LCBbcjIsICM0MF0KCWFkZHMgcjgsIHI4LCAjNQoJbHNscyByOCwgcjgsICMzCglzdWJzIHI0
LCBzcCwgcjgKCW1vdncgcjEyLCAjMjcwNDgKCWFkZCByMTIsIHIxCglsZHIgcjEwLCBbcjEyLCAj
MF0KCWNtcCByNCwgcjEwCgliaHMgLkxfb2ZmbGluZWFzbV9kb1ZNRW50cnlfX3N0YWNrSGVpZ2h0
T0sKCW1vdiByMCwgcjEKCW1vdiByMSwgcjIKCWJseCBsbGludF90aHJvd19zdGFja19vdmVyZmxv
d19lcnJvcgoJc3VicyBzcCwgcjcsICM0OAoJbGRyIHI5LCBbc3AsICMwXQoJbGRyIHI4LCBbc3As
ICM0XQoJbW92dyByMTAsICMyMjk1MgoJYWRkIHIxMCwgcjkKCXN0ciByOCwgW3IxMCwgIzBdCgls
ZHIgcjgsIFtzcCwgIzhdCgltb3Z3IHIxMCwgIzIyOTQ4CglhZGQgcjEwLCByOQoJc3RyIHI4LCBb
cjEwLCAjMF0KCXN1YnMgc3AsIHI3LCAjMjgKCXBvcCB7cjQtcjYsIHI4LXIxMX0KCXBvcCB7IHI3
IH0KCXBvcCB7IGxyIH0KCWJ4IGxyCi5MX29mZmxpbmVhc21fZG9WTUVudHJ5X19zdGFja0hlaWdo
dE9LOgoJbW92IHNwLCByNAoJbW92IHI0LCAjNQouTF9vZmZsaW5lYXNtX2RvVk1FbnRyeV9fY29w
eUhlYWRlckxvb3A6CglzdWJzIHI0LCByNCwgIzEKCWFkZCByMTAsIHIyLCByNCwgbHNsICMzCgls
ZHIgcjksIFtyMTAsICM0XQoJYWRkIHIxMCwgc3AsIHI0LCBsc2wgIzMKCXN0ciByOSwgW3IxMCwg
IzEyXQoJbGRyIHI5LCBbcjIsIHI0LCBsc2wgIzNdCglhZGQgcjEwLCBzcCwgcjQsIGxzbCAjMwoJ
c3RyIHI5LCBbcjEwLCAjOF0KCXRzdCByNCwgcjQKCWJuZSAuTF9vZmZsaW5lYXNtX2RvVk1FbnRy
eV9fY29weUhlYWRlckxvb3AKCWxkciByOCwgW3IyLCAjMjRdCglzdWJzIHI4LCByOCwgIzEKCWxk
ciByOSwgW3IyLCAjNDBdCglzdWJzIHI5LCByOSwgIzEKCWNtcCByOCwgcjkKCWJlcSAuTF9vZmZs
aW5lYXNtX2RvVk1FbnRyeV9fY29weUFyZ3MKLkxfb2ZmbGluZWFzbV9kb1ZNRW50cnlfX2ZpbGxF
eHRyYUFyZ3NMb29wOgoJc3VicyByOSwgcjksICMxCglhZGQgcjEwLCBzcCwgcjksIGxzbCAjMwoJ
bXZuIHIxMiwgIzMKCXN0ciByMTIsIFtyMTAsICM1Ml0KCWFkZCByMTAsIHNwLCByOSwgbHNsICMz
Cgltb3YgcjEyLCAjMAoJc3RyIHIxMiwgW3IxMCwgIzQ4XQoJY21wIHI4LCByOQoJYm5lIC5MX29m
ZmxpbmVhc21fZG9WTUVudHJ5X19maWxsRXh0cmFBcmdzTG9vcAouTF9vZmZsaW5lYXNtX2RvVk1F
bnRyeV9fY29weUFyZ3M6CglsZHIgcjQsIFtyMiwgIzQ0XQouTF9vZmZsaW5lYXNtX2RvVk1FbnRy
eV9fY29weUFyZ3NMb29wOgoJdHN0IHI4LCByOAoJYmVxIC5MX29mZmxpbmVhc21fZG9WTUVudHJ5
X19jb3B5QXJnc0RvbmUKCXN1YnMgcjgsIHI4LCAjMQoJYWRkIHIxMCwgcjQsIHI4LCBsc2wgIzMK
CWxkciByOSwgW3IxMCwgIzRdCglhZGQgcjEwLCBzcCwgcjgsIGxzbCAjMwoJc3RyIHI5LCBbcjEw
LCAjNTJdCglsZHIgcjksIFtyNCwgcjgsIGxzbCAjM10KCWFkZCByMTAsIHNwLCByOCwgbHNsICMz
CglzdHIgcjksIFtyMTAsICM0OF0KCWIgLkxfb2ZmbGluZWFzbV9kb1ZNRW50cnlfX2NvcHlBcmdz
TG9vcAouTF9vZmZsaW5lYXNtX2RvVk1FbnRyeV9fY29weUFyZ3NEb25lOgoJbW92dyByMTAsICMy
Mjk1MgoJYWRkIHIxMCwgcjEKCXN0ciBzcCwgW3IxMCwgIzBdCgltb3Z3IHIxMCwgIzIyOTQ4Cglh
ZGQgcjEwLCByMQoJc3RyIHI3LCBbcjEwLCAjMF0KCWFkZHMgc3AsICM4Cgltb3YgcjIsIHNwCglh
bmQgcjIsIHIyLCAjMTUKCXRzdCByMiwgcjIKCWJlcSAuTF9vZmZsaW5lYXNtX2RvVk1FbnRyeV9f
bWFrZUNhbGxfX2NoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50X19zdGFja1BvaW50ZXJPa2F5Cglt
b3Z3IHIyLCAjNTYzMjIKCW1vdnQgcjIsICM0NzgyNAoJYmtwdCAjMAouTF9vZmZsaW5lYXNtX2Rv
Vk1FbnRyeV9fbWFrZUNhbGxfX2NoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50X19zdGFja1BvaW50
ZXJPa2F5OgoJYmx4IHIwCgltb3YgcjIsIHNwCglhbmQgcjIsIHIyLCAjMTUKCXRzdCByMiwgcjIK
CWJlcSAuTF9vZmZsaW5lYXNtX2RvVk1FbnRyeV9fbWFrZUNhbGxfXzBfY2hlY2tTdGFja1BvaW50
ZXJBbGlnbm1lbnRfX3N0YWNrUG9pbnRlck9rYXkKCW1vdncgcjIsICM1NjMyMwoJbW92dCByMiwg
IzQ3ODI0Cglia3B0ICMwCi5MX29mZmxpbmVhc21fZG9WTUVudHJ5X19tYWtlQ2FsbF9fMF9jaGVj
a1N0YWNrUG9pbnRlckFsaWdubWVudF9fc3RhY2tQb2ludGVyT2theToKCXN1YnMgc3AsIHNwLCAj
OAoJc3VicyBzcCwgcjcsICM0OAoJbGRyIHI5LCBbc3AsICMwXQoJbGRyIHI4LCBbc3AsICM0XQoJ
bW92dyByMTAsICMyMjk1MgoJYWRkIHIxMCwgcjkKCXN0ciByOCwgW3IxMCwgIzBdCglsZHIgcjgs
IFtzcCwgIzhdCgltb3Z3IHIxMCwgIzIyOTQ4CglhZGQgcjEwLCByOQoJc3RyIHI4LCBbcjEwLCAj
MF0KCXN1YnMgc3AsIHI3LCAjMjgKCXBvcCB7cjQtcjYsIHI4LXIxMX0KCXBvcCB7IHI3IH0KCXBv
cCB7IGxyIH0KCWJ4IGxyCi50ZXh0Ci5hbGlnbiA0Ci5nbG9ibCB2bUVudHJ5VG9OYXRpdmUKLmhp
ZGRlbiB2bUVudHJ5VG9OYXRpdmUKLnRodW1iCi50aHVtYl9mdW5jIAp2bUVudHJ5VG9OYXRpdmU6
CglwdXNoIHsgbHIgfQoJcHVzaCB7IHI3IH0KCW1vdiByNywgc3AKCXB1c2gge3I0LXI2LCByOC1y
MTF9CglzdWJzIHNwLCByNywgIzQ4CglzdHIgcjEsIFtzcCwgIzBdCgltb3Z3IHIxMCwgIzIyOTUy
CglhZGQgcjEwLCByMQoJbGRyIHI4LCBbcjEwLCAjMF0KCXN0ciByOCwgW3NwLCAjNF0KCW1vdncg
cjEwLCAjMjI5NDgKCWFkZCByMTAsIHIxCglsZHIgcjgsIFtyMTAsICMwXQoJc3RyIHI4LCBbc3As
ICM4XQoJYWRkcyByNCwgc3AsICM4CgliaWMgcjQsIHI0LCAjMTUKCXN1YnMgc3AsIHI0LCAjOAoJ
bGRyIHI4LCBbcjIsICM0MF0KCWFkZHMgcjgsIHI4LCAjNQoJbHNscyByOCwgcjgsICMzCglzdWJz
IHI0LCBzcCwgcjgKCW1vdncgcjEwLCAjMjcwNDgKCWFkZCByMTAsIHIxCglsZHIgcjEyLCBbcjEw
LCAjMF0KCWNtcCByNCwgcjEyCgliaHMgLkxfb2ZmbGluZWFzbV8wX2RvVk1FbnRyeV9fc3RhY2tI
ZWlnaHRPSwoJbW92IHIwLCByMQoJbW92IHIxLCByMgoJYmx4IGxsaW50X3Rocm93X3N0YWNrX292
ZXJmbG93X2Vycm9yCglzdWJzIHNwLCByNywgIzQ4CglsZHIgcjksIFtzcCwgIzBdCglsZHIgcjgs
IFtzcCwgIzRdCgltb3Z3IHIxMiwgIzIyOTUyCglhZGQgcjEyLCByOQoJc3RyIHI4LCBbcjEyLCAj
MF0KCWxkciByOCwgW3NwLCAjOF0KCW1vdncgcjEyLCAjMjI5NDgKCWFkZCByMTIsIHI5CglzdHIg
cjgsIFtyMTIsICMwXQoJc3VicyBzcCwgcjcsICMyOAoJcG9wIHtyNC1yNiwgcjgtcjExfQoJcG9w
IHsgcjcgfQoJcG9wIHsgbHIgfQoJYnggbHIKLkxfb2ZmbGluZWFzbV8wX2RvVk1FbnRyeV9fc3Rh
Y2tIZWlnaHRPSzoKCW1vdiBzcCwgcjQKCW1vdiByNCwgIzUKLkxfb2ZmbGluZWFzbV8wX2RvVk1F
bnRyeV9fY29weUhlYWRlckxvb3A6CglzdWJzIHI0LCByNCwgIzEKCWFkZCByMTIsIHIyLCByNCwg
bHNsICMzCglsZHIgcjksIFtyMTIsICM0XQoJYWRkIHIxMiwgc3AsIHI0LCBsc2wgIzMKCXN0ciBy
OSwgW3IxMiwgIzEyXQoJbGRyIHI5LCBbcjIsIHI0LCBsc2wgIzNdCglhZGQgcjEyLCBzcCwgcjQs
IGxzbCAjMwoJc3RyIHI5LCBbcjEyLCAjOF0KCXRzdCByNCwgcjQKCWJuZSAuTF9vZmZsaW5lYXNt
XzBfZG9WTUVudHJ5X19jb3B5SGVhZGVyTG9vcAoJbGRyIHI4LCBbcjIsICMyNF0KCXN1YnMgcjgs
IHI4LCAjMQoJbGRyIHI5LCBbcjIsICM0MF0KCXN1YnMgcjksIHI5LCAjMQoJY21wIHI4LCByOQoJ
YmVxIC5MX29mZmxpbmVhc21fMF9kb1ZNRW50cnlfX2NvcHlBcmdzCi5MX29mZmxpbmVhc21fMF9k
b1ZNRW50cnlfX2ZpbGxFeHRyYUFyZ3NMb29wOgoJc3VicyByOSwgcjksICMxCglhZGQgcjEyLCBz
cCwgcjksIGxzbCAjMwoJbXZuIHIxMCwgIzMKCXN0ciByMTAsIFtyMTIsICM1Ml0KCWFkZCByMTIs
IHNwLCByOSwgbHNsICMzCgltb3YgcjEwLCAjMAoJc3RyIHIxMCwgW3IxMiwgIzQ4XQoJY21wIHI4
LCByOQoJYm5lIC5MX29mZmxpbmVhc21fMF9kb1ZNRW50cnlfX2ZpbGxFeHRyYUFyZ3NMb29wCi5M
X29mZmxpbmVhc21fMF9kb1ZNRW50cnlfX2NvcHlBcmdzOgoJbGRyIHI0LCBbcjIsICM0NF0KLkxf
b2ZmbGluZWFzbV8wX2RvVk1FbnRyeV9fY29weUFyZ3NMb29wOgoJdHN0IHI4LCByOAoJYmVxIC5M
X29mZmxpbmVhc21fMF9kb1ZNRW50cnlfX2NvcHlBcmdzRG9uZQoJc3VicyByOCwgcjgsICMxCglh
ZGQgcjEyLCByNCwgcjgsIGxzbCAjMwoJbGRyIHI5LCBbcjEyLCAjNF0KCWFkZCByMTIsIHNwLCBy
OCwgbHNsICMzCglzdHIgcjksIFtyMTIsICM1Ml0KCWxkciByOSwgW3I0LCByOCwgbHNsICMzXQoJ
YWRkIHIxMiwgc3AsIHI4LCBsc2wgIzMKCXN0ciByOSwgW3IxMiwgIzQ4XQoJYiAuTF9vZmZsaW5l
YXNtXzBfZG9WTUVudHJ5X19jb3B5QXJnc0xvb3AKLkxfb2ZmbGluZWFzbV8wX2RvVk1FbnRyeV9f
Y29weUFyZ3NEb25lOgoJbW92dyByMTIsICMyMjk1MgoJYWRkIHIxMiwgcjEKCXN0ciBzcCwgW3Ix
MiwgIzBdCgltb3Z3IHIxMiwgIzIyOTQ4CglhZGQgcjEyLCByMQoJc3RyIHI3LCBbcjEyLCAjMF0K
CW1vdiByNCwgcjAKCW1vdiByMCwgc3AKCWFkZHMgc3AsICM4CglibHggcjQKCXN1YnMgc3AsIHNw
LCAjOAoJc3VicyBzcCwgcjcsICM0OAoJbGRyIHI5LCBbc3AsICMwXQoJbGRyIHI4LCBbc3AsICM0
XQoJbW92dyByMTIsICMyMjk1MgoJYWRkIHIxMiwgcjkKCXN0ciByOCwgW3IxMiwgIzBdCglsZHIg
cjgsIFtzcCwgIzhdCgltb3Z3IHIxMiwgIzIyOTQ4CglhZGQgcjEyLCByOQoJc3RyIHI4LCBbcjEy
LCAjMF0KCXN1YnMgc3AsIHI3LCAjMjgKCXBvcCB7cjQtcjYsIHI4LXIxMX0KCXBvcCB7IHI3IH0K
CXBvcCB7IGxyIH0KCWJ4IGxyCi50ZXh0Ci5hbGlnbiA0Ci5nbG9ibCBzYW5pdGl6ZVN0YWNrRm9y
Vk1JbXBsCi5oaWRkZW4gc2FuaXRpemVTdGFja0ZvclZNSW1wbAoudGh1bWIKLnRodW1iX2Z1bmMg
CnNhbml0aXplU3RhY2tGb3JWTUltcGw6Cgltb3Z3IHIxMiwgIzI3MDUyCglhZGQgcjEyLCByMAoJ
bGRyIHIxLCBbcjEyLCAjMF0KCWNtcCBzcCwgcjEKCWJscyAuTF9vZmZsaW5lYXNtX3plcm9GaWxs
RG9uZQoJbW92IHIyLCAjMAouTF9vZmZsaW5lYXNtX3plcm9GaWxsTG9vcDoKCXN0ciByMiwgW3Ix
LCAjMF0KCWFkZHMgcjEsICM0CgljbXAgc3AsIHIxCgliaGkgLkxfb2ZmbGluZWFzbV96ZXJvRmls
bExvb3AKLkxfb2ZmbGluZWFzbV96ZXJvRmlsbERvbmU6Cgltb3YgcjEsIHNwCgltb3Z3IHIxMiwg
IzI3MDUyCglhZGQgcjEyLCByMAoJc3RyIHIxLCBbcjEyLCAjMF0KCWJ4IGxyCi50ZXh0Ci5hbGln
biA0Ci5nbG9ibCB2bUVudHJ5UmVjb3JkCi5oaWRkZW4gdm1FbnRyeVJlY29yZAoudGh1bWIKLnRo
dW1iX2Z1bmMgCnZtRW50cnlSZWNvcmQ6CglzdWJzIHIwLCByMCwgIzQ4CglieCBscgoudGV4dAou
YWxpZ24gNAouZ2xvYmwgbGxpbnRfZW50cnkKLmhpZGRlbiBsbGludF9lbnRyeQoudGh1bWIKLnRo
dW1iX2Z1bmMgCmxsaW50X2VudHJ5OgoJcHVzaCB7IGxyIH0KCXB1c2ggeyByNyB9Cgltb3Ygcjcs
IHNwCglwdXNoIHtyNC1yNiwgcjgtcjExfQouTHJlbGF0aXZlUENCYXNlOgoJbW92IHIxLCBwYwoJ
c3VicyByMSwgcjEsICMzCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF9lbnRlciAtIC5M
cmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX2VudGVyIC0gLkxy
ZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICMwCglzdHIgcjIsIFtyMCwg
cjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX2NyZWF0ZV9hY3RpdmF0
aW9uIC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3BfY3Jl
YXRlX2FjdGl2YXRpb24gLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiBy
NCwgIzEKCXN0ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxp
bnRfb3BfdG91Y2hfZW50cnkgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6
LkxsbGludF9vcF90b3VjaF9lbnRyeSAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCBy
MQoJbW92IHI0LCAjMgoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2Vy
MTY6LkxsbGludF9vcF9pbml0X2xhenlfcmVnIC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwg
Izp1cHBlcjE2Oi5MbGxpbnRfb3BfaW5pdF9sYXp5X3JlZyAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFk
ZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjMwoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3
IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF9jcmVhdGVfYXJndW1lbnRzIC0gLkxyZWxhdGl2ZVBD
QmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3BfY3JlYXRlX2FyZ3VtZW50cyAtIC5M
cmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjNAoJc3RyIHIyLCBbcjAs
IHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF9jcmVhdGVfdGhpcyAt
IC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX2NyZWF0ZV90
aGlzIC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICM1CglzdHIg
cjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX2dldF9j
YWxsZWUgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGludF9vcF9n
ZXRfY2FsbGVlIC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICM2
CglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29w
X3RvX3RoaXMgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGludF9v
cF90b190aGlzIC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICM3
CglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29w
X25ld19vYmplY3QgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGlu
dF9vcF9uZXdfb2JqZWN0IC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3Yg
cjQsICM4CglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxs
aW50X29wX25ld19hcnJheSAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjou
TGxsaW50X29wX25ld19hcnJheSAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJ
bW92IHI0LCAjOQoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6
LkxsbGludF9vcF9uZXdfYXJyYXlfd2l0aF9zaXplIC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCBy
MiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3BfbmV3X2FycmF5X3dpdGhfc2l6ZSAtIC5McmVsYXRpdmVQ
Q0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjMTAKCXN0ciByMiwgW3IwLCByNCwgbHNs
ICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlciAtIC5M
cmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX25ld19hcnJheV9i
dWZmZXIgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzExCglz
dHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX25l
d19yZWdleHAgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGludF9v
cF9uZXdfcmVnZXhwIC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQs
ICMxMgoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGlu
dF9vcF9tb3YgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGludF9v
cF9tb3YgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzEzCglz
dHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX2Nh
cHR1cmVkX21vdiAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50
X29wX2NhcHR1cmVkX21vdiAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92
IHI0LCAjMTQKCXN0ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5M
bGxpbnRfb3Bfbm90IC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxp
bnRfb3Bfbm90IC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICMx
NQoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGludF9v
cF9lcSAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX2Vx
IC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICMxNgoJc3RyIHIy
LCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF9lcV9udWxs
IC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3BfZXFfbnVs
bCAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjMTcKCXN0ciBy
MiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3BfbmVxIC0g
LkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3BfbmVxIC0gLkxy
ZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICMxOAoJc3RyIHIyLCBbcjAs
IHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF9uZXFfbnVsbCAtIC5M
cmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX25lcV9udWxsIC0g
LkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICMxOQoJc3RyIHIyLCBb
cjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF9zdHJpY3RlcSAt
IC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX3N0cmljdGVx
IC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICMyMAoJc3RyIHIy
LCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF9uc3RyaWN0
ZXEgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGludF9vcF9uc3Ry
aWN0ZXEgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzIxCglz
dHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX2xl
c3MgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGludF9vcF9sZXNz
IC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICMyMgoJc3RyIHIy
LCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF9sZXNzZXEg
LSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGludF9vcF9sZXNzZXEg
LSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzIzCglzdHIgcjIs
IFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX2dyZWF0ZXIg
LSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGludF9vcF9ncmVhdGVy
IC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICMyNAoJc3RyIHIy
LCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF9ncmVhdGVy
ZXEgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGludF9vcF9ncmVh
dGVyZXEgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzI1Cglz
dHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX2lu
YyAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX2luYyAt
IC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjMjYKCXN0ciByMiwg
W3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3BfZGVjIC0gLkxy
ZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3BfZGVjIC0gLkxyZWxh
dGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICMyNwoJc3RyIHIyLCBbcjAsIHI0
LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF90b19udW1iZXIgLSAuTHJl
bGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGludF9vcF90b19udW1iZXIgLSAu
THJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzI4CglzdHIgcjIsIFty
MCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX25lZ2F0ZSAtIC5M
cmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX25lZ2F0ZSAtIC5M
cmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjMjkKCXN0ciByMiwgW3Iw
LCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3BfYWRkIC0gLkxyZWxh
dGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3BfYWRkIC0gLkxyZWxhdGl2
ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICMzMAoJc3RyIHIyLCBbcjAsIHI0LCBs
c2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF9tdWwgLSAuTHJlbGF0aXZlUENC
YXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGludF9vcF9tdWwgLSAuTHJlbGF0aXZlUENCYXNl
CglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzMxCglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0K
CW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX2RpdiAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1v
dnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX2RpdiAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMg
cjIsIHIyLCByMQoJbW92IHI0LCAjMzIKCXN0ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyBy
MiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3BfbW9kIC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwg
Izp1cHBlcjE2Oi5MbGxpbnRfb3BfbW9kIC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIs
IHIxCgltb3YgcjQsICMzMwoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxv
d2VyMTY6LkxsbGludF9vcF9zdWIgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVy
MTY6LkxsbGludF9vcF9zdWIgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1v
diByNCwgIzM0CglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjou
TGxsaW50X29wX2xzaGlmdCAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjou
TGxsaW50X29wX2xzaGlmdCAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92
IHI0LCAjMzUKCXN0ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5M
bGxpbnRfb3BfcnNoaWZ0IC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5M
bGxpbnRfb3BfcnNoaWZ0IC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3Yg
cjQsICMzNgoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6Lkxs
bGludF9vcF91cnNoaWZ0IC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5M
bGxpbnRfb3BfdXJzaGlmdCAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92
IHI0LCAjMzcKCXN0ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5M
bGxpbnRfb3BfdW5zaWduZWQgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6
LkxsbGludF9vcF91bnNpZ25lZCAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJ
bW92IHI0LCAjMzgKCXN0ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2
Oi5MbGxpbnRfb3BfYml0YW5kIC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2
Oi5MbGxpbnRfb3BfYml0YW5kIC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCglt
b3YgcjQsICMzOQoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6
LkxsbGludF9vcF9iaXR4b3IgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6
LkxsbGludF9vcF9iaXR4b3IgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1v
diByNCwgIzQwCglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjou
TGxsaW50X29wX2JpdG9yIC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5M
bGxpbnRfb3BfYml0b3IgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiBy
NCwgIzQxCglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxs
aW50X29wX2NoZWNrX2hhc19pbnN0YW5jZSAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6
dXBwZXIxNjouTGxsaW50X29wX2NoZWNrX2hhc19pbnN0YW5jZSAtIC5McmVsYXRpdmVQQ0Jhc2UK
CWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjNDIKCXN0ciByMiwgW3IwLCByNCwgbHNsICMyXQoJ
bW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3BfaW5zdGFuY2VvZiAtIC5McmVsYXRpdmVQQ0Jh
c2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX2luc3RhbmNlb2YgLSAuTHJlbGF0aXZl
UENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzQzCglzdHIgcjIsIFtyMCwgcjQsIGxz
bCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX3R5cGVvZiAtIC5McmVsYXRpdmVQ
Q0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX3R5cGVvZiAtIC5McmVsYXRpdmVQ
Q0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjNDQKCXN0ciByMiwgW3IwLCByNCwgbHNs
ICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3BfaXNfdW5kZWZpbmVkIC0gLkxyZWxh
dGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3BfaXNfdW5kZWZpbmVkIC0g
LkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICM0NQoJc3RyIHIyLCBb
cjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF9pc19ib29sZWFu
IC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3BfaXNfYm9v
bGVhbiAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjNDYKCXN0
ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3BfaXNf
bnVtYmVyIC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3Bf
aXNfbnVtYmVyIC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICM0
NwoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGludF9v
cF9pc19zdHJpbmcgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGlu
dF9vcF9pc19zdHJpbmcgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiBy
NCwgIzQ4CglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxs
aW50X29wX2lzX29iamVjdCAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjou
TGxsaW50X29wX2lzX29iamVjdCAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJ
bW92IHI0LCAjNDkKCXN0ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2
Oi5MbGxpbnRfb3BfaXNfZnVuY3Rpb24gLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVw
cGVyMTY6LkxsbGludF9vcF9pc19mdW5jdGlvbiAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIs
IHIyLCByMQoJbW92IHI0LCAjNTAKCXN0ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwg
Izpsb3dlcjE2Oi5MbGxpbnRfb3BfaW4gLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVw
cGVyMTY6LkxsbGludF9vcF9pbiAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJ
bW92IHI0LCAjNTEKCXN0ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2
Oi5MbGxpbnRfb3BfaW5pdF9nbG9iYWxfY29uc3Rfbm9wIC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92
dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3BfaW5pdF9nbG9iYWxfY29uc3Rfbm9wIC0gLkxyZWxh
dGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICM1MgoJc3RyIHIyLCBbcjAsIHI0
LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF9pbml0X2dsb2JhbF9jb25z
dCAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX2luaXRf
Z2xvYmFsX2NvbnN0IC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQs
ICM1MwoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGlu
dF9vcF9nZXRfYnlfaWQgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6Lkxs
bGludF9vcF9nZXRfYnlfaWQgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1v
diByNCwgIzU0CglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjou
TGxsaW50X29wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQg
cjIsICM6dXBwZXIxNjouTGxsaW50X29wX2dldF9ieV9pZF9vdXRfb2ZfbGluZSAtIC5McmVsYXRp
dmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjNTUKCXN0ciByMiwgW3IwLCByNCwg
bHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aCAt
IC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX2dldF9hcnJh
eV9sZW5ndGggLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzU2
CglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29w
X2dldF9hcmd1bWVudHNfbGVuZ3RoIC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBl
cjE2Oi5MbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGggLSAuTHJlbGF0aXZlUENCYXNlCglh
ZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzU3CglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1v
dncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX3B1dF9ieV9pZCAtIC5McmVsYXRpdmVQQ0Jhc2UK
CW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX3B1dF9ieV9pZCAtIC5McmVsYXRpdmVQQ0Jh
c2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjNTgKCXN0ciByMiwgW3IwLCByNCwgbHNsICMy
XQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3BfcHV0X2J5X2lkX291dF9vZl9saW5lIC0g
LkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3BfcHV0X2J5X2lk
X291dF9vZl9saW5lIC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQs
ICM1OQoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGlu
dF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0
IHIyLCAjOnVwcGVyMTY6LkxsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QgLSAu
THJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzYwCglzdHIgcjIsIFty
MCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2ZfbGluZSAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIs
ICM6dXBwZXIxNjouTGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdF9vdXRfb2Zf
bGluZSAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjNjEKCXN0
ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsIC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1
cHBlcjE2Oi5MbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsIC0gLkxyZWxhdGl2
ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICM2MgoJc3RyIHIyLCBbcjAsIHI0LCBs
c2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9ub3JtYWxfb3V0X29mX2xpbmUgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVy
MTY6LkxsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWxfb3V0X29mX2xpbmUgLSAu
THJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzYzCglzdHIgcjIsIFty
MCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX2RlbF9ieV9pZCAt
IC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX2RlbF9ieV9p
ZCAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjNjQKCXN0ciBy
MiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3BfZ2V0X2J5
X3ZhbCAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX2dl
dF9ieV92YWwgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzY1
CglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29w
X2dldF9hcmd1bWVudF9ieV92YWwgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVy
MTY6LkxsbGludF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsIC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRk
cyByMiwgcjIsIHIxCgltb3YgcjQsICM2NgoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3
IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF9wdXRfYnlfdmFsIC0gLkxyZWxhdGl2ZVBDQmFzZQoJ
bW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3BfcHV0X2J5X3ZhbCAtIC5McmVsYXRpdmVQQ0Jh
c2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjNjcKCXN0ciByMiwgW3IwLCByNCwgbHNsICMy
XQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QgLSAuTHJl
bGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGludF9vcF9wdXRfYnlfdmFsX2Rp
cmVjdCAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjNjgKCXN0
ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3BfZGVs
X2J5X3ZhbCAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29w
X2RlbF9ieV92YWwgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwg
IzY5CglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50
X29wX3B1dF9ieV9pbmRleCAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjou
TGxsaW50X29wX3B1dF9ieV9pbmRleCAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCBy
MQoJbW92IHI0LCAjNzAKCXN0ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dl
cjE2Oi5MbGxpbnRfb3BfcHV0X2dldHRlcl9zZXR0ZXIgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0
IHIyLCAjOnVwcGVyMTY6LkxsbGludF9vcF9wdXRfZ2V0dGVyX3NldHRlciAtIC5McmVsYXRpdmVQ
Q0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjNzEKCXN0ciByMiwgW3IwLCByNCwgbHNs
ICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3Bfam1wIC0gLkxyZWxhdGl2ZVBDQmFz
ZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3Bfam1wIC0gLkxyZWxhdGl2ZVBDQmFzZQoJ
YWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICM3MgoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCglt
b3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF9qdHJ1ZSAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1v
dnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX2p0cnVlIC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRk
cyByMiwgcjIsIHIxCgltb3YgcjQsICM3MwoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3
IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF9qZmFsc2UgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0
IHIyLCAjOnVwcGVyMTY6LkxsbGludF9vcF9qZmFsc2UgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRz
IHIyLCByMiwgcjEKCW1vdiByNCwgIzc0CglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncg
cjIsICM6bG93ZXIxNjouTGxsaW50X29wX2plcV9udWxsIC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92
dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3BfamVxX251bGwgLSAuTHJlbGF0aXZlUENCYXNlCglh
ZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzc1CglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1v
dncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX2puZXFfbnVsbCAtIC5McmVsYXRpdmVQQ0Jhc2UK
CW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX2puZXFfbnVsbCAtIC5McmVsYXRpdmVQQ0Jh
c2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjNzYKCXN0ciByMiwgW3IwLCByNCwgbHNsICMy
XQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3Bfam5lcV9wdHIgLSAuTHJlbGF0aXZlUENC
YXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGludF9vcF9qbmVxX3B0ciAtIC5McmVsYXRpdmVQ
Q0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjNzcKCXN0ciByMiwgW3IwLCByNCwgbHNs
ICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3Bfamxlc3MgLSAuTHJlbGF0aXZlUENC
YXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGludF9vcF9qbGVzcyAtIC5McmVsYXRpdmVQQ0Jh
c2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjNzgKCXN0ciByMiwgW3IwLCByNCwgbHNsICMy
XQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3Bfamxlc3NlcSAtIC5McmVsYXRpdmVQQ0Jh
c2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX2psZXNzZXEgLSAuTHJlbGF0aXZlUENC
YXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzc5CglzdHIgcjIsIFtyMCwgcjQsIGxzbCAj
Ml0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX2pncmVhdGVyIC0gLkxyZWxhdGl2ZVBD
QmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3BfamdyZWF0ZXIgLSAuTHJlbGF0aXZl
UENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzgwCglzdHIgcjIsIFtyMCwgcjQsIGxz
bCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX2pncmVhdGVyZXEgLSAuTHJlbGF0
aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGludF9vcF9qZ3JlYXRlcmVxIC0gLkxy
ZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICM4MQoJc3RyIHIyLCBbcjAs
IHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF9qbmxlc3MgLSAuTHJl
bGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGludF9vcF9qbmxlc3MgLSAuTHJl
bGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzgyCglzdHIgcjIsIFtyMCwg
cjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX2pubGVzc2VxIC0gLkxy
ZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3Bfam5sZXNzZXEgLSAu
THJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzgzCglzdHIgcjIsIFty
MCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX2puZ3JlYXRlciAt
IC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX2puZ3JlYXRl
ciAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjODQKCXN0ciBy
MiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3Bfam5ncmVh
dGVyZXEgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGludF9vcF9q
bmdyZWF0ZXJlcSAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAj
ODUKCXN0ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRf
b3BfbG9vcF9oaW50IC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxp
bnRfb3BfbG9vcF9oaW50IC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3Yg
cjQsICM4NgoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6Lkxs
bGludF9vcF9zd2l0Y2hfaW1tIC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2
Oi5MbGxpbnRfb3Bfc3dpdGNoX2ltbSAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCBy
MQoJbW92IHI0LCAjODcKCXN0ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dl
cjE2Oi5MbGxpbnRfb3Bfc3dpdGNoX2NoYXIgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAj
OnVwcGVyMTY6LkxsbGludF9vcF9zd2l0Y2hfY2hhciAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMg
cjIsIHIyLCByMQoJbW92IHI0LCAjODgKCXN0ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyBy
MiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3Bfc3dpdGNoX3N0cmluZyAtIC5McmVsYXRpdmVQQ0Jhc2UK
CW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX3N3aXRjaF9zdHJpbmcgLSAuTHJlbGF0aXZl
UENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzg5CglzdHIgcjIsIFtyMCwgcjQsIGxz
bCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX25ld19mdW5jIC0gLkxyZWxhdGl2
ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3BfbmV3X2Z1bmMgLSAuTHJlbGF0
aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzkwCglzdHIgcjIsIFtyMCwgcjQs
IGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX25ld19jYXB0dXJlZF9mdW5j
IC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3BfbmV3X2Nh
cHR1cmVkX2Z1bmMgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwg
IzkxCglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50
X29wX25ld19mdW5jX2V4cCAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjou
TGxsaW50X29wX25ld19mdW5jX2V4cCAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCBy
MQoJbW92IHI0LCAjOTIKCXN0ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dl
cjE2Oi5MbGxpbnRfb3BfY2FsbCAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIx
NjouTGxsaW50X29wX2NhbGwgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1v
diByNCwgIzkzCglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjou
TGxsaW50X29wX2NhbGxfZXZhbCAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIx
NjouTGxsaW50X29wX2NhbGxfZXZhbCAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCBy
MQoJbW92IHI0LCAjOTQKCXN0ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dl
cjE2Oi5MbGxpbnRfb3BfY2FsbF92YXJhcmdzIC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwg
Izp1cHBlcjE2Oi5MbGxpbnRfb3BfY2FsbF92YXJhcmdzIC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRk
cyByMiwgcjIsIHIxCgltb3YgcjQsICM5NQoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3
IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF90ZWFyX29mZl9hY3RpdmF0aW9uIC0gLkxyZWxhdGl2
ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3BfdGVhcl9vZmZfYWN0aXZhdGlv
biAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjOTYKCXN0ciBy
MiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3BfdGVhcl9v
ZmZfYXJndW1lbnRzIC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxp
bnRfb3BfdGVhcl9vZmZfYXJndW1lbnRzIC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIs
IHIxCgltb3YgcjQsICM5NwoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxv
d2VyMTY6LkxsbGludF9vcF9yZXQgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVy
MTY6LkxsbGludF9vcF9yZXQgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1v
diByNCwgIzk4CglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjou
TGxsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpcyAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIs
ICM6dXBwZXIxNjouTGxsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpcyAtIC5McmVsYXRpdmVQQ0Jh
c2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjOTkKCXN0ciByMiwgW3IwLCByNCwgbHNsICMy
XQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3BfY29uc3RydWN0IC0gLkxyZWxhdGl2ZVBD
QmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3BfY29uc3RydWN0IC0gLkxyZWxhdGl2
ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICMxMDAKCXN0ciByMiwgW3IwLCByNCwg
bHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3BfY29uc3RydWN0X3ZhcmFyZ3Mg
LSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGludF9vcF9jb25zdHJ1
Y3RfdmFyYXJncyAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAj
MTAxCglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50
X29wX3N0cmNhdCAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50
X29wX3N0cmNhdCAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAj
MTAyCglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50
X29wX3RvX3ByaW1pdGl2ZSAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjou
TGxsaW50X29wX3RvX3ByaW1pdGl2ZSAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCBy
MQoJbW92IHI0LCAjMTAzCglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93
ZXIxNjouTGxsaW50X29wX3Jlc29sdmVfc2NvcGUgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIy
LCAjOnVwcGVyMTY6LkxsbGludF9vcF9yZXNvbHZlX3Njb3BlIC0gLkxyZWxhdGl2ZVBDQmFzZQoJ
YWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICMxMDQKCXN0ciByMiwgW3IwLCByNCwgbHNsICMyXQoJ
bW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3BfZ2V0X2Zyb21fc2NvcGUgLSAuTHJlbGF0aXZl
UENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGludF9vcF9nZXRfZnJvbV9zY29wZSAtIC5M
cmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjMTA1CglzdHIgcjIsIFty
MCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX3B1dF90b19zY29w
ZSAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX3B1dF90
b19zY29wZSAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjMTA2
CglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29w
X3B1c2hfd2l0aF9zY29wZSAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjou
TGxsaW50X29wX3B1c2hfd2l0aF9zY29wZSAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIy
LCByMQoJbW92IHI0LCAjMTA3CglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6
bG93ZXIxNjouTGxsaW50X29wX3BvcF9zY29wZSAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIs
ICM6dXBwZXIxNjouTGxsaW50X29wX3BvcF9zY29wZSAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMg
cjIsIHIyLCByMQoJbW92IHI0LCAjMTA4CglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncg
cjIsICM6bG93ZXIxNjouTGxsaW50X29wX3B1c2hfbmFtZV9zY29wZSAtIC5McmVsYXRpdmVQQ0Jh
c2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX3B1c2hfbmFtZV9zY29wZSAtIC5McmVs
YXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjMTA5CglzdHIgcjIsIFtyMCwg
cjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX2NhdGNoIC0gLkxyZWxh
dGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3BfY2F0Y2ggLSAuTHJlbGF0
aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzExMAoJc3RyIHIyLCBbcjAsIHI0
LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF90aHJvdyAtIC5McmVsYXRp
dmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX3Rocm93IC0gLkxyZWxhdGl2
ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICMxMTEKCXN0ciByMiwgW3IwLCByNCwg
bHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3BfdGhyb3dfc3RhdGljX2Vycm9y
IC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3BfdGhyb3df
c3RhdGljX2Vycm9yIC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQs
ICMxMTIKCXN0ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxp
bnRfb3BfZGVidWcgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGlu
dF9vcF9kZWJ1ZyAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAj
MTEzCglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50
X29wX3Byb2ZpbGVfd2lsbF9jYWxsIC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBl
cjE2Oi5MbGxpbnRfb3BfcHJvZmlsZV93aWxsX2NhbGwgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRz
IHIyLCByMiwgcjEKCW1vdiByNCwgIzExNAoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3
IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF9wcm9maWxlX2RpZF9jYWxsIC0gLkxyZWxhdGl2ZVBD
QmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3BfcHJvZmlsZV9kaWRfY2FsbCAtIC5M
cmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjMTE1CglzdHIgcjIsIFty
MCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX2VuZCAtIC5McmVs
YXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX2VuZCAtIC5McmVsYXRp
dmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjMTE2CglzdHIgcjIsIFtyMCwgcjQs
IGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX3Byb2ZpbGVfdHlwZXNfd2l0
aF9oaWdoX2ZpZGVsaXR5IC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5M
bGxpbnRfb3BfcHJvZmlsZV90eXBlc193aXRoX2hpZ2hfZmlkZWxpdHkgLSAuTHJlbGF0aXZlUENC
YXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzExNwoJc3RyIHIyLCBbcjAsIHI0LCBsc2wg
IzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF9nZXRfZW51bWVyYWJsZV9sZW5ndGgg
LSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGludF9vcF9nZXRfZW51
bWVyYWJsZV9sZW5ndGggLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiBy
NCwgIzExOAoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6Lkxs
bGludF9vcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eSAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIs
ICM6dXBwZXIxNjouTGxsaW50X29wX2hhc19pbmRleGVkX3Byb3BlcnR5IC0gLkxyZWxhdGl2ZVBD
QmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICMxMTkKCXN0ciByMiwgW3IwLCByNCwgbHNs
ICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0
eSAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX2hhc19z
dHJ1Y3R1cmVfcHJvcGVydHkgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1v
diByNCwgIzEyMAoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6
LkxsbGludF9vcF9oYXNfZ2VuZXJpY19wcm9wZXJ0eSAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQg
cjIsICM6dXBwZXIxNjouTGxsaW50X29wX2hhc19nZW5lcmljX3Byb3BlcnR5IC0gLkxyZWxhdGl2
ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICMxMjEKCXN0ciByMiwgW3IwLCByNCwg
bHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfb3BfZ2V0X2RpcmVjdF9wbmFtZSAt
IC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX2dldF9kaXJl
Y3RfcG5hbWUgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzEy
MgoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGludF9v
cF9nZXRfc3RydWN0dXJlX3Byb3BlcnR5X2VudW1lcmF0b3IgLSAuTHJlbGF0aXZlUENCYXNlCglt
b3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGludF9vcF9nZXRfc3RydWN0dXJlX3Byb3BlcnR5X2VudW1l
cmF0b3IgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzEyMwoJ
c3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGludF9vcF9n
ZXRfZ2VuZXJpY19wcm9wZXJ0eV9lbnVtZXJhdG9yIC0gLkxyZWxhdGl2ZVBDQmFzZQoJbW92dCBy
MiwgIzp1cHBlcjE2Oi5MbGxpbnRfb3BfZ2V0X2dlbmVyaWNfcHJvcGVydHlfZW51bWVyYXRvciAt
IC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjMTI0CglzdHIgcjIs
IFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X29wX25leHRfZW51
bWVyYXRvcl9wbmFtZSAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxs
aW50X29wX25leHRfZW51bWVyYXRvcl9wbmFtZSAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIs
IHIyLCByMQoJbW92IHI0LCAjMTI1CglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIs
ICM6bG93ZXIxNjouTGxsaW50X29wX3RvX2luZGV4X3N0cmluZyAtIC5McmVsYXRpdmVQQ0Jhc2UK
CW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X29wX3RvX2luZGV4X3N0cmluZyAtIC5McmVsYXRp
dmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjMTI2CglzdHIgcjIsIFtyMCwgcjQs
IGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X3Byb2dyYW1fcHJvbG9ndWUgLSAu
THJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGludF9wcm9ncmFtX3Byb2xv
Z3VlIC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICMxMjcKCXN0
ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfZXZhbF9w
cm9sb2d1ZSAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X2V2
YWxfcHJvbG9ndWUgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwg
IzEyOAoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGlu
dF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIs
ICM6dXBwZXIxNjouTGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlIC0gLkxyZWxhdGl2
ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICMxMjkKCXN0ciByMiwgW3IwLCByNCwg
bHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dF9wcm9sb2d1ZSAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRz
IHIyLCByMiwgcjEKCW1vdiByNCwgIzEzMAoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3
IHIyLCAjOmxvd2VyMTY6LkxsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayAtIC5M
cmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X2Z1bmN0aW9uX2Zvcl9j
YWxsX2FyaXR5X2NoZWNrIC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3Yg
cjQsICMxMzEKCXN0ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5M
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayAtIC5McmVsYXRpdmVQQ0Jh
c2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlfY2hlY2sgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1vdiByNCwgIzEz
MgoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6LkxsbGludF9n
ZW5lcmljX3JldHVybl9wb2ludCAtIC5McmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIx
NjouTGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50IC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyBy
MiwgcjIsIHIxCgltb3YgcjQsICMxMzMKCXN0ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyBy
MiwgIzpsb3dlcjE2Oi5MbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSAtIC5M
cmVsYXRpdmVQQ0Jhc2UKCW1vdnQgcjIsICM6dXBwZXIxNjouTGxsaW50X3Rocm93X2Zyb21fc2xv
d19wYXRoX3RyYW1wb2xpbmUgLSAuTHJlbGF0aXZlUENCYXNlCglhZGRzIHIyLCByMiwgcjEKCW1v
diByNCwgIzEzNAoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzJdCgltb3Z3IHIyLCAjOmxvd2VyMTY6
LkxsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lIC0gLkxyZWxhdGl2ZVBDQmFzZQoJ
bW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSAt
IC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJbW92IHI0LCAjMTM1CglzdHIgcjIs
IFtyMCwgcjQsIGxzbCAjMl0KCW1vdncgcjIsICM6bG93ZXIxNjouTGxsaW50X25hdGl2ZV9jYWxs
X3RyYW1wb2xpbmUgLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxsbGlu
dF9uYXRpdmVfY2FsbF90cmFtcG9saW5lIC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIs
IHIxCgltb3YgcjQsICMxMzYKCXN0ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzps
b3dlcjE2Oi5MbGxpbnRfbmF0aXZlX2NvbnN0cnVjdF90cmFtcG9saW5lIC0gLkxyZWxhdGl2ZVBD
QmFzZQoJbW92dCByMiwgIzp1cHBlcjE2Oi5MbGxpbnRfbmF0aXZlX2NvbnN0cnVjdF90cmFtcG9s
aW5lIC0gLkxyZWxhdGl2ZVBDQmFzZQoJYWRkcyByMiwgcjIsIHIxCgltb3YgcjQsICMxMzcKCXN0
ciByMiwgW3IwLCByNCwgbHNsICMyXQoJbW92dyByMiwgIzpsb3dlcjE2Oi5MaGFuZGxlVW5jYXVn
aHRFeGNlcHRpb24gLSAuTHJlbGF0aXZlUENCYXNlCgltb3Z0IHIyLCAjOnVwcGVyMTY6LkxoYW5k
bGVVbmNhdWdodEV4Y2VwdGlvbiAtIC5McmVsYXRpdmVQQ0Jhc2UKCWFkZHMgcjIsIHIyLCByMQoJ
bW92IHI0LCAjMTM4CglzdHIgcjIsIFtyMCwgcjQsIGxzbCAjMl0KCXBvcCB7cjQtcjYsIHI4LXIx
MX0KCXBvcCB7IHI3IH0KCXBvcCB7IGxyIH0KCWJ4IGxyCi5MbGxpbnRfcHJvZ3JhbV9wcm9sb2d1
ZToKCXB1c2ggeyBsciB9CglwdXNoIHsgcjcgfQoJbW92IHI3LCBzcAoJbGRyIHIxLCBbcjcsICM4
XQoJbGRyIHIxMiwgW3IxLCAjMzE2XQoJYWRkcyByMTIsICM1CglzdHIgcjEyLCBbcjEsICMzMTZd
CglibWkgLkxfb2ZmbGluZWFzbV9wcm9sb2d1ZV9fY29udGludWUKCXN1YnMgc3AsIHNwLCAjOAoJ
bW92IHIwLCByNwoJbW92IHIxLCByOQoJYmx4IGxsaW50X2VudHJ5X29zcgoJYWRkcyBzcCwgIzgK
CXRzdCByMCwgcjAKCWJlcSAuTF9vZmZsaW5lYXNtX3Byb2xvZ3VlX19yZWNvdmVyCgltb3Ygc3As
IHI3Cglwb3AgeyByNyB9Cglwb3AgeyBsciB9Cgltb3YgcGMsIHIwCi5MX29mZmxpbmVhc21fcHJv
bG9ndWVfX3JlY292ZXI6CglsZHIgcjEsIFtyNywgIzhdCi5MX29mZmxpbmVhc21fcHJvbG9ndWVf
X2NvbnRpbnVlOgoJbGRyIHIyLCBbcjEsICMyOF0KCWxzbHMgcjIsIHIyLCAjMwoJYWRkcyByMiwg
IzI0CglzdWJzIHIyLCByNywgcjIKCW1vdiBzcCwgcjIKCWxkciByOSwgW3IxLCAjNjBdCglsZHIg
cjEyLCBbcjksICMwXQoJbW92IHBjLCByMTIKLkxsbGludF9ldmFsX3Byb2xvZ3VlOgoJcHVzaCB7
IGxyIH0KCXB1c2ggeyByNyB9Cgltb3YgcjcsIHNwCglsZHIgcjEsIFtyNywgIzhdCglsZHIgcjEy
LCBbcjEsICMzMTZdCglhZGRzIHIxMiwgIzUKCXN0ciByMTIsIFtyMSwgIzMxNl0KCWJtaSAuTF9v
ZmZsaW5lYXNtXzBfcHJvbG9ndWVfX2NvbnRpbnVlCglzdWJzIHNwLCBzcCwgIzgKCW1vdiByMCwg
cjcKCW1vdiByMSwgcjkKCWJseCBsbGludF9lbnRyeV9vc3IKCWFkZHMgc3AsICM4Cgl0c3QgcjAs
IHIwCgliZXEgLkxfb2ZmbGluZWFzbV8wX3Byb2xvZ3VlX19yZWNvdmVyCgltb3Ygc3AsIHI3Cglw
b3AgeyByNyB9Cglwb3AgeyBsciB9Cgltb3YgcGMsIHIwCi5MX29mZmxpbmVhc21fMF9wcm9sb2d1
ZV9fcmVjb3ZlcjoKCWxkciByMSwgW3I3LCAjOF0KLkxfb2ZmbGluZWFzbV8wX3Byb2xvZ3VlX19j
b250aW51ZToKCWxkciByMiwgW3IxLCAjMjhdCglsc2xzIHIyLCByMiwgIzMKCWFkZHMgcjIsICMy
NAoJc3VicyByMiwgcjcsIHIyCgltb3Ygc3AsIHIyCglsZHIgcjksIFtyMSwgIzYwXQoJbGRyIHIx
MiwgW3I5LCAjMF0KCW1vdiBwYywgcjEyCi5MbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9n
dWU6CglwdXNoIHsgbHIgfQoJcHVzaCB7IHI3IH0KCW1vdiByNywgc3AKCWxkciByMSwgW3I3LCAj
MjRdCglsZHIgcjEsIFtyMSwgIzIwXQoJbGRyIHIxLCBbcjEsICMxMDRdCglsZHIgcjEyLCBbcjEs
ICMzMTZdCglhZGRzIHIxMiwgIzUKCXN0ciByMTIsIFtyMSwgIzMxNl0KCWJtaSAuTF9vZmZsaW5l
YXNtXzFfcHJvbG9ndWVfX2NvbnRpbnVlCglzdWJzIHNwLCBzcCwgIzgKCW1vdiByMCwgcjcKCW1v
diByMSwgcjkKCWJseCBsbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwKCWFkZHMgc3As
ICM4Cgl0c3QgcjAsIHIwCgliZXEgLkxfb2ZmbGluZWFzbV8xX3Byb2xvZ3VlX19yZWNvdmVyCglt
b3Ygc3AsIHI3Cglwb3AgeyByNyB9Cglwb3AgeyBsciB9Cgltb3YgcGMsIHIwCi5MX29mZmxpbmVh
c21fMV9wcm9sb2d1ZV9fcmVjb3ZlcjoKCWxkciByMSwgW3I3LCAjMjRdCglsZHIgcjEsIFtyMSwg
IzIwXQoJbGRyIHIxLCBbcjEsICMxMDRdCi5MX29mZmxpbmVhc21fMV9wcm9sb2d1ZV9fY29udGlu
dWU6CglzdHIgcjEsIFtyNywgIzhdCglsZHIgcjIsIFtyMSwgIzI4XQoJbHNscyByMiwgcjIsICMz
CglhZGRzIHIyLCAjMjQKCXN1YnMgcjIsIHI3LCByMgoJbW92IHNwLCByMgoJbGRyIHI5LCBbcjEs
ICM2MF0KCWxkciByMCwgW3IxLCAjNDRdCgl0c3QgcjAsIHIwCgliZXEgLkxfb2ZmbGluZWFzbV9m
dW5jdGlvbkluaXRpYWxpemF0aW9uX19hcmd1bWVudFByb2ZpbGVEb25lCglsZHIgcjQsIFtyMSwg
IzE4MF0KCW1vdiByMTIsICMzMgoJbXVsIHIyLCByMTIsIHIwCglsc2xzIHIwLCByMCwgIzMKCWFk
ZCByNCwgcjIKLkxfb2ZmbGluZWFzbV9mdW5jdGlvbkluaXRpYWxpemF0aW9uX19hcmd1bWVudFBy
b2ZpbGVMb29wOgoJYWRkIHIxMiwgcjcsIHIwLCBsc2wgIzAKCWxkciByMiwgW3IxMiwgIzM2XQoJ
c3VicyByNCwgcjQsICMzMgoJc3RyIHIyLCBbcjQsICMyMF0KCWFkZCByMTIsIHI3LCByMCwgbHNs
ICMwCglsZHIgcjIsIFtyMTIsICMzMl0KCXN0ciByMiwgW3I0LCAjMTZdCgltdm4gcjEyLCAjNwoJ
YWRkcyByMCwgcjEyCglibmUgLkxfb2ZmbGluZWFzbV9mdW5jdGlvbkluaXRpYWxpemF0aW9uX19h
cmd1bWVudFByb2ZpbGVMb29wCi5MX29mZmxpbmVhc21fZnVuY3Rpb25Jbml0aWFsaXphdGlvbl9f
YXJndW1lbnRQcm9maWxlRG9uZToKCWxkciByMCwgW3IxLCAjMjhdCglsZHIgcjIsIFtyMSwgIzU2
XQoJbHNscyByMCwgcjAsICMzCglhZGRzIHIwLCAjMjQKCXN1YnMgcjAsIHI3LCByMAoJbW92dyBy
MTIsICMyNzA0OAoJYWRkIHIxMiwgcjIKCWxkciByMTAsIFtyMTIsICMwXQoJY21wIHIxMCwgcjAK
CWJscyAuTF9vZmZsaW5lYXNtX2Z1bmN0aW9uSW5pdGlhbGl6YXRpb25fX3N0YWNrSGVpZ2h0T0sK
CW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBsbGludF9zdGFja19jaGVjawoJbW92IHI5LCBy
MAoJdHN0IHIxLCByMQoJYmVxIC5MX29mZmxpbmVhc21fZnVuY3Rpb25Jbml0aWFsaXphdGlvbl9f
c3RhY2tIZWlnaHRPSwoJbW92IHI3LCByMQouTF9vZmZsaW5lYXNtX2Z1bmN0aW9uSW5pdGlhbGl6
YXRpb25fX3N0YWNrSGVpZ2h0T0s6CglsZHIgcjEwLCBbcjksICMwXQoJbW92IHBjLCByMTAKLkxs
bGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlOgoJcHVzaCB7IGxyIH0KCXB1c2gg
eyByNyB9Cgltb3YgcjcsIHNwCglsZHIgcjEsIFtyNywgIzI0XQoJbGRyIHIxLCBbcjEsICMyMF0K
CWxkciByMSwgW3IxLCAjMTA4XQoJbGRyIHIxMCwgW3IxLCAjMzE2XQoJYWRkcyByMTAsICM1Cglz
dHIgcjEwLCBbcjEsICMzMTZdCglibWkgLkxfb2ZmbGluZWFzbV8yX3Byb2xvZ3VlX19jb250aW51
ZQoJc3VicyBzcCwgc3AsICM4Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggbGxpbnRfZW50
cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QKCWFkZHMgc3AsICM4Cgl0c3QgcjAsIHIwCgli
ZXEgLkxfb2ZmbGluZWFzbV8yX3Byb2xvZ3VlX19yZWNvdmVyCgltb3Ygc3AsIHI3Cglwb3AgeyBy
NyB9Cglwb3AgeyBsciB9Cgltb3YgcGMsIHIwCi5MX29mZmxpbmVhc21fMl9wcm9sb2d1ZV9fcmVj
b3ZlcjoKCWxkciByMSwgW3I3LCAjMjRdCglsZHIgcjEsIFtyMSwgIzIwXQoJbGRyIHIxLCBbcjEs
ICMxMDhdCi5MX29mZmxpbmVhc21fMl9wcm9sb2d1ZV9fY29udGludWU6CglzdHIgcjEsIFtyNywg
IzhdCglsZHIgcjIsIFtyMSwgIzI4XQoJbHNscyByMiwgcjIsICMzCglhZGRzIHIyLCAjMjQKCXN1
YnMgcjIsIHI3LCByMgoJbW92IHNwLCByMgoJbGRyIHI5LCBbcjEsICM2MF0KCWxkciByMCwgW3Ix
LCAjNDRdCglzdWJzIHIwLCByMCwgIzEKCXRzdCByMCwgcjAKCWJlcSAuTF9vZmZsaW5lYXNtXzJf
ZnVuY3Rpb25Jbml0aWFsaXphdGlvbl9fYXJndW1lbnRQcm9maWxlRG9uZQoJbGRyIHI0LCBbcjEs
ICMxODBdCgltb3YgcjEwLCAjMzIKCW11bCByMiwgcjEwLCByMAoJbHNscyByMCwgcjAsICMzCglh
ZGQgcjQsIHIyCi5MX29mZmxpbmVhc21fMl9mdW5jdGlvbkluaXRpYWxpemF0aW9uX19hcmd1bWVu
dFByb2ZpbGVMb29wOgoJYWRkIHIxMCwgcjcsIHIwLCBsc2wgIzAKCWxkciByMiwgW3IxMCwgIzQ0
XQoJc3VicyByNCwgcjQsICMzMgoJc3RyIHIyLCBbcjQsICM1Ml0KCWFkZCByMTAsIHI3LCByMCwg
bHNsICMwCglsZHIgcjIsIFtyMTAsICM0MF0KCXN0ciByMiwgW3I0LCAjNDhdCgltdm4gcjEwLCAj
NwoJYWRkcyByMCwgcjEwCglibmUgLkxfb2ZmbGluZWFzbV8yX2Z1bmN0aW9uSW5pdGlhbGl6YXRp
b25fX2FyZ3VtZW50UHJvZmlsZUxvb3AKLkxfb2ZmbGluZWFzbV8yX2Z1bmN0aW9uSW5pdGlhbGl6
YXRpb25fX2FyZ3VtZW50UHJvZmlsZURvbmU6CglsZHIgcjAsIFtyMSwgIzI4XQoJbGRyIHIyLCBb
cjEsICM1Nl0KCWxzbHMgcjAsIHIwLCAjMwoJYWRkcyByMCwgIzI0CglzdWJzIHIwLCByNywgcjAK
CW1vdncgcjEwLCAjMjcwNDgKCWFkZCByMTAsIHIyCglsZHIgcjEyLCBbcjEwLCAjMF0KCWNtcCBy
MTIsIHIwCglibHMgLkxfb2ZmbGluZWFzbV8yX2Z1bmN0aW9uSW5pdGlhbGl6YXRpb25fX3N0YWNr
SGVpZ2h0T0sKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBsbGludF9zdGFja19jaGVjawoJ
bW92IHI5LCByMAoJdHN0IHIxLCByMQoJYmVxIC5MX29mZmxpbmVhc21fMl9mdW5jdGlvbkluaXRp
YWxpemF0aW9uX19zdGFja0hlaWdodE9LCgltb3YgcjcsIHIxCi5MX29mZmxpbmVhc21fMl9mdW5j
dGlvbkluaXRpYWxpemF0aW9uX19zdGFja0hlaWdodE9LOgoJbGRyIHIxMiwgW3I5LCAjMF0KCW1v
diBwYywgcjEyCi5MbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2s6CglwdXNoIHsg
bHIgfQoJcHVzaCB7IHI3IH0KCW1vdiByNywgc3AKCWxkciByMSwgW3I3LCAjMjRdCglsZHIgcjEs
IFtyMSwgIzIwXQoJbGRyIHIxLCBbcjEsICMxMDRdCglsZHIgcjEyLCBbcjEsICMzMTZdCglhZGRz
IHIxMiwgIzUKCXN0ciByMTIsIFtyMSwgIzMxNl0KCWJtaSAuTF9vZmZsaW5lYXNtXzNfcHJvbG9n
dWVfX2NvbnRpbnVlCglzdWJzIHNwLCBzcCwgIzgKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJs
eCBsbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjawoJYWRkcyBzcCwg
IzgKCXRzdCByMCwgcjAKCWJlcSAuTF9vZmZsaW5lYXNtXzNfcHJvbG9ndWVfX3JlY292ZXIKCW1v
diBzcCwgcjcKCXBvcCB7IHI3IH0KCXBvcCB7IGxyIH0KCW1vdiBwYywgcjAKLkxfb2ZmbGluZWFz
bV8zX3Byb2xvZ3VlX19yZWNvdmVyOgoJbGRyIHIxLCBbcjcsICMyNF0KCWxkciByMSwgW3IxLCAj
MjBdCglsZHIgcjEsIFtyMSwgIzEwNF0KLkxfb2ZmbGluZWFzbV8zX3Byb2xvZ3VlX19jb250aW51
ZToKCXN0ciByMSwgW3I3LCAjOF0KCWxkciByMiwgW3IxLCAjMjhdCglsc2xzIHIyLCByMiwgIzMK
CWFkZHMgcjIsICMyNAoJc3VicyByMiwgcjcsIHIyCgltb3Ygc3AsIHIyCglsZHIgcjksIFtyMSwg
IzYwXQoJbGRyIHIwLCBbcjcsICMzMl0KCWxkciByMTIsIFtyMSwgIzQ0XQoJY21wIHIwLCByMTIK
CWJocyAuTF9vZmZsaW5lYXNtX2Z1bmN0aW9uRm9yQ2FsbEJlZ2luCgltb3YgcjAsIHI3Cgltb3Yg
cjEsIHI5CglibHggc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjawoJdHN0IHIwLCByMAoJYmVxIC5M
X29mZmxpbmVhc21fZnVuY3Rpb25Bcml0eUNoZWNrX19ub0Vycm9yCgltb3YgcjcsIHIxCgliIC5M
bGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZQouTF9vZmZsaW5lYXNtX2Z1bmN0
aW9uQXJpdHlDaGVja19fbm9FcnJvcjoKCWxkciByMiwgW3IxLCAjNF0KCXRzdCByMiwgcjIKCWJl
cSAuTF9vZmZsaW5lYXNtX2Z1bmN0aW9uQXJpdHlDaGVja19fcHJvY2VlZElubGluZQoJbGRyIHI5
LCBbcjEsICM4XQoJbGRyIHIwLCBbcjEsICMwXQoJYmx4IHIyCgliIC5MX29mZmxpbmVhc21fZnVu
Y3Rpb25Bcml0eUNoZWNrX19jb250aW51ZQouTF9vZmZsaW5lYXNtX2Z1bmN0aW9uQXJpdHlDaGVj
a19fcHJvY2VlZElubGluZToKCWxkciByMSwgW3IxLCAjMF0KCXRzdCByMSwgcjEKCWJlcSAuTF9v
ZmZsaW5lYXNtX2Z1bmN0aW9uQXJpdHlDaGVja19fY29udGludWUKCWxzbHMgcjEsIHIxLCAjMQoJ
cnNicyByMSwgcjEsICMwCgltb3YgcjQsIHI3CglsZHIgcjIsIFtyNywgIzMyXQoJYWRkcyByMiwg
IzUKLkxfb2ZmbGluZWFzbV9mdW5jdGlvbkFyaXR5Q2hlY2tfX2NvcHlMb29wOgoJbGRyIHIwLCBb
cjQsICMwXQoJc3RyIHIwLCBbcjQsIHIxLCBsc2wgIzNdCglsZHIgcjAsIFtyNCwgIzRdCglhZGQg
cjEyLCByNCwgcjEsIGxzbCAjMwoJc3RyIHIwLCBbcjEyLCAjNF0KCWFkZHMgcjQsICM4CglzdWJz
IHIyLCByMiwgIzEKCWJuZSAuTF9vZmZsaW5lYXNtX2Z1bmN0aW9uQXJpdHlDaGVja19fY29weUxv
b3AKCW1vdiByMiwgcjEKLkxfb2ZmbGluZWFzbV9mdW5jdGlvbkFyaXR5Q2hlY2tfX2ZpbGxMb29w
OgoJbW92IHIwLCAjMAoJc3RyIHIwLCBbcjQsIHIxLCBsc2wgIzNdCgltdm4gcjAsICMzCglhZGQg
cjEyLCByNCwgcjEsIGxzbCAjMwoJc3RyIHIwLCBbcjEyLCAjNF0KCWFkZHMgcjQsICM4CglhZGRz
IHIyLCAjMQoJYm5lIC5MX29mZmxpbmVhc21fZnVuY3Rpb25Bcml0eUNoZWNrX19maWxsTG9vcAoJ
bHNscyByMSwgcjEsICMzCglhZGQgcjcsIHIxCglhZGQgc3AsIHIxCi5MX29mZmxpbmVhc21fZnVu
Y3Rpb25Bcml0eUNoZWNrX19jb250aW51ZToKCWxkciByMSwgW3I3LCAjOF0KCWxkciByOSwgW3Ix
LCAjNjBdCgliIC5MX29mZmxpbmVhc21fZnVuY3Rpb25Gb3JDYWxsQmVnaW4KLkxfb2ZmbGluZWFz
bV9mdW5jdGlvbkZvckNhbGxCZWdpbjoKCWxkciByMCwgW3IxLCAjNDRdCgl0c3QgcjAsIHIwCgli
ZXEgLkxfb2ZmbGluZWFzbV8zX2Z1bmN0aW9uSW5pdGlhbGl6YXRpb25fX2FyZ3VtZW50UHJvZmls
ZURvbmUKCWxkciByNCwgW3IxLCAjMTgwXQoJbW92IHIxMiwgIzMyCgltdWwgcjIsIHIxMiwgcjAK
CWxzbHMgcjAsIHIwLCAjMwoJYWRkIHI0LCByMgouTF9vZmZsaW5lYXNtXzNfZnVuY3Rpb25Jbml0
aWFsaXphdGlvbl9fYXJndW1lbnRQcm9maWxlTG9vcDoKCWFkZCByMTIsIHI3LCByMCwgbHNsICMw
CglsZHIgcjIsIFtyMTIsICMzNl0KCXN1YnMgcjQsIHI0LCAjMzIKCXN0ciByMiwgW3I0LCAjMjBd
CglhZGQgcjEyLCByNywgcjAsIGxzbCAjMAoJbGRyIHIyLCBbcjEyLCAjMzJdCglzdHIgcjIsIFty
NCwgIzE2XQoJbXZuIHIxMiwgIzcKCWFkZHMgcjAsIHIxMgoJYm5lIC5MX29mZmxpbmVhc21fM19m
dW5jdGlvbkluaXRpYWxpemF0aW9uX19hcmd1bWVudFByb2ZpbGVMb29wCi5MX29mZmxpbmVhc21f
M19mdW5jdGlvbkluaXRpYWxpemF0aW9uX19hcmd1bWVudFByb2ZpbGVEb25lOgoJbGRyIHIwLCBb
cjEsICMyOF0KCWxkciByMiwgW3IxLCAjNTZdCglsc2xzIHIwLCByMCwgIzMKCWFkZHMgcjAsICMy
NAoJc3VicyByMCwgcjcsIHIwCgltb3Z3IHIxMiwgIzI3MDQ4CglhZGQgcjEyLCByMgoJbGRyIHIx
MCwgW3IxMiwgIzBdCgljbXAgcjEwLCByMAoJYmxzIC5MX29mZmxpbmVhc21fM19mdW5jdGlvbklu
aXRpYWxpemF0aW9uX19zdGFja0hlaWdodE9LCgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHgg
bGxpbnRfc3RhY2tfY2hlY2sKCW1vdiByOSwgcjAKCXRzdCByMSwgcjEKCWJlcSAuTF9vZmZsaW5l
YXNtXzNfZnVuY3Rpb25Jbml0aWFsaXphdGlvbl9fc3RhY2tIZWlnaHRPSwoJbW92IHI3LCByMQou
TF9vZmZsaW5lYXNtXzNfZnVuY3Rpb25Jbml0aWFsaXphdGlvbl9fc3RhY2tIZWlnaHRPSzoKCWxk
ciByMTAsIFtyOSwgIzBdCgltb3YgcGMsIHIxMAouTGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlfY2hlY2s6CglwdXNoIHsgbHIgfQoJcHVzaCB7IHI3IH0KCW1vdiByNywgc3AKCWxk
ciByMSwgW3I3LCAjMjRdCglsZHIgcjEsIFtyMSwgIzIwXQoJbGRyIHIxLCBbcjEsICMxMDhdCgls
ZHIgcjEwLCBbcjEsICMzMTZdCglhZGRzIHIxMCwgIzUKCXN0ciByMTAsIFtyMSwgIzMxNl0KCWJt
aSAuTF9vZmZsaW5lYXNtXzRfcHJvbG9ndWVfX2NvbnRpbnVlCglzdWJzIHNwLCBzcCwgIzgKCW1v
diByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBsbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9hcml0eUNoZWNrCglhZGRzIHNwLCAjOAoJdHN0IHIwLCByMAoJYmVxIC5MX29mZmxp
bmVhc21fNF9wcm9sb2d1ZV9fcmVjb3ZlcgoJbW92IHNwLCByNwoJcG9wIHsgcjcgfQoJcG9wIHsg
bHIgfQoJbW92IHBjLCByMAouTF9vZmZsaW5lYXNtXzRfcHJvbG9ndWVfX3JlY292ZXI6CglsZHIg
cjEsIFtyNywgIzI0XQoJbGRyIHIxLCBbcjEsICMyMF0KCWxkciByMSwgW3IxLCAjMTA4XQouTF9v
ZmZsaW5lYXNtXzRfcHJvbG9ndWVfX2NvbnRpbnVlOgoJc3RyIHIxLCBbcjcsICM4XQoJbGRyIHIy
LCBbcjEsICMyOF0KCWxzbHMgcjIsIHIyLCAjMwoJYWRkcyByMiwgIzI0CglzdWJzIHIyLCByNywg
cjIKCW1vdiBzcCwgcjIKCWxkciByOSwgW3IxLCAjNjBdCglsZHIgcjAsIFtyNywgIzMyXQoJbGRy
IHIxMCwgW3IxLCAjNDRdCgljbXAgcjAsIHIxMAoJYmhzIC5MX29mZmxpbmVhc21fZnVuY3Rpb25G
b3JDb25zdHJ1Y3RCZWdpbgoJbW92IHIwLCByNwoJbW92IHIxLCByOQoJYmx4IHNsb3dfcGF0aF9j
b25zdHJ1Y3RfYXJpdHlDaGVjawoJdHN0IHIwLCByMAoJYmVxIC5MX29mZmxpbmVhc21fNF9mdW5j
dGlvbkFyaXR5Q2hlY2tfX25vRXJyb3IKCW1vdiByNywgcjEKCWIgLkxsbGludF90aHJvd19mcm9t
X3Nsb3dfcGF0aF90cmFtcG9saW5lCi5MX29mZmxpbmVhc21fNF9mdW5jdGlvbkFyaXR5Q2hlY2tf
X25vRXJyb3I6CglsZHIgcjIsIFtyMSwgIzRdCgl0c3QgcjIsIHIyCgliZXEgLkxfb2ZmbGluZWFz
bV80X2Z1bmN0aW9uQXJpdHlDaGVja19fcHJvY2VlZElubGluZQoJbGRyIHI5LCBbcjEsICM4XQoJ
bGRyIHIwLCBbcjEsICMwXQoJYmx4IHIyCgliIC5MX29mZmxpbmVhc21fNF9mdW5jdGlvbkFyaXR5
Q2hlY2tfX2NvbnRpbnVlCi5MX29mZmxpbmVhc21fNF9mdW5jdGlvbkFyaXR5Q2hlY2tfX3Byb2Nl
ZWRJbmxpbmU6CglsZHIgcjEsIFtyMSwgIzBdCgl0c3QgcjEsIHIxCgliZXEgLkxfb2ZmbGluZWFz
bV80X2Z1bmN0aW9uQXJpdHlDaGVja19fY29udGludWUKCWxzbHMgcjEsIHIxLCAjMQoJcnNicyBy
MSwgcjEsICMwCgltb3YgcjQsIHI3CglsZHIgcjIsIFtyNywgIzMyXQoJYWRkcyByMiwgIzUKLkxf
b2ZmbGluZWFzbV80X2Z1bmN0aW9uQXJpdHlDaGVja19fY29weUxvb3A6CglsZHIgcjAsIFtyNCwg
IzBdCglzdHIgcjAsIFtyNCwgcjEsIGxzbCAjM10KCWxkciByMCwgW3I0LCAjNF0KCWFkZCByMTAs
IHI0LCByMSwgbHNsICMzCglzdHIgcjAsIFtyMTAsICM0XQoJYWRkcyByNCwgIzgKCXN1YnMgcjIs
IHIyLCAjMQoJYm5lIC5MX29mZmxpbmVhc21fNF9mdW5jdGlvbkFyaXR5Q2hlY2tfX2NvcHlMb29w
Cgltb3YgcjIsIHIxCi5MX29mZmxpbmVhc21fNF9mdW5jdGlvbkFyaXR5Q2hlY2tfX2ZpbGxMb29w
OgoJbW92IHIwLCAjMAoJc3RyIHIwLCBbcjQsIHIxLCBsc2wgIzNdCgltdm4gcjAsICMzCglhZGQg
cjEwLCByNCwgcjEsIGxzbCAjMwoJc3RyIHIwLCBbcjEwLCAjNF0KCWFkZHMgcjQsICM4CglhZGRz
IHIyLCAjMQoJYm5lIC5MX29mZmxpbmVhc21fNF9mdW5jdGlvbkFyaXR5Q2hlY2tfX2ZpbGxMb29w
Cglsc2xzIHIxLCByMSwgIzMKCWFkZCByNywgcjEKCWFkZCBzcCwgcjEKLkxfb2ZmbGluZWFzbV80
X2Z1bmN0aW9uQXJpdHlDaGVja19fY29udGludWU6CglsZHIgcjEsIFtyNywgIzhdCglsZHIgcjks
IFtyMSwgIzYwXQoJYiAuTF9vZmZsaW5lYXNtX2Z1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW4KLkxf
b2ZmbGluZWFzbV9mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOgoJbGRyIHIwLCBbcjEsICM0NF0K
CXN1YnMgcjAsIHIwLCAjMQoJdHN0IHIwLCByMAoJYmVxIC5MX29mZmxpbmVhc21fNF9mdW5jdGlv
bkluaXRpYWxpemF0aW9uX19hcmd1bWVudFByb2ZpbGVEb25lCglsZHIgcjQsIFtyMSwgIzE4MF0K
CW1vdiByMTAsICMzMgoJbXVsIHIyLCByMTAsIHIwCglsc2xzIHIwLCByMCwgIzMKCWFkZCByNCwg
cjIKLkxfb2ZmbGluZWFzbV80X2Z1bmN0aW9uSW5pdGlhbGl6YXRpb25fX2FyZ3VtZW50UHJvZmls
ZUxvb3A6CglhZGQgcjEwLCByNywgcjAsIGxzbCAjMAoJbGRyIHIyLCBbcjEwLCAjNDRdCglzdWJz
IHI0LCByNCwgIzMyCglzdHIgcjIsIFtyNCwgIzUyXQoJYWRkIHIxMCwgcjcsIHIwLCBsc2wgIzAK
CWxkciByMiwgW3IxMCwgIzQwXQoJc3RyIHIyLCBbcjQsICM0OF0KCW12biByMTAsICM3CglhZGRz
IHIwLCByMTAKCWJuZSAuTF9vZmZsaW5lYXNtXzRfZnVuY3Rpb25Jbml0aWFsaXphdGlvbl9fYXJn
dW1lbnRQcm9maWxlTG9vcAouTF9vZmZsaW5lYXNtXzRfZnVuY3Rpb25Jbml0aWFsaXphdGlvbl9f
YXJndW1lbnRQcm9maWxlRG9uZToKCWxkciByMCwgW3IxLCAjMjhdCglsZHIgcjIsIFtyMSwgIzU2
XQoJbHNscyByMCwgcjAsICMzCglhZGRzIHIwLCAjMjQKCXN1YnMgcjAsIHI3LCByMAoJbW92dyBy
MTAsICMyNzA0OAoJYWRkIHIxMCwgcjIKCWxkciByMTIsIFtyMTAsICMwXQoJY21wIHIxMiwgcjAK
CWJscyAuTF9vZmZsaW5lYXNtXzRfZnVuY3Rpb25Jbml0aWFsaXphdGlvbl9fc3RhY2tIZWlnaHRP
SwoJbW92IHIwLCByNwoJbW92IHIxLCByOQoJYmx4IGxsaW50X3N0YWNrX2NoZWNrCgltb3Ygcjks
IHIwCgl0c3QgcjEsIHIxCgliZXEgLkxfb2ZmbGluZWFzbV80X2Z1bmN0aW9uSW5pdGlhbGl6YXRp
b25fX3N0YWNrSGVpZ2h0T0sKCW1vdiByNywgcjEKLkxfb2ZmbGluZWFzbV80X2Z1bmN0aW9uSW5p
dGlhbGl6YXRpb25fX3N0YWNrSGVpZ2h0T0s6CglsZHIgcjEyLCBbcjksICMwXQoJbW92IHBjLCBy
MTIKLkxoYW5kbGVVbmNhdWdodEV4Y2VwdGlvbjoKCWxkciByNCwgW3I3LCAjMTZdCgltb3Z3IHIx
MiwgIzAKCW1vdnQgcjEyLCAjNjU1MzUKCWFuZHMgcjQsIHIxMgoJbGRyIHI0LCBbcjQsICMxMDc2
XQoJbW92dyByMTIsICMyNjkwOAoJYWRkIHIxMiwgcjQKCWxkciByNywgW3IxMiwgIzBdCglsZHIg
cjcsIFtyNywgIzBdCglzdWJzIHNwLCByNywgIzQ4CglsZHIgcjQsIFtzcCwgIzBdCglsZHIgcjks
IFtzcCwgIzRdCgltb3Z3IHIxMiwgIzIyOTUyCglhZGQgcjEyLCByNAoJc3RyIHI5LCBbcjEyLCAj
MF0KCWxkciByOSwgW3NwLCAjOF0KCW1vdncgcjEyLCAjMjI5NDgKCWFkZCByMTIsIHI0CglzdHIg
cjksIFtyMTIsICMwXQoJc3VicyBzcCwgcjcsICMyOAoJcG9wIHtyNC1yNiwgcjgtcjExfQoJcG9w
IHsgcjcgfQoJcG9wIHsgbHIgfQoJYnggbHIKLkxsbGludF9vcF9lbnRlcjoKCW1vdiByMiwgc3AK
CWFuZCByMiwgcjIsICMxNQoJdHN0IHIyLCByMgoJYmVxIC5MX29mZmxpbmVhc21fNF9jaGVja1N0
YWNrUG9pbnRlckFsaWdubWVudF9fc3RhY2tQb2ludGVyT2theQoJbW92dyByMiwgIzIyNQoJbW92
dCByMiwgIzU3MDA1Cglia3B0ICMwCi5MX29mZmxpbmVhc21fNF9jaGVja1N0YWNrUG9pbnRlckFs
aWdubWVudF9fc3RhY2tQb2ludGVyT2theToKCWxkciByMiwgW3I3LCAjOF0KCWxkciByMiwgW3Iy
LCAjMzJdCgl0c3QgcjIsIHIyCgliZXEgLkxfb2ZmbGluZWFzbV9vcEVudGVyRG9uZQoJbXZuIHIw
LCAjMwoJbW92IHIxLCAjMAoJcnNicyByMiwgcjIsICMwCi5MX29mZmxpbmVhc21fb3BFbnRlckxv
b3A6CglhZGQgcjEyLCByNywgcjIsIGxzbCAjMwoJc3RyIHIwLCBbcjEyLCAjNF0KCXN0ciByMSwg
W3I3LCByMiwgbHNsICMzXQoJYWRkcyByMiwgIzEKCXRzdCByMiwgcjIKCWJuZSAuTF9vZmZsaW5l
YXNtX29wRW50ZXJMb29wCi5MX29mZmxpbmVhc21fb3BFbnRlckRvbmU6Cgltb3YgcjAsIHI3Cglt
b3YgcjEsIHI5CglibHggc2xvd19wYXRoX2VudGVyCgltb3YgcjksIHIwCglhZGRzIHI5LCAjNAoJ
bGRyIHIxMiwgW3I5LCAjMF0KCW1vdiBwYywgcjEyCi5MbGxpbnRfb3BfY3JlYXRlX2FjdGl2YXRp
b246CglsZHIgcjAsIFtyOSwgIzRdCgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggbGxpbnRf
c2xvd19wYXRoX2NyZWF0ZV9hY3RpdmF0aW9uCgltb3YgcjksIHIwCglhZGRzIHI5LCAjOAoJbGRy
IHIxMiwgW3I5LCAjMF0KCW1vdiBwYywgcjEyCi5MbGxpbnRfb3BfaW5pdF9sYXp5X3JlZzoKCWxk
ciByMCwgW3I5LCAjNF0KCWFkZCByMTIsIHI3LCByMCwgbHNsICMzCgltdm4gcjEwLCAjNQoJc3Ry
IHIxMCwgW3IxMiwgIzRdCgltb3YgcjEyLCAjMAoJc3RyIHIxMiwgW3I3LCByMCwgbHNsICMzXQoJ
YWRkcyByOSwgIzgKCWxkciByMTIsIFtyOSwgIzBdCgltb3YgcGMsIHIxMgouTGxsaW50X29wX2Ny
ZWF0ZV9hcmd1bWVudHM6CglsZHIgcjAsIFtyOSwgIzRdCglhZGQgcjEyLCByNywgcjAsIGxzbCAj
MwoJbXZuIHIxMCwgIzUKCWxkciByNiwgW3IxMiwgIzRdCgljbXAgcjYsIHIxMAoJYm5lIC5MX29m
ZmxpbmVhc21fb3BDcmVhdGVBcmd1bWVudHNEb25lCgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5Cgli
bHggc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHMKCW1vdiByOSwgcjAKLkxfb2ZmbGluZWFzbV9v
cENyZWF0ZUFyZ3VtZW50c0RvbmU6CglhZGRzIHI5LCAjOAoJbGRyIHIxMCwgW3I5LCAjMF0KCW1v
diBwYywgcjEwCi5MbGxpbnRfb3BfY3JlYXRlX3RoaXM6CglsZHIgcjAsIFtyOSwgIzhdCglsZHIg
cjAsIFtyNywgcjAsIGxzbCAjM10KCWxkciByMSwgW3IwLCAjMjhdCglsZHIgcjIsIFtyMCwgIzMy
XQoJdHN0IHIxLCByMQoJYmVxIC5MX29mZmxpbmVhc21fb3BDcmVhdGVUaGlzU2xvdwoJbGRyIHIw
LCBbcjEsICMwXQoJdHN0IHIwLCByMAoJYmVxIC5MX29mZmxpbmVhc21fb3BDcmVhdGVUaGlzU2xv
dwoJbGRyIHI0LCBbcjAsICMwXQoJc3RyIHI0LCBbcjEsICMwXQoJbW92IHIxMCwgIzAKCXN0ciBy
MTAsIFtyMCwgIzhdCglzdHIgcjIsIFtyMCwgIzBdCglsZHIgcjQsIFtyMiwgIzEyXQoJc3RyIHI0
LCBbcjAsICM0XQoJbGRyIHIxLCBbcjksICM0XQoJYWRkIHIxMCwgcjcsIHIxLCBsc2wgIzMKCW12
biByNiwgIzQKCXN0ciByNiwgW3IxMCwgIzRdCglzdHIgcjAsIFtyNywgcjEsIGxzbCAjM10KCWFk
ZHMgcjksICMxNgoJbGRyIHIxMCwgW3I5LCAjMF0KCW1vdiBwYywgcjEwCi5MX29mZmxpbmVhc21f
b3BDcmVhdGVUaGlzU2xvdzoKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBzbG93X3BhdGhf
Y3JlYXRlX3RoaXMKCW1vdiByOSwgcjAKCWFkZHMgcjksICMxNgoJbGRyIHIxMCwgW3I5LCAjMF0K
CW1vdiBwYywgcjEwCi5MbGxpbnRfb3BfZ2V0X2NhbGxlZToKCWxkciByMCwgW3I5LCAjNF0KCWxk
ciByMSwgW3I3LCAjMjRdCglsZHIgcjIsIFtyOSwgIzhdCgljbXAgcjEsIHIyCglibmUgLkxfb2Zm
bGluZWFzbV9vcEdldENhbGxlZVNsb3cKCWFkZCByMTAsIHI3LCByMCwgbHNsICMzCgltdm4gcjYs
ICM0CglzdHIgcjYsIFtyMTAsICM0XQoJc3RyIHIxLCBbcjcsIHIwLCBsc2wgIzNdCglhZGRzIHI5
LCAjMTIKCWxkciByMTAsIFtyOSwgIzBdCgltb3YgcGMsIHIxMAouTF9vZmZsaW5lYXNtX29wR2V0
Q2FsbGVlU2xvdzoKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBzbG93X3BhdGhfZ2V0X2Nh
bGxlZQoJbW92IHI5LCByMAoJYWRkcyByOSwgIzEyCglsZHIgcjEwLCBbcjksICMwXQoJbW92IHBj
LCByMTAKLkxsbGludF9vcF90b190aGlzOgoJbGRyIHIwLCBbcjksICM0XQoJYWRkIHIxMCwgcjcs
IHIwLCBsc2wgIzMKCW12biByNiwgIzQKCWxkciByMTIsIFtyMTAsICM0XQoJY21wIHIxMiwgcjYK
CWJuZSAuTF9vZmZsaW5lYXNtX29wVG9UaGlzU2xvdwoJbGRyIHIwLCBbcjcsIHIwLCBsc2wgIzNd
CglsZHJiIHI2LCBbcjAsICM1XQoJY21wIHI2LCAjMTgKCWJuZSAuTF9vZmZsaW5lYXNtX29wVG9U
aGlzU2xvdwoJbGRyIHIyLCBbcjksICM4XQoJbGRyIHI2LCBbcjAsICMwXQoJY21wIHI2LCByMgoJ
Ym5lIC5MX29mZmxpbmVhc21fb3BUb1RoaXNTbG93CglhZGRzIHI5LCAjMTYKCWxkciByNiwgW3I5
LCAjMF0KCW1vdiBwYywgcjYKLkxfb2ZmbGluZWFzbV9vcFRvVGhpc1Nsb3c6Cgltb3YgcjAsIHI3
Cgltb3YgcjEsIHI5CglibHggc2xvd19wYXRoX3RvX3RoaXMKCW1vdiByOSwgcjAKCWFkZHMgcjks
ICMxNgoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTGxsaW50X29wX25ld19vYmplY3Q6
CglsZHIgcjAsIFtyOSwgIzEyXQoJbGRyIHIxLCBbcjAsICMwXQoJbGRyIHIyLCBbcjAsICM0XQoJ
bGRyIHIwLCBbcjEsICMwXQoJdHN0IHIwLCByMAoJYmVxIC5MX29mZmxpbmVhc21fb3BOZXdPYmpl
Y3RTbG93CglsZHIgcjQsIFtyMCwgIzBdCglzdHIgcjQsIFtyMSwgIzBdCgltb3YgcjYsICMwCglz
dHIgcjYsIFtyMCwgIzhdCglzdHIgcjIsIFtyMCwgIzBdCglsZHIgcjQsIFtyMiwgIzEyXQoJc3Ry
IHI0LCBbcjAsICM0XQoJbGRyIHIxLCBbcjksICM0XQoJYWRkIHI2LCByNywgcjEsIGxzbCAjMwoJ
bXZuIHIxMiwgIzQKCXN0ciByMTIsIFtyNiwgIzRdCglzdHIgcjAsIFtyNywgcjEsIGxzbCAjM10K
CWFkZHMgcjksICMxNgoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTF9vZmZsaW5lYXNt
X29wTmV3T2JqZWN0U2xvdzoKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBsbGludF9zbG93
X3BhdGhfbmV3X29iamVjdAoJbW92IHI5LCByMAoJYWRkcyByOSwgIzE2CglsZHIgcjYsIFtyOSwg
IzBdCgltb3YgcGMsIHI2Ci5MbGxpbnRfb3BfbW92OgoJbGRyIHIxLCBbcjksICM4XQoJbGRyIHIw
LCBbcjksICM0XQoJbW92dyByNiwgIzAKCW1vdnQgcjYsICMxNjM4NAoJY21wIHIxLCByNgoJYmdl
IC5MX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQKCWFkZCByNiwg
cjcsIHIxLCBsc2wgIzMKCWxkciByMiwgW3I2LCAjNF0KCWxkciByNCwgW3I3LCByMSwgbHNsICMz
XQoJYiAuTF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUKLkxfb2ZmbGlu
ZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDoKCWxkciByNCwgW3I3LCAjOF0K
CWxkciByNCwgW3I0LCAjMjc2XQoJYWRkIHI2LCByNCwgcjEsIGxzbCAjMwoJbGRyIHIyLCBbcjYs
ICM0XQoJbGRyIHI0LCBbcjQsIHIxLCBsc2wgIzNdCi5MX29mZmxpbmVhc21fbG9hZENvbnN0YW50
T3JWYXJpYWJsZV9fZG9uZToKCWFkZCByNiwgcjcsIHIwLCBsc2wgIzMKCXN0ciByMiwgW3I2LCAj
NF0KCXN0ciByNCwgW3I3LCByMCwgbHNsICMzXQoJYWRkcyByOSwgIzEyCglsZHIgcjYsIFtyOSwg
IzBdCgltb3YgcGMsIHI2Ci5MbGxpbnRfb3BfY2FwdHVyZWRfbW92OgoJbGRyIHIxLCBbcjksICM4
XQoJbW92dyByNiwgIzAKCW1vdnQgcjYsICMxNjM4NAoJY21wIHIxLCByNgoJYmdlIC5MX29mZmxp
bmVhc21fNF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudAoJYWRkIHI2LCByNywgcjEs
IGxzbCAjMwoJbGRyIHIyLCBbcjYsICM0XQoJbGRyIHI0LCBbcjcsIHIxLCBsc2wgIzNdCgliIC5M
X29mZmxpbmVhc21fNF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lCi5MX29mZmxpbmVhc21f
NF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDoKCWxkciByNCwgW3I3LCAjOF0KCWxk
ciByNCwgW3I0LCAjMjc2XQoJYWRkIHI2LCByNCwgcjEsIGxzbCAjMwoJbGRyIHIyLCBbcjYsICM0
XQoJbGRyIHI0LCBbcjQsIHIxLCBsc2wgIzNdCi5MX29mZmxpbmVhc21fNF9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlX19kb25lOgoJbGRyIHIwLCBbcjksICMxMl0KCXRzdCByMCwgcjAKCWJlcSAuTF9v
ZmZsaW5lYXNtX29wQ2FwdHVyZWRNb3ZSZWFkeQoJbGRyYiByMSwgW3IwLCAjNF0KCWNtcCByMSwg
IzIKCWJlcSAuTF9vZmZsaW5lYXNtX25vdGlmeVdyaXRlX19kb25lCglsZHIgcjYsIFtyMCwgIzMy
XQoJY21wIHI0LCByNgoJYm5lIC5MX29mZmxpbmVhc21fb3BDYXB0dXJlZE1vdlNsb3cKCWxkciBy
NiwgW3IwLCAjMzZdCgljbXAgcjIsIHI2CglibmUgLkxfb2ZmbGluZWFzbV9vcENhcHR1cmVkTW92
U2xvdwouTF9vZmZsaW5lYXNtX25vdGlmeVdyaXRlX19kb25lOgouTF9vZmZsaW5lYXNtX29wQ2Fw
dHVyZWRNb3ZSZWFkeToKCWxkciByMCwgW3I5LCAjNF0KCWFkZCByNiwgcjcsIHIwLCBsc2wgIzMK
CXN0ciByMiwgW3I2LCAjNF0KCXN0ciByNCwgW3I3LCByMCwgbHNsICMzXQoJYWRkcyByOSwgIzE2
CglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MX29mZmxpbmVhc21fb3BDYXB0dXJlZE1v
dlNsb3c6Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggc2xvd19wYXRoX2NhcHR1cmVkX21v
dgoJbW92IHI5LCByMAoJYWRkcyByOSwgIzE2CglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2
Ci5MbGxpbnRfb3Bfbm90OgoJbGRyIHIwLCBbcjksICM4XQoJbGRyIHIxLCBbcjksICM0XQoJbW92
dyByNiwgIzAKCW1vdnQgcjYsICMxNjM4NAoJY21wIHIwLCByNgoJYmdlIC5MX29mZmxpbmVhc21f
NV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudAoJYWRkIHI2LCByNywgcjAsIGxzbCAj
MwoJbGRyIHIyLCBbcjYsICM0XQoJbGRyIHI0LCBbcjcsIHIwLCBsc2wgIzNdCgliIC5MX29mZmxp
bmVhc21fNV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lCi5MX29mZmxpbmVhc21fNV9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDoKCWxkciByNCwgW3I3LCAjOF0KCWxkciByNCwg
W3I0LCAjMjc2XQoJYWRkIHI2LCByNCwgcjAsIGxzbCAjMwoJbGRyIHIyLCBbcjYsICM0XQoJbGRy
IHI0LCBbcjQsIHIwLCBsc2wgIzNdCi5MX29mZmxpbmVhc21fNV9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlX19kb25lOgoJbXZuIHI2LCAjMQoJY21wIHIyLCByNgoJYm5lIC5MX29mZmxpbmVhc21fb3BO
b3RTbG93Cgllb3IgcjQsIHI0LCAjMQoJYWRkIHI2LCByNywgcjEsIGxzbCAjMwoJc3RyIHIyLCBb
cjYsICM0XQoJc3RyIHI0LCBbcjcsIHIxLCBsc2wgIzNdCglhZGRzIHI5LCAjMTIKCWxkciByNiwg
W3I5LCAjMF0KCW1vdiBwYywgcjYKLkxfb2ZmbGluZWFzbV9vcE5vdFNsb3c6Cgltb3YgcjAsIHI3
Cgltb3YgcjEsIHI5CglibHggc2xvd19wYXRoX25vdAoJbW92IHI5LCByMAoJYWRkcyByOSwgIzEy
CglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MbGxpbnRfb3BfZXE6CglsZHIgcjIsIFty
OSwgIzEyXQoJbGRyIHIwLCBbcjksICM4XQoJbW92dyByNiwgIzAKCW1vdnQgcjYsICMxNjM4NAoJ
Y21wIHIyLCByNgoJYmdlIC5MX29mZmxpbmVhc21fNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19j
b25zdGFudAoJYWRkIHI2LCByNywgcjIsIGxzbCAjMwoJbGRyIHI0LCBbcjYsICM0XQoJbGRyIHIx
LCBbcjcsIHIyLCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fNl9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlX19kb25lCi5MX29mZmxpbmVhc21fNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFu
dDoKCWxkciByMSwgW3I3LCAjOF0KCWxkciByMSwgW3IxLCAjMjc2XQoJYWRkIHI2LCByMSwgcjIs
IGxzbCAjMwoJbGRyIHI0LCBbcjYsICM0XQoJbGRyIHIxLCBbcjEsIHIyLCBsc2wgIzNdCi5MX29m
ZmxpbmVhc21fNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOgoJbW92dyByNiwgIzAKCW1v
dnQgcjYsICMxNjM4NAoJY21wIHIwLCByNgoJYmdlIC5MX29mZmxpbmVhc21fbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50CglhZGQgcjYsIHI3LCByMCwgbHNsICMzCglsZHIgcjIs
IFtyNiwgIzRdCglsZHIgcjAsIFtyNywgcjAsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFzbV9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZQouTF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9y
VmFyaWFibGUyUmVnX19jb25zdGFudDoKCWxkciByMiwgW3I3LCAjOF0KCWxkciByMiwgW3IyLCAj
Mjc2XQoJbHNscyByMCwgcjAsICMzCglhZGQgcjIsIHIwCglsZHIgcjAsIFtyMiwgIzBdCglsZHIg
cjIsIFtyMiwgIzRdCi5MX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2Rv
bmU6CgljbXAgcjIsIHI0CglibmUgLkxfb2ZmbGluZWFzbV9vcEVxU2xvdwoJbXZuIHI2LCAjNAoJ
Y21wIHIyLCByNgoJYmVxIC5MX29mZmxpbmVhc21fb3BFcVNsb3cKCW12biByNiwgIzYKCWNtcCBy
MiwgcjYKCWJsbyAuTF9vZmZsaW5lYXNtX29wRXFTbG93CglsZHIgcjIsIFtyOSwgIzRdCgltb3Yg
cjYsIHIwCgltb3ZzIHIwLCAjMAoJY21wIHI2LCByMQoJaXQgZXEKCW1vdmVxIHIwLCAjMQoJYWRk
IHI2LCByNywgcjIsIGxzbCAjMwoJbXZuIHIxMiwgIzEKCXN0ciByMTIsIFtyNiwgIzRdCglzdHIg
cjAsIFtyNywgcjIsIGxzbCAjM10KCWFkZHMgcjksICMxNgoJbGRyIHI2LCBbcjksICMwXQoJbW92
IHBjLCByNgouTF9vZmZsaW5lYXNtX29wRXFTbG93OgoJbW92IHIwLCByNwoJbW92IHIxLCByOQoJ
Ymx4IHNsb3dfcGF0aF9lcQoJbW92IHI5LCByMAoJYWRkcyByOSwgIzE2CglsZHIgcjYsIFtyOSwg
IzBdCgltb3YgcGMsIHI2Ci5MbGxpbnRfb3BfZXFfbnVsbDoKCWxkciByMCwgW3I5LCAjOF0KCWxk
ciByNCwgW3I5LCAjNF0KCWFkZCByNiwgcjcsIHIwLCBsc2wgIzMKCWxkciByMSwgW3I2LCAjNF0K
CWxkciByMCwgW3I3LCByMCwgbHNsICMzXQoJbXZuIHI2LCAjNAoJY21wIHIxLCByNgoJYm5lIC5M
X29mZmxpbmVhc21fb3BFcU51bGxJbW1lZGlhdGUKCWxkcmIgcjYsIFtyMCwgIzZdCgl0c3QgcjYs
ICMxCglibmUgLkxfb2ZmbGluZWFzbV9vcEVxTnVsbE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKCW1v
diByMSwgIzAKCWIgLkxfb2ZmbGluZWFzbV9vcEVxTnVsbE5vdEltbWVkaWF0ZQouTF9vZmZsaW5l
YXNtX29wRXFOdWxsTWFzcXVlcmFkZXNBc1VuZGVmaW5lZDoKCWxkciByMSwgW3IwLCAjMF0KCWxk
ciByMCwgW3I3LCAjOF0KCWxkciByMCwgW3IwLCAjMjBdCglsZHIgcjYsIFtyMSwgIzIwXQoJbW92
cyByMSwgIzAKCWNtcCByNiwgcjAKCWl0IGVxCgltb3ZlcSByMSwgIzEKCWIgLkxfb2ZmbGluZWFz
bV9vcEVxTnVsbE5vdEltbWVkaWF0ZQouTF9vZmZsaW5lYXNtX29wRXFOdWxsSW1tZWRpYXRlOgoJ
bXZuIHI2LCAjMgoJbW92cyByMiwgIzAKCWNtcCByMSwgcjYKCWl0IGVxCgltb3ZlcSByMiwgIzEK
CW12biByNiwgIzMKCW1vdiByMTIsIHIxCgltb3ZzIHIxLCAjMAoJY21wIHIxMiwgcjYKCWl0IGVx
Cgltb3ZlcSByMSwgIzEKCW9ycnMgcjEsIHIyCi5MX29mZmxpbmVhc21fb3BFcU51bGxOb3RJbW1l
ZGlhdGU6CglhZGQgcjYsIHI3LCByNCwgbHNsICMzCgltdm4gcjEyLCAjMQoJc3RyIHIxMiwgW3I2
LCAjNF0KCXN0ciByMSwgW3I3LCByNCwgbHNsICMzXQoJYWRkcyByOSwgIzEyCglsZHIgcjYsIFty
OSwgIzBdCgltb3YgcGMsIHI2Ci5MbGxpbnRfb3BfbmVxOgoJbGRyIHIyLCBbcjksICMxMl0KCWxk
ciByMCwgW3I5LCAjOF0KCW1vdncgcjYsICMwCgltb3Z0IHI2LCAjMTYzODQKCWNtcCByMiwgcjYK
CWJnZSAuTF9vZmZsaW5lYXNtXzdfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQKCWFk
ZCByNiwgcjcsIHIyLCBsc2wgIzMKCWxkciByNCwgW3I2LCAjNF0KCWxkciByMSwgW3I3LCByMiwg
bHNsICMzXQoJYiAuTF9vZmZsaW5lYXNtXzdfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZQou
TF9vZmZsaW5lYXNtXzdfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ6CglsZHIgcjEs
IFtyNywgIzhdCglsZHIgcjEsIFtyMSwgIzI3Nl0KCWFkZCByNiwgcjEsIHIyLCBsc2wgIzMKCWxk
ciByNCwgW3I2LCAjNF0KCWxkciByMSwgW3IxLCByMiwgbHNsICMzXQouTF9vZmZsaW5lYXNtXzdf
bG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZToKCW1vdncgcjYsICMwCgltb3Z0IHI2LCAjMTYz
ODQKCWNtcCByMCwgcjYKCWJnZSAuTF9vZmZsaW5lYXNtXzdfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWdfX2NvbnN0YW50CglhZGQgcjYsIHI3LCByMCwgbHNsICMzCglsZHIgcjIsIFtyNiwgIzRd
CglsZHIgcjAsIFtyNywgcjAsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFzbV83X2xvYWRDb25zdGFu
dE9yVmFyaWFibGUyUmVnX19kb25lCi5MX29mZmxpbmVhc21fN19sb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZ19fY29uc3RhbnQ6CglsZHIgcjIsIFtyNywgIzhdCglsZHIgcjIsIFtyMiwgIzI3Nl0K
CWxzbHMgcjAsIHIwLCAjMwoJYWRkIHIyLCByMAoJbGRyIHIwLCBbcjIsICMwXQoJbGRyIHIyLCBb
cjIsICM0XQouTF9vZmZsaW5lYXNtXzdfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmU6
CgljbXAgcjIsIHI0CglibmUgLkxfb2ZmbGluZWFzbV9vcE5lcVNsb3cKCW12biByNiwgIzQKCWNt
cCByMiwgcjYKCWJlcSAuTF9vZmZsaW5lYXNtX29wTmVxU2xvdwoJbXZuIHI2LCAjNgoJY21wIHIy
LCByNgoJYmxvIC5MX29mZmxpbmVhc21fb3BOZXFTbG93CglsZHIgcjIsIFtyOSwgIzRdCgltb3Yg
cjYsIHIwCgltb3ZzIHIwLCAjMAoJY21wIHI2LCByMQoJaXQgbmUKCW1vdm5lIHIwLCAjMQoJYWRk
IHI2LCByNywgcjIsIGxzbCAjMwoJbXZuIHIxMiwgIzEKCXN0ciByMTIsIFtyNiwgIzRdCglzdHIg
cjAsIFtyNywgcjIsIGxzbCAjM10KCWFkZHMgcjksICMxNgoJbGRyIHI2LCBbcjksICMwXQoJbW92
IHBjLCByNgouTF9vZmZsaW5lYXNtX29wTmVxU2xvdzoKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkK
CWJseCBzbG93X3BhdGhfbmVxCgltb3YgcjksIHIwCglhZGRzIHI5LCAjMTYKCWxkciByNiwgW3I5
LCAjMF0KCW1vdiBwYywgcjYKLkxsbGludF9vcF9uZXFfbnVsbDoKCWxkciByMCwgW3I5LCAjOF0K
CWxkciByNCwgW3I5LCAjNF0KCWFkZCByNiwgcjcsIHIwLCBsc2wgIzMKCWxkciByMSwgW3I2LCAj
NF0KCWxkciByMCwgW3I3LCByMCwgbHNsICMzXQoJbXZuIHI2LCAjNAoJY21wIHIxLCByNgoJYm5l
IC5MX29mZmxpbmVhc21fb3BOZXFOdWxsSW1tZWRpYXRlCglsZHJiIHI2LCBbcjAsICM2XQoJdHN0
IHI2LCAjMQoJYm5lIC5MX29mZmxpbmVhc21fb3BOZXFOdWxsTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZAoJbW92IHIxLCAjMQoJYiAuTF9vZmZsaW5lYXNtX29wTmVxTnVsbE5vdEltbWVkaWF0ZQouTF9v
ZmZsaW5lYXNtX29wTmVxTnVsbE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ6CglsZHIgcjEsIFtyMCwg
IzBdCglsZHIgcjAsIFtyNywgIzhdCglsZHIgcjAsIFtyMCwgIzIwXQoJbGRyIHI2LCBbcjEsICMy
MF0KCW1vdnMgcjEsICMwCgljbXAgcjYsIHIwCglpdCBuZQoJbW92bmUgcjEsICMxCgliIC5MX29m
ZmxpbmVhc21fb3BOZXFOdWxsTm90SW1tZWRpYXRlCi5MX29mZmxpbmVhc21fb3BOZXFOdWxsSW1t
ZWRpYXRlOgoJbXZuIHI2LCAjMgoJbW92cyByMiwgIzAKCWNtcCByMSwgcjYKCWl0IG5lCgltb3Zu
ZSByMiwgIzEKCW12biByNiwgIzMKCW1vdiByMTIsIHIxCgltb3ZzIHIxLCAjMAoJY21wIHIxMiwg
cjYKCWl0IG5lCgltb3ZuZSByMSwgIzEKCWFuZHMgcjEsIHIyCi5MX29mZmxpbmVhc21fb3BOZXFO
dWxsTm90SW1tZWRpYXRlOgoJYWRkIHI2LCByNywgcjQsIGxzbCAjMwoJbXZuIHIxMiwgIzEKCXN0
ciByMTIsIFtyNiwgIzRdCglzdHIgcjEsIFtyNywgcjQsIGxzbCAjM10KCWFkZHMgcjksICMxMgoJ
bGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTGxsaW50X29wX3N0cmljdGVxOgoJbGRyIHIy
LCBbcjksICMxMl0KCWxkciByMCwgW3I5LCAjOF0KCW1vdncgcjYsICMwCgltb3Z0IHI2LCAjMTYz
ODQKCWNtcCByMiwgcjYKCWJnZSAuTF9vZmZsaW5lYXNtX3N0cmljdEVxX184X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2NvbnN0YW50CglhZGQgcjYsIHI3LCByMiwgbHNsICMzCglsZHIgcjQsIFty
NiwgIzRdCglsZHIgcjEsIFtyNywgcjIsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFzbV9zdHJpY3RF
cV9fOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lCi5MX29mZmxpbmVhc21fc3RyaWN0RXFf
XzhfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ6CglsZHIgcjEsIFtyNywgIzhdCgls
ZHIgcjEsIFtyMSwgIzI3Nl0KCWFkZCByNiwgcjEsIHIyLCBsc2wgIzMKCWxkciByNCwgW3I2LCAj
NF0KCWxkciByMSwgW3IxLCByMiwgbHNsICMzXQouTF9vZmZsaW5lYXNtX3N0cmljdEVxX184X2xv
YWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU6Cgltb3Z3IHI2LCAjMAoJbW92dCByNiwgIzE2Mzg0
CgljbXAgcjAsIHI2CgliZ2UgLkxfb2ZmbGluZWFzbV9zdHJpY3RFcV9fOF9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZ19fY29uc3RhbnQKCWFkZCByNiwgcjcsIHIwLCBsc2wgIzMKCWxkciByMiwg
W3I2LCAjNF0KCWxkciByMCwgW3I3LCByMCwgbHNsICMzXQoJYiAuTF9vZmZsaW5lYXNtX3N0cmlj
dEVxX184X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lCi5MX29mZmxpbmVhc21fc3Ry
aWN0RXFfXzhfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50OgoJbGRyIHIyLCBb
cjcsICM4XQoJbGRyIHIyLCBbcjIsICMyNzZdCglsc2xzIHIwLCByMCwgIzMKCWFkZCByMiwgcjAK
CWxkciByMCwgW3IyLCAjMF0KCWxkciByMiwgW3IyLCAjNF0KLkxfb2ZmbGluZWFzbV9zdHJpY3RF
cV9fOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZToKCWNtcCByMiwgcjQKCWJuZSAu
TF9vZmZsaW5lYXNtX3N0cmljdEVxX19zbG93Cgltdm4gcjYsICM2CgljbXAgcjIsIHI2CglibG8g
Lkxfb2ZmbGluZWFzbV9zdHJpY3RFcV9fc2xvdwoJbXZuIHI2LCAjNAoJY21wIHIyLCByNgoJYm5l
IC5MX29mZmxpbmVhc21fc3RyaWN0RXFfX25vdFN0cmluZwoJbGRyYiByNiwgW3IwLCAjNV0KCWNt
cCByNiwgIzYKCWJuZSAuTF9vZmZsaW5lYXNtX3N0cmljdEVxX19ub3RTdHJpbmcKCWxkcmIgcjYs
IFtyMSwgIzVdCgljbXAgcjYsICM2CgliZXEgLkxfb2ZmbGluZWFzbV9zdHJpY3RFcV9fc2xvdwou
TF9vZmZsaW5lYXNtX3N0cmljdEVxX19ub3RTdHJpbmc6CglsZHIgcjIsIFtyOSwgIzRdCgltb3Yg
cjYsIHIwCgltb3ZzIHIwLCAjMAoJY21wIHI2LCByMQoJaXQgZXEKCW1vdmVxIHIwLCAjMQoJYWRk
IHI2LCByNywgcjIsIGxzbCAjMwoJbXZuIHIxMiwgIzEKCXN0ciByMTIsIFtyNiwgIzRdCglzdHIg
cjAsIFtyNywgcjIsIGxzbCAjM10KCWFkZHMgcjksICMxNgoJbGRyIHI2LCBbcjksICMwXQoJbW92
IHBjLCByNgouTF9vZmZsaW5lYXNtX3N0cmljdEVxX19zbG93OgoJbW92IHIwLCByNwoJbW92IHIx
LCByOQoJYmx4IHNsb3dfcGF0aF9zdHJpY3RlcQoJbW92IHI5LCByMAoJYWRkcyByOSwgIzE2Cgls
ZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MbGxpbnRfb3BfbnN0cmljdGVxOgoJbGRyIHIy
LCBbcjksICMxMl0KCWxkciByMCwgW3I5LCAjOF0KCW1vdncgcjYsICMwCgltb3Z0IHI2LCAjMTYz
ODQKCWNtcCByMiwgcjYKCWJnZSAuTF9vZmZsaW5lYXNtX3N0cmljdEVxX185X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2NvbnN0YW50CglhZGQgcjYsIHI3LCByMiwgbHNsICMzCglsZHIgcjQsIFty
NiwgIzRdCglsZHIgcjEsIFtyNywgcjIsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFzbV9zdHJpY3RF
cV9fOV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lCi5MX29mZmxpbmVhc21fc3RyaWN0RXFf
XzlfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ6CglsZHIgcjEsIFtyNywgIzhdCgls
ZHIgcjEsIFtyMSwgIzI3Nl0KCWFkZCByNiwgcjEsIHIyLCBsc2wgIzMKCWxkciByNCwgW3I2LCAj
NF0KCWxkciByMSwgW3IxLCByMiwgbHNsICMzXQouTF9vZmZsaW5lYXNtX3N0cmljdEVxX185X2xv
YWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU6Cgltb3Z3IHI2LCAjMAoJbW92dCByNiwgIzE2Mzg0
CgljbXAgcjAsIHI2CgliZ2UgLkxfb2ZmbGluZWFzbV9zdHJpY3RFcV9fOV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZ19fY29uc3RhbnQKCWFkZCByNiwgcjcsIHIwLCBsc2wgIzMKCWxkciByMiwg
W3I2LCAjNF0KCWxkciByMCwgW3I3LCByMCwgbHNsICMzXQoJYiAuTF9vZmZsaW5lYXNtX3N0cmlj
dEVxX185X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lCi5MX29mZmxpbmVhc21fc3Ry
aWN0RXFfXzlfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50OgoJbGRyIHIyLCBb
cjcsICM4XQoJbGRyIHIyLCBbcjIsICMyNzZdCglsc2xzIHIwLCByMCwgIzMKCWFkZCByMiwgcjAK
CWxkciByMCwgW3IyLCAjMF0KCWxkciByMiwgW3IyLCAjNF0KLkxfb2ZmbGluZWFzbV9zdHJpY3RF
cV9fOV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZToKCWNtcCByMiwgcjQKCWJuZSAu
TF9vZmZsaW5lYXNtXzlfc3RyaWN0RXFfX3Nsb3cKCW12biByNiwgIzYKCWNtcCByMiwgcjYKCWJs
byAuTF9vZmZsaW5lYXNtXzlfc3RyaWN0RXFfX3Nsb3cKCW12biByNiwgIzQKCWNtcCByMiwgcjYK
CWJuZSAuTF9vZmZsaW5lYXNtXzlfc3RyaWN0RXFfX25vdFN0cmluZwoJbGRyYiByNiwgW3IwLCAj
NV0KCWNtcCByNiwgIzYKCWJuZSAuTF9vZmZsaW5lYXNtXzlfc3RyaWN0RXFfX25vdFN0cmluZwoJ
bGRyYiByNiwgW3IxLCAjNV0KCWNtcCByNiwgIzYKCWJlcSAuTF9vZmZsaW5lYXNtXzlfc3RyaWN0
RXFfX3Nsb3cKLkxfb2ZmbGluZWFzbV85X3N0cmljdEVxX19ub3RTdHJpbmc6CglsZHIgcjIsIFty
OSwgIzRdCgltb3YgcjYsIHIwCgltb3ZzIHIwLCAjMAoJY21wIHI2LCByMQoJaXQgbmUKCW1vdm5l
IHIwLCAjMQoJYWRkIHI2LCByNywgcjIsIGxzbCAjMwoJbXZuIHIxMiwgIzEKCXN0ciByMTIsIFty
NiwgIzRdCglzdHIgcjAsIFtyNywgcjIsIGxzbCAjM10KCWFkZHMgcjksICMxNgoJbGRyIHI2LCBb
cjksICMwXQoJbW92IHBjLCByNgouTF9vZmZsaW5lYXNtXzlfc3RyaWN0RXFfX3Nsb3c6Cgltb3Yg
cjAsIHI3Cgltb3YgcjEsIHI5CglibHggc2xvd19wYXRoX25zdHJpY3RlcQoJbW92IHI5LCByMAoJ
YWRkcyByOSwgIzE2CglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MbGxpbnRfb3BfaW5j
OgoJbGRyIHIwLCBbcjksICM0XQoJYWRkIHI2LCByNywgcjAsIGxzbCAjMwoJbXZuIHIxMiwgIzAK
CWxkciByMTAsIFtyNiwgIzRdCgljbXAgcjEwLCByMTIKCWJuZSAuTF9vZmZsaW5lYXNtX29wSW5j
U2xvdwoJbGRyIHIxLCBbcjcsIHIwLCBsc2wgIzNdCglhZGRzIHIxLCAjMQoJYnZzIC5MX29mZmxp
bmVhc21fb3BJbmNTbG93CglzdHIgcjEsIFtyNywgcjAsIGxzbCAjM10KCWFkZHMgcjksICM4Cgls
ZHIgcjEyLCBbcjksICMwXQoJbW92IHBjLCByMTIKLkxfb2ZmbGluZWFzbV9vcEluY1Nsb3c6Cglt
b3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggc2xvd19wYXRoX2luYwoJbW92IHI5LCByMAoJYWRk
cyByOSwgIzgKCWxkciByMTIsIFtyOSwgIzBdCgltb3YgcGMsIHIxMgouTGxsaW50X29wX2RlYzoK
CWxkciByMCwgW3I5LCAjNF0KCWFkZCByMTIsIHI3LCByMCwgbHNsICMzCgltdm4gcjEwLCAjMAoJ
bGRyIHI2LCBbcjEyLCAjNF0KCWNtcCByNiwgcjEwCglibmUgLkxfb2ZmbGluZWFzbV9vcERlY1Ns
b3cKCWxkciByMSwgW3I3LCByMCwgbHNsICMzXQoJc3VicyByMSwgcjEsICMxCglidnMgLkxfb2Zm
bGluZWFzbV9vcERlY1Nsb3cKCXN0ciByMSwgW3I3LCByMCwgbHNsICMzXQoJYWRkcyByOSwgIzgK
CWxkciByMTAsIFtyOSwgIzBdCgltb3YgcGMsIHIxMAouTF9vZmZsaW5lYXNtX29wRGVjU2xvdzoK
CW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBzbG93X3BhdGhfZGVjCgltb3YgcjksIHIwCglh
ZGRzIHI5LCAjOAoJbGRyIHIxMCwgW3I5LCAjMF0KCW1vdiBwYywgcjEwCi5MbGxpbnRfb3BfdG9f
bnVtYmVyOgoJbGRyIHIwLCBbcjksICM4XQoJbGRyIHIxLCBbcjksICM0XQoJbW92dyByMTAsICMw
Cgltb3Z0IHIxMCwgIzE2Mzg0CgljbXAgcjAsIHIxMAoJYmdlIC5MX29mZmxpbmVhc21fMTBfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQKCWFkZCByMTAsIHI3LCByMCwgbHNsICMzCgls
ZHIgcjIsIFtyMTAsICM0XQoJbGRyIHI0LCBbcjcsIHIwLCBsc2wgIzNdCgliIC5MX29mZmxpbmVh
c21fMTBfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZQouTF9vZmZsaW5lYXNtXzEwX2xvYWRD
b25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50OgoJbGRyIHI0LCBbcjcsICM4XQoJbGRyIHI0LCBb
cjQsICMyNzZdCglhZGQgcjEwLCByNCwgcjAsIGxzbCAjMwoJbGRyIHIyLCBbcjEwLCAjNF0KCWxk
ciByNCwgW3I0LCByMCwgbHNsICMzXQouTF9vZmZsaW5lYXNtXzEwX2xvYWRDb25zdGFudE9yVmFy
aWFibGVfX2RvbmU6Cgltdm4gcjEwLCAjMAoJY21wIHIyLCByMTAKCWJlcSAuTF9vZmZsaW5lYXNt
X29wVG9OdW1iZXJJc0ludAoJbXZuIHIxMCwgIzYKCWNtcCByMiwgcjEwCgliaHMgLkxfb2ZmbGlu
ZWFzbV9vcFRvTnVtYmVyU2xvdwouTF9vZmZsaW5lYXNtX29wVG9OdW1iZXJJc0ludDoKCWFkZCBy
MTAsIHI3LCByMSwgbHNsICMzCglzdHIgcjIsIFtyMTAsICM0XQoJc3RyIHI0LCBbcjcsIHIxLCBs
c2wgIzNdCglhZGRzIHI5LCAjMTIKCWxkciByMTAsIFtyOSwgIzBdCgltb3YgcGMsIHIxMAouTF9v
ZmZsaW5lYXNtX29wVG9OdW1iZXJTbG93OgoJbW92IHIwLCByNwoJbW92IHIxLCByOQoJYmx4IHNs
b3dfcGF0aF90b19udW1iZXIKCW1vdiByOSwgcjAKCWFkZHMgcjksICMxMgoJbGRyIHIxMCwgW3I5
LCAjMF0KCW1vdiBwYywgcjEwCi5MbGxpbnRfb3BfbmVnYXRlOgoJbGRyIHIwLCBbcjksICM4XQoJ
bGRyIHI0LCBbcjksICM0XQoJbW92dyByMTAsICMwCgltb3Z0IHIxMCwgIzE2Mzg0CgljbXAgcjAs
IHIxMAoJYmdlIC5MX29mZmxpbmVhc21fMTFfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3Rh
bnQKCWFkZCByMTAsIHI3LCByMCwgbHNsICMzCglsZHIgcjEsIFtyMTAsICM0XQoJbGRyIHIyLCBb
cjcsIHIwLCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fMTFfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZV9fZG9uZQouTF9vZmZsaW5lYXNtXzExX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50
OgoJbGRyIHIyLCBbcjcsICM4XQoJbGRyIHIyLCBbcjIsICMyNzZdCglhZGQgcjEwLCByMiwgcjAs
IGxzbCAjMwoJbGRyIHIxLCBbcjEwLCAjNF0KCWxkciByMiwgW3IyLCByMCwgbHNsICMzXQouTF9v
ZmZsaW5lYXNtXzExX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU6Cgltdm4gcjEwLCAjMAoJ
Y21wIHIxLCByMTAKCWJuZSAuTF9vZmZsaW5lYXNtX29wTmVnYXRlU3JjTm90SW50Cgltb3Z3IHIx
MCwgIzY1NTM1Cgltb3Z0IHIxMCwgIzMyNzY3Cgl0c3QgcjIsIHIxMAoJYmVxIC5MX29mZmxpbmVh
c21fb3BOZWdhdGVTbG93Cglyc2JzIHIyLCByMiwgIzAKCWFkZCByMTAsIHI3LCByNCwgbHNsICMz
Cgltdm4gcjYsICMwCglzdHIgcjYsIFtyMTAsICM0XQoJc3RyIHIyLCBbcjcsIHI0LCBsc2wgIzNd
CglhZGRzIHI5LCAjMTIKCWxkciByMTAsIFtyOSwgIzBdCgltb3YgcGMsIHIxMAouTF9vZmZsaW5l
YXNtX29wTmVnYXRlU3JjTm90SW50OgoJbXZuIHIxMCwgIzYKCWNtcCByMSwgcjEwCgliaGkgLkxf
b2ZmbGluZWFzbV9vcE5lZ2F0ZVNsb3cKCW1vdncgcjEwLCAjMAoJbW92dCByMTAsICMzMjc2OAoJ
ZW9ycyByMSwgcjEwCglhZGQgcjEwLCByNywgcjQsIGxzbCAjMwoJc3RyIHIxLCBbcjEwLCAjNF0K
CXN0ciByMiwgW3I3LCByNCwgbHNsICMzXQoJYWRkcyByOSwgIzEyCglsZHIgcjEwLCBbcjksICMw
XQoJbW92IHBjLCByMTAKLkxfb2ZmbGluZWFzbV9vcE5lZ2F0ZVNsb3c6Cgltb3YgcjAsIHI3Cglt
b3YgcjEsIHI5CglibHggc2xvd19wYXRoX25lZ2F0ZQoJbW92IHI5LCByMAoJYWRkcyByOSwgIzEy
CglsZHIgcjEwLCBbcjksICMwXQoJbW92IHBjLCByMTAKLkxsbGludF9vcF9hZGQ6CglsZHIgcjIs
IFtyOSwgIzEyXQoJbGRyIHIwLCBbcjksICM4XQoJbW92dyByMTAsICMwCgltb3Z0IHIxMCwgIzE2
Mzg0CgljbXAgcjIsIHIxMAoJYmdlIC5MX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3Vz
dG9tU3RvcmVfXzEyX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50CglhZGQgcjEwLCBy
NywgcjIsIGxzbCAjMwoJbGRyIHI0LCBbcjEwLCAjNF0KCWxkciByMSwgW3I3LCByMiwgbHNsICMz
XQoJYiAuTF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX18xMl9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlX19kb25lCi5MX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9w
Q3VzdG9tU3RvcmVfXzEyX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50OgoJbGRyIHIx
LCBbcjcsICM4XQoJbGRyIHIxLCBbcjEsICMyNzZdCglhZGQgcjEwLCByMSwgcjIsIGxzbCAjMwoJ
bGRyIHI0LCBbcjEwLCAjNF0KCWxkciByMSwgW3IxLCByMiwgbHNsICMzXQouTF9vZmZsaW5lYXNt
X2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX18xMl9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
X19kb25lOgoJbW92dyByMTAsICMwCgltb3Z0IHIxMCwgIzE2Mzg0CgljbXAgcjAsIHIxMAoJYmdl
IC5MX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzEyX2xvYWRDb25z
dGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudAoJYWRkIHIxMCwgcjcsIHIwLCBsc2wgIzMKCWxk
ciByMiwgW3IxMCwgIzRdCglsZHIgcjAsIFtyNywgcjAsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFz
bV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTJfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWdfX2RvbmUKLkxfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9f
MTJfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50OgoJbGRyIHIyLCBbcjcsICM4
XQoJbGRyIHIyLCBbcjIsICMyNzZdCglsc2xzIHIwLCByMCwgIzMKCWFkZCByMiwgcjAKCWxkciBy
MCwgW3IyLCAjMF0KCWxkciByMiwgW3IyLCAjNF0KLkxfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmlu
YXJ5T3BDdXN0b21TdG9yZV9fMTJfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmU6Cglt
dm4gcjEwLCAjMAoJY21wIHIyLCByMTAKCWJuZSAuTF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5h
cnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnQKCW12biByMTAsICMwCgljbXAgcjQsIHIxMAoJYm5l
IC5MX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMk5vdEludAoJ
bGRyIHIyLCBbcjksICM0XQoJYWRkcyByMCwgcjEKCWJ2cyAuTF9vZmZsaW5lYXNtX2JpbmFyeU9w
X19iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93CglhZGQgcjEwLCByNywgcjIsIGxzbCAjMwoJc3Ry
IHI0LCBbcjEwLCAjNF0KCXN0ciByMCwgW3I3LCByMiwgbHNsICMzXQoJYWRkcyByOSwgIzIwCgls
ZHIgcjEwLCBbcjksICMwXQoJbW92IHBjLCByMTAKLkxfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmlu
YXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50OgoJbXZuIHIxMCwgIzYKCWNtcCByMiwgcjEwCgli
aGkgLkxfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdwoJbXZu
IHIxMCwgIzYKCWNtcCByNCwgcjEwCglibG8gLkxfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5
T3BDdXN0b21TdG9yZV9fb3AxTm90SW50T3AyRG91YmxlCgltdm4gcjEwLCAjMAoJY21wIHI0LCBy
MTAKCWJuZSAuTF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93
Cgl2bW92IHMyLCByMQoJdmN2dC5mNjQuczMyIGQxLCBzMgoJYiAuTF9vZmZsaW5lYXNtX2JpbmFy
eU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnRSZWFkeQouTF9vZmZsaW5lYXNtX2Jp
bmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnRPcDJEb3VibGU6Cgl2bW92IGQx
LCByMSwgcjQKLkxfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fb3Ax
Tm90SW50UmVhZHk6CglsZHIgcjEsIFtyOSwgIzRdCgl2bW92IGQwLCByMCwgcjIKCXZhZGQuZjY0
IGQwLCBkMCwgZDEKCWFkZCByMTAsIHI3LCByMSwgbHNsICMzCgl2c3RyLjY0IGQwLCBbcjEwLCAj
MF0KCWFkZHMgcjksICMyMAoJbGRyIHIxMCwgW3I5LCAjMF0KCW1vdiBwYywgcjEwCi5MX29mZmxp
bmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMk5vdEludDoKCWxkciByMiwg
W3I5LCAjNF0KCW12biByMTAsICM2CgljbXAgcjQsIHIxMAoJYmhpIC5MX29mZmxpbmVhc21fYmlu
YXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX3Nsb3cKCXZtb3YgczAsIHIwCgl2Y3Z0LmY2NC5z
MzIgZDAsIHMwCgl2bW92IGQxLCByMSwgcjQKCXZhZGQuZjY0IGQwLCBkMCwgZDEKCWFkZCByMTAs
IHI3LCByMiwgbHNsICMzCgl2c3RyLjY0IGQwLCBbcjEwLCAjMF0KCWFkZHMgcjksICMyMAoJbGRy
IHIxMCwgW3I5LCAjMF0KCW1vdiBwYywgcjEwCi5MX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFy
eU9wQ3VzdG9tU3RvcmVfX3Nsb3c6Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggc2xvd19w
YXRoX2FkZAoJbW92IHI5LCByMAoJYWRkcyByOSwgIzIwCglsZHIgcjEwLCBbcjksICMwXQoJbW92
IHBjLCByMTAKLkxsbGludF9vcF9tdWw6CglsZHIgcjIsIFtyOSwgIzEyXQoJbGRyIHIwLCBbcjks
ICM4XQoJbW92dyByMTAsICMwCgltb3Z0IHIxMCwgIzE2Mzg0CgljbXAgcjIsIHIxMAoJYmdlIC5M
X29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTNfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZV9fY29uc3RhbnQKCWFkZCByMTAsIHI3LCByMiwgbHNsICMzCglsZHIgcjQsIFtyMTAsICM0XQoJ
bGRyIHIxLCBbcjcsIHIyLCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21T
dG9yZV9fMTNfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZQouTF9vZmZsaW5lYXNtX2JpbmFy
eU9wQ3VzdG9tU3RvcmVfXzEzX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50OgoJbGRy
IHIxLCBbcjcsICM4XQoJbGRyIHIxLCBbcjEsICMyNzZdCglhZGQgcjEwLCByMSwgcjIsIGxzbCAj
MwoJbGRyIHI0LCBbcjEwLCAjNF0KCWxkciByMSwgW3IxLCByMiwgbHNsICMzXQouTF9vZmZsaW5l
YXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzEzX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU6
Cgltb3Z3IHIxMCwgIzAKCW1vdnQgcjEwLCAjMTYzODQKCWNtcCByMCwgcjEwCgliZ2UgLkxfb2Zm
bGluZWFzbV9iaW5hcnlPcEN1c3RvbVN0b3JlX18xM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
Z19fY29uc3RhbnQKCWFkZCByMTAsIHI3LCByMCwgbHNsICMzCglsZHIgcjIsIFtyMTAsICM0XQoJ
bGRyIHIwLCBbcjcsIHIwLCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21T
dG9yZV9fMTNfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUKLkxfb2ZmbGluZWFzbV9i
aW5hcnlPcEN1c3RvbVN0b3JlX18xM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3Rh
bnQ6CglsZHIgcjIsIFtyNywgIzhdCglsZHIgcjIsIFtyMiwgIzI3Nl0KCWxzbHMgcjAsIHIwLCAj
MwoJYWRkIHIyLCByMAoJbGRyIHIwLCBbcjIsICMwXQoJbGRyIHIyLCBbcjIsICM0XQouTF9vZmZs
aW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzEzX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVn
X19kb25lOgoJbXZuIHIxMCwgIzAKCWNtcCByMiwgcjEwCglibmUgLkxfb2ZmbGluZWFzbV8xM19i
aW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnQKCW12biByMTAsICMwCgljbXAgcjQsIHIxMAoJ
Ym5lIC5MX29mZmxpbmVhc21fMTNfYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AyTm90SW50CglsZHIg
cjIsIFtyOSwgIzRdCgltb3YgcjQsIHIwCglzbXVsbCByNCwgcjEwLCByMSwgcjQKCWFzcnMgcjYs
IHI0LCAjMzEKCWNtcCByMTAsIHI2CglibmUgLkxfb2ZmbGluZWFzbV8xM19iaW5hcnlPcEN1c3Rv
bVN0b3JlX19zbG93Cgl0c3QgcjQsIHI0CglibmUgLkxfb2ZmbGluZWFzbV9iaW5hcnlPcEN1c3Rv
bVN0b3JlX19pbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmVfX2RvbmUKCWNtcCByMSwgIzAKCWJsdCAu
TF9vZmZsaW5lYXNtXzEzX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX3Nsb3cKCWNtcCByMCwgIzAKCWJs
dCAuTF9vZmZsaW5lYXNtXzEzX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX3Nsb3cKLkxfb2ZmbGluZWFz
bV9iaW5hcnlPcEN1c3RvbVN0b3JlX19pbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmVfX2RvbmU6Cglh
ZGQgcjYsIHI3LCByMiwgbHNsICMzCgltdm4gcjEwLCAjMAoJc3RyIHIxMCwgW3I2LCAjNF0KCXN0
ciByNCwgW3I3LCByMiwgbHNsICMzXQoJYWRkcyByOSwgIzIwCglsZHIgcjYsIFtyOSwgIzBdCglt
b3YgcGMsIHI2Ci5MX29mZmxpbmVhc21fMTNfYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50
OgoJbXZuIHI2LCAjNgoJY21wIHIyLCByNgoJYmhpIC5MX29mZmxpbmVhc21fMTNfYmluYXJ5T3BD
dXN0b21TdG9yZV9fc2xvdwoJbXZuIHI2LCAjNgoJY21wIHI0LCByNgoJYmxvIC5MX29mZmxpbmVh
c21fMTNfYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50T3AyRG91YmxlCgltdm4gcjYsICMw
CgljbXAgcjQsIHI2CglibmUgLkxfb2ZmbGluZWFzbV8xM19iaW5hcnlPcEN1c3RvbVN0b3JlX19z
bG93Cgl2bW92IHMyLCByMQoJdmN2dC5mNjQuczMyIGQxLCBzMgoJYiAuTF9vZmZsaW5lYXNtXzEz
X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdEludFJlYWR5Ci5MX29mZmxpbmVhc21fMTNfYmlu
YXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50T3AyRG91YmxlOgoJdm1vdiBkMSwgcjEsIHI0Ci5M
X29mZmxpbmVhc21fMTNfYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50UmVhZHk6CglsZHIg
cjEsIFtyOSwgIzRdCgl2bW92IGQwLCByMCwgcjIKCXZtdWwuZjY0IGQwLCBkMCwgZDEKCWFkZCBy
NiwgcjcsIHIxLCBsc2wgIzMKCXZzdHIuNjQgZDAsIFtyNiwgIzBdCglhZGRzIHI5LCAjMjAKCWxk
ciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxfb2ZmbGluZWFzbV8xM19iaW5hcnlPcEN1c3Rv
bVN0b3JlX19vcDJOb3RJbnQ6CglsZHIgcjIsIFtyOSwgIzRdCgltdm4gcjYsICM2CgljbXAgcjQs
IHI2CgliaGkgLkxfb2ZmbGluZWFzbV8xM19iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93Cgl2bW92
IHMwLCByMAoJdmN2dC5mNjQuczMyIGQwLCBzMAoJdm1vdiBkMSwgcjEsIHI0Cgl2bXVsLmY2NCBk
MCwgZDAsIGQxCglhZGQgcjYsIHI3LCByMiwgbHNsICMzCgl2c3RyLjY0IGQwLCBbcjYsICMwXQoJ
YWRkcyByOSwgIzIwCglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MX29mZmxpbmVhc21f
MTNfYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdzoKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJs
eCBzbG93X3BhdGhfbXVsCgltb3YgcjksIHIwCglhZGRzIHI5LCAjMjAKCWxkciByNiwgW3I5LCAj
MF0KCW1vdiBwYywgcjYKLkxsbGludF9vcF9zdWI6CglsZHIgcjIsIFtyOSwgIzEyXQoJbGRyIHIw
LCBbcjksICM4XQoJbW92dyByNiwgIzAKCW1vdnQgcjYsICMxNjM4NAoJY21wIHIyLCByNgoJYmdl
IC5MX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzE0X2xvYWRDb25z
dGFudE9yVmFyaWFibGVfX2NvbnN0YW50CglhZGQgcjYsIHI3LCByMiwgbHNsICMzCglsZHIgcjQs
IFtyNiwgIzRdCglsZHIgcjEsIFtyNywgcjIsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFzbV9iaW5h
cnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTRfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9u
ZQouTF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX18xNF9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19jb25zdGFudDoKCWxkciByMSwgW3I3LCAjOF0KCWxkciByMSwgW3Ix
LCAjMjc2XQoJYWRkIHI2LCByMSwgcjIsIGxzbCAjMwoJbGRyIHI0LCBbcjYsICM0XQoJbGRyIHIx
LCBbcjEsIHIyLCBsc2wgIzNdCi5MX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9t
U3RvcmVfXzE0X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU6Cgltb3Z3IHI2LCAjMAoJbW92
dCByNiwgIzE2Mzg0CgljbXAgcjAsIHI2CgliZ2UgLkxfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmlu
YXJ5T3BDdXN0b21TdG9yZV9fMTRfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50
CglhZGQgcjYsIHI3LCByMCwgbHNsICMzCglsZHIgcjIsIFtyNiwgIzRdCglsZHIgcjAsIFtyNywg
cjAsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9y
ZV9fMTRfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUKLkxfb2ZmbGluZWFzbV9iaW5h
cnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTRfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdf
X2NvbnN0YW50OgoJbGRyIHIyLCBbcjcsICM4XQoJbGRyIHIyLCBbcjIsICMyNzZdCglsc2xzIHIw
LCByMCwgIzMKCWFkZCByMiwgcjAKCWxkciByMCwgW3IyLCAjMF0KCWxkciByMiwgW3IyLCAjNF0K
Lkxfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTRfbG9hZENvbnN0
YW50T3JWYXJpYWJsZTJSZWdfX2RvbmU6Cgltdm4gcjYsICMwCgljbXAgcjIsIHI2CglibmUgLkxf
b2ZmbGluZWFzbV9iaW5hcnlPcF9fMTRfYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50Cglt
dm4gcjYsICMwCgljbXAgcjQsIHI2CglibmUgLkxfb2ZmbGluZWFzbV9iaW5hcnlPcF9fMTRfYmlu
YXJ5T3BDdXN0b21TdG9yZV9fb3AyTm90SW50CglsZHIgcjIsIFtyOSwgIzRdCglzdWJzIHIwLCBy
MQoJYnZzIC5MX29mZmxpbmVhc21fYmluYXJ5T3BfXzE0X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX3Ns
b3cKCWFkZCByNiwgcjcsIHIyLCBsc2wgIzMKCXN0ciByNCwgW3I2LCAjNF0KCXN0ciByMCwgW3I3
LCByMiwgbHNsICMzXQoJYWRkcyByOSwgIzIwCglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2
Ci5MX29mZmxpbmVhc21fYmluYXJ5T3BfXzE0X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdElu
dDoKCW12biByNiwgIzYKCWNtcCByMiwgcjYKCWJoaSAuTF9vZmZsaW5lYXNtX2JpbmFyeU9wX18x
NF9iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93Cgltdm4gcjYsICM2CgljbXAgcjQsIHI2CglibG8g
Lkxfb2ZmbGluZWFzbV9iaW5hcnlPcF9fMTRfYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50
T3AyRG91YmxlCgltdm4gcjYsICMwCgljbXAgcjQsIHI2CglibmUgLkxfb2ZmbGluZWFzbV9iaW5h
cnlPcF9fMTRfYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdwoJdm1vdiBzMiwgcjEKCXZjdnQuZjY0
LnMzMiBkMSwgczIKCWIgLkxfb2ZmbGluZWFzbV9iaW5hcnlPcF9fMTRfYmluYXJ5T3BDdXN0b21T
dG9yZV9fb3AxTm90SW50UmVhZHkKLkxfb2ZmbGluZWFzbV9iaW5hcnlPcF9fMTRfYmluYXJ5T3BD
dXN0b21TdG9yZV9fb3AxTm90SW50T3AyRG91YmxlOgoJdm1vdiBkMSwgcjEsIHI0Ci5MX29mZmxp
bmVhc21fYmluYXJ5T3BfXzE0X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdEludFJlYWR5OgoJ
bGRyIHIxLCBbcjksICM0XQoJdm1vdiBkMCwgcjAsIHIyCgl2c3ViLmY2NCBkMCwgZDAsIGQxCglh
ZGQgcjYsIHI3LCByMSwgbHNsICMzCgl2c3RyLjY0IGQwLCBbcjYsICMwXQoJYWRkcyByOSwgIzIw
CglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MX29mZmxpbmVhc21fYmluYXJ5T3BfXzE0
X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMk5vdEludDoKCWxkciByMiwgW3I5LCAjNF0KCW12biBy
NiwgIzYKCWNtcCByNCwgcjYKCWJoaSAuTF9vZmZsaW5lYXNtX2JpbmFyeU9wX18xNF9iaW5hcnlP
cEN1c3RvbVN0b3JlX19zbG93Cgl2bW92IHMwLCByMAoJdmN2dC5mNjQuczMyIGQwLCBzMAoJdm1v
diBkMSwgcjEsIHI0Cgl2c3ViLmY2NCBkMCwgZDAsIGQxCglhZGQgcjYsIHI3LCByMiwgbHNsICMz
Cgl2c3RyLjY0IGQwLCBbcjYsICMwXQoJYWRkcyByOSwgIzIwCglsZHIgcjYsIFtyOSwgIzBdCglt
b3YgcGMsIHI2Ci5MX29mZmxpbmVhc21fYmluYXJ5T3BfXzE0X2JpbmFyeU9wQ3VzdG9tU3RvcmVf
X3Nsb3c6Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggc2xvd19wYXRoX3N1YgoJbW92IHI5
LCByMAoJYWRkcyByOSwgIzIwCglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MbGxpbnRf
b3BfZGl2OgoJbGRyIHIyLCBbcjksICMxMl0KCWxkciByMCwgW3I5LCAjOF0KCW1vdncgcjYsICMw
Cgltb3Z0IHI2LCAjMTYzODQKCWNtcCByMiwgcjYKCWJnZSAuTF9vZmZsaW5lYXNtX2JpbmFyeU9w
Q3VzdG9tU3RvcmVfXzE1X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50CglhZGQgcjYs
IHI3LCByMiwgbHNsICMzCglsZHIgcjQsIFtyNiwgIzRdCglsZHIgcjEsIFtyNywgcjIsIGxzbCAj
M10KCWIgLkxfb2ZmbGluZWFzbV9iaW5hcnlPcEN1c3RvbVN0b3JlX18xNV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlX19kb25lCi5MX29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTVfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ6CglsZHIgcjEsIFtyNywgIzhdCglsZHIgcjEs
IFtyMSwgIzI3Nl0KCWFkZCByNiwgcjEsIHIyLCBsc2wgIzMKCWxkciByNCwgW3I2LCAjNF0KCWxk
ciByMSwgW3IxLCByMiwgbHNsICMzXQouTF9vZmZsaW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVf
XzE1X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU6Cgltb3Z3IHI2LCAjMAoJbW92dCByNiwg
IzE2Mzg0CgljbXAgcjAsIHI2CgliZ2UgLkxfb2ZmbGluZWFzbV9iaW5hcnlPcEN1c3RvbVN0b3Jl
X18xNV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQKCWFkZCByNiwgcjcsIHIw
LCBsc2wgIzMKCWxkciByMiwgW3I2LCAjNF0KCWxkciByMCwgW3I3LCByMCwgbHNsICMzXQoJYiAu
TF9vZmZsaW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzE1X2xvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnX19kb25lCi5MX29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTVfbG9hZENv
bnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50OgoJbGRyIHIyLCBbcjcsICM4XQoJbGRyIHIy
LCBbcjIsICMyNzZdCglsc2xzIHIwLCByMCwgIzMKCWFkZCByMiwgcjAKCWxkciByMCwgW3IyLCAj
MF0KCWxkciByMiwgW3IyLCAjNF0KLkxfb2ZmbGluZWFzbV9iaW5hcnlPcEN1c3RvbVN0b3JlX18x
NV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZToKCW12biByNiwgIzAKCWNtcCByMiwg
cjYKCWJuZSAuTF9vZmZsaW5lYXNtXzE1X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdEludAoJ
bXZuIHI2LCAjMAoJY21wIHI0LCByNgoJYm5lIC5MX29mZmxpbmVhc21fMTVfYmluYXJ5T3BDdXN0
b21TdG9yZV9fb3AyTm90SW50CglsZHIgcjIsIFtyOSwgIzRdCgl2bW92IHMwLCByMQoJdmN2dC5m
NjQuczMyIGQwLCBzMAoJdm1vdiBzMiwgcjAKCXZjdnQuZjY0LnMzMiBkMSwgczIKCXZkaXYuZjY0
IGQxLCBkMSwgZDAKCXZjdnQuczMyLmY2NCBzMTIsIGQxCgl2bW92IHIwLCBzMTIKCXZjdnQuZjY0
LnMzMiBkNiwgczEyCgl2Y21wZS5mNjQgZDYsIGQxCgl2bXJzIGFwc3JfbnpjdiwgZnBzY3IKCWJu
ZSAuTF9vZmZsaW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX2ludGVnZXJPcGVyYXRpb25BbmRT
dG9yZV9fbm90SW50Cgl0c3QgcjAsIHIwCgliZXEgLkxfb2ZmbGluZWFzbV9iaW5hcnlPcEN1c3Rv
bVN0b3JlX19pbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmVfX25vdEludAoJYWRkIHI2LCByNywgcjIs
IGxzbCAjMwoJc3RyIHI0LCBbcjYsICM0XQoJc3RyIHIwLCBbcjcsIHIyLCBsc2wgIzNdCgliIC5M
X29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTVfaW50ZWdlck9wZXJhdGlvbkFuZFN0
b3JlX19kb25lCi5MX29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9faW50ZWdlck9wZXJh
dGlvbkFuZFN0b3JlX19ub3RJbnQ6CglhZGQgcjYsIHI3LCByMiwgbHNsICMzCgl2c3RyLjY0IGQx
LCBbcjYsICMwXQouTF9vZmZsaW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzE1X2ludGVnZXJP
cGVyYXRpb25BbmRTdG9yZV9fZG9uZToKCWFkZHMgcjksICMyMAoJbGRyIHI2LCBbcjksICMwXQoJ
bW92IHBjLCByNgouTF9vZmZsaW5lYXNtXzE1X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdElu
dDoKCW12biByNiwgIzYKCWNtcCByMiwgcjYKCWJoaSAuTF9vZmZsaW5lYXNtXzE1X2JpbmFyeU9w
Q3VzdG9tU3RvcmVfX3Nsb3cKCW12biByNiwgIzYKCWNtcCByNCwgcjYKCWJsbyAuTF9vZmZsaW5l
YXNtXzE1X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdEludE9wMkRvdWJsZQoJbXZuIHI2LCAj
MAoJY21wIHI0LCByNgoJYm5lIC5MX29mZmxpbmVhc21fMTVfYmluYXJ5T3BDdXN0b21TdG9yZV9f
c2xvdwoJdm1vdiBzMiwgcjEKCXZjdnQuZjY0LnMzMiBkMSwgczIKCWIgLkxfb2ZmbGluZWFzbV8x
NV9iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnRSZWFkeQouTF9vZmZsaW5lYXNtXzE1X2Jp
bmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdEludE9wMkRvdWJsZToKCXZtb3YgZDEsIHIxLCByNAou
TF9vZmZsaW5lYXNtXzE1X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdEludFJlYWR5OgoJbGRy
IHIxLCBbcjksICM0XQoJdm1vdiBkMCwgcjAsIHIyCgl2ZGl2LmY2NCBkMCwgZDAsIGQxCglhZGQg
cjYsIHI3LCByMSwgbHNsICMzCgl2c3RyLjY0IGQwLCBbcjYsICMwXQoJYWRkcyByOSwgIzIwCgls
ZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MX29mZmxpbmVhc21fMTVfYmluYXJ5T3BDdXN0
b21TdG9yZV9fb3AyTm90SW50OgoJbGRyIHIyLCBbcjksICM0XQoJbXZuIHI2LCAjNgoJY21wIHI0
LCByNgoJYmhpIC5MX29mZmxpbmVhc21fMTVfYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdwoJdm1v
diBzMCwgcjAKCXZjdnQuZjY0LnMzMiBkMCwgczAKCXZtb3YgZDEsIHIxLCByNAoJdmRpdi5mNjQg
ZDAsIGQwLCBkMQoJYWRkIHI2LCByNywgcjIsIGxzbCAjMwoJdnN0ci42NCBkMCwgW3I2LCAjMF0K
CWFkZHMgcjksICMyMAoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTF9vZmZsaW5lYXNt
XzE1X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX3Nsb3c6Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5Cgli
bHggc2xvd19wYXRoX2RpdgoJbW92IHI5LCByMAoJYWRkcyByOSwgIzIwCglsZHIgcjYsIFtyOSwg
IzBdCgltb3YgcGMsIHI2Ci5MbGxpbnRfb3BfbHNoaWZ0OgoJbGRyIHIyLCBbcjksICMxMl0KCWxk
ciByMCwgW3I5LCAjOF0KCW1vdncgcjYsICMwCgltb3Z0IHI2LCAjMTYzODQKCWNtcCByMiwgcjYK
CWJnZSAuTF9vZmZsaW5lYXNtX2JpdE9wX18xNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25z
dGFudAoJYWRkIHI2LCByNywgcjIsIGxzbCAjMwoJbGRyIHI0LCBbcjYsICM0XQoJbGRyIHIxLCBb
cjcsIHIyLCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fYml0T3BfXzE2X2xvYWRDb25zdGFudE9y
VmFyaWFibGVfX2RvbmUKLkxfb2ZmbGluZWFzbV9iaXRPcF9fMTZfbG9hZENvbnN0YW50T3JWYXJp
YWJsZV9fY29uc3RhbnQ6CglsZHIgcjEsIFtyNywgIzhdCglsZHIgcjEsIFtyMSwgIzI3Nl0KCWFk
ZCByNiwgcjEsIHIyLCBsc2wgIzMKCWxkciByNCwgW3I2LCAjNF0KCWxkciByMSwgW3IxLCByMiwg
bHNsICMzXQouTF9vZmZsaW5lYXNtX2JpdE9wX18xNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19k
b25lOgoJbW92dyByNiwgIzAKCW1vdnQgcjYsICMxNjM4NAoJY21wIHIwLCByNgoJYmdlIC5MX29m
ZmxpbmVhc21fYml0T3BfXzE2X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudAoJ
YWRkIHI2LCByNywgcjAsIGxzbCAjMwoJbGRyIHIyLCBbcjYsICM0XQoJbGRyIHIwLCBbcjcsIHIw
LCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fYml0T3BfXzE2X2xvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnX19kb25lCi5MX29mZmxpbmVhc21fYml0T3BfXzE2X2xvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnX19jb25zdGFudDoKCWxkciByMiwgW3I3LCAjOF0KCWxkciByMiwgW3IyLCAjMjc2XQoJ
bHNscyByMCwgcjAsICMzCglhZGQgcjIsIHIwCglsZHIgcjAsIFtyMiwgIzBdCglsZHIgcjIsIFty
MiwgIzRdCi5MX29mZmxpbmVhc21fYml0T3BfXzE2X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVn
X19kb25lOgoJbXZuIHI2LCAjMAoJY21wIHI0LCByNgoJYm5lIC5MX29mZmxpbmVhc21fYml0T3Bf
X3Nsb3cKCW12biByNiwgIzAKCWNtcCByMiwgcjYKCWJuZSAuTF9vZmZsaW5lYXNtX2JpdE9wX19z
bG93CglsZHIgcjIsIFtyOSwgIzRdCglhbmQgcjYsIHIxLCAjMzEKCWxzbHMgcjAsIHI2CglhZGQg
cjYsIHI3LCByMiwgbHNsICMzCglzdHIgcjQsIFtyNiwgIzRdCglzdHIgcjAsIFtyNywgcjIsIGxz
bCAjM10KCWFkZHMgcjksICMxNgoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTF9vZmZs
aW5lYXNtX2JpdE9wX19zbG93OgoJbW92IHIwLCByNwoJbW92IHIxLCByOQoJYmx4IHNsb3dfcGF0
aF9sc2hpZnQKCW1vdiByOSwgcjAKCWFkZHMgcjksICMxNgoJbGRyIHI2LCBbcjksICMwXQoJbW92
IHBjLCByNgouTGxsaW50X29wX3JzaGlmdDoKCWxkciByMiwgW3I5LCAjMTJdCglsZHIgcjAsIFty
OSwgIzhdCgltb3Z3IHI2LCAjMAoJbW92dCByNiwgIzE2Mzg0CgljbXAgcjIsIHI2CgliZ2UgLkxf
b2ZmbGluZWFzbV9iaXRPcF9fMTdfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQKCWFk
ZCByNiwgcjcsIHIyLCBsc2wgIzMKCWxkciByNCwgW3I2LCAjNF0KCWxkciByMSwgW3I3LCByMiwg
bHNsICMzXQoJYiAuTF9vZmZsaW5lYXNtX2JpdE9wX18xN19sb2FkQ29uc3RhbnRPclZhcmlhYmxl
X19kb25lCi5MX29mZmxpbmVhc21fYml0T3BfXzE3X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Nv
bnN0YW50OgoJbGRyIHIxLCBbcjcsICM4XQoJbGRyIHIxLCBbcjEsICMyNzZdCglhZGQgcjYsIHIx
LCByMiwgbHNsICMzCglsZHIgcjQsIFtyNiwgIzRdCglsZHIgcjEsIFtyMSwgcjIsIGxzbCAjM10K
Lkxfb2ZmbGluZWFzbV9iaXRPcF9fMTdfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZToKCW1v
dncgcjYsICMwCgltb3Z0IHI2LCAjMTYzODQKCWNtcCByMCwgcjYKCWJnZSAuTF9vZmZsaW5lYXNt
X2JpdE9wX18xN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQKCWFkZCByNiwg
cjcsIHIwLCBsc2wgIzMKCWxkciByMiwgW3I2LCAjNF0KCWxkciByMCwgW3I3LCByMCwgbHNsICMz
XQoJYiAuTF9vZmZsaW5lYXNtX2JpdE9wX18xN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19f
ZG9uZQouTF9vZmZsaW5lYXNtX2JpdE9wX18xN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19f
Y29uc3RhbnQ6CglsZHIgcjIsIFtyNywgIzhdCglsZHIgcjIsIFtyMiwgIzI3Nl0KCWxzbHMgcjAs
IHIwLCAjMwoJYWRkIHIyLCByMAoJbGRyIHIwLCBbcjIsICMwXQoJbGRyIHIyLCBbcjIsICM0XQou
TF9vZmZsaW5lYXNtX2JpdE9wX18xN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZToK
CW12biByNiwgIzAKCWNtcCByNCwgcjYKCWJuZSAuTF9vZmZsaW5lYXNtXzE3X2JpdE9wX19zbG93
Cgltdm4gcjYsICMwCgljbXAgcjIsIHI2CglibmUgLkxfb2ZmbGluZWFzbV8xN19iaXRPcF9fc2xv
dwoJbGRyIHIyLCBbcjksICM0XQoJYW5kIHI2LCByMSwgIzMxCglhc3JzIHIwLCByNgoJYWRkIHI2
LCByNywgcjIsIGxzbCAjMwoJc3RyIHI0LCBbcjYsICM0XQoJc3RyIHIwLCBbcjcsIHIyLCBsc2wg
IzNdCglhZGRzIHI5LCAjMTYKCWxkciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxfb2ZmbGlu
ZWFzbV8xN19iaXRPcF9fc2xvdzoKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBzbG93X3Bh
dGhfcnNoaWZ0Cgltb3YgcjksIHIwCglhZGRzIHI5LCAjMTYKCWxkciByNiwgW3I5LCAjMF0KCW1v
diBwYywgcjYKLkxsbGludF9vcF91cnNoaWZ0OgoJbGRyIHIyLCBbcjksICMxMl0KCWxkciByMCwg
W3I5LCAjOF0KCW1vdncgcjYsICMwCgltb3Z0IHI2LCAjMTYzODQKCWNtcCByMiwgcjYKCWJnZSAu
TF9vZmZsaW5lYXNtX2JpdE9wX18xOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudAoJ
YWRkIHI2LCByNywgcjIsIGxzbCAjMwoJbGRyIHI0LCBbcjYsICM0XQoJbGRyIHIxLCBbcjcsIHIy
LCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fYml0T3BfXzE4X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVfX2RvbmUKLkxfb2ZmbGluZWFzbV9iaXRPcF9fMThfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9f
Y29uc3RhbnQ6CglsZHIgcjEsIFtyNywgIzhdCglsZHIgcjEsIFtyMSwgIzI3Nl0KCWFkZCByNiwg
cjEsIHIyLCBsc2wgIzMKCWxkciByNCwgW3I2LCAjNF0KCWxkciByMSwgW3IxLCByMiwgbHNsICMz
XQouTF9vZmZsaW5lYXNtX2JpdE9wX18xOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOgoJ
bW92dyByNiwgIzAKCW1vdnQgcjYsICMxNjM4NAoJY21wIHIwLCByNgoJYmdlIC5MX29mZmxpbmVh
c21fYml0T3BfXzE4X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudAoJYWRkIHI2
LCByNywgcjAsIGxzbCAjMwoJbGRyIHIyLCBbcjYsICM0XQoJbGRyIHIwLCBbcjcsIHIwLCBsc2wg
IzNdCgliIC5MX29mZmxpbmVhc21fYml0T3BfXzE4X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVn
X19kb25lCi5MX29mZmxpbmVhc21fYml0T3BfXzE4X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVn
X19jb25zdGFudDoKCWxkciByMiwgW3I3LCAjOF0KCWxkciByMiwgW3IyLCAjMjc2XQoJbHNscyBy
MCwgcjAsICMzCglhZGQgcjIsIHIwCglsZHIgcjAsIFtyMiwgIzBdCglsZHIgcjIsIFtyMiwgIzRd
Ci5MX29mZmxpbmVhc21fYml0T3BfXzE4X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25l
OgoJbXZuIHI2LCAjMAoJY21wIHI0LCByNgoJYm5lIC5MX29mZmxpbmVhc21fMThfYml0T3BfX3Ns
b3cKCW12biByNiwgIzAKCWNtcCByMiwgcjYKCWJuZSAuTF9vZmZsaW5lYXNtXzE4X2JpdE9wX19z
bG93CglsZHIgcjIsIFtyOSwgIzRdCglhbmQgcjYsIHIxLCAjMzEKCWxzcnMgcjAsIHI2CglhZGQg
cjYsIHI3LCByMiwgbHNsICMzCglzdHIgcjQsIFtyNiwgIzRdCglzdHIgcjAsIFtyNywgcjIsIGxz
bCAjM10KCWFkZHMgcjksICMxNgoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTF9vZmZs
aW5lYXNtXzE4X2JpdE9wX19zbG93OgoJbW92IHIwLCByNwoJbW92IHIxLCByOQoJYmx4IHNsb3df
cGF0aF91cnNoaWZ0Cgltb3YgcjksIHIwCglhZGRzIHI5LCAjMTYKCWxkciByNiwgW3I5LCAjMF0K
CW1vdiBwYywgcjYKLkxsbGludF9vcF91bnNpZ25lZDoKCWxkciByMCwgW3I5LCAjNF0KCWxkciBy
MSwgW3I5LCAjOF0KCW1vdncgcjYsICMwCgltb3Z0IHI2LCAjMTYzODQKCWNtcCByMSwgcjYKCWJn
ZSAuTF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX19sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQKCWFkZCByNiwgcjcsIHIxLCBs
c2wgIzMKCW12biByMTAsICMwCglsZHIgcjEyLCBbcjYsICM0XQoJY21wIHIxMiwgcjEwCglibmUg
Lkxfb2ZmbGluZWFzbV9vcFVuc2lnbmVkU2xvdwoJbGRyIHIyLCBbcjcsIHIxLCBsc2wgIzNdCgli
IC5MX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfX2xvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lCi5MX29mZmxpbmVhc21fbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3Vz
dG9tX19jb25zdGFudDoKCWxkciByMiwgW3I3LCAjOF0KCWxkciByMiwgW3IyLCAjMjc2XQoJYWRk
IHIxMCwgcjIsIHIxLCBsc2wgIzMKCW12biByMTIsICMwCglsZHIgcjYsIFtyMTAsICM0XQoJY21w
IHI2LCByMTIKCWJuZSAuTF9vZmZsaW5lYXNtX29wVW5zaWduZWRTbG93CglsZHIgcjIsIFtyMiwg
cjEsIGxzbCAjM10KLkxfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9f
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmU6CgljbXAgcjIsICMw
CglibHQgLkxfb2ZmbGluZWFzbV9vcFVuc2lnbmVkU2xvdwoJc3RyIHIyLCBbcjcsIHIwLCBsc2wg
IzNdCglhZGQgcjEyLCByNywgcjAsIGxzbCAjMwoJbXZuIHI2LCAjMAoJc3RyIHI2LCBbcjEyLCAj
NF0KCWFkZHMgcjksICMxMgoJbGRyIHIxMiwgW3I5LCAjMF0KCW1vdiBwYywgcjEyCi5MX29mZmxp
bmVhc21fb3BVbnNpZ25lZFNsb3c6Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggc2xvd19w
YXRoX3Vuc2lnbmVkCgltb3YgcjksIHIwCglhZGRzIHI5LCAjMTIKCWxkciByMTIsIFtyOSwgIzBd
Cgltb3YgcGMsIHIxMgouTGxsaW50X29wX2JpdGFuZDoKCWxkciByMiwgW3I5LCAjMTJdCglsZHIg
cjAsIFtyOSwgIzhdCgltb3Z3IHIxMiwgIzAKCW1vdnQgcjEyLCAjMTYzODQKCWNtcCByMiwgcjEy
CgliZ2UgLkxfb2ZmbGluZWFzbV9iaXRPcF9fMTlfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29u
c3RhbnQKCWFkZCByMTIsIHI3LCByMiwgbHNsICMzCglsZHIgcjQsIFtyMTIsICM0XQoJbGRyIHIx
LCBbcjcsIHIyLCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fYml0T3BfXzE5X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2RvbmUKLkxfb2ZmbGluZWFzbV9iaXRPcF9fMTlfbG9hZENvbnN0YW50T3JW
YXJpYWJsZV9fY29uc3RhbnQ6CglsZHIgcjEsIFtyNywgIzhdCglsZHIgcjEsIFtyMSwgIzI3Nl0K
CWFkZCByMTIsIHIxLCByMiwgbHNsICMzCglsZHIgcjQsIFtyMTIsICM0XQoJbGRyIHIxLCBbcjEs
IHIyLCBsc2wgIzNdCi5MX29mZmxpbmVhc21fYml0T3BfXzE5X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVfX2RvbmU6Cgltb3Z3IHIxMiwgIzAKCW1vdnQgcjEyLCAjMTYzODQKCWNtcCByMCwgcjEyCgli
Z2UgLkxfb2ZmbGluZWFzbV9iaXRPcF9fMTlfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2Nv
bnN0YW50CglhZGQgcjEyLCByNywgcjAsIGxzbCAjMwoJbGRyIHIyLCBbcjEyLCAjNF0KCWxkciBy
MCwgW3I3LCByMCwgbHNsICMzXQoJYiAuTF9vZmZsaW5lYXNtX2JpdE9wX18xOV9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZ19fZG9uZQouTF9vZmZsaW5lYXNtX2JpdE9wX18xOV9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQ6CglsZHIgcjIsIFtyNywgIzhdCglsZHIgcjIsIFty
MiwgIzI3Nl0KCWxzbHMgcjAsIHIwLCAjMwoJYWRkIHIyLCByMAoJbGRyIHIwLCBbcjIsICMwXQoJ
bGRyIHIyLCBbcjIsICM0XQouTF9vZmZsaW5lYXNtX2JpdE9wX18xOV9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZ19fZG9uZToKCW12biByMTIsICMwCgljbXAgcjQsIHIxMgoJYm5lIC5MX29mZmxp
bmVhc21fMTlfYml0T3BfX3Nsb3cKCW12biByMTIsICMwCgljbXAgcjIsIHIxMgoJYm5lIC5MX29m
ZmxpbmVhc21fMTlfYml0T3BfX3Nsb3cKCWxkciByMiwgW3I5LCAjNF0KCWFuZHMgcjAsIHIxCglh
ZGQgcjEyLCByNywgcjIsIGxzbCAjMwoJc3RyIHI0LCBbcjEyLCAjNF0KCXN0ciByMCwgW3I3LCBy
MiwgbHNsICMzXQoJYWRkcyByOSwgIzIwCglsZHIgcjEyLCBbcjksICMwXQoJbW92IHBjLCByMTIK
Lkxfb2ZmbGluZWFzbV8xOV9iaXRPcF9fc2xvdzoKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJs
eCBzbG93X3BhdGhfYml0YW5kCgltb3YgcjksIHIwCglhZGRzIHI5LCAjMjAKCWxkciByMTIsIFty
OSwgIzBdCgltb3YgcGMsIHIxMgouTGxsaW50X29wX2JpdHhvcjoKCWxkciByMiwgW3I5LCAjMTJd
CglsZHIgcjAsIFtyOSwgIzhdCgltb3Z3IHIxMiwgIzAKCW1vdnQgcjEyLCAjMTYzODQKCWNtcCBy
MiwgcjEyCgliZ2UgLkxfb2ZmbGluZWFzbV9iaXRPcF9fMjBfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZV9fY29uc3RhbnQKCWFkZCByMTIsIHI3LCByMiwgbHNsICMzCglsZHIgcjQsIFtyMTIsICM0XQoJ
bGRyIHIxLCBbcjcsIHIyLCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fYml0T3BfXzIwX2xvYWRD
b25zdGFudE9yVmFyaWFibGVfX2RvbmUKLkxfb2ZmbGluZWFzbV9iaXRPcF9fMjBfbG9hZENvbnN0
YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ6CglsZHIgcjEsIFtyNywgIzhdCglsZHIgcjEsIFtyMSwg
IzI3Nl0KCWFkZCByMTIsIHIxLCByMiwgbHNsICMzCglsZHIgcjQsIFtyMTIsICM0XQoJbGRyIHIx
LCBbcjEsIHIyLCBsc2wgIzNdCi5MX29mZmxpbmVhc21fYml0T3BfXzIwX2xvYWRDb25zdGFudE9y
VmFyaWFibGVfX2RvbmU6Cgltb3Z3IHIxMiwgIzAKCW1vdnQgcjEyLCAjMTYzODQKCWNtcCByMCwg
cjEyCgliZ2UgLkxfb2ZmbGluZWFzbV9iaXRPcF9fMjBfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJS
ZWdfX2NvbnN0YW50CglhZGQgcjEyLCByNywgcjAsIGxzbCAjMwoJbGRyIHIyLCBbcjEyLCAjNF0K
CWxkciByMCwgW3I3LCByMCwgbHNsICMzXQoJYiAuTF9vZmZsaW5lYXNtX2JpdE9wX18yMF9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZQouTF9vZmZsaW5lYXNtX2JpdE9wX18yMF9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQ6CglsZHIgcjIsIFtyNywgIzhdCglsZHIg
cjIsIFtyMiwgIzI3Nl0KCWxzbHMgcjAsIHIwLCAjMwoJYWRkIHIyLCByMAoJbGRyIHIwLCBbcjIs
ICMwXQoJbGRyIHIyLCBbcjIsICM0XQouTF9vZmZsaW5lYXNtX2JpdE9wX18yMF9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZ19fZG9uZToKCW12biByMTIsICMwCgljbXAgcjQsIHIxMgoJYm5lIC5M
X29mZmxpbmVhc21fMjBfYml0T3BfX3Nsb3cKCW12biByMTIsICMwCgljbXAgcjIsIHIxMgoJYm5l
IC5MX29mZmxpbmVhc21fMjBfYml0T3BfX3Nsb3cKCWxkciByMiwgW3I5LCAjNF0KCWVvcnMgcjAs
IHIxCglhZGQgcjEyLCByNywgcjIsIGxzbCAjMwoJc3RyIHI0LCBbcjEyLCAjNF0KCXN0ciByMCwg
W3I3LCByMiwgbHNsICMzXQoJYWRkcyByOSwgIzIwCglsZHIgcjEyLCBbcjksICMwXQoJbW92IHBj
LCByMTIKLkxfb2ZmbGluZWFzbV8yMF9iaXRPcF9fc2xvdzoKCW1vdiByMCwgcjcKCW1vdiByMSwg
cjkKCWJseCBzbG93X3BhdGhfYml0eG9yCgltb3YgcjksIHIwCglhZGRzIHI5LCAjMjAKCWxkciBy
MTIsIFtyOSwgIzBdCgltb3YgcGMsIHIxMgouTGxsaW50X29wX2JpdG9yOgoJbGRyIHIyLCBbcjks
ICMxMl0KCWxkciByMCwgW3I5LCAjOF0KCW1vdncgcjEyLCAjMAoJbW92dCByMTIsICMxNjM4NAoJ
Y21wIHIyLCByMTIKCWJnZSAuTF9vZmZsaW5lYXNtX2JpdE9wX18yMV9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlX19jb25zdGFudAoJYWRkIHIxMiwgcjcsIHIyLCBsc2wgIzMKCWxkciByNCwgW3IxMiwg
IzRdCglsZHIgcjEsIFtyNywgcjIsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFzbV9iaXRPcF9fMjFf
bG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZQouTF9vZmZsaW5lYXNtX2JpdE9wX18yMV9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDoKCWxkciByMSwgW3I3LCAjOF0KCWxkciByMSwg
W3IxLCAjMjc2XQoJYWRkIHIxMiwgcjEsIHIyLCBsc2wgIzMKCWxkciByNCwgW3IxMiwgIzRdCgls
ZHIgcjEsIFtyMSwgcjIsIGxzbCAjM10KLkxfb2ZmbGluZWFzbV9iaXRPcF9fMjFfbG9hZENvbnN0
YW50T3JWYXJpYWJsZV9fZG9uZToKCW1vdncgcjEyLCAjMAoJbW92dCByMTIsICMxNjM4NAoJY21w
IHIwLCByMTIKCWJnZSAuTF9vZmZsaW5lYXNtX2JpdE9wX18yMV9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZ19fY29uc3RhbnQKCWFkZCByMTIsIHI3LCByMCwgbHNsICMzCglsZHIgcjIsIFtyMTIs
ICM0XQoJbGRyIHIwLCBbcjcsIHIwLCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fYml0T3BfXzIx
X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lCi5MX29mZmxpbmVhc21fYml0T3BfXzIx
X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudDoKCWxkciByMiwgW3I3LCAjOF0K
CWxkciByMiwgW3IyLCAjMjc2XQoJbHNscyByMCwgcjAsICMzCglhZGQgcjIsIHIwCglsZHIgcjAs
IFtyMiwgIzBdCglsZHIgcjIsIFtyMiwgIzRdCi5MX29mZmxpbmVhc21fYml0T3BfXzIxX2xvYWRD
b25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lOgoJbXZuIHIxMiwgIzAKCWNtcCByNCwgcjEyCgli
bmUgLkxfb2ZmbGluZWFzbV8yMV9iaXRPcF9fc2xvdwoJbXZuIHIxMiwgIzAKCWNtcCByMiwgcjEy
CglibmUgLkxfb2ZmbGluZWFzbV8yMV9iaXRPcF9fc2xvdwoJbGRyIHIyLCBbcjksICM0XQoJb3Jy
cyByMCwgcjEKCWFkZCByMTIsIHI3LCByMiwgbHNsICMzCglzdHIgcjQsIFtyMTIsICM0XQoJc3Ry
IHIwLCBbcjcsIHIyLCBsc2wgIzNdCglhZGRzIHI5LCAjMjAKCWxkciByMTIsIFtyOSwgIzBdCglt
b3YgcGMsIHIxMgouTF9vZmZsaW5lYXNtXzIxX2JpdE9wX19zbG93OgoJbW92IHIwLCByNwoJbW92
IHIxLCByOQoJYmx4IHNsb3dfcGF0aF9iaXRvcgoJbW92IHI5LCByMAoJYWRkcyByOSwgIzIwCgls
ZHIgcjEyLCBbcjksICMwXQoJbW92IHBjLCByMTIKLkxsbGludF9vcF9jaGVja19oYXNfaW5zdGFu
Y2U6CglsZHIgcjEsIFtyOSwgIzEyXQoJbW92dyByMTIsICMwCgltb3Z0IHIxMiwgIzE2Mzg0Cglj
bXAgcjEsIHIxMgoJYmdlIC5MX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRfXzIxX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudAoJ
YWRkIHIxMiwgcjcsIHIxLCBsc2wgIzMKCW12biByNiwgIzQKCWxkciByMTAsIFtyMTIsICM0XQoJ
Y21wIHIxMCwgcjYKCWJuZSAuTF9vZmZsaW5lYXNtX29wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKCWxk
ciByMCwgW3I3LCByMSwgbHNsICMzXQoJYiAuTF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkX18yMV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9f
ZG9uZQouTF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18yMV9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQ6CglsZHIgcjAsIFty
NywgIzhdCglsZHIgcjAsIFtyMCwgIzI3Nl0KCWFkZCByNiwgcjAsIHIxLCBsc2wgIzMKCW12biBy
MTAsICM0CglsZHIgcjEyLCBbcjYsICM0XQoJY21wIHIxMiwgcjEwCglibmUgLkxfb2ZmbGluZWFz
bV9vcENoZWNrSGFzSW5zdGFuY2VTbG93CglsZHIgcjAsIFtyMCwgcjEsIGxzbCAjM10KLkxfb2Zm
bGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMjFfbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmU6CglsZHJiIHIxMCwgW3IwLCAjNl0KCXRzdCBy
MTAsICM4CgliZXEgLkxfb2ZmbGluZWFzbV9vcENoZWNrSGFzSW5zdGFuY2VTbG93CglhZGRzIHI5
LCAjMjAKCWxkciByMTAsIFtyOSwgIzBdCgltb3YgcGMsIHIxMAouTF9vZmZsaW5lYXNtX29wQ2hl
Y2tIYXNJbnN0YW5jZVNsb3c6Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggbGxpbnRfc2xv
d19wYXRoX2NoZWNrX2hhc19pbnN0YW5jZQoJbW92IHI5LCByMAoJbGRyIHIxMCwgW3I5LCAjMF0K
CW1vdiBwYywgcjEwCi5MbGxpbnRfb3BfaW5zdGFuY2VvZjoKCWxkciByMCwgW3I5LCAjMTJdCgls
ZHIgcjQsIFtyOSwgIzRdCgltb3Z3IHIxMCwgIzAKCW1vdnQgcjEwLCAjMTYzODQKCWNtcCByMCwg
cjEwCgliZ2UgLkxfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMjJf
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50CglhZGQgcjEw
LCByNywgcjAsIGxzbCAjMwoJbXZuIHIxMiwgIzQKCWxkciByNiwgW3IxMCwgIzRdCgljbXAgcjYs
IHIxMgoJYm5lIC5MX29mZmxpbmVhc21fb3BJbnN0YW5jZW9mU2xvdwoJbGRyIHIxLCBbcjcsIHIw
LCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRf
XzIyX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lCi5MX29mZmxp
bmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzIyX2xvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudDoKCWxkciByMSwgW3I3LCAjOF0KCWxkciBy
MSwgW3IxLCAjMjc2XQoJYWRkIHIxMiwgcjEsIHIwLCBsc2wgIzMKCW12biByNiwgIzQKCWxkciBy
MTAsIFtyMTIsICM0XQoJY21wIHIxMCwgcjYKCWJuZSAuTF9vZmZsaW5lYXNtX29wSW5zdGFuY2Vv
ZlNsb3cKCWxkciByMSwgW3IxLCByMCwgbHNsICMzXQouTF9vZmZsaW5lYXNtX2xvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkX18yMl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1
c3RvbV9fZG9uZToKCWxkcmIgcjYsIFtyMSwgIzVdCgljbXAgcjYsICMxNwoJYmxvIC5MX29mZmxp
bmVhc21fb3BJbnN0YW5jZW9mU2xvdwoJbGRyIHIwLCBbcjksICM4XQoJbW92dyByNiwgIzAKCW1v
dnQgcjYsICMxNjM4NAoJY21wIHIwLCByNgoJYmdlIC5MX29mZmxpbmVhc21fbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRfXzIzX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3Vz
dG9tX19jb25zdGFudAoJYWRkIHI2LCByNywgcjAsIGxzbCAjMwoJbXZuIHIxMCwgIzQKCWxkciBy
MTIsIFtyNiwgIzRdCgljbXAgcjEyLCByMTAKCWJuZSAuTF9vZmZsaW5lYXNtX29wSW5zdGFuY2Vv
ZlNsb3cKCWxkciByMiwgW3I3LCByMCwgbHNsICMzXQoJYiAuTF9vZmZsaW5lYXNtX2xvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkX18yM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRh
Z0N1c3RvbV9fZG9uZQouTF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
X18yM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQ6Cgls
ZHIgcjIsIFtyNywgIzhdCglsZHIgcjIsIFtyMiwgIzI3Nl0KCWFkZCByMTAsIHIyLCByMCwgbHNs
ICMzCgltdm4gcjEyLCAjNAoJbGRyIHI2LCBbcjEwLCAjNF0KCWNtcCByNiwgcjEyCglibmUgLkxf
b2ZmbGluZWFzbV9vcEluc3RhbmNlb2ZTbG93CglsZHIgcjIsIFtyMiwgcjAsIGxzbCAjM10KLkxf
b2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMjNfbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmU6Cgltb3YgcjAsICMxCi5MX29mZmxpbmVh
c21fb3BJbnN0YW5jZW9mTG9vcDoKCWxkciByMiwgW3IyLCAjMF0KCWxkciByMiwgW3IyLCAjMjRd
CgljbXAgcjIsIHIxCgliZXEgLkxfb2ZmbGluZWFzbV9vcEluc3RhbmNlb2ZEb25lCgl0c3QgcjIs
IHIyCglibmUgLkxfb2ZmbGluZWFzbV9vcEluc3RhbmNlb2ZMb29wCgltb3YgcjAsICMwCi5MX29m
ZmxpbmVhc21fb3BJbnN0YW5jZW9mRG9uZToKCWFkZCByMTIsIHI3LCByNCwgbHNsICMzCgltdm4g
cjYsICMxCglzdHIgcjYsIFtyMTIsICM0XQoJc3RyIHIwLCBbcjcsIHI0LCBsc2wgIzNdCglhZGRz
IHI5LCAjMTYKCWxkciByMTIsIFtyOSwgIzBdCgltb3YgcGMsIHIxMgouTF9vZmZsaW5lYXNtX29w
SW5zdGFuY2VvZlNsb3c6Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggbGxpbnRfc2xvd19w
YXRoX2luc3RhbmNlb2YKCW1vdiByOSwgcjAKCWFkZHMgcjksICMxNgoJbGRyIHIxMiwgW3I5LCAj
MF0KCW1vdiBwYywgcjEyCi5MbGxpbnRfb3BfaXNfdW5kZWZpbmVkOgoJbGRyIHIxLCBbcjksICM4
XQoJbGRyIHIwLCBbcjksICM0XQoJbW92dyByMTIsICMwCgltb3Z0IHIxMiwgIzE2Mzg0CgljbXAg
cjEsIHIxMgoJYmdlIC5MX29mZmxpbmVhc21fMjNfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29u
c3RhbnQKCWFkZCByMTIsIHI3LCByMSwgbHNsICMzCglsZHIgcjIsIFtyMTIsICM0XQoJbGRyIHI0
LCBbcjcsIHIxLCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fMjNfbG9hZENvbnN0YW50T3JWYXJp
YWJsZV9fZG9uZQouTF9vZmZsaW5lYXNtXzIzX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0
YW50OgoJbGRyIHI0LCBbcjcsICM4XQoJbGRyIHI0LCBbcjQsICMyNzZdCglhZGQgcjEyLCByNCwg
cjEsIGxzbCAjMwoJbGRyIHIyLCBbcjEyLCAjNF0KCWxkciByNCwgW3I0LCByMSwgbHNsICMzXQou
TF9vZmZsaW5lYXNtXzIzX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU6CglhZGQgcjEyLCBy
NywgcjAsIGxzbCAjMwoJbXZuIHI2LCAjMQoJc3RyIHI2LCBbcjEyLCAjNF0KCW12biByMTIsICM0
CgljbXAgcjIsIHIxMgoJYmVxIC5MX29mZmxpbmVhc21fb3BJc1VuZGVmaW5lZENlbGwKCW12biBy
MTIsICMzCgltb3ZzIHI0LCAjMAoJY21wIHIyLCByMTIKCWl0IGVxCgltb3ZlcSByNCwgIzEKCXN0
ciByNCwgW3I3LCByMCwgbHNsICMzXQoJYWRkcyByOSwgIzEyCglsZHIgcjEyLCBbcjksICMwXQoJ
bW92IHBjLCByMTIKLkxfb2ZmbGluZWFzbV9vcElzVW5kZWZpbmVkQ2VsbDoKCWxkcmIgcjEyLCBb
cjQsICM2XQoJdHN0IHIxMiwgIzEKCWJuZSAuTF9vZmZsaW5lYXNtX29wSXNVbmRlZmluZWRNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkCgltb3YgcjEsICMwCglzdHIgcjEsIFtyNywgcjAsIGxzbCAjM10K
CWFkZHMgcjksICMxMgoJbGRyIHIxMiwgW3I5LCAjMF0KCW1vdiBwYywgcjEyCi5MX29mZmxpbmVh
c21fb3BJc1VuZGVmaW5lZE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ6CglsZHIgcjEsIFtyNCwgIzBd
CglsZHIgcjQsIFtyNywgIzhdCglsZHIgcjQsIFtyNCwgIzIwXQoJbGRyIHIxMiwgW3IxLCAjMjBd
Cgltb3ZzIHIxLCAjMAoJY21wIHIxMiwgcjQKCWl0IGVxCgltb3ZlcSByMSwgIzEKCXN0ciByMSwg
W3I3LCByMCwgbHNsICMzXQoJYWRkcyByOSwgIzEyCglsZHIgcjEyLCBbcjksICMwXQoJbW92IHBj
LCByMTIKLkxsbGludF9vcF9pc19ib29sZWFuOgoJbGRyIHIxLCBbcjksICM4XQoJbGRyIHIyLCBb
cjksICM0XQoJbW92dyByMTIsICMwCgltb3Z0IHIxMiwgIzE2Mzg0CgljbXAgcjEsIHIxMgoJYmdl
IC5MX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fY29uc3RhbnQKCWFkZCBy
MTIsIHI3LCByMSwgbHNsICMzCglsZHIgcjAsIFtyMTIsICM0XQoJYiAuTF9vZmZsaW5lYXNtX2xv
YWRDb25zdGFudE9yVmFyaWFibGVUYWdfX2RvbmUKLkxfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlVGFnX19jb25zdGFudDoKCWxkciByMCwgW3I3LCAjOF0KCWxkciByMCwgW3IwLCAj
Mjc2XQoJYWRkIHIxMiwgcjAsIHIxLCBsc2wgIzMKCWxkciByMCwgW3IxMiwgIzRdCi5MX29mZmxp
bmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fZG9uZToKCW12biByMTIsICMxCgltb3Yg
cjYsIHIwCgltb3ZzIHIwLCAjMAoJY21wIHI2LCByMTIKCWl0IGVxCgltb3ZlcSByMCwgIzEKCWFk
ZCByMTIsIHI3LCByMiwgbHNsICMzCgltdm4gcjYsICMxCglzdHIgcjYsIFtyMTIsICM0XQoJc3Ry
IHIwLCBbcjcsIHIyLCBsc2wgIzNdCglhZGRzIHI5LCAjMTIKCWxkciByMTIsIFtyOSwgIzBdCglt
b3YgcGMsIHIxMgouTGxsaW50X29wX2lzX251bWJlcjoKCWxkciByMSwgW3I5LCAjOF0KCWxkciBy
MiwgW3I5LCAjNF0KCW1vdncgcjEyLCAjMAoJbW92dCByMTIsICMxNjM4NAoJY21wIHIxLCByMTIK
CWJnZSAuTF9vZmZsaW5lYXNtXzIzX2xvYWRDb25zdGFudE9yVmFyaWFibGVUYWdfX2NvbnN0YW50
CglhZGQgcjEyLCByNywgcjEsIGxzbCAjMwoJbGRyIHIwLCBbcjEyLCAjNF0KCWIgLkxfb2ZmbGlu
ZWFzbV8yM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnX19kb25lCi5MX29mZmxpbmVhc21fMjNf
bG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fY29uc3RhbnQ6CglsZHIgcjAsIFtyNywgIzhdCgls
ZHIgcjAsIFtyMCwgIzI3Nl0KCWFkZCByMTIsIHIwLCByMSwgbHNsICMzCglsZHIgcjAsIFtyMTIs
ICM0XQouTF9vZmZsaW5lYXNtXzIzX2xvYWRDb25zdGFudE9yVmFyaWFibGVUYWdfX2RvbmU6Cglh
ZGQgcjEyLCByNywgcjIsIGxzbCAjMwoJbXZuIHI2LCAjMQoJc3RyIHI2LCBbcjEyLCAjNF0KCWFk
ZHMgcjAsICMxCgltdm4gcjEyLCAjNQoJbW92cyByMSwgIzAKCWNtcCByMCwgcjEyCglpdCBsbwoJ
bW92bG8gcjEsICMxCglzdHIgcjEsIFtyNywgcjIsIGxzbCAjM10KCWFkZHMgcjksICMxMgoJbGRy
IHIxMiwgW3I5LCAjMF0KCW1vdiBwYywgcjEyCi5MbGxpbnRfb3BfaXNfc3RyaW5nOgoJbGRyIHIx
LCBbcjksICM4XQoJbGRyIHIyLCBbcjksICM0XQoJbW92dyByMTIsICMwCgltb3Z0IHIxMiwgIzE2
Mzg0CgljbXAgcjEsIHIxMgoJYmdlIC5MX29mZmxpbmVhc21fMjRfbG9hZENvbnN0YW50T3JWYXJp
YWJsZV9fY29uc3RhbnQKCWFkZCByMTIsIHI3LCByMSwgbHNsICMzCglsZHIgcjAsIFtyMTIsICM0
XQoJbGRyIHI0LCBbcjcsIHIxLCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fMjRfbG9hZENvbnN0
YW50T3JWYXJpYWJsZV9fZG9uZQouTF9vZmZsaW5lYXNtXzI0X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVfX2NvbnN0YW50OgoJbGRyIHI0LCBbcjcsICM4XQoJbGRyIHI0LCBbcjQsICMyNzZdCglhZGQg
cjEyLCByNCwgcjEsIGxzbCAjMwoJbGRyIHIwLCBbcjEyLCAjNF0KCWxkciByNCwgW3I0LCByMSwg
bHNsICMzXQouTF9vZmZsaW5lYXNtXzI0X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU6Cglh
ZGQgcjEyLCByNywgcjIsIGxzbCAjMwoJbXZuIHI2LCAjMQoJc3RyIHI2LCBbcjEyLCAjNF0KCW12
biByMTIsICM0CgljbXAgcjAsIHIxMgoJYm5lIC5MX29mZmxpbmVhc21fb3BJc1N0cmluZ05vdENl
bGwKCWxkcmIgcjEyLCBbcjQsICM1XQoJbW92cyByMSwgIzAKCWNtcCByMTIsICM2CglpdCBlcQoJ
bW92ZXEgcjEsICMxCglzdHIgcjEsIFtyNywgcjIsIGxzbCAjM10KCWFkZHMgcjksICMxMgoJbGRy
IHIxMiwgW3I5LCAjMF0KCW1vdiBwYywgcjEyCi5MX29mZmxpbmVhc21fb3BJc1N0cmluZ05vdENl
bGw6Cgltb3YgcjEyLCAjMAoJc3RyIHIxMiwgW3I3LCByMiwgbHNsICMzXQoJYWRkcyByOSwgIzEy
CglsZHIgcjEyLCBbcjksICMwXQoJbW92IHBjLCByMTIKLkxsbGludF9vcF9pbml0X2dsb2JhbF9j
b25zdDoKCWxkciByMSwgW3I5LCAjOF0KCW1vdncgcjEyLCAjMAoJbW92dCByMTIsICMxNjM4NAoJ
Y21wIHIxLCByMTIKCWJnZSAuTF9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9uR2xvYmFsT2JqZWN0
X18yNF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnX19jb25zdGFudAoJYWRkIHIxMiwgcjcsIHIx
LCBsc2wgIzMKCWxkciByMCwgW3IxMiwgIzRdCgliIC5MX29mZmxpbmVhc21fd3JpdGVCYXJyaWVy
T25HbG9iYWxPYmplY3RfXzI0X2xvYWRDb25zdGFudE9yVmFyaWFibGVUYWdfX2RvbmUKLkxfb2Zm
bGluZWFzbV93cml0ZUJhcnJpZXJPbkdsb2JhbE9iamVjdF9fMjRfbG9hZENvbnN0YW50T3JWYXJp
YWJsZVRhZ19fY29uc3RhbnQ6CglsZHIgcjAsIFtyNywgIzhdCglsZHIgcjAsIFtyMCwgIzI3Nl0K
CWFkZCByMTIsIHIwLCByMSwgbHNsICMzCglsZHIgcjAsIFtyMTIsICM0XQouTF9vZmZsaW5lYXNt
X3dyaXRlQmFycmllck9uR2xvYmFsT2JqZWN0X18yNF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFn
X19kb25lOgoJbXZuIHIxMiwgIzQKCWNtcCByMCwgcjEyCglibmUgLkxfb2ZmbGluZWFzbV93cml0
ZUJhcnJpZXJPbkdsb2JhbE9iamVjdF9fd3JpdGVCYXJyaWVyRG9uZQoJbGRyIHI0LCBbcjcsICM4
XQoJbGRyIHI0LCBbcjQsICMyMF0KCWxkcmIgcjEsIFtyNCwgIzddCgl0c3QgcjEsIHIxCglibmUg
Lkxfb2ZmbGluZWFzbV93cml0ZUJhcnJpZXJPbkdsb2JhbE9iamVjdF9fd3JpdGVCYXJyaWVyRG9u
ZQoJcHVzaCB7IHI3IH0KCXB1c2ggeyByOSB9CglzdWJzIHNwLCBzcCwgIzgKCW1vdiByMCwgcjcK
CW1vdiByMSwgcjQKCWJseCBsbGludF93cml0ZV9iYXJyaWVyX3Nsb3cKCWFkZHMgc3AsICM4Cglw
b3AgeyByOSB9Cglwb3AgeyByNyB9Ci5MX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25HbG9iYWxP
YmplY3RfX3dyaXRlQmFycmllckRvbmU6CglsZHIgcjEsIFtyOSwgIzhdCglsZHIgcjAsIFtyOSwg
IzRdCgltb3Z3IHIxMiwgIzAKCW1vdnQgcjEyLCAjMTYzODQKCWNtcCByMSwgcjEyCgliZ2UgLkxf
b2ZmbGluZWFzbV8yNV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudAoJYWRkIHIxMiwg
cjcsIHIxLCBsc2wgIzMKCWxkciByMiwgW3IxMiwgIzRdCglsZHIgcjQsIFtyNywgcjEsIGxzbCAj
M10KCWIgLkxfb2ZmbGluZWFzbV8yNV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lCi5MX29m
ZmxpbmVhc21fMjVfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ6CglsZHIgcjQsIFty
NywgIzhdCglsZHIgcjQsIFtyNCwgIzI3Nl0KCWFkZCByMTIsIHI0LCByMSwgbHNsICMzCglsZHIg
cjIsIFtyMTIsICM0XQoJbGRyIHI0LCBbcjQsIHIxLCBsc2wgIzNdCi5MX29mZmxpbmVhc21fMjVf
bG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZToKCXN0ciByMiwgW3IwLCAjNF0KCXN0ciByNCwg
W3IwLCAjMF0KCWFkZHMgcjksICMyMAoJbGRyIHIxMiwgW3I5LCAjMF0KCW1vdiBwYywgcjEyCi5M
bGxpbnRfb3BfZ2V0X2J5X2lkOgoJbGRyIHIwLCBbcjksICM4XQoJbGRyIHIxLCBbcjksICMxNl0K
CW1vdncgcjEyLCAjMAoJbW92dCByMTIsICMxNjM4NAoJY21wIHIwLCByMTIKCWJnZSAuTF9vZmZs
aW5lYXNtX2dldEJ5SWRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18yNV9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQKCWFkZCByMTIsIHI3LCBy
MCwgbHNsICMzCgltdm4gcjYsICM0CglsZHIgcjEwLCBbcjEyLCAjNF0KCWNtcCByMTAsIHI2Cgli
bmUgLkxfb2ZmbGluZWFzbV9nZXRCeUlkX19vcEdldEJ5SWRTbG93CglsZHIgcjQsIFtyNywgcjAs
IGxzbCAjM10KCWIgLkxfb2ZmbGluZWFzbV9nZXRCeUlkX19sb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZF9fMjVfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUK
Lkxfb2ZmbGluZWFzbV9nZXRCeUlkX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMjVf
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50OgoJbGRyIHI0
LCBbcjcsICM4XQoJbGRyIHI0LCBbcjQsICMyNzZdCglhZGQgcjYsIHI0LCByMCwgbHNsICMzCglt
dm4gcjEwLCAjNAoJbGRyIHIxMiwgW3I2LCAjNF0KCWNtcCByMTIsIHIxMAoJYm5lIC5MX29mZmxp
bmVhc21fZ2V0QnlJZF9fb3BHZXRCeUlkU2xvdwoJbGRyIHI0LCBbcjQsIHIwLCBsc2wgIzNdCi5M
X29mZmxpbmVhc21fZ2V0QnlJZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzI1X2xv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lOgoJbGRyIHIyLCBbcjks
ICMyMF0KCWxkciByMTAsIFtyNCwgIzBdCgljbXAgcjEwLCByMQoJYm5lIC5MX29mZmxpbmVhc21f
Z2V0QnlJZF9fb3BHZXRCeUlkU2xvdwoJbGRyIHIxLCBbcjksICM0XQoJYWRkIHIxMCwgcjQsIHIy
LCBsc2wgIzAKCWxkciByMCwgW3IxMCwgIzRdCglsZHIgcjIsIFtyNCwgcjIsIGxzbCAjMF0KCWFk
ZCByMTAsIHI3LCByMSwgbHNsICMzCglzdHIgcjAsIFtyMTAsICM0XQoJc3RyIHIyLCBbcjcsIHIx
LCBsc2wgIzNdCglsZHIgcjEsIFtyOSwgIzMyXQoJc3RyIHIwLCBbcjEsICMyMF0KCXN0ciByMiwg
W3IxLCAjMTZdCglhZGRzIHI5LCAjMzYKCWxkciByMTAsIFtyOSwgIzBdCgltb3YgcGMsIHIxMAou
TF9vZmZsaW5lYXNtX2dldEJ5SWRfX29wR2V0QnlJZFNsb3c6Cgltb3YgcjAsIHI3Cgltb3YgcjEs
IHI5CglibHggbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZAoJbW92IHI5LCByMAoJYWRkcyByOSwg
IzM2CglsZHIgcjEwLCBbcjksICMwXQoJbW92IHBjLCByMTAKLkxsbGludF9vcF9nZXRfYnlfaWRf
b3V0X29mX2xpbmU6CglsZHIgcjAsIFtyOSwgIzhdCglsZHIgcjEsIFtyOSwgIzE2XQoJbW92dyBy
MTAsICMwCgltb3Z0IHIxMCwgIzE2Mzg0CgljbXAgcjAsIHIxMAoJYmdlIC5MX29mZmxpbmVhc21f
Z2V0QnlJZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzI2X2xvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudAoJYWRkIHIxMCwgcjcsIHIwLCBsc2wg
IzMKCW12biByMTIsICM0CglsZHIgcjYsIFtyMTAsICM0XQoJY21wIHI2LCByMTIKCWJuZSAuTF9v
ZmZsaW5lYXNtXzI2X2dldEJ5SWRfX29wR2V0QnlJZFNsb3cKCWxkciByNCwgW3I3LCByMCwgbHNs
ICMzXQoJYiAuTF9vZmZsaW5lYXNtX2dldEJ5SWRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkX18yNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZQouTF9v
ZmZsaW5lYXNtX2dldEJ5SWRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18yNl9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQ6CglsZHIgcjQsIFty
NywgIzhdCglsZHIgcjQsIFtyNCwgIzI3Nl0KCWFkZCByMTIsIHI0LCByMCwgbHNsICMzCgltdm4g
cjYsICM0CglsZHIgcjEwLCBbcjEyLCAjNF0KCWNtcCByMTAsIHI2CglibmUgLkxfb2ZmbGluZWFz
bV8yNl9nZXRCeUlkX19vcEdldEJ5SWRTbG93CglsZHIgcjQsIFtyNCwgcjAsIGxzbCAjM10KLkxf
b2ZmbGluZWFzbV9nZXRCeUlkX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMjZfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmU6CglsZHIgcjIsIFtyOSwg
IzIwXQoJbGRyIHIwLCBbcjQsICM4XQoJbGRyIHI2LCBbcjQsICMwXQoJY21wIHI2LCByMQoJYm5l
IC5MX29mZmxpbmVhc21fMjZfZ2V0QnlJZF9fb3BHZXRCeUlkU2xvdwoJbGRyIHIxLCBbcjksICM0
XQoJYWRkIHI2LCByMCwgcjIsIGxzbCAjMAoJbGRyIHI0LCBbcjYsICM0XQoJbGRyIHIyLCBbcjAs
IHIyLCBsc2wgIzBdCglhZGQgcjYsIHI3LCByMSwgbHNsICMzCglzdHIgcjQsIFtyNiwgIzRdCglz
dHIgcjIsIFtyNywgcjEsIGxzbCAjM10KCWxkciByMSwgW3I5LCAjMzJdCglzdHIgcjQsIFtyMSwg
IzIwXQoJc3RyIHIyLCBbcjEsICMxNl0KCWFkZHMgcjksICMzNgoJbGRyIHI2LCBbcjksICMwXQoJ
bW92IHBjLCByNgouTF9vZmZsaW5lYXNtXzI2X2dldEJ5SWRfX29wR2V0QnlJZFNsb3c6Cgltb3Yg
cjAsIHI3Cgltb3YgcjEsIHI5CglibHggbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZAoJbW92IHI5
LCByMAoJYWRkcyByOSwgIzM2CglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MbGxpbnRf
b3BfZ2V0X2FycmF5X2xlbmd0aDoKCWxkciByMCwgW3I5LCAjOF0KCWxkciByMSwgW3I5LCAjMTZd
Cgltb3Z3IHI2LCAjMAoJbW92dCByNiwgIzE2Mzg0CgljbXAgcjAsIHI2CgliZ2UgLkxfb2ZmbGlu
ZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMjdfbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50CglhZGQgcjYsIHI3LCByMCwgbHNsICMzCglt
dm4gcjEwLCAjNAoJbGRyIHIxMiwgW3I2LCAjNF0KCWNtcCByMTIsIHIxMAoJYm5lIC5MX29mZmxp
bmVhc21fb3BHZXRBcnJheUxlbmd0aFNsb3cKCWxkciByNCwgW3I3LCByMCwgbHNsICMzXQoJYiAu
TF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18yN19sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZQouTF9vZmZsaW5lYXNtX2xvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkX18yN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRh
Z0N1c3RvbV9fY29uc3RhbnQ6CglsZHIgcjQsIFtyNywgIzhdCglsZHIgcjQsIFtyNCwgIzI3Nl0K
CWFkZCByMTAsIHI0LCByMCwgbHNsICMzCgltdm4gcjEyLCAjNAoJbGRyIHI2LCBbcjEwLCAjNF0K
CWNtcCByNiwgcjEyCglibmUgLkxfb2ZmbGluZWFzbV9vcEdldEFycmF5TGVuZ3RoU2xvdwoJbGRy
IHI0LCBbcjQsIHIwLCBsc2wgIzNdCi5MX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWRfXzI3X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25l
OgoJbW92IHIyLCByNAoJbGRyIHIwLCBbcjIsICMwXQoJc3RyIHIwLCBbcjEsICM0XQoJbGRyYiBy
MiwgW3IyLCAjNF0KCXRzdCByMiwgIzEKCWJlcSAuTF9vZmZsaW5lYXNtX29wR2V0QXJyYXlMZW5n
dGhTbG93Cgl0c3QgcjIsICMzMAoJYmVxIC5MX29mZmxpbmVhc21fb3BHZXRBcnJheUxlbmd0aFNs
b3cKCWxkciByMSwgW3I5LCAjNF0KCWxkciByMCwgW3I0LCAjOF0KCWxkciByMCwgW3IwLCAjLThd
CgljbXAgcjAsICMwCglibHQgLkxfb2ZmbGluZWFzbV9vcEdldEFycmF5TGVuZ3RoU2xvdwoJbGRy
IHIyLCBbcjksICMzMl0KCW12biByMTIsICMwCglzdHIgcjEyLCBbcjIsICMyMF0KCXN0ciByMCwg
W3IyLCAjMTZdCglzdHIgcjAsIFtyNywgcjEsIGxzbCAjM10KCWFkZCByMTIsIHI3LCByMSwgbHNs
ICMzCgltdm4gcjYsICMwCglzdHIgcjYsIFtyMTIsICM0XQoJYWRkcyByOSwgIzM2CglsZHIgcjEy
LCBbcjksICMwXQoJbW92IHBjLCByMTIKLkxfb2ZmbGluZWFzbV9vcEdldEFycmF5TGVuZ3RoU2xv
dzoKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBsbGludF9zbG93X3BhdGhfZ2V0X2J5X2lk
Cgltb3YgcjksIHIwCglhZGRzIHI5LCAjMzYKCWxkciByMTIsIFtyOSwgIzBdCgltb3YgcGMsIHIx
MgouTGxsaW50X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgoJbGRyIHIwLCBbcjksICM4XQoJbGRy
IHIxLCBbcjksICM0XQoJYWRkIHIxMiwgcjcsIHIwLCBsc2wgIzMKCW12biByNiwgIzUKCWxkciBy
MTAsIFtyMTIsICM0XQoJY21wIHIxMCwgcjYKCWJuZSAuTF9vZmZsaW5lYXNtX29wR2V0QXJndW1l
bnRzTGVuZ3RoU2xvdwoJbGRyIHIyLCBbcjcsICMzMl0KCXN1YnMgcjIsIHIyLCAjMQoJYWRkIHI2
LCByNywgcjEsIGxzbCAjMwoJbXZuIHIxMCwgIzAKCXN0ciByMTAsIFtyNiwgIzRdCglzdHIgcjIs
IFtyNywgcjEsIGxzbCAjM10KCWFkZHMgcjksICMxNgoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBj
LCByNgouTF9vZmZsaW5lYXNtX29wR2V0QXJndW1lbnRzTGVuZ3RoU2xvdzoKCW1vdiByMCwgcjcK
CW1vdiByMSwgcjkKCWJseCBsbGludF9zbG93X3BhdGhfZ2V0X2FyZ3VtZW50c19sZW5ndGgKCW1v
diByOSwgcjAKCWFkZHMgcjksICMxNgoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTGxs
aW50X29wX3B1dF9ieV9pZDoKCWxkciByMSwgW3I5LCAjMTJdCgltb3Z3IHI2LCAjMAoJbW92dCBy
NiwgIzE2Mzg0CgljbXAgcjEsIHI2CgliZ2UgLkxfb2ZmbGluZWFzbV9wdXRCeUlkX193cml0ZUJh
cnJpZXJPbk9wZXJhbmRzX18yN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnX19jb25zdGFudAoJ
YWRkIHI2LCByNywgcjEsIGxzbCAjMwoJbGRyIHIwLCBbcjYsICM0XQoJYiAuTF9vZmZsaW5lYXNt
X3B1dEJ5SWRfX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzI3X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVUYWdfX2RvbmUKLkxfb2ZmbGluZWFzbV9wdXRCeUlkX193cml0ZUJhcnJpZXJPbk9wZXJhbmRz
X18yN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnX19jb25zdGFudDoKCWxkciByMCwgW3I3LCAj
OF0KCWxkciByMCwgW3IwLCAjMjc2XQoJYWRkIHI2LCByMCwgcjEsIGxzbCAjMwoJbGRyIHIwLCBb
cjYsICM0XQouTF9vZmZsaW5lYXNtX3B1dEJ5SWRfX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzI3
X2xvYWRDb25zdGFudE9yVmFyaWFibGVUYWdfX2RvbmU6Cgltdm4gcjYsICM0CgljbXAgcjAsIHI2
CglibmUgLkxfb2ZmbGluZWFzbV9wdXRCeUlkX193cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0
ZUJhcnJpZXJEb25lCglsZHIgcjEsIFtyOSwgIzRdCgltb3Z3IHI2LCAjMAoJbW92dCByNiwgIzE2
Mzg0CgljbXAgcjEsIHI2CgliZ2UgLkxfb2ZmbGluZWFzbV9wdXRCeUlkX193cml0ZUJhcnJpZXJP
bk9wZXJhbmRzX193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkX18yOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3Rh
bnQKCWFkZCByNiwgcjcsIHIxLCBsc2wgIzMKCW12biByMTAsICM0CglsZHIgcjEyLCBbcjYsICM0
XQoJY21wIHIxMiwgcjEwCglibmUgLkxfb2ZmbGluZWFzbV9wdXRCeUlkX193cml0ZUJhcnJpZXJP
bk9wZXJhbmRzX193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX3dyaXRlQmFycmllckRvbmUKCWxkciBy
MiwgW3I3LCByMSwgbHNsICMzXQoJYiAuTF9vZmZsaW5lYXNtX3B1dEJ5SWRfX3dyaXRlQmFycmll
ck9uT3BlcmFuZHNfX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWRfXzI4X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25l
Ci5MX29mZmxpbmVhc21fcHV0QnlJZF9fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fd3JpdGVCYXJy
aWVyT25PcGVyYW5kX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMjhfbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50OgoJbGRyIHIyLCBbcjcsICM4
XQoJbGRyIHIyLCBbcjIsICMyNzZdCglhZGQgcjEwLCByMiwgcjEsIGxzbCAjMwoJbXZuIHIxMiwg
IzQKCWxkciByNiwgW3IxMCwgIzRdCgljbXAgcjYsIHIxMgoJYm5lIC5MX29mZmxpbmVhc21fcHV0
QnlJZF9fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fd3JpdGVCYXJyaWVyT25PcGVyYW5kX193cml0
ZUJhcnJpZXJEb25lCglsZHIgcjIsIFtyMiwgcjEsIGxzbCAjM10KLkxfb2ZmbGluZWFzbV9wdXRC
eUlkX193cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18yOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZFRhZ0N1c3RvbV9fZG9uZToKCWxkcmIgcjEsIFtyMiwgIzddCgl0c3QgcjEsIHIxCglibmUgLkxf
b2ZmbGluZWFzbV9wdXRCeUlkX193cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJP
bk9wZXJhbmRfX3dyaXRlQmFycmllckRvbmUKCXB1c2ggeyByNyB9CglwdXNoIHsgcjkgfQoJc3Vi
cyBzcCwgc3AsICM4Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHIyCglibHggbGxpbnRfd3JpdGVfYmFy
cmllcl9zbG93CglhZGRzIHNwLCAjOAoJcG9wIHsgcjkgfQoJcG9wIHsgcjcgfQouTF9vZmZsaW5l
YXNtX3B1dEJ5SWRfX3dyaXRlQmFycmllck9uT3BlcmFuZHNfX3dyaXRlQmFycmllck9uT3BlcmFu
ZF9fd3JpdGVCYXJyaWVyRG9uZToKLkxfb2ZmbGluZWFzbV9wdXRCeUlkX193cml0ZUJhcnJpZXJP
bk9wZXJhbmRzX193cml0ZUJhcnJpZXJEb25lOgoJbGRyIHI0LCBbcjksICM0XQoJbGRyIHIxLCBb
cjksICMxNl0KCW1vdncgcjEyLCAjMAoJbW92dCByMTIsICMxNjM4NAoJY21wIHI0LCByMTIKCWJn
ZSAuTF9vZmZsaW5lYXNtX3B1dEJ5SWRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18y
OV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQKCWFkZCBy
MTIsIHI3LCByNCwgbHNsICMzCgltdm4gcjYsICM0CglsZHIgcjEwLCBbcjEyLCAjNF0KCWNtcCBy
MTAsIHI2CglibmUgLkxfb2ZmbGluZWFzbV9wdXRCeUlkX19vcFB1dEJ5SWRTbG93CglsZHIgcjAs
IFtyNywgcjQsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFzbV9wdXRCeUlkX19sb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZF9fMjlfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0
b21fX2RvbmUKLkxfb2ZmbGluZWFzbV9wdXRCeUlkX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZF9fMjlfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50
OgoJbGRyIHIwLCBbcjcsICM4XQoJbGRyIHIwLCBbcjAsICMyNzZdCglhZGQgcjYsIHIwLCByNCwg
bHNsICMzCgltdm4gcjEwLCAjNAoJbGRyIHIxMiwgW3I2LCAjNF0KCWNtcCByMTIsIHIxMAoJYm5l
IC5MX29mZmxpbmVhc21fcHV0QnlJZF9fb3BQdXRCeUlkU2xvdwoJbGRyIHIwLCBbcjAsIHI0LCBs
c2wgIzNdCi5MX29mZmxpbmVhc21fcHV0QnlJZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRfXzI5X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lOgoJbGRy
IHIyLCBbcjksICMxMl0KCWxkciByMTAsIFtyMCwgIzBdCgljbXAgcjEwLCByMQoJYm5lIC5MX29m
ZmxpbmVhc21fcHV0QnlJZF9fb3BQdXRCeUlkU2xvdwoJbGRyIHIxLCBbcjksICMyMF0KCW1vdncg
cjEwLCAjMAoJbW92dCByMTAsICMxNjM4NAoJY21wIHIyLCByMTAKCWJnZSAuTF9vZmZsaW5lYXNt
X3B1dEJ5SWRfX2dldFByb3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX18yOV9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQKCWFkZCByMTAsIHI3LCByMiwgbHNsICMzCglsZHIg
cjQsIFtyMTAsICM0XQoJbGRyIHIyLCBbcjcsIHIyLCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21f
cHV0QnlJZF9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRpb25fXzI5X2xvYWRDb25zdGFu
dE9yVmFyaWFibGUyUmVnX19kb25lCi5MX29mZmxpbmVhc21fcHV0QnlJZF9fZ2V0UHJvcGVydHlT
dG9yYWdlX19jb250aW51YXRpb25fXzI5X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25z
dGFudDoKCWxkciByNCwgW3I3LCAjOF0KCWxkciByNCwgW3I0LCAjMjc2XQoJbHNscyByMiwgcjIs
ICMzCglhZGQgcjQsIHIyCglsZHIgcjIsIFtyNCwgIzBdCglsZHIgcjQsIFtyNCwgIzRdCi5MX29m
ZmxpbmVhc21fcHV0QnlJZF9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRpb25fXzI5X2xv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lOgoJYWRkIHIxMCwgcjAsIHIxLCBsc2wgIzAK
CXN0ciByNCwgW3IxMCwgIzRdCglzdHIgcjIsIFtyMCwgcjEsIGxzbCAjMF0KCWFkZHMgcjksICMz
NgoJbGRyIHIxMCwgW3I5LCAjMF0KCW1vdiBwYywgcjEwCi5MX29mZmxpbmVhc21fcHV0QnlJZF9f
b3BQdXRCeUlkU2xvdzoKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBsbGludF9zbG93X3Bh
dGhfcHV0X2J5X2lkCgltb3YgcjksIHIwCglhZGRzIHI5LCAjMzYKCWxkciByMTAsIFtyOSwgIzBd
Cgltb3YgcGMsIHIxMAouTGxsaW50X29wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZToKCWxkciByMSwg
W3I5LCAjMTJdCgltb3Z3IHIxMCwgIzAKCW1vdnQgcjEwLCAjMTYzODQKCWNtcCByMSwgcjEwCgli
Z2UgLkxfb2ZmbGluZWFzbV9wdXRCeUlkX193cml0ZUJhcnJpZXJPbk9wZXJhbmRzX18yOV9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlVGFnX19jb25zdGFudAoJYWRkIHIxMCwgcjcsIHIxLCBsc2wgIzMK
CWxkciByMCwgW3IxMCwgIzRdCgliIC5MX29mZmxpbmVhc21fcHV0QnlJZF9fd3JpdGVCYXJyaWVy
T25PcGVyYW5kc19fMjlfbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fZG9uZQouTF9vZmZsaW5l
YXNtX3B1dEJ5SWRfX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzI5X2xvYWRDb25zdGFudE9yVmFy
aWFibGVUYWdfX2NvbnN0YW50OgoJbGRyIHIwLCBbcjcsICM4XQoJbGRyIHIwLCBbcjAsICMyNzZd
CglhZGQgcjEwLCByMCwgcjEsIGxzbCAjMwoJbGRyIHIwLCBbcjEwLCAjNF0KLkxfb2ZmbGluZWFz
bV9wdXRCeUlkX193cml0ZUJhcnJpZXJPbk9wZXJhbmRzX18yOV9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlVGFnX19kb25lOgoJbXZuIHIxMCwgIzQKCWNtcCByMCwgcjEwCglibmUgLkxfb2ZmbGluZWFz
bV9wdXRCeUlkX18zMF93cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJEb25lCgls
ZHIgcjEsIFtyOSwgIzRdCgltb3Z3IHIxMCwgIzAKCW1vdnQgcjEwLCAjMTYzODQKCWNtcCByMSwg
cjEwCgliZ2UgLkxfb2ZmbGluZWFzbV9wdXRCeUlkX193cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193
cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zMF9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQKCWFkZCByMTAs
IHI3LCByMSwgbHNsICMzCgltdm4gcjEyLCAjNAoJbGRyIHI2LCBbcjEwLCAjNF0KCWNtcCByNiwg
cjEyCglibmUgLkxfb2ZmbGluZWFzbV9wdXRCeUlkX193cml0ZUJhcnJpZXJPbk9wZXJhbmRzX18z
MF93cml0ZUJhcnJpZXJPbk9wZXJhbmRfX3dyaXRlQmFycmllckRvbmUKCWxkciByMiwgW3I3LCBy
MSwgbHNsICMzXQoJYiAuTF9vZmZsaW5lYXNtX3B1dEJ5SWRfX3dyaXRlQmFycmllck9uT3BlcmFu
ZHNfX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRf
XzMwX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lCi5MX29mZmxp
bmVhc21fcHV0QnlJZF9fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fd3JpdGVCYXJyaWVyT25PcGVy
YW5kX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzBfbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50OgoJbGRyIHIyLCBbcjcsICM4XQoJbGRyIHIy
LCBbcjIsICMyNzZdCglhZGQgcjEyLCByMiwgcjEsIGxzbCAjMwoJbXZuIHI2LCAjNAoJbGRyIHIx
MCwgW3IxMiwgIzRdCgljbXAgcjEwLCByNgoJYm5lIC5MX29mZmxpbmVhc21fcHV0QnlJZF9fd3Jp
dGVCYXJyaWVyT25PcGVyYW5kc19fMzBfd3JpdGVCYXJyaWVyT25PcGVyYW5kX193cml0ZUJhcnJp
ZXJEb25lCglsZHIgcjIsIFtyMiwgcjEsIGxzbCAjM10KLkxfb2ZmbGluZWFzbV9wdXRCeUlkX193
cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkX18zMF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1
c3RvbV9fZG9uZToKCWxkcmIgcjEsIFtyMiwgIzddCgl0c3QgcjEsIHIxCglibmUgLkxfb2ZmbGlu
ZWFzbV9wdXRCeUlkX193cml0ZUJhcnJpZXJPbk9wZXJhbmRzX18zMF93cml0ZUJhcnJpZXJPbk9w
ZXJhbmRfX3dyaXRlQmFycmllckRvbmUKCXB1c2ggeyByNyB9CglwdXNoIHsgcjkgfQoJc3VicyBz
cCwgc3AsICM4Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHIyCglibHggbGxpbnRfd3JpdGVfYmFycmll
cl9zbG93CglhZGRzIHNwLCAjOAoJcG9wIHsgcjkgfQoJcG9wIHsgcjcgfQouTF9vZmZsaW5lYXNt
X3B1dEJ5SWRfX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzMwX3dyaXRlQmFycmllck9uT3BlcmFu
ZF9fd3JpdGVCYXJyaWVyRG9uZToKLkxfb2ZmbGluZWFzbV9wdXRCeUlkX18zMF93cml0ZUJhcnJp
ZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJEb25lOgoJbGRyIHI0LCBbcjksICM0XQoJbGRyIHIx
LCBbcjksICMxNl0KCW1vdncgcjYsICMwCgltb3Z0IHI2LCAjMTYzODQKCWNtcCByNCwgcjYKCWJn
ZSAuTF9vZmZsaW5lYXNtX3B1dEJ5SWRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18z
MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQKCWFkZCBy
NiwgcjcsIHI0LCBsc2wgIzMKCW12biByMTAsICM0CglsZHIgcjEyLCBbcjYsICM0XQoJY21wIHIx
MiwgcjEwCglibmUgLkxfb2ZmbGluZWFzbV8zMV9wdXRCeUlkX19vcFB1dEJ5SWRTbG93CglsZHIg
cjAsIFtyNywgcjQsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFzbV9wdXRCeUlkX19sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZF9fMzFfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdD
dXN0b21fX2RvbmUKLkxfb2ZmbGluZWFzbV9wdXRCeUlkX19sb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZF9fMzFfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0
YW50OgoJbGRyIHIwLCBbcjcsICM4XQoJbGRyIHIwLCBbcjAsICMyNzZdCglhZGQgcjEwLCByMCwg
cjQsIGxzbCAjMwoJbXZuIHIxMiwgIzQKCWxkciByNiwgW3IxMCwgIzRdCgljbXAgcjYsIHIxMgoJ
Ym5lIC5MX29mZmxpbmVhc21fMzFfcHV0QnlJZF9fb3BQdXRCeUlkU2xvdwoJbGRyIHIwLCBbcjAs
IHI0LCBsc2wgIzNdCi5MX29mZmxpbmVhc21fcHV0QnlJZF9fbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWRfXzMxX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25l
OgoJbGRyIHIyLCBbcjksICMxMl0KCWxkciByNCwgW3IwLCAjOF0KCWxkciByMTIsIFtyMCwgIzBd
CgljbXAgcjEyLCByMQoJYm5lIC5MX29mZmxpbmVhc21fMzFfcHV0QnlJZF9fb3BQdXRCeUlkU2xv
dwoJbGRyIHIxLCBbcjksICMyMF0KCW1vdncgcjEyLCAjMAoJbW92dCByMTIsICMxNjM4NAoJY21w
IHIyLCByMTIKCWJnZSAuTF9vZmZsaW5lYXNtX3B1dEJ5SWRfX2dldFByb3BlcnR5U3RvcmFnZV9f
Y29udGludWF0aW9uX18zMV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQKCWFk
ZCByMTIsIHI3LCByMiwgbHNsICMzCglsZHIgcjAsIFtyMTIsICM0XQoJbGRyIHIyLCBbcjcsIHIy
LCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fcHV0QnlJZF9fZ2V0UHJvcGVydHlTdG9yYWdlX19j
b250aW51YXRpb25fXzMxX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lCi5MX29mZmxp
bmVhc21fcHV0QnlJZF9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRpb25fXzMxX2xvYWRD
b25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudDoKCWxkciByMCwgW3I3LCAjOF0KCWxkciBy
MCwgW3IwLCAjMjc2XQoJbHNscyByMiwgcjIsICMzCglhZGQgcjAsIHIyCglsZHIgcjIsIFtyMCwg
IzBdCglsZHIgcjAsIFtyMCwgIzRdCi5MX29mZmxpbmVhc21fcHV0QnlJZF9fZ2V0UHJvcGVydHlT
dG9yYWdlX19jb250aW51YXRpb25fXzMxX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25l
OgoJYWRkIHIxMiwgcjQsIHIxLCBsc2wgIzAKCXN0ciByMCwgW3IxMiwgIzRdCglzdHIgcjIsIFty
NCwgcjEsIGxzbCAjMF0KCWFkZHMgcjksICMzNgoJbGRyIHIxMiwgW3I5LCAjMF0KCW1vdiBwYywg
cjEyCi5MX29mZmxpbmVhc21fMzFfcHV0QnlJZF9fb3BQdXRCeUlkU2xvdzoKCW1vdiByMCwgcjcK
CW1vdiByMSwgcjkKCWJseCBsbGludF9zbG93X3BhdGhfcHV0X2J5X2lkCgltb3YgcjksIHIwCglh
ZGRzIHI5LCAjMzYKCWxkciByMTIsIFtyOSwgIzBdCgltb3YgcGMsIHIxMgouTGxsaW50X29wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKCWxkciByMSwgW3I5LCAjNF0KCW1vdncgcjEyLCAj
MAoJbW92dCByMTIsICMxNjM4NAoJY21wIHIxLCByMTIKCWJnZSAuTF9vZmZsaW5lYXNtX3B1dEJ5
SWRUcmFuc2l0aW9uX193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkX18zMl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29u
c3RhbnQKCWFkZCByMTIsIHI3LCByMSwgbHNsICMzCgltdm4gcjYsICM0CglsZHIgcjEwLCBbcjEy
LCAjNF0KCWNtcCByMTAsIHI2CglibmUgLkxfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9f
MzJfd3JpdGVCYXJyaWVyT25PcGVyYW5kX193cml0ZUJhcnJpZXJEb25lCglsZHIgcjIsIFtyNywg
cjEsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fd3JpdGVCYXJy
aWVyT25PcGVyYW5kX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzJfbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUKLkxfb2ZmbGluZWFzbV9wdXRCeUlk
VHJhbnNpdGlvbl9fd3JpdGVCYXJyaWVyT25PcGVyYW5kX19sb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZF9fMzJfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0
YW50OgoJbGRyIHIyLCBbcjcsICM4XQoJbGRyIHIyLCBbcjIsICMyNzZdCglhZGQgcjYsIHIyLCBy
MSwgbHNsICMzCgltdm4gcjEwLCAjNAoJbGRyIHIxMiwgW3I2LCAjNF0KCWNtcCByMTIsIHIxMAoJ
Ym5lIC5MX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fXzMyX3dyaXRlQmFycmllck9uT3Bl
cmFuZF9fd3JpdGVCYXJyaWVyRG9uZQoJbGRyIHIyLCBbcjIsIHIxLCBsc2wgIzNdCi5MX29mZmxp
bmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWRfXzMyX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFn
Q3VzdG9tX19kb25lOgoJbGRyYiByMSwgW3IyLCAjN10KCXRzdCByMSwgcjEKCWJuZSAuTF9vZmZs
aW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX18zMl93cml0ZUJhcnJpZXJPbk9wZXJhbmRfX3dyaXRl
QmFycmllckRvbmUKCXB1c2ggeyByNyB9CglwdXNoIHsgcjkgfQoJc3VicyBzcCwgc3AsICM4Cglt
b3YgcjAsIHI3Cgltb3YgcjEsIHIyCglibHggbGxpbnRfd3JpdGVfYmFycmllcl9zbG93CglhZGRz
IHNwLCAjOAoJcG9wIHsgcjkgfQoJcG9wIHsgcjcgfQouTF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFu
c2l0aW9uX18zMl93cml0ZUJhcnJpZXJPbk9wZXJhbmRfX3dyaXRlQmFycmllckRvbmU6CglsZHIg
cjQsIFtyOSwgIzRdCglsZHIgcjEsIFtyOSwgIzE2XQoJbW92dyByMTAsICMwCgltb3Z0IHIxMCwg
IzE2Mzg0CgljbXAgcjQsIHIxMAoJYmdlIC5MX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25f
X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zM19sb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQKCWFkZCByMTAsIHI3LCByNCwgbHNsICMzCgltdm4g
cjEyLCAjNAoJbGRyIHI2LCBbcjEwLCAjNF0KCWNtcCByNiwgcjEyCglibmUgLkxfb2ZmbGluZWFz
bV9wdXRCeUlkVHJhbnNpdGlvbl9fb3BQdXRCeUlkU2xvdwoJbGRyIHIwLCBbcjcsIHI0LCBsc2wg
IzNdCgliIC5MX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2xvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkX18zM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9f
ZG9uZQouTF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19sb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZF9fMzNfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2Nv
bnN0YW50OgoJbGRyIHIwLCBbcjcsICM4XQoJbGRyIHIwLCBbcjAsICMyNzZdCglhZGQgcjEyLCBy
MCwgcjQsIGxzbCAjMwoJbXZuIHI2LCAjNAoJbGRyIHIxMCwgW3IxMiwgIzRdCgljbXAgcjEwLCBy
NgoJYm5lIC5MX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX29wUHV0QnlJZFNsb3cKCWxk
ciByMCwgW3IwLCByNCwgbHNsICMzXQouTF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19s
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzNfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWRUYWdDdXN0b21fX2RvbmU6CglsZHIgcjIsIFtyOSwgIzEyXQoJbGRyIHI2LCBbcjAsICMw
XQoJY21wIHI2LCByMQoJYm5lIC5MX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX29wUHV0
QnlJZFNsb3cKCWxkciByMSwgW3I5LCAjMjBdCglhZGRzIHI0LCByMSwgcjAKCW1vdncgcjYsICMw
Cgltb3Z0IHI2LCAjMTYzODQKCWNtcCByMiwgcjYKCWJnZSAuTF9vZmZsaW5lYXNtX3B1dEJ5SWRU
cmFuc2l0aW9uX19nZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fMzNfbG9hZENvbnN0
YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50CglhZGQgcjYsIHI3LCByMiwgbHNsICMzCglsZHIg
cjEsIFtyNiwgIzRdCglsZHIgcjIsIFtyNywgcjIsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFzbV9w
dXRCeUlkVHJhbnNpdGlvbl9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRpb25fXzMzX2xv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lCi5MX29mZmxpbmVhc21fcHV0QnlJZFRyYW5z
aXRpb25fX2dldFByb3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX18zM19sb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZ19fY29uc3RhbnQ6CglsZHIgcjEsIFtyNywgIzhdCglsZHIgcjEsIFtyMSwg
IzI3Nl0KCWxzbHMgcjIsIHIyLCAjMwoJYWRkIHIxLCByMgoJbGRyIHIyLCBbcjEsICMwXQoJbGRy
IHIxLCBbcjEsICM0XQouTF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19nZXRQcm9wZXJ0
eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fMzNfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2Rv
bmU6CglzdHIgcjEsIFtyNCwgIzRdCglsZHIgcjEsIFtyOSwgIzI0XQoJc3RyIHIyLCBbcjQsICMw
XQoJc3RyIHIxLCBbcjAsICMwXQoJYWRkcyByOSwgIzM2CglsZHIgcjYsIFtyOSwgIzBdCgltb3Yg
cGMsIHI2Ci5MX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX29wUHV0QnlJZFNsb3c6Cglt
b3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggbGxpbnRfc2xvd19wYXRoX3B1dF9ieV9pZAoJbW92
IHI5LCByMAoJYWRkcyByOSwgIzM2CglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MbGxp
bnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgoJbGRyIHIxLCBb
cjksICM0XQoJbW92dyByNiwgIzAKCW1vdnQgcjYsICMxNjM4NAoJY21wIHIxLCByNgoJYmdlIC5M
X29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzM0X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkVGFnQ3VzdG9tX19jb25zdGFudAoJYWRkIHI2LCByNywgcjEsIGxzbCAjMwoJbXZuIHIxMCwg
IzQKCWxkciByMTIsIFtyNiwgIzRdCgljbXAgcjEyLCByMTAKCWJuZSAuTF9vZmZsaW5lYXNtX3B1
dEJ5SWRUcmFuc2l0aW9uX18zNF93cml0ZUJhcnJpZXJPbk9wZXJhbmRfX3dyaXRlQmFycmllckRv
bmUKCWxkciByMiwgW3I3LCByMSwgbHNsICMzXQoJYiAuTF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFu
c2l0aW9uX193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkX18zNF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZQouTF9v
ZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zNF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZFRhZ0N1c3RvbV9fY29uc3RhbnQ6CglsZHIgcjIsIFtyNywgIzhdCglsZHIgcjIsIFtyMiwgIzI3
Nl0KCWFkZCByMTAsIHIyLCByMSwgbHNsICMzCgltdm4gcjEyLCAjNAoJbGRyIHI2LCBbcjEwLCAj
NF0KCWNtcCByNiwgcjEyCglibmUgLkxfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fMzRf
d3JpdGVCYXJyaWVyT25PcGVyYW5kX193cml0ZUJhcnJpZXJEb25lCglsZHIgcjIsIFtyMiwgcjEs
IGxzbCAjM10KLkxfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fd3JpdGVCYXJyaWVyT25P
cGVyYW5kX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzRfbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmU6CglsZHJiIHIxLCBbcjIsICM3XQoJdHN0IHIx
LCByMQoJYm5lIC5MX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fXzM0X3dyaXRlQmFycmll
ck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9uZQoJcHVzaCB7IHI3IH0KCXB1c2ggeyByOSB9Cglz
dWJzIHNwLCBzcCwgIzgKCW1vdiByMCwgcjcKCW1vdiByMSwgcjIKCWJseCBsbGludF93cml0ZV9i
YXJyaWVyX3Nsb3cKCWFkZHMgc3AsICM4Cglwb3AgeyByOSB9Cglwb3AgeyByNyB9Ci5MX29mZmxp
bmVhc21fcHV0QnlJZFRyYW5zaXRpb25fXzM0X3dyaXRlQmFycmllck9uT3BlcmFuZF9fd3JpdGVC
YXJyaWVyRG9uZToKCWxkciByNCwgW3I5LCAjNF0KCWxkciByMSwgW3I5LCAjMTZdCgltb3Z3IHIx
MiwgIzAKCW1vdnQgcjEyLCAjMTYzODQKCWNtcCByNCwgcjEyCgliZ2UgLkxfb2ZmbGluZWFzbV9w
dXRCeUlkVHJhbnNpdGlvbl9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzM1X2xvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudAoJYWRkIHIxMiwgcjcs
IHI0LCBsc2wgIzMKCW12biByNiwgIzQKCWxkciByMTAsIFtyMTIsICM0XQoJY21wIHIxMCwgcjYK
CWJuZSAuTF9vZmZsaW5lYXNtXzM1X3B1dEJ5SWRUcmFuc2l0aW9uX19vcFB1dEJ5SWRTbG93Cgls
ZHIgcjAsIFtyNywgcjQsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlv
bl9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzM1X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lCi5MX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25f
X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zNV9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQ6CglsZHIgcjAsIFtyNywgIzhdCglsZHIgcjAsIFty
MCwgIzI3Nl0KCWFkZCByNiwgcjAsIHI0LCBsc2wgIzMKCW12biByMTAsICM0CglsZHIgcjEyLCBb
cjYsICM0XQoJY21wIHIxMiwgcjEwCglibmUgLkxfb2ZmbGluZWFzbV8zNV9wdXRCeUlkVHJhbnNp
dGlvbl9fb3BQdXRCeUlkU2xvdwoJbGRyIHIwLCBbcjAsIHI0LCBsc2wgIzNdCi5MX29mZmxpbmVh
c21fcHV0QnlJZFRyYW5zaXRpb25fX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zNV9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZToKCWxkciByMiwgW3I5
LCAjMTJdCglsZHIgcjEwLCBbcjAsICMwXQoJY21wIHIxMCwgcjEKCWJuZSAuTF9vZmZsaW5lYXNt
XzM1X3B1dEJ5SWRUcmFuc2l0aW9uX19vcFB1dEJ5SWRTbG93CglsZHIgcjEsIFtyOSwgIzIwXQoJ
bGRyIHI0LCBbcjAsICM4XQoJYWRkcyByNCwgcjEsIHI0Cgltb3Z3IHIxMCwgIzAKCW1vdnQgcjEw
LCAjMTYzODQKCWNtcCByMiwgcjEwCgliZ2UgLkxfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlv
bl9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRpb25fXzM1X2xvYWRDb25zdGFudE9yVmFy
aWFibGUyUmVnX19jb25zdGFudAoJYWRkIHIxMCwgcjcsIHIyLCBsc2wgIzMKCWxkciByMSwgW3Ix
MCwgIzRdCglsZHIgcjIsIFtyNywgcjIsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFzbV9wdXRCeUlk
VHJhbnNpdGlvbl9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRpb25fXzM1X2xvYWRDb25z
dGFudE9yVmFyaWFibGUyUmVnX19kb25lCi5MX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25f
X2dldFByb3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX18zNV9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZ19fY29uc3RhbnQ6CglsZHIgcjEsIFtyNywgIzhdCglsZHIgcjEsIFtyMSwgIzI3Nl0K
CWxzbHMgcjIsIHIyLCAjMwoJYWRkIHIxLCByMgoJbGRyIHIyLCBbcjEsICMwXQoJbGRyIHIxLCBb
cjEsICM0XQouTF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19nZXRQcm9wZXJ0eVN0b3Jh
Z2VfX2NvbnRpbnVhdGlvbl9fMzVfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmU6Cglz
dHIgcjEsIFtyNCwgIzRdCglsZHIgcjEsIFtyOSwgIzI0XQoJc3RyIHIyLCBbcjQsICMwXQoJc3Ry
IHIxLCBbcjAsICMwXQoJYWRkcyByOSwgIzM2CglsZHIgcjEwLCBbcjksICMwXQoJbW92IHBjLCBy
MTAKLkxfb2ZmbGluZWFzbV8zNV9wdXRCeUlkVHJhbnNpdGlvbl9fb3BQdXRCeUlkU2xvdzoKCW1v
diByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBsbGludF9zbG93X3BhdGhfcHV0X2J5X2lkCgltb3Yg
cjksIHIwCglhZGRzIHI5LCAjMzYKCWxkciByMTAsIFtyOSwgIzBdCgltb3YgcGMsIHIxMAouTGxs
aW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKCWxkciByMSwgW3I5LCAjNF0KCW1v
dncgcjEwLCAjMAoJbW92dCByMTAsICMxNjM4NAoJY21wIHIxLCByMTAKCWJnZSAuTF9vZmZsaW5l
YXNtX3B1dEJ5SWRUcmFuc2l0aW9uX193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkX18zNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1
c3RvbV9fY29uc3RhbnQKCWFkZCByMTAsIHI3LCByMSwgbHNsICMzCgltdm4gcjEyLCAjNAoJbGRy
IHI2LCBbcjEwLCAjNF0KCWNtcCByNiwgcjEyCglibmUgLkxfb2ZmbGluZWFzbV9wdXRCeUlkVHJh
bnNpdGlvbl9fMzZfd3JpdGVCYXJyaWVyT25PcGVyYW5kX193cml0ZUJhcnJpZXJEb25lCglsZHIg
cjIsIFtyNywgcjEsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9f
d3JpdGVCYXJyaWVyT25PcGVyYW5kX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzZf
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUKLkxfb2ZmbGluZWFz
bV9wdXRCeUlkVHJhbnNpdGlvbl9fd3JpdGVCYXJyaWVyT25PcGVyYW5kX19sb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZF9fMzZfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0
b21fX2NvbnN0YW50OgoJbGRyIHIyLCBbcjcsICM4XQoJbGRyIHIyLCBbcjIsICMyNzZdCglhZGQg
cjEyLCByMiwgcjEsIGxzbCAjMwoJbXZuIHI2LCAjNAoJbGRyIHIxMCwgW3IxMiwgIzRdCgljbXAg
cjEwLCByNgoJYm5lIC5MX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fXzM2X3dyaXRlQmFy
cmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9uZQoJbGRyIHIyLCBbcjIsIHIxLCBsc2wgIzNd
Ci5MX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX3dyaXRlQmFycmllck9uT3BlcmFuZF9f
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzM2X2xvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkVGFnQ3VzdG9tX19kb25lOgoJbGRyYiByMSwgW3IyLCAjN10KCXRzdCByMSwgcjEKCWJu
ZSAuTF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX18zNl93cml0ZUJhcnJpZXJPbk9wZXJh
bmRfX3dyaXRlQmFycmllckRvbmUKCXB1c2ggeyByNyB9CglwdXNoIHsgcjkgfQoJc3VicyBzcCwg
c3AsICM4Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHIyCglibHggbGxpbnRfd3JpdGVfYmFycmllcl9z
bG93CglhZGRzIHNwLCAjOAoJcG9wIHsgcjkgfQoJcG9wIHsgcjcgfQouTF9vZmZsaW5lYXNtX3B1
dEJ5SWRUcmFuc2l0aW9uX18zNl93cml0ZUJhcnJpZXJPbk9wZXJhbmRfX3dyaXRlQmFycmllckRv
bmU6CglsZHIgcjQsIFtyOSwgIzRdCglsZHIgcjEsIFtyOSwgIzE2XQoJbW92dyByNiwgIzAKCW1v
dnQgcjYsICMxNjM4NAoJY21wIHI0LCByNgoJYmdlIC5MX29mZmxpbmVhc21fcHV0QnlJZFRyYW5z
aXRpb25fX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zN19sb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQKCWFkZCByNiwgcjcsIHI0LCBsc2wgIzMK
CW12biByMTAsICM0CglsZHIgcjEyLCBbcjYsICM0XQoJY21wIHIxMiwgcjEwCglibmUgLkxfb2Zm
bGluZWFzbV8zN19wdXRCeUlkVHJhbnNpdGlvbl9fb3BQdXRCeUlkU2xvdwoJbGRyIHIwLCBbcjcs
IHI0LCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2xvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkX18zN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRh
Z0N1c3RvbV9fZG9uZQouTF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZF9fMzdfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdD
dXN0b21fX2NvbnN0YW50OgoJbGRyIHIwLCBbcjcsICM4XQoJbGRyIHIwLCBbcjAsICMyNzZdCglh
ZGQgcjEwLCByMCwgcjQsIGxzbCAjMwoJbXZuIHIxMiwgIzQKCWxkciByNiwgW3IxMCwgIzRdCglj
bXAgcjYsIHIxMgoJYm5lIC5MX29mZmxpbmVhc21fMzdfcHV0QnlJZFRyYW5zaXRpb25fX29wUHV0
QnlJZFNsb3cKCWxkciByMCwgW3IwLCByNCwgbHNsICMzXQouTF9vZmZsaW5lYXNtX3B1dEJ5SWRU
cmFuc2l0aW9uX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzdfbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmU6CglsZHIgcjIsIFtyOSwgIzEyXQoJbGRy
IHIxMiwgW3IwLCAjMF0KCWNtcCByMTIsIHIxCglibmUgLkxfb2ZmbGluZWFzbV8zN19wdXRCeUlk
VHJhbnNpdGlvbl9fb3BQdXRCeUlkU2xvdwoJbGRyIHI0LCBbcjksICMyOF0KCWxkciByNCwgW3I0
LCAjOF0KCW12biByMTIsICMyCglsZHIgcjYsIFtyMSwgIzI4XQoJY21wIHI2LCByMTIKCWJlcSAu
TF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19hZGRpdGlvbmFsQ2hlY2tzX19kb25lCi5M
X29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2FkZGl0aW9uYWxDaGVja3NfX2xvb3A6Cgls
ZHIgcjEsIFtyMSwgIzI0XQoJbGRyIHIxLCBbcjEsICMwXQoJbGRyIHIxMiwgW3I0LCAjMF0KCWNt
cCByMSwgcjEyCglibmUgLkxfb2ZmbGluZWFzbV8zN19wdXRCeUlkVHJhbnNpdGlvbl9fb3BQdXRC
eUlkU2xvdwoJYWRkcyByNCwgIzQKCW12biByMTIsICMyCglsZHIgcjYsIFtyMSwgIzI4XQoJY21w
IHI2LCByMTIKCWJuZSAuTF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19hZGRpdGlvbmFs
Q2hlY2tzX19sb29wCi5MX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2FkZGl0aW9uYWxD
aGVja3NfX2RvbmU6CglsZHIgcjEsIFtyOSwgIzIwXQoJYWRkcyByNCwgcjEsIHIwCgltb3Z3IHIx
MiwgIzAKCW1vdnQgcjEyLCAjMTYzODQKCWNtcCByMiwgcjEyCgliZ2UgLkxfb2ZmbGluZWFzbV9w
dXRCeUlkVHJhbnNpdGlvbl9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRpb25fXzM3X2xv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudAoJYWRkIHIxMiwgcjcsIHIyLCBsc2wg
IzMKCWxkciByMSwgW3IxMiwgIzRdCglsZHIgcjIsIFtyNywgcjIsIGxzbCAjM10KCWIgLkxfb2Zm
bGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRp
b25fXzM3X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lCi5MX29mZmxpbmVhc21fcHV0
QnlJZFRyYW5zaXRpb25fX2dldFByb3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX18zN19sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQ6CglsZHIgcjEsIFtyNywgIzhdCglsZHIg
cjEsIFtyMSwgIzI3Nl0KCWxzbHMgcjIsIHIyLCAjMwoJYWRkIHIxLCByMgoJbGRyIHIyLCBbcjEs
ICMwXQoJbGRyIHIxLCBbcjEsICM0XQouTF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19n
ZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fMzdfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWdfX2RvbmU6CglzdHIgcjEsIFtyNCwgIzRdCglsZHIgcjEsIFtyOSwgIzI0XQoJc3RyIHIy
LCBbcjQsICMwXQoJc3RyIHIxLCBbcjAsICMwXQoJYWRkcyByOSwgIzM2CglsZHIgcjEyLCBbcjks
ICMwXQoJbW92IHBjLCByMTIKLkxfb2ZmbGluZWFzbV8zN19wdXRCeUlkVHJhbnNpdGlvbl9fb3BQ
dXRCeUlkU2xvdzoKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBsbGludF9zbG93X3BhdGhf
cHV0X2J5X2lkCgltb3YgcjksIHIwCglhZGRzIHI5LCAjMzYKCWxkciByMTIsIFtyOSwgIzBdCglt
b3YgcGMsIHIxMgouTGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbF9vdXRfb2Zf
bGluZToKCWxkciByMSwgW3I5LCAjNF0KCW1vdncgcjEyLCAjMAoJbW92dCByMTIsICMxNjM4NAoJ
Y21wIHIxLCByMTIKCWJnZSAuTF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX193cml0ZUJh
cnJpZXJPbk9wZXJhbmRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zOF9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQKCWFkZCByMTIsIHI3LCBy
MSwgbHNsICMzCgltdm4gcjYsICM0CglsZHIgcjEwLCBbcjEyLCAjNF0KCWNtcCByMTAsIHI2Cgli
bmUgLkxfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fMzhfd3JpdGVCYXJyaWVyT25PcGVy
YW5kX193cml0ZUJhcnJpZXJEb25lCglsZHIgcjIsIFtyNywgcjEsIGxzbCAjM10KCWIgLkxfb2Zm
bGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fd3JpdGVCYXJyaWVyT25PcGVyYW5kX19sb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzhfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRU
YWdDdXN0b21fX2RvbmUKLkxfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fd3JpdGVCYXJy
aWVyT25PcGVyYW5kX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzhfbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50OgoJbGRyIHIyLCBbcjcsICM4
XQoJbGRyIHIyLCBbcjIsICMyNzZdCglhZGQgcjYsIHIyLCByMSwgbHNsICMzCgltdm4gcjEwLCAj
NAoJbGRyIHIxMiwgW3I2LCAjNF0KCWNtcCByMTIsIHIxMAoJYm5lIC5MX29mZmxpbmVhc21fcHV0
QnlJZFRyYW5zaXRpb25fXzM4X3dyaXRlQmFycmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9u
ZQoJbGRyIHIyLCBbcjIsIHIxLCBsc2wgIzNdCi5MX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRp
b25fX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRf
XzM4X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lOgoJbGRyYiBy
MSwgW3IyLCAjN10KCXRzdCByMSwgcjEKCWJuZSAuTF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0
aW9uX18zOF93cml0ZUJhcnJpZXJPbk9wZXJhbmRfX3dyaXRlQmFycmllckRvbmUKCXB1c2ggeyBy
NyB9CglwdXNoIHsgcjkgfQoJc3VicyBzcCwgc3AsICM4Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHIy
CglibHggbGxpbnRfd3JpdGVfYmFycmllcl9zbG93CglhZGRzIHNwLCAjOAoJcG9wIHsgcjkgfQoJ
cG9wIHsgcjcgfQouTF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX18zOF93cml0ZUJhcnJp
ZXJPbk9wZXJhbmRfX3dyaXRlQmFycmllckRvbmU6CglsZHIgcjQsIFtyOSwgIzRdCglsZHIgcjEs
IFtyOSwgIzE2XQoJbW92dyByMTAsICMwCgltb3Z0IHIxMCwgIzE2Mzg0CgljbXAgcjQsIHIxMAoJ
YmdlIC5MX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2xvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkX18zOV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29u
c3RhbnQKCWFkZCByMTAsIHI3LCByNCwgbHNsICMzCgltdm4gcjEyLCAjNAoJbGRyIHI2LCBbcjEw
LCAjNF0KCWNtcCByNiwgcjEyCglibmUgLkxfb2ZmbGluZWFzbV8zOV9wdXRCeUlkVHJhbnNpdGlv
bl9fb3BQdXRCeUlkU2xvdwoJbGRyIHIwLCBbcjcsIHI0LCBsc2wgIzNdCgliIC5MX29mZmxpbmVh
c21fcHV0QnlJZFRyYW5zaXRpb25fX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zOV9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZQouTF9vZmZsaW5lYXNt
X3B1dEJ5SWRUcmFuc2l0aW9uX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzlfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50OgoJbGRyIHIwLCBb
cjcsICM4XQoJbGRyIHIwLCBbcjAsICMyNzZdCglhZGQgcjEyLCByMCwgcjQsIGxzbCAjMwoJbXZu
IHI2LCAjNAoJbGRyIHIxMCwgW3IxMiwgIzRdCgljbXAgcjEwLCByNgoJYm5lIC5MX29mZmxpbmVh
c21fMzlfcHV0QnlJZFRyYW5zaXRpb25fX29wUHV0QnlJZFNsb3cKCWxkciByMCwgW3IwLCByNCwg
bHNsICMzXQouTF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19sb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZF9fMzlfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21f
X2RvbmU6CglsZHIgcjIsIFtyOSwgIzEyXQoJbGRyIHI2LCBbcjAsICMwXQoJY21wIHI2LCByMQoJ
Ym5lIC5MX29mZmxpbmVhc21fMzlfcHV0QnlJZFRyYW5zaXRpb25fX29wUHV0QnlJZFNsb3cKCWxk
ciByNCwgW3I5LCAjMjhdCglsZHIgcjQsIFtyNCwgIzhdCgltdm4gcjYsICMyCglsZHIgcjEwLCBb
cjEsICMyOF0KCWNtcCByMTAsIHI2CgliZXEgLkxfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlv
bl9fMzlfYWRkaXRpb25hbENoZWNrc19fZG9uZQouTF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0
aW9uX18zOV9hZGRpdGlvbmFsQ2hlY2tzX19sb29wOgoJbGRyIHIxLCBbcjEsICMyNF0KCWxkciBy
MSwgW3IxLCAjMF0KCWxkciByNiwgW3I0LCAjMF0KCWNtcCByMSwgcjYKCWJuZSAuTF9vZmZsaW5l
YXNtXzM5X3B1dEJ5SWRUcmFuc2l0aW9uX19vcFB1dEJ5SWRTbG93CglhZGRzIHI0LCAjNAoJbXZu
IHI2LCAjMgoJbGRyIHIxMCwgW3IxLCAjMjhdCgljbXAgcjEwLCByNgoJYm5lIC5MX29mZmxpbmVh
c21fcHV0QnlJZFRyYW5zaXRpb25fXzM5X2FkZGl0aW9uYWxDaGVja3NfX2xvb3AKLkxfb2ZmbGlu
ZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fMzlfYWRkaXRpb25hbENoZWNrc19fZG9uZToKCWxkciBy
MSwgW3I5LCAjMjBdCglsZHIgcjQsIFtyMCwgIzhdCglhZGRzIHI0LCByMSwgcjQKCW1vdncgcjYs
ICMwCgltb3Z0IHI2LCAjMTYzODQKCWNtcCByMiwgcjYKCWJnZSAuTF9vZmZsaW5lYXNtX3B1dEJ5
SWRUcmFuc2l0aW9uX19nZXRQcm9wZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fMzlfbG9hZENv
bnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50CglhZGQgcjYsIHI3LCByMiwgbHNsICMzCgls
ZHIgcjEsIFtyNiwgIzRdCglsZHIgcjIsIFtyNywgcjIsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFz
bV9wdXRCeUlkVHJhbnNpdGlvbl9fZ2V0UHJvcGVydHlTdG9yYWdlX19jb250aW51YXRpb25fXzM5
X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lCi5MX29mZmxpbmVhc21fcHV0QnlJZFRy
YW5zaXRpb25fX2dldFByb3BlcnR5U3RvcmFnZV9fY29udGludWF0aW9uX18zOV9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQ6CglsZHIgcjEsIFtyNywgIzhdCglsZHIgcjEsIFty
MSwgIzI3Nl0KCWxzbHMgcjIsIHIyLCAjMwoJYWRkIHIxLCByMgoJbGRyIHIyLCBbcjEsICMwXQoJ
bGRyIHIxLCBbcjEsICM0XQouTF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19nZXRQcm9w
ZXJ0eVN0b3JhZ2VfX2NvbnRpbnVhdGlvbl9fMzlfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdf
X2RvbmU6CglzdHIgcjEsIFtyNCwgIzRdCglsZHIgcjEsIFtyOSwgIzI0XQoJc3RyIHIyLCBbcjQs
ICMwXQoJc3RyIHIxLCBbcjAsICMwXQoJYWRkcyByOSwgIzM2CglsZHIgcjYsIFtyOSwgIzBdCglt
b3YgcGMsIHI2Ci5MX29mZmxpbmVhc21fMzlfcHV0QnlJZFRyYW5zaXRpb25fX29wUHV0QnlJZFNs
b3c6Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggbGxpbnRfc2xvd19wYXRoX3B1dF9ieV9p
ZAoJbW92IHI5LCByMAoJYWRkcyByOSwgIzM2CglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2
Ci5MbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKCWxkciByMiwgW3I5LCAjOF0KCW1vdncgcjYsICMwCglt
b3Z0IHI2LCAjMTYzODQKCWNtcCByMiwgcjYKCWJnZSAuTF9vZmZsaW5lYXNtX2xvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkX180MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1
c3RvbV9fY29uc3RhbnQKCWFkZCByNiwgcjcsIHIyLCBsc2wgIzMKCW12biByMTAsICM0CglsZHIg
cjEyLCBbcjYsICM0XQoJY21wIHIxMiwgcjEwCglibmUgLkxfb2ZmbGluZWFzbV9vcEdldEJ5VmFs
U2xvdwoJbGRyIHIwLCBbcjcsIHIyLCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWRfXzQwX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFn
Q3VzdG9tX19kb25lCi5MX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRf
XzQwX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudDoKCWxk
ciByMCwgW3I3LCAjOF0KCWxkciByMCwgW3IwLCAjMjc2XQoJYWRkIHIxMCwgcjAsIHIyLCBsc2wg
IzMKCW12biByMTIsICM0CglsZHIgcjYsIFtyMTAsICM0XQoJY21wIHI2LCByMTIKCWJuZSAuTF9v
ZmZsaW5lYXNtX29wR2V0QnlWYWxTbG93CglsZHIgcjAsIFtyMCwgcjIsIGxzbCAjM10KLkxfb2Zm
bGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNDBfbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmU6Cgltb3YgcjIsIHIwCglsZHIgcjQsIFtyOSwg
IzE2XQoJbGRyIHIxLCBbcjIsICMwXQoJc3RyIHIxLCBbcjQsICM0XQoJbGRyYiByMiwgW3IyLCAj
NF0KCWxkciByNCwgW3I5LCAjMTJdCgltb3Z3IHIxMiwgIzAKCW1vdnQgcjEyLCAjMTYzODQKCWNt
cCByNCwgcjEyCgliZ2UgLkxfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZF9fNDFfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50Cglh
ZGQgcjEyLCByNywgcjQsIGxzbCAjMwoJbXZuIHI2LCAjMAoJbGRyIHIxMCwgW3IxMiwgIzRdCglj
bXAgcjEwLCByNgoJYm5lIC5MX29mZmxpbmVhc21fb3BHZXRCeVZhbFNsb3cKCWxkciByMSwgW3I3
LCByNCwgbHNsICMzXQoJYiAuTF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkX180MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZQouTF9v
ZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX180MV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQ6CglsZHIgcjEsIFtyNywgIzhdCgls
ZHIgcjEsIFtyMSwgIzI3Nl0KCWFkZCByNiwgcjEsIHI0LCBsc2wgIzMKCW12biByMTAsICMwCgls
ZHIgcjEyLCBbcjYsICM0XQoJY21wIHIxMiwgcjEwCglibmUgLkxfb2ZmbGluZWFzbV9vcEdldEJ5
VmFsU2xvdwoJbGRyIHIxLCBbcjEsIHI0LCBsc2wgIzNdCi5MX29mZmxpbmVhc21fbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWRfXzQxX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFn
Q3VzdG9tX19kb25lOgoJbGRyIHI0LCBbcjAsICM4XQoJYW5kIHIyLCByMiwgIzMwCgljbXAgcjIs
ICMyMAoJYmVxIC5MX29mZmxpbmVhc21fb3BHZXRCeVZhbElzQ29udGlndW91cwoJY21wIHIyLCAj
MjYKCWJuZSAuTF9vZmZsaW5lYXNtX29wR2V0QnlWYWxOb3RDb250aWd1b3VzCi5MX29mZmxpbmVh
c21fb3BHZXRCeVZhbElzQ29udGlndW91czoKCWxkciByMTAsIFtyNCwgIy04XQoJY21wIHIxLCBy
MTAKCWJocyAuTF9vZmZsaW5lYXNtX29wR2V0QnlWYWxPdXRPZkJvdW5kcwoJYWRkIHIxMCwgcjQs
IHIxLCBsc2wgIzMKCWxkciByMiwgW3IxMCwgIzRdCglsZHIgcjEsIFtyNCwgcjEsIGxzbCAjM10K
CWIgLkxfb2ZmbGluZWFzbV9vcEdldEJ5VmFsRG9uZQouTF9vZmZsaW5lYXNtX29wR2V0QnlWYWxO
b3RDb250aWd1b3VzOgoJY21wIHIyLCAjMjIKCWJuZSAuTF9vZmZsaW5lYXNtX29wR2V0QnlWYWxO
b3REb3VibGUKCWxkciByMTAsIFtyNCwgIy04XQoJY21wIHIxLCByMTAKCWJocyAuTF9vZmZsaW5l
YXNtX29wR2V0QnlWYWxPdXRPZkJvdW5kcwoJYWRkIHIxMCwgcjQsIHIxLCBsc2wgIzMKCXZsZHIu
NjQgZDAsIFtyMTAsICMwXQoJdmNtcGUuZjY0IGQwLCBkMAoJdm1ycyBhcHNyX256Y3YsIGZwc2Ny
CglibmUgLkxfb2ZmbGluZWFzbV9vcEdldEJ5VmFsU2xvdwoJdm1vdiByMSwgcjIsIGQwCglsZHIg
cjAsIFtyOSwgIzRdCgliIC5MX29mZmxpbmVhc21fb3BHZXRCeVZhbE5vdEVtcHR5Ci5MX29mZmxp
bmVhc21fb3BHZXRCeVZhbE5vdERvdWJsZToKCXN1YnMgcjIsIHIyLCAjMjgKCWNtcCByMiwgIzIK
CWJoaSAuTF9vZmZsaW5lYXNtX29wR2V0QnlWYWxTbG93CglsZHIgcjEwLCBbcjQsICMtNF0KCWNt
cCByMSwgcjEwCgliaHMgLkxfb2ZmbGluZWFzbV9vcEdldEJ5VmFsT3V0T2ZCb3VuZHMKCWFkZCBy
MTAsIHI0LCByMSwgbHNsICMzCglsZHIgcjIsIFtyMTAsICMyMF0KCWFkZCByMTAsIHI0LCByMSwg
bHNsICMzCglsZHIgcjEsIFtyMTAsICMxNl0KLkxfb2ZmbGluZWFzbV9vcEdldEJ5VmFsRG9uZToK
CWxkciByMCwgW3I5LCAjNF0KCW12biByMTAsICM1CgljbXAgcjIsIHIxMAoJYmVxIC5MX29mZmxp
bmVhc21fb3BHZXRCeVZhbE91dE9mQm91bmRzCi5MX29mZmxpbmVhc21fb3BHZXRCeVZhbE5vdEVt
cHR5OgoJYWRkIHIxMCwgcjcsIHIwLCBsc2wgIzMKCXN0ciByMiwgW3IxMCwgIzRdCglzdHIgcjEs
IFtyNywgcjAsIGxzbCAjM10KCWxkciByMCwgW3I5LCAjMjBdCglzdHIgcjIsIFtyMCwgIzIwXQoJ
c3RyIHIxLCBbcjAsICMxNl0KCWFkZHMgcjksICMyNAoJbGRyIHIxMCwgW3I5LCAjMF0KCW1vdiBw
YywgcjEwCi5MX29mZmxpbmVhc21fb3BHZXRCeVZhbE91dE9mQm91bmRzOgoJbGRyIHIwLCBbcjks
ICMxNl0KCW1vdiByMTAsICMxCglzdHJiIHIxMCwgW3IwLCAjOV0KLkxfb2ZmbGluZWFzbV9vcEdl
dEJ5VmFsU2xvdzoKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBsbGludF9zbG93X3BhdGhf
Z2V0X2J5X3ZhbAoJbW92IHI5LCByMAoJYWRkcyByOSwgIzI0CglsZHIgcjEwLCBbcjksICMwXQoJ
bW92IHBjLCByMTAKLkxsbGludF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsOgoJbGRyIHIwLCBbcjks
ICM4XQoJbGRyIHIxLCBbcjksICMxMl0KCWFkZCByMTAsIHI3LCByMCwgbHNsICMzCgltdm4gcjEy
LCAjNQoJbGRyIHI2LCBbcjEwLCAjNF0KCWNtcCByNiwgcjEyCglibmUgLkxfb2ZmbGluZWFzbV9v
cEdldEFyZ3VtZW50QnlWYWxTbG93Cgltb3Z3IHIxMiwgIzAKCW1vdnQgcjEyLCAjMTYzODQKCWNt
cCByMSwgcjEyCgliZ2UgLkxfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZF9fNDJfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50Cglh
ZGQgcjEyLCByNywgcjEsIGxzbCAjMwoJbXZuIHI2LCAjMAoJbGRyIHIxMCwgW3IxMiwgIzRdCglj
bXAgcjEwLCByNgoJYm5lIC5MX29mZmxpbmVhc21fb3BHZXRBcmd1bWVudEJ5VmFsU2xvdwoJbGRy
IHIyLCBbcjcsIHIxLCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWRfXzQyX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19k
b25lCi5MX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzQyX2xvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudDoKCWxkciByMiwgW3I3
LCAjOF0KCWxkciByMiwgW3IyLCAjMjc2XQoJYWRkIHI2LCByMiwgcjEsIGxzbCAjMwoJbXZuIHIx
MCwgIzAKCWxkciByMTIsIFtyNiwgIzRdCgljbXAgcjEyLCByMTAKCWJuZSAuTF9vZmZsaW5lYXNt
X29wR2V0QXJndW1lbnRCeVZhbFNsb3cKCWxkciByMiwgW3IyLCByMSwgbHNsICMzXQouTF9vZmZs
aW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX180Ml9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZToKCWFkZHMgcjIsICMxCglsZHIgcjEsIFtyNywg
IzMyXQoJY21wIHIyLCByMQoJYmhzIC5MX29mZmxpbmVhc21fb3BHZXRBcmd1bWVudEJ5VmFsU2xv
dwoJbGRyIHI0LCBbcjksICM0XQoJYWRkIHIxMCwgcjcsIHIyLCBsc2wgIzMKCWxkciByMCwgW3Ix
MCwgIzQ0XQoJYWRkIHIxMCwgcjcsIHIyLCBsc2wgIzMKCWxkciByMSwgW3IxMCwgIzQwXQoJYWRk
IHIxMCwgcjcsIHI0LCBsc2wgIzMKCXN0ciByMCwgW3IxMCwgIzRdCglzdHIgcjEsIFtyNywgcjQs
IGxzbCAjM10KCWxkciByMiwgW3I5LCAjMjBdCglzdHIgcjAsIFtyMiwgIzIwXQoJc3RyIHIxLCBb
cjIsICMxNl0KCWFkZHMgcjksICMyNAoJbGRyIHIxMCwgW3I5LCAjMF0KCW1vdiBwYywgcjEwCi5M
X29mZmxpbmVhc21fb3BHZXRBcmd1bWVudEJ5VmFsU2xvdzoKCW1vdiByMCwgcjcKCW1vdiByMSwg
cjkKCWJseCBsbGludF9zbG93X3BhdGhfZ2V0X2FyZ3VtZW50X2J5X3ZhbAoJbW92IHI5LCByMAoJ
YWRkcyByOSwgIzI0CglsZHIgcjEwLCBbcjksICMwXQoJbW92IHBjLCByMTAKLkxsbGludF9vcF9w
dXRfYnlfdmFsOgoJbGRyIHIxLCBbcjksICMxMl0KCW1vdncgcjEwLCAjMAoJbW92dCByMTAsICMx
NjM4NAoJY21wIHIxLCByMTAKCWJnZSAuTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX193cml0ZUJhcnJp
ZXJPbk9wZXJhbmRzX180Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnX19jb25zdGFudAoJYWRk
IHIxMCwgcjcsIHIxLCBsc2wgIzMKCWxkciByMCwgW3IxMCwgIzRdCgliIC5MX29mZmxpbmVhc21f
cHV0QnlWYWxfX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzQyX2xvYWRDb25zdGFudE9yVmFyaWFi
bGVUYWdfX2RvbmUKLkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fd3JpdGVCYXJyaWVyT25PcGVyYW5k
c19fNDJfbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fY29uc3RhbnQ6CglsZHIgcjAsIFtyNywg
IzhdCglsZHIgcjAsIFtyMCwgIzI3Nl0KCWFkZCByMTAsIHIwLCByMSwgbHNsICMzCglsZHIgcjAs
IFtyMTAsICM0XQouTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX193cml0ZUJhcnJpZXJPbk9wZXJhbmRz
X180Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnX19kb25lOgoJbXZuIHIxMCwgIzQKCWNtcCBy
MCwgcjEwCglibmUgLkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fNDNfd3JpdGVCYXJyaWVyT25PcGVy
YW5kc19fd3JpdGVCYXJyaWVyRG9uZQoJbGRyIHIxLCBbcjksICM0XQoJbW92dyByMTAsICMwCglt
b3Z0IHIxMCwgIzE2Mzg0CgljbXAgcjEsIHIxMAoJYmdlIC5MX29mZmxpbmVhc21fcHV0QnlWYWxf
X3dyaXRlQmFycmllck9uT3BlcmFuZHNfX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWRfXzQzX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFn
Q3VzdG9tX19jb25zdGFudAoJYWRkIHIxMCwgcjcsIHIxLCBsc2wgIzMKCW12biByMTIsICM0Cgls
ZHIgcjYsIFtyMTAsICM0XQoJY21wIHI2LCByMTIKCWJuZSAuTF9vZmZsaW5lYXNtX3B1dEJ5VmFs
X193cml0ZUJhcnJpZXJPbk9wZXJhbmRzX180M193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX3dyaXRl
QmFycmllckRvbmUKCWxkciByMiwgW3I3LCByMSwgbHNsICMzXQoJYiAuTF9vZmZsaW5lYXNtX3B1
dEJ5VmFsX193cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX180M19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZFRhZ0N1c3RvbV9fZG9uZQouTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX193cml0ZUJhcnJpZXJP
bk9wZXJhbmRzX193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkX180M19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3Rh
bnQ6CglsZHIgcjIsIFtyNywgIzhdCglsZHIgcjIsIFtyMiwgIzI3Nl0KCWFkZCByMTIsIHIyLCBy
MSwgbHNsICMzCgltdm4gcjYsICM0CglsZHIgcjEwLCBbcjEyLCAjNF0KCWNtcCByMTAsIHI2Cgli
bmUgLkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fNDNfd3Jp
dGVCYXJyaWVyT25PcGVyYW5kX193cml0ZUJhcnJpZXJEb25lCglsZHIgcjIsIFtyMiwgcjEsIGxz
bCAjM10KLkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fd3Jp
dGVCYXJyaWVyT25PcGVyYW5kX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNDNfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmU6CglsZHJiIHIxLCBbcjIs
ICM3XQoJdHN0IHIxLCByMQoJYm5lIC5MX29mZmxpbmVhc21fcHV0QnlWYWxfX3dyaXRlQmFycmll
ck9uT3BlcmFuZHNfXzQzX3dyaXRlQmFycmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9uZQoJ
cHVzaCB7IHI3IH0KCXB1c2ggeyByOSB9CglzdWJzIHNwLCBzcCwgIzgKCW1vdiByMCwgcjcKCW1v
diByMSwgcjIKCWJseCBsbGludF93cml0ZV9iYXJyaWVyX3Nsb3cKCWFkZHMgc3AsICM4Cglwb3Ag
eyByOSB9Cglwb3AgeyByNyB9Ci5MX29mZmxpbmVhc21fcHV0QnlWYWxfX3dyaXRlQmFycmllck9u
T3BlcmFuZHNfXzQzX3dyaXRlQmFycmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9uZToKLkxf
b2ZmbGluZWFzbV9wdXRCeVZhbF9fNDNfd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fd3JpdGVCYXJy
aWVyRG9uZToKCWxkciByMCwgW3I5LCAjNF0KCW1vdncgcjYsICMwCgltb3Z0IHI2LCAjMTYzODQK
CWNtcCByMCwgcjYKCWJnZSAuTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX19sb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZF9fNDRfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21f
X2NvbnN0YW50CglhZGQgcjYsIHI3LCByMCwgbHNsICMzCgltdm4gcjEwLCAjNAoJbGRyIHIxMiwg
W3I2LCAjNF0KCWNtcCByMTIsIHIxMAoJYm5lIC5MX29mZmxpbmVhc21fcHV0QnlWYWxfX29wUHV0
QnlWYWxTbG93CglsZHIgcjEsIFtyNywgcjAsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFzbV9wdXRC
eVZhbF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzQ0X2xvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lCi5MX29mZmxpbmVhc21fcHV0QnlWYWxfX2xvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkX180NF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZFRhZ0N1c3RvbV9fY29uc3RhbnQ6CglsZHIgcjEsIFtyNywgIzhdCglsZHIgcjEsIFtyMSwgIzI3
Nl0KCWFkZCByMTAsIHIxLCByMCwgbHNsICMzCgltdm4gcjEyLCAjNAoJbGRyIHI2LCBbcjEwLCAj
NF0KCWNtcCByNiwgcjEyCglibmUgLkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fb3BQdXRCeVZhbFNs
b3cKCWxkciByMSwgW3IxLCByMCwgbHNsICMzXQouTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX19sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNDRfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRUYWdDdXN0b21fX2RvbmU6Cgltb3YgcjIsIHIxCglsZHIgcjQsIFtyOSwgIzE2XQoJbGRyIHIw
LCBbcjIsICMwXQoJc3RyIHIwLCBbcjQsICM0XQoJbGRyYiByMiwgW3IyLCAjNF0KCWxkciByMCwg
W3I5LCAjOF0KCW1vdncgcjEyLCAjMAoJbW92dCByMTIsICMxNjM4NAoJY21wIHIwLCByMTIKCWJn
ZSAuTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9f
NDVfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50CglhZGQg
cjEyLCByNywgcjAsIGxzbCAjMwoJbXZuIHI2LCAjMAoJbGRyIHIxMCwgW3IxMiwgIzRdCgljbXAg
cjEwLCByNgoJYm5lIC5MX29mZmxpbmVhc21fcHV0QnlWYWxfX29wUHV0QnlWYWxTbG93CglsZHIg
cjQsIFtyNywgcjAsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWRfXzQ1X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFn
Q3VzdG9tX19kb25lCi5MX29mZmxpbmVhc21fcHV0QnlWYWxfX2xvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkX180NV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29u
c3RhbnQ6CglsZHIgcjQsIFtyNywgIzhdCglsZHIgcjQsIFtyNCwgIzI3Nl0KCWFkZCByNiwgcjQs
IHIwLCBsc2wgIzMKCW12biByMTAsICMwCglsZHIgcjEyLCBbcjYsICM0XQoJY21wIHIxMiwgcjEw
CglibmUgLkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fb3BQdXRCeVZhbFNsb3cKCWxkciByNCwgW3I0
LCByMCwgbHNsICMzXQouTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX19sb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZF9fNDVfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2Rv
bmU6CglsZHIgcjAsIFtyMSwgIzhdCglhbmQgcjIsIHIyLCAjMzAKCWNtcCByMiwgIzIwCglibmUg
Lkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fb3BQdXRCeVZhbE5vdEludDMyCglsZHIgcjEwLCBbcjAs
ICMtOF0KCWNtcCByNCwgcjEwCgliaHMgLkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fY29udGlndW91
c1B1dEJ5VmFsX19vdXRPZkJvdW5kcwouTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX19jb250aWd1b3Vz
UHV0QnlWYWxfX3N0b3JlUmVzdWx0OgoJbGRyIHIyLCBbcjksICMxMl0KCW1vdncgcjEwLCAjMAoJ
bW92dCByMTAsICMxNjM4NAoJY21wIHIyLCByMTAKCWJnZSAuTF9vZmZsaW5lYXNtX3B1dEJ5VmFs
X19jb250aWd1b3VzUHV0QnlWYWxfX3N0b3JlQ2FsbGJhY2tfX2xvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkX180Nl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29u
c3RhbnQKCWFkZCByMTAsIHI3LCByMiwgbHNsICMzCgltdm4gcjEyLCAjMAoJbGRyIHI2LCBbcjEw
LCAjNF0KCWNtcCByNiwgcjEyCglibmUgLkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fb3BQdXRCeVZh
bFNsb3cKCWxkciByMSwgW3I3LCByMiwgbHNsICMzXQoJYiAuTF9vZmZsaW5lYXNtX3B1dEJ5VmFs
X19jb250aWd1b3VzUHV0QnlWYWxfX3N0b3JlQ2FsbGJhY2tfX2xvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkX180Nl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9u
ZQouTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX19jb250aWd1b3VzUHV0QnlWYWxfX3N0b3JlQ2FsbGJh
Y2tfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX180Nl9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQ6CglsZHIgcjEsIFtyNywgIzhdCglsZHIgcjEs
IFtyMSwgIzI3Nl0KCWFkZCByMTIsIHIxLCByMiwgbHNsICMzCgltdm4gcjYsICMwCglsZHIgcjEw
LCBbcjEyLCAjNF0KCWNtcCByMTAsIHI2CglibmUgLkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fb3BQ
dXRCeVZhbFNsb3cKCWxkciByMSwgW3IxLCByMiwgbHNsICMzXQouTF9vZmZsaW5lYXNtX3B1dEJ5
VmFsX19jb250aWd1b3VzUHV0QnlWYWxfX3N0b3JlQ2FsbGJhY2tfX2xvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkX180Nl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9f
ZG9uZToKCWFkZCByNiwgcjAsIHI0LCBsc2wgIzMKCW12biByMTAsICMwCglzdHIgcjEwLCBbcjYs
ICM0XQoJc3RyIHIxLCBbcjAsIHI0LCBsc2wgIzNdCglhZGRzIHI5LCAjMjAKCWxkciByNiwgW3I5
LCAjMF0KCW1vdiBwYywgcjYKLkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fY29udGlndW91c1B1dEJ5
VmFsX19vdXRPZkJvdW5kczoKCWxkciByNiwgW3IwLCAjLTRdCgljbXAgcjQsIHI2CgliaHMgLkxf
b2ZmbGluZWFzbV9wdXRCeVZhbF9fb3BQdXRCeVZhbE91dE9mQm91bmRzCglsZHIgcjIsIFtyOSwg
IzE2XQoJbW92IHI2LCAjMQoJc3RyYiByNiwgW3IyLCAjOF0KCWFkZHMgcjIsIHI0LCAjMQoJc3Ry
IHIyLCBbcjAsICMtOF0KCWIgLkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fY29udGlndW91c1B1dEJ5
VmFsX19zdG9yZVJlc3VsdAouTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX19vcFB1dEJ5VmFsTm90SW50
MzI6CgljbXAgcjIsICMyMgoJYm5lIC5MX29mZmxpbmVhc21fcHV0QnlWYWxfX29wUHV0QnlWYWxO
b3REb3VibGUKCWxkciByNiwgW3IwLCAjLThdCgljbXAgcjQsIHI2CgliaHMgLkxfb2ZmbGluZWFz
bV9wdXRCeVZhbF9fNDZfY29udGlndW91c1B1dEJ5VmFsX19vdXRPZkJvdW5kcwouTF9vZmZsaW5l
YXNtX3B1dEJ5VmFsX180Nl9jb250aWd1b3VzUHV0QnlWYWxfX3N0b3JlUmVzdWx0OgoJbGRyIHIy
LCBbcjksICMxMl0KCW1vdncgcjYsICMwCgltb3Z0IHI2LCAjMTYzODQKCWNtcCByMiwgcjYKCWJn
ZSAuTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX19jb250aWd1b3VzUHV0QnlWYWxfX3N0b3JlQ2FsbGJh
Y2tfXzQ2X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudAoJYWRkIHI2LCByNywg
cjIsIGxzbCAjMwoJbGRyIHIxLCBbcjYsICM0XQoJbGRyIHIyLCBbcjcsIHIyLCBsc2wgIzNdCgli
IC5MX29mZmxpbmVhc21fcHV0QnlWYWxfX2NvbnRpZ3VvdXNQdXRCeVZhbF9fc3RvcmVDYWxsYmFj
a19fNDZfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUKLkxfb2ZmbGluZWFzbV9wdXRC
eVZhbF9fY29udGlndW91c1B1dEJ5VmFsX19zdG9yZUNhbGxiYWNrX180Nl9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZ19fY29uc3RhbnQ6CglsZHIgcjEsIFtyNywgIzhdCglsZHIgcjEsIFtyMSwg
IzI3Nl0KCWxzbHMgcjIsIHIyLCAjMwoJYWRkIHIxLCByMgoJbGRyIHIyLCBbcjEsICMwXQoJbGRy
IHIxLCBbcjEsICM0XQouTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX19jb250aWd1b3VzUHV0QnlWYWxf
X3N0b3JlQ2FsbGJhY2tfXzQ2X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lOgoJbXZu
IHI2LCAjMAoJY21wIHIxLCByNgoJYm5lIC5MX29mZmxpbmVhc21fcHV0QnlWYWxfX2NvbnRpZ3Vv
dXNQdXRCeVZhbF9fc3RvcmVDYWxsYmFja19fbm90SW50Cgl2bW92IHMwLCByMgoJdmN2dC5mNjQu
czMyIGQwLCBzMAoJYiAuTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX19jb250aWd1b3VzUHV0QnlWYWxf
X3N0b3JlQ2FsbGJhY2tfX3JlYWR5Ci5MX29mZmxpbmVhc21fcHV0QnlWYWxfX2NvbnRpZ3VvdXNQ
dXRCeVZhbF9fc3RvcmVDYWxsYmFja19fbm90SW50OgoJdm1vdiBkMCwgcjIsIHIxCgl2Y21wZS5m
NjQgZDAsIGQwCgl2bXJzIGFwc3JfbnpjdiwgZnBzY3IKCWJuZSAuTF9vZmZsaW5lYXNtX3B1dEJ5
VmFsX19vcFB1dEJ5VmFsU2xvdwouTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX19jb250aWd1b3VzUHV0
QnlWYWxfX3N0b3JlQ2FsbGJhY2tfX3JlYWR5OgoJYWRkIHI2LCByMCwgcjQsIGxzbCAjMwoJdnN0
ci42NCBkMCwgW3I2LCAjMF0KCWFkZHMgcjksICMyMAoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBj
LCByNgouTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX180Nl9jb250aWd1b3VzUHV0QnlWYWxfX291dE9m
Qm91bmRzOgoJbGRyIHI2LCBbcjAsICMtNF0KCWNtcCByNCwgcjYKCWJocyAuTF9vZmZsaW5lYXNt
X3B1dEJ5VmFsX19vcFB1dEJ5VmFsT3V0T2ZCb3VuZHMKCWxkciByMiwgW3I5LCAjMTZdCgltb3Yg
cjYsICMxCglzdHJiIHI2LCBbcjIsICM4XQoJYWRkcyByMiwgcjQsICMxCglzdHIgcjIsIFtyMCwg
Iy04XQoJYiAuTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX180Nl9jb250aWd1b3VzUHV0QnlWYWxfX3N0
b3JlUmVzdWx0Ci5MX29mZmxpbmVhc21fcHV0QnlWYWxfX29wUHV0QnlWYWxOb3REb3VibGU6Cglj
bXAgcjIsICMyNgoJYm5lIC5MX29mZmxpbmVhc21fcHV0QnlWYWxfX29wUHV0QnlWYWxOb3RDb250
aWd1b3VzCglsZHIgcjYsIFtyMCwgIy04XQoJY21wIHI0LCByNgoJYmhzIC5MX29mZmxpbmVhc21f
cHV0QnlWYWxfXzQ3X2NvbnRpZ3VvdXNQdXRCeVZhbF9fb3V0T2ZCb3VuZHMKLkxfb2ZmbGluZWFz
bV9wdXRCeVZhbF9fNDdfY29udGlndW91c1B1dEJ5VmFsX19zdG9yZVJlc3VsdDoKCWxkciByMiwg
W3I5LCAjMTJdCgltb3Z3IHI2LCAjMAoJbW92dCByNiwgIzE2Mzg0CgljbXAgcjIsIHI2CgliZ2Ug
Lkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fY29udGlndW91c1B1dEJ5VmFsX19zdG9yZUNhbGxiYWNr
X180N19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQKCWFkZCByNiwgcjcsIHIy
LCBsc2wgIzMKCWxkciByMSwgW3I2LCAjNF0KCWxkciByMiwgW3I3LCByMiwgbHNsICMzXQoJYiAu
TF9vZmZsaW5lYXNtX3B1dEJ5VmFsX19jb250aWd1b3VzUHV0QnlWYWxfX3N0b3JlQ2FsbGJhY2tf
XzQ3X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lCi5MX29mZmxpbmVhc21fcHV0QnlW
YWxfX2NvbnRpZ3VvdXNQdXRCeVZhbF9fc3RvcmVDYWxsYmFja19fNDdfbG9hZENvbnN0YW50T3JW
YXJpYWJsZTJSZWdfX2NvbnN0YW50OgoJbGRyIHIxLCBbcjcsICM4XQoJbGRyIHIxLCBbcjEsICMy
NzZdCglsc2xzIHIyLCByMiwgIzMKCWFkZCByMSwgcjIKCWxkciByMiwgW3IxLCAjMF0KCWxkciBy
MSwgW3IxLCAjNF0KLkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fY29udGlndW91c1B1dEJ5VmFsX19z
dG9yZUNhbGxiYWNrX180N19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZToKCWFkZCBy
NiwgcjAsIHI0LCBsc2wgIzMKCXN0ciByMSwgW3I2LCAjNF0KCXN0ciByMiwgW3IwLCByNCwgbHNs
ICMzXQoJYWRkcyByOSwgIzIwCglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MX29mZmxp
bmVhc21fcHV0QnlWYWxfXzQ3X2NvbnRpZ3VvdXNQdXRCeVZhbF9fb3V0T2ZCb3VuZHM6CglsZHIg
cjYsIFtyMCwgIy00XQoJY21wIHI0LCByNgoJYmhzIC5MX29mZmxpbmVhc21fcHV0QnlWYWxfX29w
UHV0QnlWYWxPdXRPZkJvdW5kcwoJbGRyIHIyLCBbcjksICMxNl0KCW1vdiByNiwgIzEKCXN0cmIg
cjYsIFtyMiwgIzhdCglhZGRzIHIyLCByNCwgIzEKCXN0ciByMiwgW3IwLCAjLThdCgliIC5MX29m
ZmxpbmVhc21fcHV0QnlWYWxfXzQ3X2NvbnRpZ3VvdXNQdXRCeVZhbF9fc3RvcmVSZXN1bHQKLkxf
b2ZmbGluZWFzbV9wdXRCeVZhbF9fb3BQdXRCeVZhbE5vdENvbnRpZ3VvdXM6CgljbXAgcjIsICMy
OAoJYm5lIC5MX29mZmxpbmVhc21fcHV0QnlWYWxfX29wUHV0QnlWYWxTbG93CglsZHIgcjYsIFty
MCwgIy00XQoJY21wIHI0LCByNgoJYmhzIC5MX29mZmxpbmVhc21fcHV0QnlWYWxfX29wUHV0QnlW
YWxPdXRPZkJvdW5kcwoJYWRkIHI2LCByMCwgcjQsIGxzbCAjMwoJbXZuIHIxMCwgIzUKCWxkciBy
MTIsIFtyNiwgIzIwXQoJY21wIHIxMiwgcjEwCgliZXEgLkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9f
b3BQdXRCeVZhbEFycmF5U3RvcmFnZUVtcHR5Ci5MX29mZmxpbmVhc21fcHV0QnlWYWxfX29wUHV0
QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdDoKCWxkciByMiwgW3I5LCAjMTJdCgltb3Z3IHIx
MCwgIzAKCW1vdnQgcjEwLCAjMTYzODQKCWNtcCByMiwgcjEwCgliZ2UgLkxfb2ZmbGluZWFzbV9w
dXRCeVZhbF9fNDhfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50CglhZGQgcjEw
LCByNywgcjIsIGxzbCAjMwoJbGRyIHIxLCBbcjEwLCAjNF0KCWxkciByMiwgW3I3LCByMiwgbHNs
ICMzXQoJYiAuTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX180OF9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZ19fZG9uZQouTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX180OF9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZ19fY29uc3RhbnQ6CglsZHIgcjEsIFtyNywgIzhdCglsZHIgcjEsIFtyMSwgIzI3Nl0K
CWxzbHMgcjIsIHIyLCAjMwoJYWRkIHIxLCByMgoJbGRyIHIyLCBbcjEsICMwXQoJbGRyIHIxLCBb
cjEsICM0XQouTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX180OF9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZ19fZG9uZToKCWFkZCByMTAsIHIwLCByNCwgbHNsICMzCglzdHIgcjEsIFtyMTAsICMyMF0K
CWFkZCByMTAsIHIwLCByNCwgbHNsICMzCglzdHIgcjIsIFtyMTAsICMxNl0KCWFkZHMgcjksICMy
MAoJbGRyIHIxMCwgW3I5LCAjMF0KCW1vdiBwYywgcjEwCi5MX29mZmxpbmVhc21fcHV0QnlWYWxf
X29wUHV0QnlWYWxBcnJheVN0b3JhZ2VFbXB0eToKCWxkciByMSwgW3I5LCAjMTZdCgltb3YgcjEw
LCAjMQoJc3RyYiByMTAsIFtyMSwgIzhdCglsZHIgcjEwLCBbcjAsICM4XQoJYWRkcyByMTAsICMx
CglzdHIgcjEwLCBbcjAsICM4XQoJbGRyIHIxMCwgW3IwLCAjLThdCgljbXAgcjQsIHIxMAoJYmxv
IC5MX29mZmxpbmVhc21fcHV0QnlWYWxfX29wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3Vs
dAoJYWRkcyByMSwgcjQsICMxCglzdHIgcjEsIFtyMCwgIy04XQoJYiAuTF9vZmZsaW5lYXNtX3B1
dEJ5VmFsX19vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlU3RvcmVSZXN1bHQKLkxfb2ZmbGluZWFzbV9w
dXRCeVZhbF9fb3BQdXRCeVZhbE91dE9mQm91bmRzOgoJbGRyIHIwLCBbcjksICMxNl0KCW1vdiBy
MTAsICMxCglzdHJiIHIxMCwgW3IwLCAjOV0KLkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fb3BQdXRC
eVZhbFNsb3c6Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggbGxpbnRfc2xvd19wYXRoX3B1
dF9ieV92YWwKCW1vdiByOSwgcjAKCWFkZHMgcjksICMyMAoJbGRyIHIxMCwgW3I5LCAjMF0KCW1v
diBwYywgcjEwCi5MbGxpbnRfb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CglsZHIgcjEsIFtyOSwgIzEy
XQoJbW92dyByMTAsICMwCgltb3Z0IHIxMCwgIzE2Mzg0CgljbXAgcjEsIHIxMAoJYmdlIC5MX29m
ZmxpbmVhc21fcHV0QnlWYWxfX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzQ4X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVUYWdfX2NvbnN0YW50CglhZGQgcjEwLCByNywgcjEsIGxzbCAjMwoJbGRyIHIw
LCBbcjEwLCAjNF0KCWIgLkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fd3JpdGVCYXJyaWVyT25PcGVy
YW5kc19fNDhfbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fZG9uZQouTF9vZmZsaW5lYXNtX3B1
dEJ5VmFsX193cml0ZUJhcnJpZXJPbk9wZXJhbmRzX180OF9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
VGFnX19jb25zdGFudDoKCWxkciByMCwgW3I3LCAjOF0KCWxkciByMCwgW3IwLCAjMjc2XQoJYWRk
IHIxMCwgcjAsIHIxLCBsc2wgIzMKCWxkciByMCwgW3IxMCwgIzRdCi5MX29mZmxpbmVhc21fcHV0
QnlWYWxfX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzQ4X2xvYWRDb25zdGFudE9yVmFyaWFibGVU
YWdfX2RvbmU6Cgltdm4gcjEwLCAjNAoJY21wIHIwLCByMTAKCWJuZSAuTF9vZmZsaW5lYXNtX3B1
dEJ5VmFsX180OF93cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJEb25lCglsZHIg
cjEsIFtyOSwgIzRdCgltb3Z3IHIxMCwgIzAKCW1vdnQgcjEwLCAjMTYzODQKCWNtcCByMSwgcjEw
CgliZ2UgLkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fd3Jp
dGVCYXJyaWVyT25PcGVyYW5kX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNDhfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50CglhZGQgcjEwLCBy
NywgcjEsIGxzbCAjMwoJbXZuIHIxMiwgIzQKCWxkciByNiwgW3IxMCwgIzRdCgljbXAgcjYsIHIx
MgoJYm5lIC5MX29mZmxpbmVhc21fcHV0QnlWYWxfX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzQ4
X3dyaXRlQmFycmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9uZQoJbGRyIHIyLCBbcjcsIHIx
LCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fcHV0QnlWYWxfX3dyaXRlQmFycmllck9uT3BlcmFu
ZHNfX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRf
XzQ4X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lCi5MX29mZmxp
bmVhc21fcHV0QnlWYWxfX3dyaXRlQmFycmllck9uT3BlcmFuZHNfX3dyaXRlQmFycmllck9uT3Bl
cmFuZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzQ4X2xvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudDoKCWxkciByMiwgW3I3LCAjOF0KCWxkciBy
MiwgW3IyLCAjMjc2XQoJYWRkIHIxMiwgcjIsIHIxLCBsc2wgIzMKCW12biByNiwgIzQKCWxkciBy
MTAsIFtyMTIsICM0XQoJY21wIHIxMCwgcjYKCWJuZSAuTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX193
cml0ZUJhcnJpZXJPbk9wZXJhbmRzX180OF93cml0ZUJhcnJpZXJPbk9wZXJhbmRfX3dyaXRlQmFy
cmllckRvbmUKCWxkciByMiwgW3IyLCByMSwgbHNsICMzXQouTF9vZmZsaW5lYXNtX3B1dEJ5VmFs
X193cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkX180OF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRh
Z0N1c3RvbV9fZG9uZToKCWxkcmIgcjEsIFtyMiwgIzddCgl0c3QgcjEsIHIxCglibmUgLkxfb2Zm
bGluZWFzbV9wdXRCeVZhbF9fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fNDhfd3JpdGVCYXJyaWVy
T25PcGVyYW5kX193cml0ZUJhcnJpZXJEb25lCglwdXNoIHsgcjcgfQoJcHVzaCB7IHI5IH0KCXN1
YnMgc3AsIHNwLCAjOAoJbW92IHIwLCByNwoJbW92IHIxLCByMgoJYmx4IGxsaW50X3dyaXRlX2Jh
cnJpZXJfc2xvdwoJYWRkcyBzcCwgIzgKCXBvcCB7IHI5IH0KCXBvcCB7IHI3IH0KLkxfb2ZmbGlu
ZWFzbV9wdXRCeVZhbF9fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fNDhfd3JpdGVCYXJyaWVyT25P
cGVyYW5kX193cml0ZUJhcnJpZXJEb25lOgouTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX180OF93cml0
ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJEb25lOgoJbGRyIHIwLCBbcjksICM0XQoJ
bW92dyByNiwgIzAKCW1vdnQgcjYsICMxNjM4NAoJY21wIHIwLCByNgoJYmdlIC5MX29mZmxpbmVh
c21fcHV0QnlWYWxfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX180OV9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQKCWFkZCByNiwgcjcsIHIwLCBs
c2wgIzMKCW12biByMTAsICM0CglsZHIgcjEyLCBbcjYsICM0XQoJY21wIHIxMiwgcjEwCglibmUg
Lkxfb2ZmbGluZWFzbV81M19wdXRCeVZhbF9fb3BQdXRCeVZhbFNsb3cKCWxkciByMSwgW3I3LCBy
MCwgbHNsICMzXQoJYiAuTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX19sb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZF9fNDlfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2Rv
bmUKLkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRf
XzQ5X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudDoKCWxk
ciByMSwgW3I3LCAjOF0KCWxkciByMSwgW3IxLCAjMjc2XQoJYWRkIHIxMCwgcjEsIHIwLCBsc2wg
IzMKCW12biByMTIsICM0CglsZHIgcjYsIFtyMTAsICM0XQoJY21wIHI2LCByMTIKCWJuZSAuTF9v
ZmZsaW5lYXNtXzUzX3B1dEJ5VmFsX19vcFB1dEJ5VmFsU2xvdwoJbGRyIHIxLCBbcjEsIHIwLCBs
c2wgIzNdCi5MX29mZmxpbmVhc21fcHV0QnlWYWxfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkX180OV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZToKCW1v
diByMiwgcjEKCWxkciByNCwgW3I5LCAjMTZdCglsZHIgcjAsIFtyMiwgIzBdCglzdHIgcjAsIFty
NCwgIzRdCglsZHJiIHIyLCBbcjIsICM0XQoJbGRyIHIwLCBbcjksICM4XQoJbW92dyByMTIsICMw
Cgltb3Z0IHIxMiwgIzE2Mzg0CgljbXAgcjAsIHIxMgoJYmdlIC5MX29mZmxpbmVhc21fcHV0QnlW
YWxfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX181MF9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQKCWFkZCByMTIsIHI3LCByMCwgbHNsICMzCglt
dm4gcjYsICMwCglsZHIgcjEwLCBbcjEyLCAjNF0KCWNtcCByMTAsIHI2CglibmUgLkxfb2ZmbGlu
ZWFzbV81M19wdXRCeVZhbF9fb3BQdXRCeVZhbFNsb3cKCWxkciByNCwgW3I3LCByMCwgbHNsICMz
XQoJYiAuTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZF9fNTBfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUKLkxfb2Zm
bGluZWFzbV9wdXRCeVZhbF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzUwX2xvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudDoKCWxkciByNCwgW3I3
LCAjOF0KCWxkciByNCwgW3I0LCAjMjc2XQoJYWRkIHI2LCByNCwgcjAsIGxzbCAjMwoJbXZuIHIx
MCwgIzAKCWxkciByMTIsIFtyNiwgIzRdCgljbXAgcjEyLCByMTAKCWJuZSAuTF9vZmZsaW5lYXNt
XzUzX3B1dEJ5VmFsX19vcFB1dEJ5VmFsU2xvdwoJbGRyIHI0LCBbcjQsIHIwLCBsc2wgIzNdCi5M
X29mZmxpbmVhc21fcHV0QnlWYWxfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX181MF9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZToKCWxkciByMCwgW3Ix
LCAjOF0KCWFuZCByMiwgcjIsICMzMAoJY21wIHIyLCAjMjAKCWJuZSAuTF9vZmZsaW5lYXNtXzUz
X3B1dEJ5VmFsX19vcFB1dEJ5VmFsTm90SW50MzIKCWxkciByMTAsIFtyMCwgIy04XQoJY21wIHI0
LCByMTAKCWJocyAuTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX181MV9jb250aWd1b3VzUHV0QnlWYWxf
X291dE9mQm91bmRzCi5MX29mZmxpbmVhc21fcHV0QnlWYWxfXzUxX2NvbnRpZ3VvdXNQdXRCeVZh
bF9fc3RvcmVSZXN1bHQ6CglsZHIgcjIsIFtyOSwgIzEyXQoJbW92dyByMTAsICMwCgltb3Z0IHIx
MCwgIzE2Mzg0CgljbXAgcjIsIHIxMAoJYmdlIC5MX29mZmxpbmVhc21fcHV0QnlWYWxfX2NvbnRp
Z3VvdXNQdXRCeVZhbF9fc3RvcmVDYWxsYmFja19fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRfXzUxX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudAoJ
YWRkIHIxMCwgcjcsIHIyLCBsc2wgIzMKCW12biByMTIsICMwCglsZHIgcjYsIFtyMTAsICM0XQoJ
Y21wIHI2LCByMTIKCWJuZSAuTF9vZmZsaW5lYXNtXzUzX3B1dEJ5VmFsX19vcFB1dEJ5VmFsU2xv
dwoJbGRyIHIxLCBbcjcsIHIyLCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fcHV0QnlWYWxfX2Nv
bnRpZ3VvdXNQdXRCeVZhbF9fc3RvcmVDYWxsYmFja19fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWRfXzUxX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lCi5M
X29mZmxpbmVhc21fcHV0QnlWYWxfX2NvbnRpZ3VvdXNQdXRCeVZhbF9fc3RvcmVDYWxsYmFja19f
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzUxX2xvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudDoKCWxkciByMSwgW3I3LCAjOF0KCWxkciByMSwgW3Ix
LCAjMjc2XQoJYWRkIHIxMiwgcjEsIHIyLCBsc2wgIzMKCW12biByNiwgIzAKCWxkciByMTAsIFty
MTIsICM0XQoJY21wIHIxMCwgcjYKCWJuZSAuTF9vZmZsaW5lYXNtXzUzX3B1dEJ5VmFsX19vcFB1
dEJ5VmFsU2xvdwoJbGRyIHIxLCBbcjEsIHIyLCBsc2wgIzNdCi5MX29mZmxpbmVhc21fcHV0QnlW
YWxfX2NvbnRpZ3VvdXNQdXRCeVZhbF9fc3RvcmVDYWxsYmFja19fbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWRfXzUxX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19k
b25lOgoJYWRkIHI2LCByMCwgcjQsIGxzbCAjMwoJbXZuIHIxMCwgIzAKCXN0ciByMTAsIFtyNiwg
IzRdCglzdHIgcjEsIFtyMCwgcjQsIGxzbCAjM10KCWFkZHMgcjksICMyMAoJbGRyIHI2LCBbcjks
ICMwXQoJbW92IHBjLCByNgouTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX181MV9jb250aWd1b3VzUHV0
QnlWYWxfX291dE9mQm91bmRzOgoJbGRyIHI2LCBbcjAsICMtNF0KCWNtcCByNCwgcjYKCWJocyAu
TF9vZmZsaW5lYXNtXzUzX3B1dEJ5VmFsX19vcFB1dEJ5VmFsT3V0T2ZCb3VuZHMKCWxkciByMiwg
W3I5LCAjMTZdCgltb3YgcjYsICMxCglzdHJiIHI2LCBbcjIsICM4XQoJYWRkcyByMiwgcjQsICMx
CglzdHIgcjIsIFtyMCwgIy04XQoJYiAuTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX181MV9jb250aWd1
b3VzUHV0QnlWYWxfX3N0b3JlUmVzdWx0Ci5MX29mZmxpbmVhc21fNTNfcHV0QnlWYWxfX29wUHV0
QnlWYWxOb3RJbnQzMjoKCWNtcCByMiwgIzIyCglibmUgLkxfb2ZmbGluZWFzbV81M19wdXRCeVZh
bF9fb3BQdXRCeVZhbE5vdERvdWJsZQoJbGRyIHI2LCBbcjAsICMtOF0KCWNtcCByNCwgcjYKCWJo
cyAuTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX181Ml9jb250aWd1b3VzUHV0QnlWYWxfX291dE9mQm91
bmRzCi5MX29mZmxpbmVhc21fcHV0QnlWYWxfXzUyX2NvbnRpZ3VvdXNQdXRCeVZhbF9fc3RvcmVS
ZXN1bHQ6CglsZHIgcjIsIFtyOSwgIzEyXQoJbW92dyByNiwgIzAKCW1vdnQgcjYsICMxNjM4NAoJ
Y21wIHIyLCByNgoJYmdlIC5MX29mZmxpbmVhc21fcHV0QnlWYWxfX2NvbnRpZ3VvdXNQdXRCeVZh
bF9fc3RvcmVDYWxsYmFja19fNTFfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50
CglhZGQgcjYsIHI3LCByMiwgbHNsICMzCglsZHIgcjEsIFtyNiwgIzRdCglsZHIgcjIsIFtyNywg
cjIsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fY29udGlndW91c1B1dEJ5VmFs
X19zdG9yZUNhbGxiYWNrX181MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZQouTF9v
ZmZsaW5lYXNtX3B1dEJ5VmFsX19jb250aWd1b3VzUHV0QnlWYWxfX3N0b3JlQ2FsbGJhY2tfXzUx
X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudDoKCWxkciByMSwgW3I3LCAjOF0K
CWxkciByMSwgW3IxLCAjMjc2XQoJbHNscyByMiwgcjIsICMzCglhZGQgcjEsIHIyCglsZHIgcjIs
IFtyMSwgIzBdCglsZHIgcjEsIFtyMSwgIzRdCi5MX29mZmxpbmVhc21fcHV0QnlWYWxfX2NvbnRp
Z3VvdXNQdXRCeVZhbF9fc3RvcmVDYWxsYmFja19fNTFfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJS
ZWdfX2RvbmU6Cgltdm4gcjYsICMwCgljbXAgcjEsIHI2CglibmUgLkxfb2ZmbGluZWFzbV9wdXRC
eVZhbF9fY29udGlndW91c1B1dEJ5VmFsX181MV9zdG9yZUNhbGxiYWNrX19ub3RJbnQKCXZtb3Yg
czAsIHIyCgl2Y3Z0LmY2NC5zMzIgZDAsIHMwCgliIC5MX29mZmxpbmVhc21fcHV0QnlWYWxfX2Nv
bnRpZ3VvdXNQdXRCeVZhbF9fNTFfc3RvcmVDYWxsYmFja19fcmVhZHkKLkxfb2ZmbGluZWFzbV9w
dXRCeVZhbF9fY29udGlndW91c1B1dEJ5VmFsX181MV9zdG9yZUNhbGxiYWNrX19ub3RJbnQ6Cgl2
bW92IGQwLCByMiwgcjEKCXZjbXBlLmY2NCBkMCwgZDAKCXZtcnMgYXBzcl9uemN2LCBmcHNjcgoJ
Ym5lIC5MX29mZmxpbmVhc21fNTNfcHV0QnlWYWxfX29wUHV0QnlWYWxTbG93Ci5MX29mZmxpbmVh
c21fcHV0QnlWYWxfX2NvbnRpZ3VvdXNQdXRCeVZhbF9fNTFfc3RvcmVDYWxsYmFja19fcmVhZHk6
CglhZGQgcjYsIHIwLCByNCwgbHNsICMzCgl2c3RyLjY0IGQwLCBbcjYsICMwXQoJYWRkcyByOSwg
IzIwCglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MX29mZmxpbmVhc21fcHV0QnlWYWxf
XzUyX2NvbnRpZ3VvdXNQdXRCeVZhbF9fb3V0T2ZCb3VuZHM6CglsZHIgcjYsIFtyMCwgIy00XQoJ
Y21wIHI0LCByNgoJYmhzIC5MX29mZmxpbmVhc21fNTNfcHV0QnlWYWxfX29wUHV0QnlWYWxPdXRP
ZkJvdW5kcwoJbGRyIHIyLCBbcjksICMxNl0KCW1vdiByNiwgIzEKCXN0cmIgcjYsIFtyMiwgIzhd
CglhZGRzIHIyLCByNCwgIzEKCXN0ciByMiwgW3IwLCAjLThdCgliIC5MX29mZmxpbmVhc21fcHV0
QnlWYWxfXzUyX2NvbnRpZ3VvdXNQdXRCeVZhbF9fc3RvcmVSZXN1bHQKLkxfb2ZmbGluZWFzbV81
M19wdXRCeVZhbF9fb3BQdXRCeVZhbE5vdERvdWJsZToKCWNtcCByMiwgIzI2CglibmUgLkxfb2Zm
bGluZWFzbV81M19wdXRCeVZhbF9fb3BQdXRCeVZhbE5vdENvbnRpZ3VvdXMKCWxkciByNiwgW3Iw
LCAjLThdCgljbXAgcjQsIHI2CgliaHMgLkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fNTNfY29udGln
dW91c1B1dEJ5VmFsX19vdXRPZkJvdW5kcwouTF9vZmZsaW5lYXNtX3B1dEJ5VmFsX181M19jb250
aWd1b3VzUHV0QnlWYWxfX3N0b3JlUmVzdWx0OgoJbGRyIHIyLCBbcjksICMxMl0KCW1vdncgcjYs
ICMwCgltb3Z0IHI2LCAjMTYzODQKCWNtcCByMiwgcjYKCWJnZSAuTF9vZmZsaW5lYXNtX3B1dEJ5
VmFsX19jb250aWd1b3VzUHV0QnlWYWxfX3N0b3JlQ2FsbGJhY2tfXzUyX2xvYWRDb25zdGFudE9y
VmFyaWFibGUyUmVnX19jb25zdGFudAoJYWRkIHI2LCByNywgcjIsIGxzbCAjMwoJbGRyIHIxLCBb
cjYsICM0XQoJbGRyIHIyLCBbcjcsIHIyLCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fcHV0QnlW
YWxfX2NvbnRpZ3VvdXNQdXRCeVZhbF9fc3RvcmVDYWxsYmFja19fNTJfbG9hZENvbnN0YW50T3JW
YXJpYWJsZTJSZWdfX2RvbmUKLkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fY29udGlndW91c1B1dEJ5
VmFsX19zdG9yZUNhbGxiYWNrX181Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3Rh
bnQ6CglsZHIgcjEsIFtyNywgIzhdCglsZHIgcjEsIFtyMSwgIzI3Nl0KCWxzbHMgcjIsIHIyLCAj
MwoJYWRkIHIxLCByMgoJbGRyIHIyLCBbcjEsICMwXQoJbGRyIHIxLCBbcjEsICM0XQouTF9vZmZs
aW5lYXNtX3B1dEJ5VmFsX19jb250aWd1b3VzUHV0QnlWYWxfX3N0b3JlQ2FsbGJhY2tfXzUyX2xv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lOgoJYWRkIHI2LCByMCwgcjQsIGxzbCAjMwoJ
c3RyIHIxLCBbcjYsICM0XQoJc3RyIHIyLCBbcjAsIHI0LCBsc2wgIzNdCglhZGRzIHI5LCAjMjAK
CWxkciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxfb2ZmbGluZWFzbV9wdXRCeVZhbF9fNTNf
Y29udGlndW91c1B1dEJ5VmFsX19vdXRPZkJvdW5kczoKCWxkciByNiwgW3IwLCAjLTRdCgljbXAg
cjQsIHI2CgliaHMgLkxfb2ZmbGluZWFzbV81M19wdXRCeVZhbF9fb3BQdXRCeVZhbE91dE9mQm91
bmRzCglsZHIgcjIsIFtyOSwgIzE2XQoJbW92IHI2LCAjMQoJc3RyYiByNiwgW3IyLCAjOF0KCWFk
ZHMgcjIsIHI0LCAjMQoJc3RyIHIyLCBbcjAsICMtOF0KCWIgLkxfb2ZmbGluZWFzbV9wdXRCeVZh
bF9fNTNfY29udGlndW91c1B1dEJ5VmFsX19zdG9yZVJlc3VsdAouTF9vZmZsaW5lYXNtXzUzX3B1
dEJ5VmFsX19vcFB1dEJ5VmFsTm90Q29udGlndW91czoKCWNtcCByMiwgIzI4CglibmUgLkxfb2Zm
bGluZWFzbV81M19wdXRCeVZhbF9fb3BQdXRCeVZhbFNsb3cKCWxkciByNiwgW3IwLCAjLTRdCglj
bXAgcjQsIHI2CgliaHMgLkxfb2ZmbGluZWFzbV81M19wdXRCeVZhbF9fb3BQdXRCeVZhbE91dE9m
Qm91bmRzCglhZGQgcjYsIHIwLCByNCwgbHNsICMzCgltdm4gcjEwLCAjNQoJbGRyIHIxMiwgW3I2
LCAjMjBdCgljbXAgcjEyLCByMTAKCWJlcSAuTF9vZmZsaW5lYXNtXzUzX3B1dEJ5VmFsX19vcFB1
dEJ5VmFsQXJyYXlTdG9yYWdlRW1wdHkKLkxfb2ZmbGluZWFzbV81M19wdXRCeVZhbF9fb3BQdXRC
eVZhbEFycmF5U3RvcmFnZVN0b3JlUmVzdWx0OgoJbGRyIHIyLCBbcjksICMxMl0KCW1vdncgcjEw
LCAjMAoJbW92dCByMTAsICMxNjM4NAoJY21wIHIyLCByMTAKCWJnZSAuTF9vZmZsaW5lYXNtX3B1
dEJ5VmFsX181M19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQKCWFkZCByMTAs
IHI3LCByMiwgbHNsICMzCglsZHIgcjEsIFtyMTAsICM0XQoJbGRyIHIyLCBbcjcsIHIyLCBsc2wg
IzNdCgliIC5MX29mZmxpbmVhc21fcHV0QnlWYWxfXzUzX2xvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnX19kb25lCi5MX29mZmxpbmVhc21fcHV0QnlWYWxfXzUzX2xvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnX19jb25zdGFudDoKCWxkciByMSwgW3I3LCAjOF0KCWxkciByMSwgW3IxLCAjMjc2XQoJ
bHNscyByMiwgcjIsICMzCglhZGQgcjEsIHIyCglsZHIgcjIsIFtyMSwgIzBdCglsZHIgcjEsIFty
MSwgIzRdCi5MX29mZmxpbmVhc21fcHV0QnlWYWxfXzUzX2xvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnX19kb25lOgoJYWRkIHIxMCwgcjAsIHI0LCBsc2wgIzMKCXN0ciByMSwgW3IxMCwgIzIwXQoJ
YWRkIHIxMCwgcjAsIHI0LCBsc2wgIzMKCXN0ciByMiwgW3IxMCwgIzE2XQoJYWRkcyByOSwgIzIw
CglsZHIgcjEwLCBbcjksICMwXQoJbW92IHBjLCByMTAKLkxfb2ZmbGluZWFzbV81M19wdXRCeVZh
bF9fb3BQdXRCeVZhbEFycmF5U3RvcmFnZUVtcHR5OgoJbGRyIHIxLCBbcjksICMxNl0KCW1vdiBy
MTAsICMxCglzdHJiIHIxMCwgW3IxLCAjOF0KCWxkciByMTAsIFtyMCwgIzhdCglhZGRzIHIxMCwg
IzEKCXN0ciByMTAsIFtyMCwgIzhdCglsZHIgcjEwLCBbcjAsICMtOF0KCWNtcCByNCwgcjEwCgli
bG8gLkxfb2ZmbGluZWFzbV81M19wdXRCeVZhbF9fb3BQdXRCeVZhbEFycmF5U3RvcmFnZVN0b3Jl
UmVzdWx0CglhZGRzIHIxLCByNCwgIzEKCXN0ciByMSwgW3IwLCAjLThdCgliIC5MX29mZmxpbmVh
c21fNTNfcHV0QnlWYWxfX29wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdAouTF9vZmZs
aW5lYXNtXzUzX3B1dEJ5VmFsX19vcFB1dEJ5VmFsT3V0T2ZCb3VuZHM6CglsZHIgcjAsIFtyOSwg
IzE2XQoJbW92IHIxMCwgIzEKCXN0cmIgcjEwLCBbcjAsICM5XQouTF9vZmZsaW5lYXNtXzUzX3B1
dEJ5VmFsX19vcFB1dEJ5VmFsU2xvdzoKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBsbGlu
dF9zbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QKCW1vdiByOSwgcjAKCWFkZHMgcjksICMyMAoJ
bGRyIHIxMCwgW3I5LCAjMF0KCW1vdiBwYywgcjEwCi5MbGxpbnRfb3Bfam1wOgoJbGRyIHIwLCBb
cjksICM0XQoJbHNscyByMCwgcjAsICMyCglhZGQgcjksIHIwCglsZHIgcjEwLCBbcjksICMwXQoJ
bW92IHBjLCByMTAKLkxsbGludF9vcF9qZXFfbnVsbDoKCWxkciByMCwgW3I5LCAjNF0KCWFkZCBy
MTAsIHI3LCByMCwgbHNsICMzCglsZHIgcjEsIFtyMTAsICM0XQoJbGRyIHIwLCBbcjcsIHIwLCBs
c2wgIzNdCgltdm4gcjEwLCAjNAoJY21wIHIxLCByMTAKCWJuZSAuTF9vZmZsaW5lYXNtX2VxdWFs
TnVsbF9faW1tZWRpYXRlCglsZHIgcjIsIFtyMCwgIzBdCglsZHJiIHIxMCwgW3IwLCAjNl0KCXRz
dCByMTAsICMxCgliZXEgLkxfb2ZmbGluZWFzbV9lcXVhbE51bGxfX2NlbGxIYW5kbGVyX19vcEpl
cU51bGxOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkCglsZHIgcjAsIFtyNywgIzhdCglsZHIgcjAs
IFtyMCwgIzIwXQoJbGRyIHIxMCwgW3IyLCAjMjBdCgljbXAgcjEwLCByMAoJYmVxIC5MX29mZmxp
bmVhc21fZXF1YWxOdWxsX190YXJnZXQKLkxfb2ZmbGluZWFzbV9lcXVhbE51bGxfX2NlbGxIYW5k
bGVyX19vcEplcU51bGxOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOgoJYWRkcyByOSwgIzEyCgls
ZHIgcjEwLCBbcjksICMwXQoJbW92IHBjLCByMTAKLkxfb2ZmbGluZWFzbV9lcXVhbE51bGxfX3Rh
cmdldDoKCWxkciByMCwgW3I5LCAjOF0KCWxzbHMgcjAsIHIwLCAjMgoJYWRkIHI5LCByMAoJbGRy
IHIxMCwgW3I5LCAjMF0KCW1vdiBwYywgcjEwCi5MX29mZmxpbmVhc21fZXF1YWxOdWxsX19pbW1l
ZGlhdGU6CglvcnIgcjEsIHIxLCAjMQoJbXZuIHIxMCwgIzIKCWNtcCByMSwgcjEwCgliZXEgLkxf
b2ZmbGluZWFzbV9lcXVhbE51bGxfX3RhcmdldAoJYWRkcyByOSwgIzEyCglsZHIgcjEwLCBbcjks
ICMwXQoJbW92IHBjLCByMTAKLkxsbGludF9vcF9qbmVxX251bGw6CglsZHIgcjAsIFtyOSwgIzRd
CglhZGQgcjEwLCByNywgcjAsIGxzbCAjMwoJbGRyIHIxLCBbcjEwLCAjNF0KCWxkciByMCwgW3I3
LCByMCwgbHNsICMzXQoJbXZuIHIxMCwgIzQKCWNtcCByMSwgcjEwCglibmUgLkxfb2ZmbGluZWFz
bV81M19lcXVhbE51bGxfX2ltbWVkaWF0ZQoJbGRyIHIyLCBbcjAsICMwXQoJbGRyYiByMTAsIFty
MCwgIzZdCgl0c3QgcjEwLCAjMQoJYmVxIC5MX29mZmxpbmVhc21fNTNfZXF1YWxOdWxsX190YXJn
ZXQKCWxkciByMCwgW3I3LCAjOF0KCWxkciByMCwgW3IwLCAjMjBdCglsZHIgcjEwLCBbcjIsICMy
MF0KCWNtcCByMTAsIHIwCglibmUgLkxfb2ZmbGluZWFzbV81M19lcXVhbE51bGxfX3RhcmdldAoJ
YWRkcyByOSwgIzEyCglsZHIgcjEwLCBbcjksICMwXQoJbW92IHBjLCByMTAKLkxfb2ZmbGluZWFz
bV81M19lcXVhbE51bGxfX3RhcmdldDoKCWxkciByMCwgW3I5LCAjOF0KCWxzbHMgcjAsIHIwLCAj
MgoJYWRkIHI5LCByMAoJbGRyIHIxMCwgW3I5LCAjMF0KCW1vdiBwYywgcjEwCi5MX29mZmxpbmVh
c21fNTNfZXF1YWxOdWxsX19pbW1lZGlhdGU6CglvcnIgcjEsIHIxLCAjMQoJbXZuIHIxMCwgIzIK
CWNtcCByMSwgcjEwCglibmUgLkxfb2ZmbGluZWFzbV81M19lcXVhbE51bGxfX3RhcmdldAoJYWRk
cyByOSwgIzEyCglsZHIgcjEwLCBbcjksICMwXQoJbW92IHBjLCByMTAKLkxsbGludF9vcF9qbmVx
X3B0cjoKCWxkciByMCwgW3I5LCAjNF0KCWxkciByMSwgW3I5LCAjOF0KCWxkciByMiwgW3I3LCAj
OF0KCWxkciByMiwgW3IyLCAjMjBdCglhZGQgcjEwLCByNywgcjAsIGxzbCAjMwoJbXZuIHIxMiwg
IzQKCWxkciByNiwgW3IxMCwgIzRdCgljbXAgcjYsIHIxMgoJYm5lIC5MX29mZmxpbmVhc21fb3BK
bmVxUHRyQnJhbmNoCglhZGQgcjEyLCByMiwgcjEsIGxzbCAjMgoJbGRyIHIxLCBbcjEyLCAjNTYw
XQoJbGRyIHIxMiwgW3I3LCByMCwgbHNsICMzXQoJY21wIHIxMiwgcjEKCWJlcSAuTF9vZmZsaW5l
YXNtX29wSm5lcVB0ckZhbGxUaHJvdWdoCi5MX29mZmxpbmVhc21fb3BKbmVxUHRyQnJhbmNoOgoJ
bGRyIHIwLCBbcjksICMxMl0KCWxzbHMgcjAsIHIwLCAjMgoJYWRkIHI5LCByMAoJbGRyIHIxMiwg
W3I5LCAjMF0KCW1vdiBwYywgcjEyCi5MX29mZmxpbmVhc21fb3BKbmVxUHRyRmFsbFRocm91Z2g6
CglhZGRzIHI5LCAjMTYKCWxkciByMTIsIFtyOSwgIzBdCgltb3YgcGMsIHIxMgouTGxsaW50X29w
X3N3aXRjaF9pbW06CglsZHIgcjIsIFtyOSwgIzEyXQoJbGRyIHI0LCBbcjksICM0XQoJbW92dyBy
MTIsICMwCgltb3Z0IHIxMiwgIzE2Mzg0CgljbXAgcjIsIHIxMgoJYmdlIC5MX29mZmxpbmVhc21f
NTNfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQKCWFkZCByMTIsIHI3LCByMiwgbHNs
ICMzCglsZHIgcjEsIFtyMTIsICM0XQoJbGRyIHIwLCBbcjcsIHIyLCBsc2wgIzNdCgliIC5MX29m
ZmxpbmVhc21fNTNfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZQouTF9vZmZsaW5lYXNtXzUz
X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50OgoJbGRyIHIwLCBbcjcsICM4XQoJbGRy
IHIwLCBbcjAsICMyNzZdCglhZGQgcjEyLCByMCwgcjIsIGxzbCAjMwoJbGRyIHIxLCBbcjEyLCAj
NF0KCWxkciByMCwgW3IwLCByMiwgbHNsICMzXQouTF9vZmZsaW5lYXNtXzUzX2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2RvbmU6CglsZHIgcjIsIFtyNywgIzhdCglsZHIgcjIsIFtyMiwgIzM2NF0K
CW1vdiByMTIsICMzMgoJbXVsIHI0LCByNCwgcjEyCglsZHIgcjIsIFtyMiwgIzI0XQoJYWRkIHIy
LCByNAoJbXZuIHIxMiwgIzAKCWNtcCByMSwgcjEyCglibmUgLkxfb2ZmbGluZWFzbV9vcFN3aXRj
aEltbU5vdEludAoJbGRyIHIxMiwgW3IyLCAjMTJdCglzdWJzIHIwLCByMTIKCWxkciByMTIsIFty
MiwgIzhdCgljbXAgcjAsIHIxMgoJYmhzIC5MX29mZmxpbmVhc21fb3BTd2l0Y2hJbW1GYWxsVGhy
b3VnaAoJbGRyIHI0LCBbcjIsICMwXQoJbGRyIHIxLCBbcjQsIHIwLCBsc2wgIzJdCgl0c3QgcjEs
IHIxCgliZXEgLkxfb2ZmbGluZWFzbV9vcFN3aXRjaEltbUZhbGxUaHJvdWdoCglsc2xzIHIxLCBy
MSwgIzIKCWFkZCByOSwgcjEKCWxkciByMTIsIFtyOSwgIzBdCgltb3YgcGMsIHIxMgouTF9vZmZs
aW5lYXNtX29wU3dpdGNoSW1tTm90SW50OgoJbXZuIHIxMiwgIzYKCWNtcCByMSwgcjEyCglibG8g
Lkxfb2ZmbGluZWFzbV9vcFN3aXRjaEltbVNsb3cKLkxfb2ZmbGluZWFzbV9vcFN3aXRjaEltbUZh
bGxUaHJvdWdoOgoJbGRyIHIwLCBbcjksICM4XQoJbHNscyByMCwgcjAsICMyCglhZGQgcjksIHIw
CglsZHIgcjEyLCBbcjksICMwXQoJbW92IHBjLCByMTIKLkxfb2ZmbGluZWFzbV9vcFN3aXRjaElt
bVNsb3c6Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggbGxpbnRfc2xvd19wYXRoX3N3aXRj
aF9pbW0KCW1vdiByOSwgcjAKCWxkciByMTIsIFtyOSwgIzBdCgltb3YgcGMsIHIxMgouTGxsaW50
X29wX3N3aXRjaF9jaGFyOgoJbGRyIHIyLCBbcjksICMxMl0KCWxkciByNCwgW3I5LCAjNF0KCW1v
dncgcjEyLCAjMAoJbW92dCByMTIsICMxNjM4NAoJY21wIHIyLCByMTIKCWJnZSAuTF9vZmZsaW5l
YXNtXzU0X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50CglhZGQgcjEyLCByNywgcjIs
IGxzbCAjMwoJbGRyIHIxLCBbcjEyLCAjNF0KCWxkciByMCwgW3I3LCByMiwgbHNsICMzXQoJYiAu
TF9vZmZsaW5lYXNtXzU0X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUKLkxfb2ZmbGluZWFz
bV81NF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDoKCWxkciByMCwgW3I3LCAjOF0K
CWxkciByMCwgW3IwLCAjMjc2XQoJYWRkIHIxMiwgcjAsIHIyLCBsc2wgIzMKCWxkciByMSwgW3Ix
MiwgIzRdCglsZHIgcjAsIFtyMCwgcjIsIGxzbCAjM10KLkxfb2ZmbGluZWFzbV81NF9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19kb25lOgoJbGRyIHIyLCBbcjcsICM4XQoJbGRyIHIyLCBbcjIsICMz
NjRdCgltb3YgcjEyLCAjMzIKCW11bCByNCwgcjQsIHIxMgoJbGRyIHIyLCBbcjIsICMyNF0KCWFk
ZCByMiwgcjQKCW12biByMTIsICM0CgljbXAgcjEsIHIxMgoJYm5lIC5MX29mZmxpbmVhc21fb3BT
d2l0Y2hDaGFyRmFsbFRocm91Z2gKCWxkcmIgcjEyLCBbcjAsICM1XQoJY21wIHIxMiwgIzYKCWJu
ZSAuTF9vZmZsaW5lYXNtX29wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCglsZHIgcjEyLCBbcjAsICMx
Ml0KCWNtcCByMTIsICMxCglibmUgLkxfb2ZmbGluZWFzbV9vcFN3aXRjaENoYXJGYWxsVGhyb3Vn
aAoJbGRyIHIwLCBbcjAsICMxNl0KCXRzdCByMCwgcjAKCWJlcSAuTF9vZmZsaW5lYXNtX29wU3dp
dGNoT25Sb3BlCglsZHIgcjEsIFtyMCwgIzhdCglsZHIgcjEyLCBbcjAsICMxMl0KCXRzdCByMTIs
ICMzMgoJYm5lIC5MX29mZmxpbmVhc21fb3BTd2l0Y2hDaGFyOEJpdAoJbGRyaCByMCwgW3IxLCAj
MF0KCWIgLkxfb2ZmbGluZWFzbV9vcFN3aXRjaENoYXJSZWFkeQouTF9vZmZsaW5lYXNtX29wU3dp
dGNoQ2hhcjhCaXQ6CglsZHJiIHIwLCBbcjEsICMwXQouTF9vZmZsaW5lYXNtX29wU3dpdGNoQ2hh
clJlYWR5OgoJbGRyIHIxMiwgW3IyLCAjMTJdCglzdWJzIHIwLCByMTIKCWxkciByMTIsIFtyMiwg
IzhdCgljbXAgcjAsIHIxMgoJYmhzIC5MX29mZmxpbmVhc21fb3BTd2l0Y2hDaGFyRmFsbFRocm91
Z2gKCWxkciByMiwgW3IyLCAjMF0KCWxkciByMSwgW3IyLCByMCwgbHNsICMyXQoJdHN0IHIxLCBy
MQoJYmVxIC5MX29mZmxpbmVhc21fb3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKCWxzbHMgcjEsIHIx
LCAjMgoJYWRkIHI5LCByMQoJbGRyIHIxMiwgW3I5LCAjMF0KCW1vdiBwYywgcjEyCi5MX29mZmxp
bmVhc21fb3BTd2l0Y2hDaGFyRmFsbFRocm91Z2g6CglsZHIgcjAsIFtyOSwgIzhdCglsc2xzIHIw
LCByMCwgIzIKCWFkZCByOSwgcjAKCWxkciByMTIsIFtyOSwgIzBdCgltb3YgcGMsIHIxMgouTF9v
ZmZsaW5lYXNtX29wU3dpdGNoT25Sb3BlOgoJbW92IHIwLCByNwoJbW92IHIxLCByOQoJYmx4IGxs
aW50X3Nsb3dfcGF0aF9zd2l0Y2hfY2hhcgoJbW92IHI5LCByMAoJbGRyIHIxMiwgW3I5LCAjMF0K
CW1vdiBwYywgcjEyCi5MbGxpbnRfb3BfbmV3X2Z1bmM6CglsZHIgcjEyLCBbcjksICMxMl0KCXRz
dCByMTIsIHIxMgoJYmVxIC5MX29mZmxpbmVhc21fb3BOZXdGdW5jVW5jaGVja2VkCglsZHIgcjEs
IFtyOSwgIzRdCglhZGQgcjEyLCByNywgcjEsIGxzbCAjMwoJbXZuIHI2LCAjNQoJbGRyIHIxMCwg
W3IxMiwgIzRdCgljbXAgcjEwLCByNgoJYm5lIC5MX29mZmxpbmVhc21fb3BOZXdGdW5jRG9uZQou
TF9vZmZsaW5lYXNtX29wTmV3RnVuY1VuY2hlY2tlZDoKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkK
CWJseCBsbGludF9zbG93X3BhdGhfbmV3X2Z1bmMKCW1vdiByOSwgcjAKLkxfb2ZmbGluZWFzbV9v
cE5ld0Z1bmNEb25lOgoJYWRkcyByOSwgIzE2CglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2
Ci5MbGxpbnRfb3BfbmV3X2NhcHR1cmVkX2Z1bmM6Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5Cgli
bHggc2xvd19wYXRoX25ld19jYXB0dXJlZF9mdW5jCgltb3YgcjksIHIwCglhZGRzIHI5LCAjMTYK
CWxkciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxsbGludF9vcF90ZWFyX29mZl9hY3RpdmF0
aW9uOgoJbGRyIHIwLCBbcjksICM0XQoJYWRkIHI2LCByNywgcjAsIGxzbCAjMwoJbXZuIHIxMCwg
IzUKCWxkciByMTIsIFtyNiwgIzRdCgljbXAgcjEyLCByMTAKCWJlcSAuTF9vZmZsaW5lYXNtX29w
VGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkCgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHgg
bGxpbnRfc2xvd19wYXRoX3RlYXJfb2ZmX2FjdGl2YXRpb24KCW1vdiByOSwgcjAKLkxfb2ZmbGlu
ZWFzbV9vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3JlYXRlZDoKCWFkZHMgcjksICM4CglsZHIgcjEw
LCBbcjksICMwXQoJbW92IHBjLCByMTAKLkxsbGludF9vcF90ZWFyX29mZl9hcmd1bWVudHM6Cgls
ZHIgcjAsIFtyOSwgIzRdCglhZGRzIHIwLCAjMQoJYWRkIHIxMCwgcjcsIHIwLCBsc2wgIzMKCW12
biByMTIsICM1CglsZHIgcjYsIFtyMTAsICM0XQoJY21wIHI2LCByMTIKCWJlcSAuTF9vZmZsaW5l
YXNtX29wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkK
CWJseCBsbGludF9zbG93X3BhdGhfdGVhcl9vZmZfYXJndW1lbnRzCgltb3YgcjksIHIwCi5MX29m
ZmxpbmVhc21fb3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZDoKCWFkZHMgcjksICMxMgoJbGRy
IHIxMiwgW3I5LCAjMF0KCW1vdiBwYywgcjEyCi5MbGxpbnRfb3BfcmV0OgoJbGRyIHIwLCBbcjcs
ICM4XQoJbGRyIHIxMiwgW3IwLCAjMzE2XQoJYWRkcyByMTIsICMxMAoJc3RyIHIxMiwgW3IwLCAj
MzE2XQoJYm1pIC5MX29mZmxpbmVhc21fY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlX19jaGVj
a1N3aXRjaFRvSklUX19jb250aW51ZQoJbW92IHIwLCByNwoJbW92IHIxLCByOQoJYmx4IGxsaW50
X3JlcGxhY2UKCW1vdiByOSwgcjAKLkxfb2ZmbGluZWFzbV9jaGVja1N3aXRjaFRvSklURm9yRXBp
bG9ndWVfX2NoZWNrU3dpdGNoVG9KSVRfX2NvbnRpbnVlOgoJbGRyIHIyLCBbcjksICM0XQoJbW92
dyByMTIsICMwCgltb3Z0IHIxMiwgIzE2Mzg0CgljbXAgcjIsIHIxMgoJYmdlIC5MX29mZmxpbmVh
c21fNTVfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQKCWFkZCByMTIsIHI3LCByMiwg
bHNsICMzCglsZHIgcjEsIFtyMTIsICM0XQoJbGRyIHIwLCBbcjcsIHIyLCBsc2wgIzNdCgliIC5M
X29mZmxpbmVhc21fNTVfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZQouTF9vZmZsaW5lYXNt
XzU1X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50OgoJbGRyIHIwLCBbcjcsICM4XQoJ
bGRyIHIwLCBbcjAsICMyNzZdCglhZGQgcjEyLCByMCwgcjIsIGxzbCAjMwoJbGRyIHIxLCBbcjEy
LCAjNF0KCWxkciByMCwgW3IwLCByMiwgbHNsICMzXQouTF9vZmZsaW5lYXNtXzU1X2xvYWRDb25z
dGFudE9yVmFyaWFibGVfX2RvbmU6Cgltb3Ygc3AsIHI3Cglwb3AgeyByNyB9Cglwb3AgeyBsciB9
CglieCBscgouTGxsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoKCWxkciByMCwgW3I3LCAjOF0K
CWxkciByMTIsIFtyMCwgIzMxNl0KCWFkZHMgcjEyLCAjMTAKCXN0ciByMTIsIFtyMCwgIzMxNl0K
CWJtaSAuTF9vZmZsaW5lYXNtX2NoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZV9fNTVfY2hlY2tT
d2l0Y2hUb0pJVF9fY29udGludWUKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBsbGludF9y
ZXBsYWNlCgltb3YgcjksIHIwCi5MX29mZmxpbmVhc21fY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxv
Z3VlX181NV9jaGVja1N3aXRjaFRvSklUX19jb250aW51ZToKCWxkciByMiwgW3I5LCAjNF0KCW1v
dncgcjEyLCAjMAoJbW92dCByMTIsICMxNjM4NAoJY21wIHIyLCByMTIKCWJnZSAuTF9vZmZsaW5l
YXNtXzU2X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50CglhZGQgcjEyLCByNywgcjIs
IGxzbCAjMwoJbGRyIHIxLCBbcjEyLCAjNF0KCWxkciByMCwgW3I3LCByMiwgbHNsICMzXQoJYiAu
TF9vZmZsaW5lYXNtXzU2X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUKLkxfb2ZmbGluZWFz
bV81Nl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDoKCWxkciByMCwgW3I3LCAjOF0K
CWxkciByMCwgW3IwLCAjMjc2XQoJYWRkIHIxMiwgcjAsIHIyLCBsc2wgIzMKCWxkciByMSwgW3Ix
MiwgIzRdCglsZHIgcjAsIFtyMCwgcjIsIGxzbCAjM10KLkxfb2ZmbGluZWFzbV81Nl9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19kb25lOgoJbXZuIHIxMiwgIzQKCWNtcCByMSwgcjEyCglibmUgLkxf
b2ZmbGluZWFzbV9vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAoJbGRyYiByMTIsIFtyMCwgIzVd
CgljbXAgcjEyLCAjMTcKCWJsbyAuTF9vZmZsaW5lYXNtX29wUmV0T2JqZWN0T3JUaGlzTm90T2Jq
ZWN0Cgltb3Ygc3AsIHI3Cglwb3AgeyByNyB9Cglwb3AgeyBsciB9CglieCBscgouTF9vZmZsaW5l
YXNtX29wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0OgoJbGRyIHIyLCBbcjksICM4XQoJbW92dyBy
MTIsICMwCgltb3Z0IHIxMiwgIzE2Mzg0CgljbXAgcjIsIHIxMgoJYmdlIC5MX29mZmxpbmVhc21f
NTdfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQKCWFkZCByMTIsIHI3LCByMiwgbHNs
ICMzCglsZHIgcjEsIFtyMTIsICM0XQoJbGRyIHIwLCBbcjcsIHIyLCBsc2wgIzNdCgliIC5MX29m
ZmxpbmVhc21fNTdfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZQouTF9vZmZsaW5lYXNtXzU3
X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50OgoJbGRyIHIwLCBbcjcsICM4XQoJbGRy
IHIwLCBbcjAsICMyNzZdCglhZGQgcjEyLCByMCwgcjIsIGxzbCAjMwoJbGRyIHIxLCBbcjEyLCAj
NF0KCWxkciByMCwgW3IwLCByMiwgbHNsICMzXQouTF9vZmZsaW5lYXNtXzU3X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2RvbmU6Cgltb3Ygc3AsIHI3Cglwb3AgeyByNyB9Cglwb3AgeyBsciB9Cgli
eCBscgouTGxsaW50X29wX3RvX3ByaW1pdGl2ZToKCWxkciByMiwgW3I5LCAjOF0KCWxkciByNCwg
W3I5LCAjNF0KCW1vdncgcjEyLCAjMAoJbW92dCByMTIsICMxNjM4NAoJY21wIHIyLCByMTIKCWJn
ZSAuTF9vZmZsaW5lYXNtXzU4X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50CglhZGQg
cjEyLCByNywgcjIsIGxzbCAjMwoJbGRyIHIxLCBbcjEyLCAjNF0KCWxkciByMCwgW3I3LCByMiwg
bHNsICMzXQoJYiAuTF9vZmZsaW5lYXNtXzU4X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUK
Lkxfb2ZmbGluZWFzbV81OF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDoKCWxkciBy
MCwgW3I3LCAjOF0KCWxkciByMCwgW3IwLCAjMjc2XQoJYWRkIHIxMiwgcjAsIHIyLCBsc2wgIzMK
CWxkciByMSwgW3IxMiwgIzRdCglsZHIgcjAsIFtyMCwgcjIsIGxzbCAjM10KLkxfb2ZmbGluZWFz
bV81OF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOgoJbXZuIHIxMiwgIzQKCWNtcCByMSwg
cjEyCglibmUgLkxfb2ZmbGluZWFzbV9vcFRvUHJpbWl0aXZlSXNJbW0KCWxkcmIgcjEyLCBbcjAs
ICM1XQoJY21wIHIxMiwgIzYKCWJuZSAuTF9vZmZsaW5lYXNtX29wVG9QcmltaXRpdmVTbG93Q2Fz
ZQouTF9vZmZsaW5lYXNtX29wVG9QcmltaXRpdmVJc0ltbToKCWFkZCByMTIsIHI3LCByNCwgbHNs
ICMzCglzdHIgcjEsIFtyMTIsICM0XQoJc3RyIHIwLCBbcjcsIHI0LCBsc2wgIzNdCglhZGRzIHI5
LCAjMTIKCWxkciByMTIsIFtyOSwgIzBdCgltb3YgcGMsIHIxMgouTF9vZmZsaW5lYXNtX29wVG9Q
cmltaXRpdmVTbG93Q2FzZToKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBzbG93X3BhdGhf
dG9fcHJpbWl0aXZlCgltb3YgcjksIHIwCglhZGRzIHI5LCAjMTIKCWxkciByMTIsIFtyOSwgIzBd
Cgltb3YgcGMsIHIxMgouTGxsaW50X29wX2NhdGNoOgoJbGRyIHI0LCBbcjcsICMxNl0KCW1vdncg
cjEyLCAjMAoJbW92dCByMTIsICM2NTUzNQoJYW5kcyByNCwgcjEyCglsZHIgcjQsIFtyNCwgIzEw
NzZdCgltb3Z3IHIxMiwgIzI2OTA4CglhZGQgcjEyLCByNAoJbGRyIHI3LCBbcjEyLCAjMF0KCWxk
ciByMiwgW3I3LCAjOF0KCWxkciByOCwgW3IyLCAjMjhdCglsc2xzIHI4LCByOCwgIzMKCWFkZHMg
cjgsICMyNAoJc3VicyByOCwgcjcsIHI4Cgltb3Ygc3AsIHI4Cgltb3Z3IHIxMiwgIzI2OTE2Cglh
ZGQgcjEyLCByNAoJbGRyIHI5LCBbcjEyLCAjMF0KCW1vdncgcjEyLCAjMjcwNTYKCWFkZCByMTIs
IHI0CglsZHIgcjAsIFtyMTIsICMwXQoJbW92dyByMTIsICMyNzA2MAoJYWRkIHIxMiwgcjQKCWxk
ciByMSwgW3IxMiwgIzBdCgltb3Z3IHIxMiwgIzI3MDU2CglhZGQgcjEyLCByNAoJbW92IHI2LCAj
MAoJc3RyIHI2LCBbcjEyLCAjMF0KCW1vdncgcjEyLCAjMjcwNjAKCWFkZCByMTIsIHI0Cgltdm4g
cjYsICM1CglzdHIgcjYsIFtyMTIsICMwXQoJbGRyIHIyLCBbcjksICM0XQoJc3RyIHIwLCBbcjcs
IHIyLCBsc2wgIzNdCglhZGQgcjEyLCByNywgcjIsIGxzbCAjMwoJc3RyIHIxLCBbcjEyLCAjNF0K
CWFkZHMgcjksICM4CglsZHIgcjEyLCBbcjksICMwXQoJbW92IHBjLCByMTIKLkxsbGludF9vcF9l
bmQ6CglsZHIgcjAsIFtyNywgIzhdCglsZHIgcjEyLCBbcjAsICMzMTZdCglhZGRzIHIxMiwgIzEw
CglzdHIgcjEyLCBbcjAsICMzMTZdCglibWkgLkxfb2ZmbGluZWFzbV9jaGVja1N3aXRjaFRvSklU
Rm9yRXBpbG9ndWVfXzU4X2NoZWNrU3dpdGNoVG9KSVRfX2NvbnRpbnVlCgltb3YgcjAsIHI3Cglt
b3YgcjEsIHI5CglibHggbGxpbnRfcmVwbGFjZQoJbW92IHI5LCByMAouTF9vZmZsaW5lYXNtX2No
ZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZV9fNThfY2hlY2tTd2l0Y2hUb0pJVF9fY29udGludWU6
CglsZHIgcjAsIFtyOSwgIzRdCglhZGQgcjEyLCByNywgcjAsIGxzbCAjMwoJbGRyIHIxLCBbcjEy
LCAjNF0KCWxkciByMCwgW3I3LCByMCwgbHNsICMzXQoJbW92IHNwLCByNwoJcG9wIHsgcjcgfQoJ
cG9wIHsgbHIgfQoJYnggbHIKLkxsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5l
OgoJbW92IHIwLCByNwoJbW92IHIxLCByOQoJYmx4IGxsaW50X3Nsb3dfcGF0aF9oYW5kbGVfZXhj
ZXB0aW9uCgltb3YgcjksIHIwCglsZHIgcjEsIFtyNywgIzhdCglsZHIgcjEsIFtyMSwgIzU2XQoJ
bW92dyByMTIsICMyNjkxMgoJYWRkIHIxMiwgcjEKCWxkciByNiwgW3IxMiwgIzBdCgltb3YgcGMs
IHI2Ci5MbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZToKCW1vdiByMiwgbHIKCWIg
LkxsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lCi5MbGxpbnRfb3BfcmVzb2x2
ZV9zY29wZToKCWxkciByMCwgW3I5LCAjMTJdCgl0c3QgcjAsIHIwCglibmUgLkxfb2ZmbGluZWFz
bV9yR2xvYmFsVmFyCglsZHIgcjAsIFtyNywgIzhdCglsZHIgcjAsIFtyMCwgIzIwXQoJbGRyIHIx
LCBbcjksICM0XQoJYWRkIHI2LCByNywgcjEsIGxzbCAjMwoJbXZuIHIxMiwgIzQKCXN0ciByMTIs
IFtyNiwgIzRdCglzdHIgcjAsIFtyNywgcjEsIGxzbCAjM10KCWFkZHMgcjksICMyNAoJbGRyIHI2
LCBbcjksICMwXQoJbW92IHBjLCByNgouTF9vZmZsaW5lYXNtX3JHbG9iYWxWYXI6CgljbXAgcjAs
ICMxCglibmUgLkxfb2ZmbGluZWFzbV9yQ2xvc3VyZVZhcgoJbGRyIHIwLCBbcjcsICM4XQoJbGRy
IHIwLCBbcjAsICMyMF0KCWxkciByMSwgW3I5LCAjNF0KCWFkZCByNiwgcjcsIHIxLCBsc2wgIzMK
CW12biByMTIsICM0CglzdHIgcjEyLCBbcjYsICM0XQoJc3RyIHIwLCBbcjcsIHIxLCBsc2wgIzNd
CglhZGRzIHI5LCAjMjQKCWxkciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxfb2ZmbGluZWFz
bV9yQ2xvc3VyZVZhcjoKCWNtcCByMCwgIzIKCWJuZSAuTF9vZmZsaW5lYXNtX3JHbG9iYWxQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MKCWxkciByMCwgW3I3LCAjOF0KCWxkciByMiwgW3I5
LCAjMTZdCglsZHJiIHI2LCBbcjAsICM4MV0KCXRzdCByNiwgcjYKCWJlcSAuTF9vZmZsaW5lYXNt
X3Jlc29sdmVTY29wZV9fcmVzb2x2ZVNjb3BlQWZ0ZXJBY3RpdmF0aW9uQ2hlY2sKCWxkciByMSwg
W3IwLCAjNzZdCglhZGRzIHIyLCAjMQouTF9vZmZsaW5lYXNtX3Jlc29sdmVTY29wZV9fcmVzb2x2
ZVNjb3BlQWZ0ZXJBY3RpdmF0aW9uQ2hlY2s6CglsZHIgcjAsIFtyNywgIzE2XQoJdHN0IHIyLCBy
MgoJYmVxIC5MX29mZmxpbmVhc21fcmVzb2x2ZVNjb3BlX19yZXNvbHZlU2NvcGVMb29wRW5kCi5M
X29mZmxpbmVhc21fcmVzb2x2ZVNjb3BlX19yZXNvbHZlU2NvcGVMb29wOgoJbGRyIHIwLCBbcjAs
ICMxNl0KCXN1YnMgcjIsIHIyLCAjMQoJdHN0IHIyLCByMgoJYm5lIC5MX29mZmxpbmVhc21fcmVz
b2x2ZVNjb3BlX19yZXNvbHZlU2NvcGVMb29wCi5MX29mZmxpbmVhc21fcmVzb2x2ZVNjb3BlX19y
ZXNvbHZlU2NvcGVMb29wRW5kOgoJbGRyIHIxLCBbcjksICM0XQoJYWRkIHI2LCByNywgcjEsIGxz
bCAjMwoJbXZuIHIxMiwgIzQKCXN0ciByMTIsIFtyNiwgIzRdCglzdHIgcjAsIFtyNywgcjEsIGxz
bCAjM10KCWFkZHMgcjksICMyNAoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTF9vZmZs
aW5lYXNtX3JHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CgljbXAgcjAsICMz
CglibmUgLkxfb2ZmbGluZWFzbV9yR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwoJbGRy
IHIwLCBbcjcsICM4XQoJbGRyIHIwLCBbcjAsICMyMF0KCWxkciByMCwgW3IwLCAjNTk2XQoJbGRy
YiByNiwgW3IwLCAjNF0KCWNtcCByNiwgIzIKCWJlcSAuTF9vZmZsaW5lYXNtX3JEeW5hbWljCgls
ZHIgcjAsIFtyNywgIzhdCglsZHIgcjAsIFtyMCwgIzIwXQoJbGRyIHIxLCBbcjksICM0XQoJYWRk
IHI2LCByNywgcjEsIGxzbCAjMwoJbXZuIHIxMiwgIzQKCXN0ciByMTIsIFtyNiwgIzRdCglzdHIg
cjAsIFtyNywgcjEsIGxzbCAjM10KCWFkZHMgcjksICMyNAoJbGRyIHI2LCBbcjksICMwXQoJbW92
IHBjLCByNgouTF9vZmZsaW5lYXNtX3JHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgoJ
Y21wIHIwLCAjNAoJYm5lIC5MX29mZmxpbmVhc21fckNsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzCglsZHIgcjAsIFtyNywgIzhdCglsZHIgcjAsIFtyMCwgIzIwXQoJbGRyIHIwLCBbcjAs
ICM1OTZdCglsZHJiIHI2LCBbcjAsICM0XQoJY21wIHI2LCAjMgoJYmVxIC5MX29mZmxpbmVhc21f
ckR5bmFtaWMKCWxkciByMCwgW3I3LCAjOF0KCWxkciByMCwgW3IwLCAjMjBdCglsZHIgcjEsIFty
OSwgIzRdCglhZGQgcjYsIHI3LCByMSwgbHNsICMzCgltdm4gcjEyLCAjNAoJc3RyIHIxMiwgW3I2
LCAjNF0KCXN0ciByMCwgW3I3LCByMSwgbHNsICMzXQoJYWRkcyByOSwgIzI0CglsZHIgcjYsIFty
OSwgIzBdCgltb3YgcGMsIHI2Ci5MX29mZmxpbmVhc21fckNsb3N1cmVWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzOgoJY21wIHIwLCAjNQoJYm5lIC5MX29mZmxpbmVhc21fckR5bmFtaWMKCWxkciBy
MCwgW3I3LCAjOF0KCWxkciByMCwgW3IwLCAjMjBdCglsZHIgcjAsIFtyMCwgIzU5Nl0KCWxkcmIg
cjYsIFtyMCwgIzRdCgljbXAgcjYsICMyCgliZXEgLkxfb2ZmbGluZWFzbV9yRHluYW1pYwoJbGRy
IHIwLCBbcjcsICM4XQoJbGRyIHIyLCBbcjksICMxNl0KCWxkcmIgcjYsIFtyMCwgIzgxXQoJdHN0
IHI2LCByNgoJYmVxIC5MX29mZmxpbmVhc21fNThfcmVzb2x2ZVNjb3BlX19yZXNvbHZlU2NvcGVB
ZnRlckFjdGl2YXRpb25DaGVjawoJbGRyIHIxLCBbcjAsICM3Nl0KCWFkZHMgcjIsICMxCi5MX29m
ZmxpbmVhc21fNThfcmVzb2x2ZVNjb3BlX19yZXNvbHZlU2NvcGVBZnRlckFjdGl2YXRpb25DaGVj
azoKCWxkciByMCwgW3I3LCAjMTZdCgl0c3QgcjIsIHIyCgliZXEgLkxfb2ZmbGluZWFzbV81OF9y
ZXNvbHZlU2NvcGVfX3Jlc29sdmVTY29wZUxvb3BFbmQKLkxfb2ZmbGluZWFzbV81OF9yZXNvbHZl
U2NvcGVfX3Jlc29sdmVTY29wZUxvb3A6CglsZHIgcjAsIFtyMCwgIzE2XQoJc3VicyByMiwgcjIs
ICMxCgl0c3QgcjIsIHIyCglibmUgLkxfb2ZmbGluZWFzbV81OF9yZXNvbHZlU2NvcGVfX3Jlc29s
dmVTY29wZUxvb3AKLkxfb2ZmbGluZWFzbV81OF9yZXNvbHZlU2NvcGVfX3Jlc29sdmVTY29wZUxv
b3BFbmQ6CglsZHIgcjEsIFtyOSwgIzRdCglhZGQgcjYsIHI3LCByMSwgbHNsICMzCgltdm4gcjEy
LCAjNAoJc3RyIHIxMiwgW3I2LCAjNF0KCXN0ciByMCwgW3I3LCByMSwgbHNsICMzXQoJYWRkcyBy
OSwgIzI0CglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MX29mZmxpbmVhc21fckR5bmFt
aWM6Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggbGxpbnRfc2xvd19wYXRoX3Jlc29sdmVf
c2NvcGUKCW1vdiByOSwgcjAKCWFkZHMgcjksICMyNAoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBj
LCByNgouTGxsaW50X29wX2dldF9mcm9tX3Njb3BlOgoJbGRyIHIwLCBbcjksICMxNl0KCW1vdncg
cjYsICM2NTUzNQoJYW5kcyByMCwgcjYKCXRzdCByMCwgcjAKCWJuZSAuTF9vZmZsaW5lYXNtX2dH
bG9iYWxWYXIKCWxkciByMCwgW3I5LCAjOF0KCWxkciByMCwgW3I3LCByMCwgbHNsICMzXQoJbGRy
IHIxLCBbcjksICMyMF0KCWxkciByNiwgW3IwLCAjMF0KCWNtcCByNiwgcjEKCWJuZSAuTF9vZmZs
aW5lYXNtX2dEeW5hbWljCglsZHIgcjQsIFtyOSwgIzI0XQoJY21wIHI0LCAjMTAwCglibHQgLkxf
b2ZmbGluZWFzbV9nZXRQcm9wZXJ0eV9fbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldF9faXNJ
bmxpbmUKCWxkciByMCwgW3IwLCAjOF0KCXJzYnMgcjQsIHI0LCAjMAoJYiAuTF9vZmZsaW5lYXNt
X2dldFByb3BlcnR5X19sb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0X19yZWFkeQouTF9vZmZs
aW5lYXNtX2dldFByb3BlcnR5X19sb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0X19pc0lubGlu
ZToKCW1vdncgcjYsICM2NDc2OAoJbW92dCByNiwgIzY1NTM1CglhZGQgcjAsIHI2Ci5MX29mZmxp
bmVhc21fZ2V0UHJvcGVydHlfX2xvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRfX3JlYWR5OgoJ
YWRkIHI2LCByMCwgcjQsIGxzbCAjMwoJbGRyIHIxLCBbcjYsICM3ODhdCglhZGQgcjYsIHIwLCBy
NCwgbHNsICMzCglsZHIgcjIsIFtyNiwgIzc4NF0KCWxkciByMCwgW3I5LCAjMjhdCglzdHIgcjEs
IFtyMCwgIzIwXQoJc3RyIHIyLCBbcjAsICMxNl0KCWxkciByMCwgW3I5LCAjNF0KCWFkZCByNiwg
cjcsIHIwLCBsc2wgIzMKCXN0ciByMSwgW3I2LCAjNF0KCXN0ciByMiwgW3I3LCByMCwgbHNsICMz
XQoJYWRkcyByOSwgIzMyCglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MX29mZmxpbmVh
c21fZ0dsb2JhbFZhcjoKCWNtcCByMCwgIzEKCWJuZSAuTF9vZmZsaW5lYXNtX2dDbG9zdXJlVmFy
CglsZHIgcjAsIFtyOSwgIzI0XQoJbGRyIHIxLCBbcjAsICM0XQoJbGRyIHIyLCBbcjAsICMwXQoJ
bGRyIHIwLCBbcjksICMyOF0KCXN0ciByMSwgW3IwLCAjMjBdCglzdHIgcjIsIFtyMCwgIzE2XQoJ
bGRyIHIwLCBbcjksICM0XQoJYWRkIHI2LCByNywgcjAsIGxzbCAjMwoJc3RyIHIxLCBbcjYsICM0
XQoJc3RyIHIyLCBbcjcsIHIwLCBsc2wgIzNdCglhZGRzIHI5LCAjMzIKCWxkciByNiwgW3I5LCAj
MF0KCW1vdiBwYywgcjYKLkxfb2ZmbGluZWFzbV9nQ2xvc3VyZVZhcjoKCWNtcCByMCwgIzIKCWJu
ZSAuTF9vZmZsaW5lYXNtX2dHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MKCWxk
ciByMiwgW3I5LCAjOF0KCWFkZCByNiwgcjcsIHIyLCBsc2wgIzMKCWxkciByMSwgW3I2LCAjNF0K
CWxkciByMCwgW3I3LCByMiwgbHNsICMzXQoJbGRyIHIwLCBbcjAsICMyNF0KCWxkciByNCwgW3I5
LCAjMjRdCglhZGQgcjYsIHIwLCByNCwgbHNsICMzCglsZHIgcjEsIFtyNiwgIzRdCglsZHIgcjIs
IFtyMCwgcjQsIGxzbCAjM10KCWxkciByMCwgW3I5LCAjMjhdCglzdHIgcjEsIFtyMCwgIzIwXQoJ
c3RyIHIyLCBbcjAsICMxNl0KCWxkciByMCwgW3I5LCAjNF0KCWFkZCByNiwgcjcsIHIwLCBsc2wg
IzMKCXN0ciByMSwgW3I2LCAjNF0KCXN0ciByMiwgW3I3LCByMCwgbHNsICMzXQoJYWRkcyByOSwg
IzMyCglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MX29mZmxpbmVhc21fZ0dsb2JhbFBy
b3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKCWNtcCByMCwgIzMKCWJuZSAuTF9vZmZsaW5l
YXNtX2dHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCglsZHIgcjAsIFtyOSwgIzhdCgls
ZHIgcjAsIFtyNywgcjAsIGxzbCAjM10KCWxkciByMSwgW3I5LCAjMjBdCglsZHIgcjYsIFtyMCwg
IzBdCgljbXAgcjYsIHIxCglibmUgLkxfb2ZmbGluZWFzbV9nRHluYW1pYwoJbGRyIHI0LCBbcjks
ICMyNF0KCWNtcCByNCwgIzEwMAoJYmx0IC5MX29mZmxpbmVhc21fZ2V0UHJvcGVydHlfXzU4X2xv
YWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRfX2lzSW5saW5lCglsZHIgcjAsIFtyMCwgIzhdCgly
c2JzIHI0LCByNCwgIzAKCWIgLkxfb2ZmbGluZWFzbV9nZXRQcm9wZXJ0eV9fNThfbG9hZFByb3Bl
cnR5QXRWYXJpYWJsZU9mZnNldF9fcmVhZHkKLkxfb2ZmbGluZWFzbV9nZXRQcm9wZXJ0eV9fNThf
bG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldF9faXNJbmxpbmU6Cgltb3Z3IHI2LCAjNjQ3NjgK
CW1vdnQgcjYsICM2NTUzNQoJYWRkIHIwLCByNgouTF9vZmZsaW5lYXNtX2dldFByb3BlcnR5X181
OF9sb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0X19yZWFkeToKCWFkZCByNiwgcjAsIHI0LCBs
c2wgIzMKCWxkciByMSwgW3I2LCAjNzg4XQoJYWRkIHI2LCByMCwgcjQsIGxzbCAjMwoJbGRyIHIy
LCBbcjYsICM3ODRdCglsZHIgcjAsIFtyOSwgIzI4XQoJc3RyIHIxLCBbcjAsICMyMF0KCXN0ciBy
MiwgW3IwLCAjMTZdCglsZHIgcjAsIFtyOSwgIzRdCglhZGQgcjYsIHI3LCByMCwgbHNsICMzCglz
dHIgcjEsIFtyNiwgIzRdCglzdHIgcjIsIFtyNywgcjAsIGxzbCAjM10KCWFkZHMgcjksICMzMgoJ
bGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTF9vZmZsaW5lYXNtX2dHbG9iYWxWYXJXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzOgoJY21wIHIwLCAjNAoJYm5lIC5MX29mZmxpbmVhc21fZ0Nsb3N1
cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCglsZHIgcjAsIFtyNywgIzhdCglsZHIgcjAsIFty
MCwgIzIwXQoJbGRyIHIwLCBbcjAsICM1OTZdCglsZHJiIHI2LCBbcjAsICM0XQoJY21wIHI2LCAj
MgoJYmVxIC5MX29mZmxpbmVhc21fZ0R5bmFtaWMKCWxkciByMiwgW3I5LCAjOF0KCWFkZCByNiwg
cjcsIHIyLCBsc2wgIzMKCWxkciByMSwgW3I2LCAjNF0KCWxkciByMCwgW3I3LCByMiwgbHNsICMz
XQoJbGRyIHIwLCBbcjksICMyNF0KCWxkciByMSwgW3IwLCAjNF0KCWxkciByMiwgW3IwLCAjMF0K
CWxkciByMCwgW3I5LCAjMjhdCglzdHIgcjEsIFtyMCwgIzIwXQoJc3RyIHIyLCBbcjAsICMxNl0K
CWxkciByMCwgW3I5LCAjNF0KCWFkZCByNiwgcjcsIHIwLCBsc2wgIzMKCXN0ciByMSwgW3I2LCAj
NF0KCXN0ciByMiwgW3I3LCByMCwgbHNsICMzXQoJYWRkcyByOSwgIzMyCglsZHIgcjYsIFtyOSwg
IzBdCgltb3YgcGMsIHI2Ci5MX29mZmxpbmVhc21fZ0Nsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzOgoJY21wIHIwLCAjNQoJYm5lIC5MX29mZmxpbmVhc21fZ0R5bmFtaWMKCWxkciByMCwg
W3I3LCAjOF0KCWxkciByMCwgW3IwLCAjMjBdCglsZHIgcjAsIFtyMCwgIzU5Nl0KCWxkcmIgcjYs
IFtyMCwgIzRdCgljbXAgcjYsICMyCgliZXEgLkxfb2ZmbGluZWFzbV9nRHluYW1pYwoJbGRyIHIy
LCBbcjksICM4XQoJYWRkIHI2LCByNywgcjIsIGxzbCAjMwoJbGRyIHIxLCBbcjYsICM0XQoJbGRy
IHIwLCBbcjcsIHIyLCBsc2wgIzNdCglsZHIgcjAsIFtyMCwgIzI0XQoJbGRyIHI0LCBbcjksICMy
NF0KCWFkZCByNiwgcjAsIHI0LCBsc2wgIzMKCWxkciByMSwgW3I2LCAjNF0KCWxkciByMiwgW3Iw
LCByNCwgbHNsICMzXQoJbGRyIHIwLCBbcjksICMyOF0KCXN0ciByMSwgW3IwLCAjMjBdCglzdHIg
cjIsIFtyMCwgIzE2XQoJbGRyIHIwLCBbcjksICM0XQoJYWRkIHI2LCByNywgcjAsIGxzbCAjMwoJ
c3RyIHIxLCBbcjYsICM0XQoJc3RyIHIyLCBbcjcsIHIwLCBsc2wgIzNdCglhZGRzIHI5LCAjMzIK
CWxkciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxfb2ZmbGluZWFzbV9nRHluYW1pYzoKCW1v
diByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBsbGludF9zbG93X3BhdGhfZ2V0X2Zyb21fc2NvcGUK
CW1vdiByOSwgcjAKCWFkZHMgcjksICMzMgoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgou
TGxsaW50X29wX3B1dF90b19zY29wZToKCWxkciByMCwgW3I5LCAjMTZdCgltb3Z3IHI2LCAjNjU1
MzUKCWFuZHMgcjAsIHI2Cgl0c3QgcjAsIHIwCglibmUgLkxfb2ZmbGluZWFzbV9wR2xvYmFsVmFy
CglsZHIgcjEsIFtyOSwgIzEyXQoJbW92dyByNiwgIzAKCW1vdnQgcjYsICMxNjM4NAoJY21wIHIx
LCByNgoJYmdlIC5MX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fNThfbG9hZENv
bnN0YW50T3JWYXJpYWJsZVRhZ19fY29uc3RhbnQKCWFkZCByNiwgcjcsIHIxLCBsc2wgIzMKCWxk
ciByMCwgW3I2LCAjNF0KCWIgLkxfb2ZmbGluZWFzbV93cml0ZUJhcnJpZXJPbk9wZXJhbmRzX181
OF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnX19kb25lCi5MX29mZmxpbmVhc21fd3JpdGVCYXJy
aWVyT25PcGVyYW5kc19fNThfbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fY29uc3RhbnQ6Cgls
ZHIgcjAsIFtyNywgIzhdCglsZHIgcjAsIFtyMCwgIzI3Nl0KCWFkZCByNiwgcjAsIHIxLCBsc2wg
IzMKCWxkciByMCwgW3I2LCAjNF0KLkxfb2ZmbGluZWFzbV93cml0ZUJhcnJpZXJPbk9wZXJhbmRz
X181OF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnX19kb25lOgoJbXZuIHI2LCAjNAoJY21wIHIw
LCByNgoJYm5lIC5MX29mZmxpbmVhc21fNThfd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fd3JpdGVC
YXJyaWVyRG9uZQoJbGRyIHIxLCBbcjksICM0XQoJbW92dyByNiwgIzAKCW1vdnQgcjYsICMxNjM4
NAoJY21wIHIxLCByNgoJYmdlIC5MX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19f
d3JpdGVCYXJyaWVyT25PcGVyYW5kX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNThf
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50CglhZGQgcjYs
IHI3LCByMSwgbHNsICMzCgltdm4gcjEyLCAjNAoJbGRyIHIxMCwgW3I2LCAjNF0KCWNtcCByMTAs
IHIxMgoJYm5lIC5MX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fNThfd3JpdGVC
YXJyaWVyT25PcGVyYW5kX193cml0ZUJhcnJpZXJEb25lCglsZHIgcjIsIFtyNywgcjEsIGxzbCAj
M10KCWIgLkxfb2ZmbGluZWFzbV93cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJP
bk9wZXJhbmRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX181OF9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZQouTF9vZmZsaW5lYXNtX3dyaXRlQmFycmll
ck9uT3BlcmFuZHNfX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWRfXzU4X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25z
dGFudDoKCWxkciByMiwgW3I3LCAjOF0KCWxkciByMiwgW3IyLCAjMjc2XQoJYWRkIHIxMiwgcjIs
IHIxLCBsc2wgIzMKCW12biByMTAsICM0CglsZHIgcjYsIFtyMTIsICM0XQoJY21wIHI2LCByMTAK
CWJuZSAuTF9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzU4X3dyaXRlQmFycmll
ck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9uZQoJbGRyIHIyLCBbcjIsIHIxLCBsc2wgIzNdCi5M
X29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fd3JpdGVCYXJyaWVyT25PcGVyYW5k
X19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNThfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWRUYWdDdXN0b21fX2RvbmU6CglsZHJiIHIxLCBbcjIsICM3XQoJdHN0IHIxLCByMQoJ
Ym5lIC5MX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fNThfd3JpdGVCYXJyaWVy
T25PcGVyYW5kX193cml0ZUJhcnJpZXJEb25lCglwdXNoIHsgcjcgfQoJcHVzaCB7IHI5IH0KCXN1
YnMgc3AsIHNwLCAjOAoJbW92IHIwLCByNwoJbW92IHIxLCByMgoJYmx4IGxsaW50X3dyaXRlX2Jh
cnJpZXJfc2xvdwoJYWRkcyBzcCwgIzgKCXBvcCB7IHI5IH0KCXBvcCB7IHI3IH0KLkxfb2ZmbGlu
ZWFzbV93cml0ZUJhcnJpZXJPbk9wZXJhbmRzX181OF93cml0ZUJhcnJpZXJPbk9wZXJhbmRfX3dy
aXRlQmFycmllckRvbmU6Ci5MX29mZmxpbmVhc21fNThfd3JpdGVCYXJyaWVyT25PcGVyYW5kc19f
d3JpdGVCYXJyaWVyRG9uZToKCWxkciByMCwgW3I5LCAjNF0KCWxkciByMCwgW3I3LCByMCwgbHNs
ICMzXQoJbGRyIHIxLCBbcjksICMyMF0KCWxkciByMTAsIFtyMCwgIzBdCgljbXAgcjEwLCByMQoJ
Ym5lIC5MX29mZmxpbmVhc21fcER5bmFtaWMKCWxkciByMSwgW3I5LCAjMTJdCgltb3Z3IHIxMCwg
IzAKCW1vdnQgcjEwLCAjMTYzODQKCWNtcCByMSwgcjEwCgliZ2UgLkxfb2ZmbGluZWFzbV9wdXRQ
cm9wZXJ0eV9fNTlfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQKCWFkZCByMTAsIHI3
LCByMSwgbHNsICMzCglsZHIgcjIsIFtyMTAsICM0XQoJbGRyIHI0LCBbcjcsIHIxLCBsc2wgIzNd
CgliIC5MX29mZmxpbmVhc21fcHV0UHJvcGVydHlfXzU5X2xvYWRDb25zdGFudE9yVmFyaWFibGVf
X2RvbmUKLkxfb2ZmbGluZWFzbV9wdXRQcm9wZXJ0eV9fNTlfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZV9fY29uc3RhbnQ6CglsZHIgcjQsIFtyNywgIzhdCglsZHIgcjQsIFtyNCwgIzI3Nl0KCWFkZCBy
MTAsIHI0LCByMSwgbHNsICMzCglsZHIgcjIsIFtyMTAsICM0XQoJbGRyIHI0LCBbcjQsIHIxLCBs
c2wgIzNdCi5MX29mZmxpbmVhc21fcHV0UHJvcGVydHlfXzU5X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVfX2RvbmU6CglsZHIgcjEsIFtyOSwgIzI0XQoJY21wIHIxLCAjMTAwCglibHQgLkxfb2ZmbGlu
ZWFzbV9wdXRQcm9wZXJ0eV9fc3RvcmVQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRfX2lzSW5saW5l
CglsZHIgcjAsIFtyMCwgIzhdCglyc2JzIHIxLCByMSwgIzAKCWIgLkxfb2ZmbGluZWFzbV9wdXRQ
cm9wZXJ0eV9fc3RvcmVQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRfX3JlYWR5Ci5MX29mZmxpbmVh
c21fcHV0UHJvcGVydHlfX3N0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0X19pc0lubGluZToK
CW1vdncgcjEwLCAjNjQ3NjgKCW1vdnQgcjEwLCAjNjU1MzUKCWFkZCByMCwgcjEwCi5MX29mZmxp
bmVhc21fcHV0UHJvcGVydHlfX3N0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0X19yZWFkeToK
CWFkZCByMTAsIHIwLCByMSwgbHNsICMzCglzdHIgcjIsIFtyMTAsICM3ODhdCglhZGQgcjEwLCBy
MCwgcjEsIGxzbCAjMwoJc3RyIHI0LCBbcjEwLCAjNzg0XQoJYWRkcyByOSwgIzI4CglsZHIgcjEw
LCBbcjksICMwXQoJbW92IHBjLCByMTAKLkxfb2ZmbGluZWFzbV9wR2xvYmFsVmFyOgoJY21wIHIw
LCAjMQoJYm5lIC5MX29mZmxpbmVhc21fcENsb3N1cmVWYXIKCWxkciByMSwgW3I5LCAjMTJdCglt
b3Z3IHIxMCwgIzAKCW1vdnQgcjEwLCAjMTYzODQKCWNtcCByMSwgcjEwCgliZ2UgLkxfb2ZmbGlu
ZWFzbV93cml0ZUJhcnJpZXJPbkdsb2JhbE9iamVjdF9fNTlfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVRhZ19fY29uc3RhbnQKCWFkZCByMTAsIHI3LCByMSwgbHNsICMzCglsZHIgcjAsIFtyMTAsICM0
XQoJYiAuTF9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9uR2xvYmFsT2JqZWN0X181OV9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlVGFnX19kb25lCi5MX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25HbG9i
YWxPYmplY3RfXzU5X2xvYWRDb25zdGFudE9yVmFyaWFibGVUYWdfX2NvbnN0YW50OgoJbGRyIHIw
LCBbcjcsICM4XQoJbGRyIHIwLCBbcjAsICMyNzZdCglhZGQgcjEwLCByMCwgcjEsIGxzbCAjMwoJ
bGRyIHIwLCBbcjEwLCAjNF0KLkxfb2ZmbGluZWFzbV93cml0ZUJhcnJpZXJPbkdsb2JhbE9iamVj
dF9fNTlfbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fZG9uZToKCW12biByMTAsICM0CgljbXAg
cjAsIHIxMAoJYm5lIC5MX29mZmxpbmVhc21fNTlfd3JpdGVCYXJyaWVyT25HbG9iYWxPYmplY3Rf
X3dyaXRlQmFycmllckRvbmUKCWxkciByNCwgW3I3LCAjOF0KCWxkciByNCwgW3I0LCAjMjBdCgls
ZHJiIHIxLCBbcjQsICM3XQoJdHN0IHIxLCByMQoJYm5lIC5MX29mZmxpbmVhc21fNTlfd3JpdGVC
YXJyaWVyT25HbG9iYWxPYmplY3RfX3dyaXRlQmFycmllckRvbmUKCXB1c2ggeyByNyB9CglwdXNo
IHsgcjkgfQoJc3VicyBzcCwgc3AsICM4Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI0CglibHggbGxp
bnRfd3JpdGVfYmFycmllcl9zbG93CglhZGRzIHNwLCAjOAoJcG9wIHsgcjkgfQoJcG9wIHsgcjcg
fQouTF9vZmZsaW5lYXNtXzU5X3dyaXRlQmFycmllck9uR2xvYmFsT2JqZWN0X193cml0ZUJhcnJp
ZXJEb25lOgoJbGRyIHIwLCBbcjksICMxMl0KCW1vdncgcjEwLCAjMAoJbW92dCByMTAsICMxNjM4
NAoJY21wIHIwLCByMTAKCWJnZSAuTF9vZmZsaW5lYXNtX3B1dEdsb2JhbFZhcl9fNjBfbG9hZENv
bnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQKCWFkZCByMTAsIHI3LCByMCwgbHNsICMzCglsZHIg
cjEsIFtyMTAsICM0XQoJbGRyIHIyLCBbcjcsIHIwLCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21f
cHV0R2xvYmFsVmFyX182MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lCi5MX29mZmxpbmVh
c21fcHV0R2xvYmFsVmFyX182MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDoKCWxk
ciByMiwgW3I3LCAjOF0KCWxkciByMiwgW3IyLCAjMjc2XQoJYWRkIHIxMCwgcjIsIHIwLCBsc2wg
IzMKCWxkciByMSwgW3IxMCwgIzRdCglsZHIgcjIsIFtyMiwgcjAsIGxzbCAjM10KLkxfb2ZmbGlu
ZWFzbV9wdXRHbG9iYWxWYXJfXzYwX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU6CglsZHIg
cjQsIFtyOSwgIzIwXQoJbGRyYiByMCwgW3I0LCAjNF0KCWNtcCByMCwgIzIKCWJlcSAuTF9vZmZs
aW5lYXNtX3B1dEdsb2JhbFZhcl9fNjBfbm90aWZ5V3JpdGVfX2RvbmUKCWxkciByMTAsIFtyNCwg
IzMyXQoJY21wIHIyLCByMTAKCWJuZSAuTF9vZmZsaW5lYXNtX3BEeW5hbWljCglsZHIgcjEwLCBb
cjQsICMzNl0KCWNtcCByMSwgcjEwCglibmUgLkxfb2ZmbGluZWFzbV9wRHluYW1pYwouTF9vZmZs
aW5lYXNtX3B1dEdsb2JhbFZhcl9fNjBfbm90aWZ5V3JpdGVfX2RvbmU6CglsZHIgcjAsIFtyOSwg
IzI0XQoJc3RyIHIxLCBbcjAsICM0XQoJc3RyIHIyLCBbcjAsICMwXQoJYWRkcyByOSwgIzI4Cgls
ZHIgcjEwLCBbcjksICMwXQoJbW92IHBjLCByMTAKLkxfb2ZmbGluZWFzbV9wQ2xvc3VyZVZhcjoK
CWNtcCByMCwgIzIKCWJuZSAuTF9vZmZsaW5lYXNtX3BHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmpl
Y3Rpb25DaGVja3MKCWxkciByMSwgW3I5LCAjMTJdCgltb3Z3IHIxMCwgIzAKCW1vdnQgcjEwLCAj
MTYzODQKCWNtcCByMSwgcjEwCgliZ2UgLkxfb2ZmbGluZWFzbV93cml0ZUJhcnJpZXJPbk9wZXJh
bmRzX182MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnX19jb25zdGFudAoJYWRkIHIxMCwgcjcs
IHIxLCBsc2wgIzMKCWxkciByMCwgW3IxMCwgIzRdCgliIC5MX29mZmxpbmVhc21fd3JpdGVCYXJy
aWVyT25PcGVyYW5kc19fNjBfbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fZG9uZQouTF9vZmZs
aW5lYXNtX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzYwX2xvYWRDb25zdGFudE9yVmFyaWFibGVU
YWdfX2NvbnN0YW50OgoJbGRyIHIwLCBbcjcsICM4XQoJbGRyIHIwLCBbcjAsICMyNzZdCglhZGQg
cjEwLCByMCwgcjEsIGxzbCAjMwoJbGRyIHIwLCBbcjEwLCAjNF0KLkxfb2ZmbGluZWFzbV93cml0
ZUJhcnJpZXJPbk9wZXJhbmRzX182MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnX19kb25lOgoJ
bXZuIHIxMCwgIzQKCWNtcCByMCwgcjEwCglibmUgLkxfb2ZmbGluZWFzbV82MF93cml0ZUJhcnJp
ZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJEb25lCglsZHIgcjEsIFtyOSwgIzRdCgltb3Z3IHIx
MCwgIzAKCW1vdnQgcjEwLCAjMTYzODQKCWNtcCByMSwgcjEwCgliZ2UgLkxfb2ZmbGluZWFzbV93
cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkX182MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1
c3RvbV9fY29uc3RhbnQKCWFkZCByMTAsIHI3LCByMSwgbHNsICMzCgltdm4gcjYsICM0CglsZHIg
cjEyLCBbcjEwLCAjNF0KCWNtcCByMTIsIHI2CglibmUgLkxfb2ZmbGluZWFzbV93cml0ZUJhcnJp
ZXJPbk9wZXJhbmRzX182MF93cml0ZUJhcnJpZXJPbk9wZXJhbmRfX3dyaXRlQmFycmllckRvbmUK
CWxkciByMiwgW3I3LCByMSwgbHNsICMzXQoJYiAuTF9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9u
T3BlcmFuZHNfX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWRfXzYwX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lCi5M
X29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fd3JpdGVCYXJyaWVyT25PcGVyYW5k
X19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNjBfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50OgoJbGRyIHIyLCBbcjcsICM4XQoJbGRyIHIyLCBb
cjIsICMyNzZdCglhZGQgcjYsIHIyLCByMSwgbHNsICMzCgltdm4gcjEyLCAjNAoJbGRyIHIxMCwg
W3I2LCAjNF0KCWNtcCByMTAsIHIxMgoJYm5lIC5MX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25P
cGVyYW5kc19fNjBfd3JpdGVCYXJyaWVyT25PcGVyYW5kX193cml0ZUJhcnJpZXJEb25lCglsZHIg
cjIsIFtyMiwgcjEsIGxzbCAjM10KLkxfb2ZmbGluZWFzbV93cml0ZUJhcnJpZXJPbk9wZXJhbmRz
X193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX182
MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZToKCWxkcmIgcjEs
IFtyMiwgIzddCgl0c3QgcjEsIHIxCglibmUgLkxfb2ZmbGluZWFzbV93cml0ZUJhcnJpZXJPbk9w
ZXJhbmRzX182MF93cml0ZUJhcnJpZXJPbk9wZXJhbmRfX3dyaXRlQmFycmllckRvbmUKCXB1c2gg
eyByNyB9CglwdXNoIHsgcjkgfQoJc3VicyBzcCwgc3AsICM4Cgltb3YgcjAsIHI3Cgltb3YgcjEs
IHIyCglibHggbGxpbnRfd3JpdGVfYmFycmllcl9zbG93CglhZGRzIHNwLCAjOAoJcG9wIHsgcjkg
fQoJcG9wIHsgcjcgfQouTF9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzYwX3dy
aXRlQmFycmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9uZToKLkxfb2ZmbGluZWFzbV82MF93
cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJEb25lOgoJbGRyIHIyLCBbcjksICM0
XQoJYWRkIHIxMiwgcjcsIHIyLCBsc2wgIzMKCWxkciByMSwgW3IxMiwgIzRdCglsZHIgcjAsIFty
NywgcjIsIGxzbCAjM10KCWxkciByMSwgW3I5LCAjMTJdCgltb3Z3IHIxMiwgIzAKCW1vdnQgcjEy
LCAjMTYzODQKCWNtcCByMSwgcjEyCgliZ2UgLkxfb2ZmbGluZWFzbV9wdXRDbG9zdXJlVmFyX182
MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudAoJYWRkIHIxMiwgcjcsIHIxLCBsc2wg
IzMKCWxkciByMiwgW3IxMiwgIzRdCglsZHIgcjQsIFtyNywgcjEsIGxzbCAjM10KCWIgLkxfb2Zm
bGluZWFzbV9wdXRDbG9zdXJlVmFyX182MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lCi5M
X29mZmxpbmVhc21fcHV0Q2xvc3VyZVZhcl9fNjFfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29u
c3RhbnQ6CglsZHIgcjQsIFtyNywgIzhdCglsZHIgcjQsIFtyNCwgIzI3Nl0KCWFkZCByMTIsIHI0
LCByMSwgbHNsICMzCglsZHIgcjIsIFtyMTIsICM0XQoJbGRyIHI0LCBbcjQsIHIxLCBsc2wgIzNd
Ci5MX29mZmxpbmVhc21fcHV0Q2xvc3VyZVZhcl9fNjFfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9f
ZG9uZToKCWxkciByMCwgW3IwLCAjMjRdCglsZHIgcjEsIFtyOSwgIzI0XQoJYWRkIHIxMiwgcjAs
IHIxLCBsc2wgIzMKCXN0ciByMiwgW3IxMiwgIzRdCglzdHIgcjQsIFtyMCwgcjEsIGxzbCAjM10K
CWFkZHMgcjksICMyOAoJbGRyIHIxMiwgW3I5LCAjMF0KCW1vdiBwYywgcjEyCi5MX29mZmxpbmVh
c21fcEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKCWNtcCByMCwgIzMKCWJu
ZSAuTF9vZmZsaW5lYXNtX3BHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCglsZHIgcjEs
IFtyOSwgIzEyXQoJbW92dyByMTIsICMwCgltb3Z0IHIxMiwgIzE2Mzg0CgljbXAgcjEsIHIxMgoJ
YmdlIC5MX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fNjFfbG9hZENvbnN0YW50
T3JWYXJpYWJsZVRhZ19fY29uc3RhbnQKCWFkZCByMTIsIHI3LCByMSwgbHNsICMzCglsZHIgcjAs
IFtyMTIsICM0XQoJYiAuTF9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzYxX2xv
YWRDb25zdGFudE9yVmFyaWFibGVUYWdfX2RvbmUKLkxfb2ZmbGluZWFzbV93cml0ZUJhcnJpZXJP
bk9wZXJhbmRzX182MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnX19jb25zdGFudDoKCWxkciBy
MCwgW3I3LCAjOF0KCWxkciByMCwgW3IwLCAjMjc2XQoJYWRkIHIxMiwgcjAsIHIxLCBsc2wgIzMK
CWxkciByMCwgW3IxMiwgIzRdCi5MX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19f
NjFfbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fZG9uZToKCW12biByMTIsICM0CgljbXAgcjAs
IHIxMgoJYm5lIC5MX29mZmxpbmVhc21fNjFfd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fd3JpdGVC
YXJyaWVyRG9uZQoJbGRyIHIxLCBbcjksICM0XQoJbW92dyByMTIsICMwCgltb3Z0IHIxMiwgIzE2
Mzg0CgljbXAgcjEsIHIxMgoJYmdlIC5MX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25PcGVyYW5k
c19fd3JpdGVCYXJyaWVyT25PcGVyYW5kX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9f
NjFfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50CglhZGQg
cjEyLCByNywgcjEsIGxzbCAjMwoJbXZuIHIxMCwgIzQKCWxkciByNiwgW3IxMiwgIzRdCgljbXAg
cjYsIHIxMAoJYm5lIC5MX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fNjFfd3Jp
dGVCYXJyaWVyT25PcGVyYW5kX193cml0ZUJhcnJpZXJEb25lCglsZHIgcjIsIFtyNywgcjEsIGxz
bCAjM10KCWIgLkxfb2ZmbGluZWFzbV93cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0ZUJhcnJp
ZXJPbk9wZXJhbmRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX182MV9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZQouTF9vZmZsaW5lYXNtX3dyaXRlQmFy
cmllck9uT3BlcmFuZHNfX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWRfXzYxX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19j
b25zdGFudDoKCWxkciByMiwgW3I3LCAjOF0KCWxkciByMiwgW3IyLCAjMjc2XQoJYWRkIHIxMCwg
cjIsIHIxLCBsc2wgIzMKCW12biByNiwgIzQKCWxkciByMTIsIFtyMTAsICM0XQoJY21wIHIxMiwg
cjYKCWJuZSAuTF9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzYxX3dyaXRlQmFy
cmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9uZQoJbGRyIHIyLCBbcjIsIHIxLCBsc2wgIzNd
Ci5MX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fd3JpdGVCYXJyaWVyT25PcGVy
YW5kX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNjFfbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmU6CglsZHJiIHIxLCBbcjIsICM3XQoJdHN0IHIxLCBy
MQoJYm5lIC5MX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fNjFfd3JpdGVCYXJy
aWVyT25PcGVyYW5kX193cml0ZUJhcnJpZXJEb25lCglwdXNoIHsgcjcgfQoJcHVzaCB7IHI5IH0K
CXN1YnMgc3AsIHNwLCAjOAoJbW92IHIwLCByNwoJbW92IHIxLCByMgoJYmx4IGxsaW50X3dyaXRl
X2JhcnJpZXJfc2xvdwoJYWRkcyBzcCwgIzgKCXBvcCB7IHI5IH0KCXBvcCB7IHI3IH0KLkxfb2Zm
bGluZWFzbV93cml0ZUJhcnJpZXJPbk9wZXJhbmRzX182MV93cml0ZUJhcnJpZXJPbk9wZXJhbmRf
X3dyaXRlQmFycmllckRvbmU6Ci5MX29mZmxpbmVhc21fNjFfd3JpdGVCYXJyaWVyT25PcGVyYW5k
c19fd3JpdGVCYXJyaWVyRG9uZToKCWxkciByMCwgW3I5LCAjNF0KCWxkciByMCwgW3I3LCByMCwg
bHNsICMzXQoJbGRyIHIxLCBbcjksICMyMF0KCWxkciByNiwgW3IwLCAjMF0KCWNtcCByNiwgcjEK
CWJuZSAuTF9vZmZsaW5lYXNtX3BEeW5hbWljCglsZHIgcjEsIFtyOSwgIzEyXQoJbW92dyByNiwg
IzAKCW1vdnQgcjYsICMxNjM4NAoJY21wIHIxLCByNgoJYmdlIC5MX29mZmxpbmVhc21fcHV0UHJv
cGVydHlfXzYyX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50CglhZGQgcjYsIHI3LCBy
MSwgbHNsICMzCglsZHIgcjIsIFtyNiwgIzRdCglsZHIgcjQsIFtyNywgcjEsIGxzbCAjM10KCWIg
Lkxfb2ZmbGluZWFzbV9wdXRQcm9wZXJ0eV9fNjJfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9u
ZQouTF9vZmZsaW5lYXNtX3B1dFByb3BlcnR5X182Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19j
b25zdGFudDoKCWxkciByNCwgW3I3LCAjOF0KCWxkciByNCwgW3I0LCAjMjc2XQoJYWRkIHI2LCBy
NCwgcjEsIGxzbCAjMwoJbGRyIHIyLCBbcjYsICM0XQoJbGRyIHI0LCBbcjQsIHIxLCBsc2wgIzNd
Ci5MX29mZmxpbmVhc21fcHV0UHJvcGVydHlfXzYyX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Rv
bmU6CglsZHIgcjEsIFtyOSwgIzI0XQoJY21wIHIxLCAjMTAwCglibHQgLkxfb2ZmbGluZWFzbV9w
dXRQcm9wZXJ0eV9fNjJfc3RvcmVQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRfX2lzSW5saW5lCgls
ZHIgcjAsIFtyMCwgIzhdCglyc2JzIHIxLCByMSwgIzAKCWIgLkxfb2ZmbGluZWFzbV9wdXRQcm9w
ZXJ0eV9fNjJfc3RvcmVQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXRfX3JlYWR5Ci5MX29mZmxpbmVh
c21fcHV0UHJvcGVydHlfXzYyX3N0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0X19pc0lubGlu
ZToKCW1vdncgcjYsICM2NDc2OAoJbW92dCByNiwgIzY1NTM1CglhZGQgcjAsIHI2Ci5MX29mZmxp
bmVhc21fcHV0UHJvcGVydHlfXzYyX3N0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0X19yZWFk
eToKCWFkZCByNiwgcjAsIHIxLCBsc2wgIzMKCXN0ciByMiwgW3I2LCAjNzg4XQoJYWRkIHI2LCBy
MCwgcjEsIGxzbCAjMwoJc3RyIHI0LCBbcjYsICM3ODRdCglhZGRzIHI5LCAjMjgKCWxkciByNiwg
W3I5LCAjMF0KCW1vdiBwYywgcjYKLkxfb2ZmbGluZWFzbV9wR2xvYmFsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrczoKCWNtcCByMCwgIzQKCWJuZSAuTF9vZmZsaW5lYXNtX3BDbG9zdXJlVmFyV2l0
aFZhckluamVjdGlvbkNoZWNrcwoJbGRyIHIxLCBbcjksICMxMl0KCW1vdncgcjYsICMwCgltb3Z0
IHI2LCAjMTYzODQKCWNtcCByMSwgcjYKCWJnZSAuTF9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9u
R2xvYmFsT2JqZWN0X182Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnX19jb25zdGFudAoJYWRk
IHI2LCByNywgcjEsIGxzbCAjMwoJbGRyIHIwLCBbcjYsICM0XQoJYiAuTF9vZmZsaW5lYXNtX3dy
aXRlQmFycmllck9uR2xvYmFsT2JqZWN0X182Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlVGFnX19k
b25lCi5MX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25HbG9iYWxPYmplY3RfXzYyX2xvYWRDb25z
dGFudE9yVmFyaWFibGVUYWdfX2NvbnN0YW50OgoJbGRyIHIwLCBbcjcsICM4XQoJbGRyIHIwLCBb
cjAsICMyNzZdCglhZGQgcjYsIHIwLCByMSwgbHNsICMzCglsZHIgcjAsIFtyNiwgIzRdCi5MX29m
ZmxpbmVhc21fd3JpdGVCYXJyaWVyT25HbG9iYWxPYmplY3RfXzYyX2xvYWRDb25zdGFudE9yVmFy
aWFibGVUYWdfX2RvbmU6Cgltdm4gcjYsICM0CgljbXAgcjAsIHI2CglibmUgLkxfb2ZmbGluZWFz
bV82Ml93cml0ZUJhcnJpZXJPbkdsb2JhbE9iamVjdF9fd3JpdGVCYXJyaWVyRG9uZQoJbGRyIHI0
LCBbcjcsICM4XQoJbGRyIHI0LCBbcjQsICMyMF0KCWxkcmIgcjEsIFtyNCwgIzddCgl0c3QgcjEs
IHIxCglibmUgLkxfb2ZmbGluZWFzbV82Ml93cml0ZUJhcnJpZXJPbkdsb2JhbE9iamVjdF9fd3Jp
dGVCYXJyaWVyRG9uZQoJcHVzaCB7IHI3IH0KCXB1c2ggeyByOSB9CglzdWJzIHNwLCBzcCwgIzgK
CW1vdiByMCwgcjcKCW1vdiByMSwgcjQKCWJseCBsbGludF93cml0ZV9iYXJyaWVyX3Nsb3cKCWFk
ZHMgc3AsICM4Cglwb3AgeyByOSB9Cglwb3AgeyByNyB9Ci5MX29mZmxpbmVhc21fNjJfd3JpdGVC
YXJyaWVyT25HbG9iYWxPYmplY3RfX3dyaXRlQmFycmllckRvbmU6CglsZHIgcjAsIFtyNywgIzhd
CglsZHIgcjAsIFtyMCwgIzIwXQoJbGRyIHIwLCBbcjAsICM1OTZdCglsZHJiIHI2LCBbcjAsICM0
XQoJY21wIHI2LCAjMgoJYmVxIC5MX29mZmxpbmVhc21fcER5bmFtaWMKCWxkciByMCwgW3I5LCAj
MTJdCgltb3Z3IHI2LCAjMAoJbW92dCByNiwgIzE2Mzg0CgljbXAgcjAsIHI2CgliZ2UgLkxfb2Zm
bGluZWFzbV9wdXRHbG9iYWxWYXJfXzYzX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50
CglhZGQgcjYsIHI3LCByMCwgbHNsICMzCglsZHIgcjEsIFtyNiwgIzRdCglsZHIgcjIsIFtyNywg
cjAsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFzbV9wdXRHbG9iYWxWYXJfXzYzX2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2RvbmUKLkxfb2ZmbGluZWFzbV9wdXRHbG9iYWxWYXJfXzYzX2xvYWRDb25z
dGFudE9yVmFyaWFibGVfX2NvbnN0YW50OgoJbGRyIHIyLCBbcjcsICM4XQoJbGRyIHIyLCBbcjIs
ICMyNzZdCglhZGQgcjYsIHIyLCByMCwgbHNsICMzCglsZHIgcjEsIFtyNiwgIzRdCglsZHIgcjIs
IFtyMiwgcjAsIGxzbCAjM10KLkxfb2ZmbGluZWFzbV9wdXRHbG9iYWxWYXJfXzYzX2xvYWRDb25z
dGFudE9yVmFyaWFibGVfX2RvbmU6CglsZHIgcjQsIFtyOSwgIzIwXQoJbGRyYiByMCwgW3I0LCAj
NF0KCWNtcCByMCwgIzIKCWJlcSAuTF9vZmZsaW5lYXNtX3B1dEdsb2JhbFZhcl9fNjNfbm90aWZ5
V3JpdGVfX2RvbmUKCWxkciByNiwgW3I0LCAjMzJdCgljbXAgcjIsIHI2CglibmUgLkxfb2ZmbGlu
ZWFzbV9wRHluYW1pYwoJbGRyIHI2LCBbcjQsICMzNl0KCWNtcCByMSwgcjYKCWJuZSAuTF9vZmZs
aW5lYXNtX3BEeW5hbWljCi5MX29mZmxpbmVhc21fcHV0R2xvYmFsVmFyX182M19ub3RpZnlXcml0
ZV9fZG9uZToKCWxkciByMCwgW3I5LCAjMjRdCglzdHIgcjEsIFtyMCwgIzRdCglzdHIgcjIsIFty
MCwgIzBdCglhZGRzIHI5LCAjMjgKCWxkciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxfb2Zm
bGluZWFzbV9wQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CgljbXAgcjAsICM1Cgli
bmUgLkxfb2ZmbGluZWFzbV9wRHluYW1pYwoJbGRyIHIxLCBbcjksICMxMl0KCW1vdncgcjYsICMw
Cgltb3Z0IHI2LCAjMTYzODQKCWNtcCByMSwgcjYKCWJnZSAuTF9vZmZsaW5lYXNtX3dyaXRlQmFy
cmllck9uT3BlcmFuZHNfXzYzX2xvYWRDb25zdGFudE9yVmFyaWFibGVUYWdfX2NvbnN0YW50Cglh
ZGQgcjYsIHI3LCByMSwgbHNsICMzCglsZHIgcjAsIFtyNiwgIzRdCgliIC5MX29mZmxpbmVhc21f
d3JpdGVCYXJyaWVyT25PcGVyYW5kc19fNjNfbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19fZG9u
ZQouTF9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9uT3BlcmFuZHNfXzYzX2xvYWRDb25zdGFudE9y
VmFyaWFibGVUYWdfX2NvbnN0YW50OgoJbGRyIHIwLCBbcjcsICM4XQoJbGRyIHIwLCBbcjAsICMy
NzZdCglhZGQgcjYsIHIwLCByMSwgbHNsICMzCglsZHIgcjAsIFtyNiwgIzRdCi5MX29mZmxpbmVh
c21fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fNjNfbG9hZENvbnN0YW50T3JWYXJpYWJsZVRhZ19f
ZG9uZToKCW12biByNiwgIzQKCWNtcCByMCwgcjYKCWJuZSAuTF9vZmZsaW5lYXNtXzYzX3dyaXRl
QmFycmllck9uT3BlcmFuZHNfX3dyaXRlQmFycmllckRvbmUKCWxkciByMSwgW3I5LCAjNF0KCW1v
dncgcjYsICMwCgltb3Z0IHI2LCAjMTYzODQKCWNtcCByMSwgcjYKCWJnZSAuTF9vZmZsaW5lYXNt
X3dyaXRlQmFycmllck9uT3BlcmFuZHNfX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWRfXzYzX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFn
Q3VzdG9tX19jb25zdGFudAoJYWRkIHI2LCByNywgcjEsIGxzbCAjMwoJbXZuIHIxMiwgIzQKCWxk
ciByMTAsIFtyNiwgIzRdCgljbXAgcjEwLCByMTIKCWJuZSAuTF9vZmZsaW5lYXNtX3dyaXRlQmFy
cmllck9uT3BlcmFuZHNfXzYzX3dyaXRlQmFycmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9u
ZQoJbGRyIHIyLCBbcjcsIHIxLCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fd3JpdGVCYXJyaWVy
T25PcGVyYW5kc19fd3JpdGVCYXJyaWVyT25PcGVyYW5kX19sb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZF9fNjNfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUK
Lkxfb2ZmbGluZWFzbV93cml0ZUJhcnJpZXJPbk9wZXJhbmRzX193cml0ZUJhcnJpZXJPbk9wZXJh
bmRfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX182M19sb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQ6CglsZHIgcjIsIFtyNywgIzhdCglsZHIgcjIs
IFtyMiwgIzI3Nl0KCWFkZCByMTIsIHIyLCByMSwgbHNsICMzCgltdm4gcjEwLCAjNAoJbGRyIHI2
LCBbcjEyLCAjNF0KCWNtcCByNiwgcjEwCglibmUgLkxfb2ZmbGluZWFzbV93cml0ZUJhcnJpZXJP
bk9wZXJhbmRzX182M193cml0ZUJhcnJpZXJPbk9wZXJhbmRfX3dyaXRlQmFycmllckRvbmUKCWxk
ciByMiwgW3IyLCByMSwgbHNsICMzXQouTF9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9uT3BlcmFu
ZHNfX3dyaXRlQmFycmllck9uT3BlcmFuZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRf
XzYzX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lOgoJbGRyYiBy
MSwgW3IyLCAjN10KCXRzdCByMSwgcjEKCWJuZSAuTF9vZmZsaW5lYXNtX3dyaXRlQmFycmllck9u
T3BlcmFuZHNfXzYzX3dyaXRlQmFycmllck9uT3BlcmFuZF9fd3JpdGVCYXJyaWVyRG9uZQoJcHVz
aCB7IHI3IH0KCXB1c2ggeyByOSB9CglzdWJzIHNwLCBzcCwgIzgKCW1vdiByMCwgcjcKCW1vdiBy
MSwgcjIKCWJseCBsbGludF93cml0ZV9iYXJyaWVyX3Nsb3cKCWFkZHMgc3AsICM4Cglwb3AgeyBy
OSB9Cglwb3AgeyByNyB9Ci5MX29mZmxpbmVhc21fd3JpdGVCYXJyaWVyT25PcGVyYW5kc19fNjNf
d3JpdGVCYXJyaWVyT25PcGVyYW5kX193cml0ZUJhcnJpZXJEb25lOgouTF9vZmZsaW5lYXNtXzYz
X3dyaXRlQmFycmllck9uT3BlcmFuZHNfX3dyaXRlQmFycmllckRvbmU6CglsZHIgcjAsIFtyNywg
IzhdCglsZHIgcjAsIFtyMCwgIzIwXQoJbGRyIHIwLCBbcjAsICM1OTZdCglsZHJiIHIxMCwgW3Iw
LCAjNF0KCWNtcCByMTAsICMyCgliZXEgLkxfb2ZmbGluZWFzbV9wRHluYW1pYwoJbGRyIHIyLCBb
cjksICM0XQoJYWRkIHIxMCwgcjcsIHIyLCBsc2wgIzMKCWxkciByMSwgW3IxMCwgIzRdCglsZHIg
cjAsIFtyNywgcjIsIGxzbCAjM10KCWxkciByMSwgW3I5LCAjMTJdCgltb3Z3IHIxMCwgIzAKCW1v
dnQgcjEwLCAjMTYzODQKCWNtcCByMSwgcjEwCgliZ2UgLkxfb2ZmbGluZWFzbV9wdXRDbG9zdXJl
VmFyX182NF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudAoJYWRkIHIxMCwgcjcsIHIx
LCBsc2wgIzMKCWxkciByMiwgW3IxMCwgIzRdCglsZHIgcjQsIFtyNywgcjEsIGxzbCAjM10KCWIg
Lkxfb2ZmbGluZWFzbV9wdXRDbG9zdXJlVmFyX182NF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19k
b25lCi5MX29mZmxpbmVhc21fcHV0Q2xvc3VyZVZhcl9fNjRfbG9hZENvbnN0YW50T3JWYXJpYWJs
ZV9fY29uc3RhbnQ6CglsZHIgcjQsIFtyNywgIzhdCglsZHIgcjQsIFtyNCwgIzI3Nl0KCWFkZCBy
MTAsIHI0LCByMSwgbHNsICMzCglsZHIgcjIsIFtyMTAsICM0XQoJbGRyIHI0LCBbcjQsIHIxLCBs
c2wgIzNdCi5MX29mZmxpbmVhc21fcHV0Q2xvc3VyZVZhcl9fNjRfbG9hZENvbnN0YW50T3JWYXJp
YWJsZV9fZG9uZToKCWxkciByMCwgW3IwLCAjMjRdCglsZHIgcjEsIFtyOSwgIzI0XQoJYWRkIHIx
MCwgcjAsIHIxLCBsc2wgIzMKCXN0ciByMiwgW3IxMCwgIzRdCglzdHIgcjQsIFtyMCwgcjEsIGxz
bCAjM10KCWFkZHMgcjksICMyOAoJbGRyIHIxMCwgW3I5LCAjMF0KCW1vdiBwYywgcjEwCi5MX29m
ZmxpbmVhc21fcER5bmFtaWM6Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggbGxpbnRfc2xv
d19wYXRoX3B1dF90b19zY29wZQoJbW92IHI5LCByMAoJYWRkcyByOSwgIzI4CglsZHIgcjEwLCBb
cjksICMwXQoJbW92IHBjLCByMTAKLkxsbGludF9vcF90b3VjaF9lbnRyeToKCW1vdiByMCwgcjcK
CW1vdiByMSwgcjkKCWJseCBzbG93X3BhdGhfdG91Y2hfZW50cnkKCW1vdiByOSwgcjAKCWFkZHMg
cjksICM0CglsZHIgcjEwLCBbcjksICMwXQoJbW92IHBjLCByMTAKLkxsbGludF9vcF9uZXdfYXJy
YXk6Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggbGxpbnRfc2xvd19wYXRoX25ld19hcnJh
eQoJbW92IHI5LCByMAoJYWRkcyByOSwgIzIwCglsZHIgcjEwLCBbcjksICMwXQoJbW92IHBjLCBy
MTAKLkxsbGludF9vcF9uZXdfYXJyYXlfd2l0aF9zaXplOgoJbW92IHIwLCByNwoJbW92IHIxLCBy
OQoJYmx4IGxsaW50X3Nsb3dfcGF0aF9uZXdfYXJyYXlfd2l0aF9zaXplCgltb3YgcjksIHIwCglh
ZGRzIHI5LCAjMTYKCWxkciByMTAsIFtyOSwgIzBdCgltb3YgcGMsIHIxMAouTGxsaW50X29wX25l
d19hcnJheV9idWZmZXI6Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggbGxpbnRfc2xvd19w
YXRoX25ld19hcnJheV9idWZmZXIKCW1vdiByOSwgcjAKCWFkZHMgcjksICMyMAoJbGRyIHIxMCwg
W3I5LCAjMF0KCW1vdiBwYywgcjEwCi5MbGxpbnRfb3BfbmV3X3JlZ2V4cDoKCW1vdiByMCwgcjcK
CW1vdiByMSwgcjkKCWJseCBsbGludF9zbG93X3BhdGhfbmV3X3JlZ2V4cAoJbW92IHI5LCByMAoJ
YWRkcyByOSwgIzEyCglsZHIgcjEwLCBbcjksICMwXQoJbW92IHBjLCByMTAKLkxsbGludF9vcF9s
ZXNzOgoJbW92IHIwLCByNwoJbW92IHIxLCByOQoJYmx4IHNsb3dfcGF0aF9sZXNzCgltb3Ygcjks
IHIwCglhZGRzIHI5LCAjMTYKCWxkciByMTAsIFtyOSwgIzBdCgltb3YgcGMsIHIxMAouTGxsaW50
X29wX2xlc3NlcToKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBzbG93X3BhdGhfbGVzc2Vx
Cgltb3YgcjksIHIwCglhZGRzIHI5LCAjMTYKCWxkciByMTAsIFtyOSwgIzBdCgltb3YgcGMsIHIx
MAouTGxsaW50X29wX2dyZWF0ZXI6Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggc2xvd19w
YXRoX2dyZWF0ZXIKCW1vdiByOSwgcjAKCWFkZHMgcjksICMxNgoJbGRyIHIxMCwgW3I5LCAjMF0K
CW1vdiBwYywgcjEwCi5MbGxpbnRfb3BfZ3JlYXRlcmVxOgoJbW92IHIwLCByNwoJbW92IHIxLCBy
OQoJYmx4IHNsb3dfcGF0aF9ncmVhdGVyZXEKCW1vdiByOSwgcjAKCWFkZHMgcjksICMxNgoJbGRy
IHIxMCwgW3I5LCAjMF0KCW1vdiBwYywgcjEwCi5MbGxpbnRfb3BfbW9kOgoJbW92IHIwLCByNwoJ
bW92IHIxLCByOQoJYmx4IHNsb3dfcGF0aF9tb2QKCW1vdiByOSwgcjAKCWFkZHMgcjksICMxNgoJ
bGRyIHIxMCwgW3I5LCAjMF0KCW1vdiBwYywgcjEwCi5MbGxpbnRfb3BfdHlwZW9mOgoJbW92IHIw
LCByNwoJbW92IHIxLCByOQoJYmx4IHNsb3dfcGF0aF90eXBlb2YKCW1vdiByOSwgcjAKCWFkZHMg
cjksICMxMgoJbGRyIHIxMCwgW3I5LCAjMF0KCW1vdiBwYywgcjEwCi5MbGxpbnRfb3BfaXNfb2Jq
ZWN0OgoJbW92IHIwLCByNwoJbW92IHIxLCByOQoJYmx4IHNsb3dfcGF0aF9pc19vYmplY3QKCW1v
diByOSwgcjAKCWFkZHMgcjksICMxMgoJbGRyIHIxMCwgW3I5LCAjMF0KCW1vdiBwYywgcjEwCi5M
bGxpbnRfb3BfaXNfZnVuY3Rpb246Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggc2xvd19w
YXRoX2lzX2Z1bmN0aW9uCgltb3YgcjksIHIwCglhZGRzIHI5LCAjMTIKCWxkciByMTAsIFtyOSwg
IzBdCgltb3YgcGMsIHIxMAouTGxsaW50X29wX2luOgoJbW92IHIwLCByNwoJbW92IHIxLCByOQoJ
Ymx4IHNsb3dfcGF0aF9pbgoJbW92IHI5LCByMAoJYWRkcyByOSwgIzE2CglsZHIgcjEwLCBbcjks
ICMwXQoJbW92IHBjLCByMTAKLkxsbGludF9vcF9kZWxfYnlfaWQ6Cgltb3YgcjAsIHI3Cgltb3Yg
cjEsIHI5CglibHggbGxpbnRfc2xvd19wYXRoX2RlbF9ieV9pZAoJbW92IHI5LCByMAoJYWRkcyBy
OSwgIzE2CglsZHIgcjEwLCBbcjksICMwXQoJbW92IHBjLCByMTAKLkxsbGludF9vcF9kZWxfYnlf
dmFsOgoJbW92IHIwLCByNwoJbW92IHIxLCByOQoJYmx4IGxsaW50X3Nsb3dfcGF0aF9kZWxfYnlf
dmFsCgltb3YgcjksIHIwCglhZGRzIHI5LCAjMTYKCWxkciByMTAsIFtyOSwgIzBdCgltb3YgcGMs
IHIxMAouTGxsaW50X29wX3B1dF9ieV9pbmRleDoKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJs
eCBsbGludF9zbG93X3BhdGhfcHV0X2J5X2luZGV4Cgltb3YgcjksIHIwCglhZGRzIHI5LCAjMTYK
CWxkciByMTAsIFtyOSwgIzBdCgltb3YgcGMsIHIxMAouTGxsaW50X29wX3B1dF9nZXR0ZXJfc2V0
dGVyOgoJbW92IHIwLCByNwoJbW92IHIxLCByOQoJYmx4IGxsaW50X3Nsb3dfcGF0aF9wdXRfZ2V0
dGVyX3NldHRlcgoJbW92IHI5LCByMAoJYWRkcyByOSwgIzIwCglsZHIgcjEwLCBbcjksICMwXQoJ
bW92IHBjLCByMTAKLkxsbGludF9vcF9qdHJ1ZToKCWxkciByMSwgW3I5LCAjNF0KCW1vdncgcjEw
LCAjMAoJbW92dCByMTAsICMxNjM4NAoJY21wIHIxLCByMTAKCWJnZSAuTF9vZmZsaW5lYXNtX2p1
bXBUcnVlT3JGYWxzZV9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzY0X2xvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudAoJYWRkIHIxMCwgcjcsIHIx
LCBsc2wgIzMKCW12biByNiwgIzEKCWxkciByMTIsIFtyMTAsICM0XQoJY21wIHIxMiwgcjYKCWJu
ZSAuTF9vZmZsaW5lYXNtX2p1bXBUcnVlT3JGYWxzZV9fc2xvdwoJbGRyIHIwLCBbcjcsIHIxLCBs
c2wgIzNdCgliIC5MX29mZmxpbmVhc21fanVtcFRydWVPckZhbHNlX19sb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZF9fNjRfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21f
X2RvbmUKLkxfb2ZmbGluZWFzbV9qdW1wVHJ1ZU9yRmFsc2VfX2xvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkX182NF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29u
c3RhbnQ6CglsZHIgcjAsIFtyNywgIzhdCglsZHIgcjAsIFtyMCwgIzI3Nl0KCWFkZCByNiwgcjAs
IHIxLCBsc2wgIzMKCW12biByMTIsICMxCglsZHIgcjEwLCBbcjYsICM0XQoJY21wIHIxMCwgcjEy
CglibmUgLkxfb2ZmbGluZWFzbV9qdW1wVHJ1ZU9yRmFsc2VfX3Nsb3cKCWxkciByMCwgW3IwLCBy
MSwgbHNsICMzXQouTF9vZmZsaW5lYXNtX2p1bXBUcnVlT3JGYWxzZV9fbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRfXzY0X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9t
X19kb25lOgoJdHN0IHIwLCByMAoJYm5lIC5MX29mZmxpbmVhc21fanVtcFRydWVPckZhbHNlX190
YXJnZXQKCWFkZHMgcjksICMxMgoJbGRyIHIxMiwgW3I5LCAjMF0KCW1vdiBwYywgcjEyCi5MX29m
ZmxpbmVhc21fanVtcFRydWVPckZhbHNlX190YXJnZXQ6CglsZHIgcjAsIFtyOSwgIzhdCglsc2xz
IHIwLCByMCwgIzIKCWFkZCByOSwgcjAKCWxkciByMTIsIFtyOSwgIzBdCgltb3YgcGMsIHIxMgou
TF9vZmZsaW5lYXNtX2p1bXBUcnVlT3JGYWxzZV9fc2xvdzoKCW1vdiByMCwgcjcKCW1vdiByMSwg
cjkKCWJseCBsbGludF9zbG93X3BhdGhfanRydWUKCW1vdiByOSwgcjAKCWxkciByMTIsIFtyOSwg
IzBdCgltb3YgcGMsIHIxMgouTGxsaW50X29wX2pmYWxzZToKCWxkciByMSwgW3I5LCAjNF0KCW1v
dncgcjEyLCAjMAoJbW92dCByMTIsICMxNjM4NAoJY21wIHIxLCByMTIKCWJnZSAuTF9vZmZsaW5l
YXNtX2p1bXBUcnVlT3JGYWxzZV9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzY1X2xv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudAoJYWRkIHIxMiwg
cjcsIHIxLCBsc2wgIzMKCW12biByMTAsICMxCglsZHIgcjYsIFtyMTIsICM0XQoJY21wIHI2LCBy
MTAKCWJuZSAuTF9vZmZsaW5lYXNtXzY1X2p1bXBUcnVlT3JGYWxzZV9fc2xvdwoJbGRyIHIwLCBb
cjcsIHIxLCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fanVtcFRydWVPckZhbHNlX19sb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNjVfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRU
YWdDdXN0b21fX2RvbmUKLkxfb2ZmbGluZWFzbV9qdW1wVHJ1ZU9yRmFsc2VfX2xvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkX182NV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1
c3RvbV9fY29uc3RhbnQ6CglsZHIgcjAsIFtyNywgIzhdCglsZHIgcjAsIFtyMCwgIzI3Nl0KCWFk
ZCByMTAsIHIwLCByMSwgbHNsICMzCgltdm4gcjYsICMxCglsZHIgcjEyLCBbcjEwLCAjNF0KCWNt
cCByMTIsIHI2CglibmUgLkxfb2ZmbGluZWFzbV82NV9qdW1wVHJ1ZU9yRmFsc2VfX3Nsb3cKCWxk
ciByMCwgW3IwLCByMSwgbHNsICMzXQouTF9vZmZsaW5lYXNtX2p1bXBUcnVlT3JGYWxzZV9fbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzY1X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkVGFnQ3VzdG9tX19kb25lOgoJdHN0IHIwLCByMAoJYmVxIC5MX29mZmxpbmVhc21fNjVfanVt
cFRydWVPckZhbHNlX190YXJnZXQKCWFkZHMgcjksICMxMgoJbGRyIHI2LCBbcjksICMwXQoJbW92
IHBjLCByNgouTF9vZmZsaW5lYXNtXzY1X2p1bXBUcnVlT3JGYWxzZV9fdGFyZ2V0OgoJbGRyIHIw
LCBbcjksICM4XQoJbHNscyByMCwgcjAsICMyCglhZGQgcjksIHIwCglsZHIgcjYsIFtyOSwgIzBd
Cgltb3YgcGMsIHI2Ci5MX29mZmxpbmVhc21fNjVfanVtcFRydWVPckZhbHNlX19zbG93OgoJbW92
IHIwLCByNwoJbW92IHIxLCByOQoJYmx4IGxsaW50X3Nsb3dfcGF0aF9qZmFsc2UKCW1vdiByOSwg
cjAKCWxkciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxsbGludF9vcF9qbGVzczoKCWxkciBy
MiwgW3I5LCAjNF0KCWxkciByNCwgW3I5LCAjOF0KCW1vdncgcjYsICMwCgltb3Z0IHI2LCAjMTYz
ODQKCWNtcCByMiwgcjYKCWJnZSAuTF9vZmZsaW5lYXNtX2NvbXBhcmVfXzY1X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2NvbnN0YW50CglhZGQgcjYsIHI3LCByMiwgbHNsICMzCglsZHIgcjAsIFty
NiwgIzRdCglsZHIgcjEsIFtyNywgcjIsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFzbV9jb21wYXJl
X182NV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lCi5MX29mZmxpbmVhc21fY29tcGFyZV9f
NjVfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ6CglsZHIgcjEsIFtyNywgIzhdCgls
ZHIgcjEsIFtyMSwgIzI3Nl0KCWFkZCByNiwgcjEsIHIyLCBsc2wgIzMKCWxkciByMCwgW3I2LCAj
NF0KCWxkciByMSwgW3IxLCByMiwgbHNsICMzXQouTF9vZmZsaW5lYXNtX2NvbXBhcmVfXzY1X2xv
YWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU6Cgltb3Z3IHI2LCAjMAoJbW92dCByNiwgIzE2Mzg0
CgljbXAgcjQsIHI2CgliZ2UgLkxfb2ZmbGluZWFzbV9jb21wYXJlX182NV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZ19fY29uc3RhbnQKCWFkZCByNiwgcjcsIHI0LCBsc2wgIzMKCWxkciByMiwg
W3I2LCAjNF0KCWxkciByNCwgW3I3LCByNCwgbHNsICMzXQoJYiAuTF9vZmZsaW5lYXNtX2NvbXBh
cmVfXzY1X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lCi5MX29mZmxpbmVhc21fY29t
cGFyZV9fNjVfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50OgoJbGRyIHIyLCBb
cjcsICM4XQoJbGRyIHIyLCBbcjIsICMyNzZdCglsc2xzIHI0LCByNCwgIzMKCWFkZCByMiwgcjQK
CWxkciByNCwgW3IyLCAjMF0KCWxkciByMiwgW3IyLCAjNF0KLkxfb2ZmbGluZWFzbV9jb21wYXJl
X182NV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZToKCW12biByNiwgIzAKCWNtcCBy
MCwgcjYKCWJuZSAuTF9vZmZsaW5lYXNtX2NvbXBhcmVfX29wMU5vdEludAoJbXZuIHI2LCAjMAoJ
Y21wIHIyLCByNgoJYm5lIC5MX29mZmxpbmVhc21fY29tcGFyZV9fb3AyTm90SW50CgljbXAgcjEs
IHI0CglibHQgLkxfb2ZmbGluZWFzbV9jb21wYXJlX19qdW1wVGFyZ2V0CglhZGRzIHI5LCAjMTYK
CWxkciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxfb2ZmbGluZWFzbV9jb21wYXJlX19vcDFO
b3RJbnQ6Cgltdm4gcjYsICM2CgljbXAgcjAsIHI2CgliaGkgLkxfb2ZmbGluZWFzbV9jb21wYXJl
X19zbG93Cgltdm4gcjYsICM2CgljbXAgcjIsIHI2CglibG8gLkxfb2ZmbGluZWFzbV9jb21wYXJl
X19vcDFOb3RJbnRPcDJEb3VibGUKCW12biByNiwgIzAKCWNtcCByMiwgcjYKCWJuZSAuTF9vZmZs
aW5lYXNtX2NvbXBhcmVfX3Nsb3cKCXZtb3YgczIsIHI0Cgl2Y3Z0LmY2NC5zMzIgZDEsIHMyCgli
IC5MX29mZmxpbmVhc21fY29tcGFyZV9fb3AxTm90SW50UmVhZHkKLkxfb2ZmbGluZWFzbV9jb21w
YXJlX19vcDFOb3RJbnRPcDJEb3VibGU6Cgl2bW92IGQxLCByNCwgcjIKLkxfb2ZmbGluZWFzbV9j
b21wYXJlX19vcDFOb3RJbnRSZWFkeToKCXZtb3YgZDAsIHIxLCByMAoJdmNtcGUuZjY0IGQwLCBk
MQoJdm1ycyBhcHNyX256Y3YsIGZwc2NyCglibWkgLkxfb2ZmbGluZWFzbV9jb21wYXJlX19qdW1w
VGFyZ2V0CglhZGRzIHI5LCAjMTYKCWxkciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxfb2Zm
bGluZWFzbV9jb21wYXJlX19vcDJOb3RJbnQ6Cgl2bW92IHMwLCByMQoJdmN2dC5mNjQuczMyIGQw
LCBzMAoJbXZuIHI2LCAjNgoJY21wIHIyLCByNgoJYmhpIC5MX29mZmxpbmVhc21fY29tcGFyZV9f
c2xvdwoJdm1vdiBkMSwgcjQsIHIyCgl2Y21wZS5mNjQgZDAsIGQxCgl2bXJzIGFwc3Jfbnpjdiwg
ZnBzY3IKCWJtaSAuTF9vZmZsaW5lYXNtX2NvbXBhcmVfX2p1bXBUYXJnZXQKCWFkZHMgcjksICMx
NgoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTF9vZmZsaW5lYXNtX2NvbXBhcmVfX2p1
bXBUYXJnZXQ6CglsZHIgcjAsIFtyOSwgIzEyXQoJbHNscyByMCwgcjAsICMyCglhZGQgcjksIHIw
CglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MX29mZmxpbmVhc21fY29tcGFyZV9fc2xv
dzoKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBsbGludF9zbG93X3BhdGhfamxlc3MKCW1v
diByOSwgcjAKCWxkciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxsbGludF9vcF9qbmxlc3M6
CglsZHIgcjIsIFtyOSwgIzRdCglsZHIgcjQsIFtyOSwgIzhdCgltb3Z3IHI2LCAjMAoJbW92dCBy
NiwgIzE2Mzg0CgljbXAgcjIsIHI2CgliZ2UgLkxfb2ZmbGluZWFzbV9jb21wYXJlX182Nl9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudAoJYWRkIHI2LCByNywgcjIsIGxzbCAjMwoJbGRy
IHIwLCBbcjYsICM0XQoJbGRyIHIxLCBbcjcsIHIyLCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21f
Y29tcGFyZV9fNjZfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZQouTF9vZmZsaW5lYXNtX2Nv
bXBhcmVfXzY2X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50OgoJbGRyIHIxLCBbcjcs
ICM4XQoJbGRyIHIxLCBbcjEsICMyNzZdCglhZGQgcjYsIHIxLCByMiwgbHNsICMzCglsZHIgcjAs
IFtyNiwgIzRdCglsZHIgcjEsIFtyMSwgcjIsIGxzbCAjM10KLkxfb2ZmbGluZWFzbV9jb21wYXJl
X182Nl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOgoJbW92dyByNiwgIzAKCW1vdnQgcjYs
ICMxNjM4NAoJY21wIHI0LCByNgoJYmdlIC5MX29mZmxpbmVhc21fY29tcGFyZV9fNjZfbG9hZENv
bnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50CglhZGQgcjYsIHI3LCByNCwgbHNsICMzCgls
ZHIgcjIsIFtyNiwgIzRdCglsZHIgcjQsIFtyNywgcjQsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFz
bV9jb21wYXJlX182Nl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZQouTF9vZmZsaW5l
YXNtX2NvbXBhcmVfXzY2X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudDoKCWxk
ciByMiwgW3I3LCAjOF0KCWxkciByMiwgW3IyLCAjMjc2XQoJbHNscyByNCwgcjQsICMzCglhZGQg
cjIsIHI0CglsZHIgcjQsIFtyMiwgIzBdCglsZHIgcjIsIFtyMiwgIzRdCi5MX29mZmxpbmVhc21f
Y29tcGFyZV9fNjZfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmU6Cgltdm4gcjYsICMw
CgljbXAgcjAsIHI2CglibmUgLkxfb2ZmbGluZWFzbV82Nl9jb21wYXJlX19vcDFOb3RJbnQKCW12
biByNiwgIzAKCWNtcCByMiwgcjYKCWJuZSAuTF9vZmZsaW5lYXNtXzY2X2NvbXBhcmVfX29wMk5v
dEludAoJY21wIHIxLCByNAoJYmdlIC5MX29mZmxpbmVhc21fNjZfY29tcGFyZV9fanVtcFRhcmdl
dAoJYWRkcyByOSwgIzE2CglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MX29mZmxpbmVh
c21fNjZfY29tcGFyZV9fb3AxTm90SW50OgoJbXZuIHI2LCAjNgoJY21wIHIwLCByNgoJYmhpIC5M
X29mZmxpbmVhc21fNjZfY29tcGFyZV9fc2xvdwoJbXZuIHI2LCAjNgoJY21wIHIyLCByNgoJYmxv
IC5MX29mZmxpbmVhc21fNjZfY29tcGFyZV9fb3AxTm90SW50T3AyRG91YmxlCgltdm4gcjYsICMw
CgljbXAgcjIsIHI2CglibmUgLkxfb2ZmbGluZWFzbV82Nl9jb21wYXJlX19zbG93Cgl2bW92IHMy
LCByNAoJdmN2dC5mNjQuczMyIGQxLCBzMgoJYiAuTF9vZmZsaW5lYXNtXzY2X2NvbXBhcmVfX29w
MU5vdEludFJlYWR5Ci5MX29mZmxpbmVhc21fNjZfY29tcGFyZV9fb3AxTm90SW50T3AyRG91Ymxl
OgoJdm1vdiBkMSwgcjQsIHIyCi5MX29mZmxpbmVhc21fNjZfY29tcGFyZV9fb3AxTm90SW50UmVh
ZHk6Cgl2bW92IGQwLCByMSwgcjAKCXZjbXBlLmY2NCBkMCwgZDEKCXZtcnMgYXBzcl9uemN2LCBm
cHNjcgoJYnBsIC5MX29mZmxpbmVhc21fNjZfY29tcGFyZV9fanVtcFRhcmdldAoJYWRkcyByOSwg
IzE2CglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MX29mZmxpbmVhc21fNjZfY29tcGFy
ZV9fb3AyTm90SW50OgoJdm1vdiBzMCwgcjEKCXZjdnQuZjY0LnMzMiBkMCwgczAKCW12biByNiwg
IzYKCWNtcCByMiwgcjYKCWJoaSAuTF9vZmZsaW5lYXNtXzY2X2NvbXBhcmVfX3Nsb3cKCXZtb3Yg
ZDEsIHI0LCByMgoJdmNtcGUuZjY0IGQwLCBkMQoJdm1ycyBhcHNyX256Y3YsIGZwc2NyCglicGwg
Lkxfb2ZmbGluZWFzbV82Nl9jb21wYXJlX19qdW1wVGFyZ2V0CglhZGRzIHI5LCAjMTYKCWxkciBy
NiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxfb2ZmbGluZWFzbV82Nl9jb21wYXJlX19qdW1wVGFy
Z2V0OgoJbGRyIHIwLCBbcjksICMxMl0KCWxzbHMgcjAsIHIwLCAjMgoJYWRkIHI5LCByMAoJbGRy
IHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTF9vZmZsaW5lYXNtXzY2X2NvbXBhcmVfX3Nsb3c6
Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggbGxpbnRfc2xvd19wYXRoX2pubGVzcwoJbW92
IHI5LCByMAoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTGxsaW50X29wX2pncmVhdGVy
OgoJbGRyIHIyLCBbcjksICM0XQoJbGRyIHI0LCBbcjksICM4XQoJbW92dyByNiwgIzAKCW1vdnQg
cjYsICMxNjM4NAoJY21wIHIyLCByNgoJYmdlIC5MX29mZmxpbmVhc21fY29tcGFyZV9fNjdfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQKCWFkZCByNiwgcjcsIHIyLCBsc2wgIzMKCWxk
ciByMCwgW3I2LCAjNF0KCWxkciByMSwgW3I3LCByMiwgbHNsICMzXQoJYiAuTF9vZmZsaW5lYXNt
X2NvbXBhcmVfXzY3X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUKLkxfb2ZmbGluZWFzbV9j
b21wYXJlX182N19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDoKCWxkciByMSwgW3I3
LCAjOF0KCWxkciByMSwgW3IxLCAjMjc2XQoJYWRkIHI2LCByMSwgcjIsIGxzbCAjMwoJbGRyIHIw
LCBbcjYsICM0XQoJbGRyIHIxLCBbcjEsIHIyLCBsc2wgIzNdCi5MX29mZmxpbmVhc21fY29tcGFy
ZV9fNjdfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZToKCW1vdncgcjYsICMwCgltb3Z0IHI2
LCAjMTYzODQKCWNtcCByNCwgcjYKCWJnZSAuTF9vZmZsaW5lYXNtX2NvbXBhcmVfXzY3X2xvYWRD
b25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudAoJYWRkIHI2LCByNywgcjQsIGxzbCAjMwoJ
bGRyIHIyLCBbcjYsICM0XQoJbGRyIHI0LCBbcjcsIHI0LCBsc2wgIzNdCgliIC5MX29mZmxpbmVh
c21fY29tcGFyZV9fNjdfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUKLkxfb2ZmbGlu
ZWFzbV9jb21wYXJlX182N19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQ6Cgls
ZHIgcjIsIFtyNywgIzhdCglsZHIgcjIsIFtyMiwgIzI3Nl0KCWxzbHMgcjQsIHI0LCAjMwoJYWRk
IHIyLCByNAoJbGRyIHI0LCBbcjIsICMwXQoJbGRyIHIyLCBbcjIsICM0XQouTF9vZmZsaW5lYXNt
X2NvbXBhcmVfXzY3X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lOgoJbXZuIHI2LCAj
MAoJY21wIHIwLCByNgoJYm5lIC5MX29mZmxpbmVhc21fNjdfY29tcGFyZV9fb3AxTm90SW50Cglt
dm4gcjYsICMwCgljbXAgcjIsIHI2CglibmUgLkxfb2ZmbGluZWFzbV82N19jb21wYXJlX19vcDJO
b3RJbnQKCWNtcCByMSwgcjQKCWJndCAuTF9vZmZsaW5lYXNtXzY3X2NvbXBhcmVfX2p1bXBUYXJn
ZXQKCWFkZHMgcjksICMxNgoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTF9vZmZsaW5l
YXNtXzY3X2NvbXBhcmVfX29wMU5vdEludDoKCW12biByNiwgIzYKCWNtcCByMCwgcjYKCWJoaSAu
TF9vZmZsaW5lYXNtXzY3X2NvbXBhcmVfX3Nsb3cKCW12biByNiwgIzYKCWNtcCByMiwgcjYKCWJs
byAuTF9vZmZsaW5lYXNtXzY3X2NvbXBhcmVfX29wMU5vdEludE9wMkRvdWJsZQoJbXZuIHI2LCAj
MAoJY21wIHIyLCByNgoJYm5lIC5MX29mZmxpbmVhc21fNjdfY29tcGFyZV9fc2xvdwoJdm1vdiBz
MiwgcjQKCXZjdnQuZjY0LnMzMiBkMSwgczIKCWIgLkxfb2ZmbGluZWFzbV82N19jb21wYXJlX19v
cDFOb3RJbnRSZWFkeQouTF9vZmZsaW5lYXNtXzY3X2NvbXBhcmVfX29wMU5vdEludE9wMkRvdWJs
ZToKCXZtb3YgZDEsIHI0LCByMgouTF9vZmZsaW5lYXNtXzY3X2NvbXBhcmVfX29wMU5vdEludFJl
YWR5OgoJdm1vdiBkMCwgcjEsIHIwCgl2Y21wZS5mNjQgZDAsIGQxCgl2bXJzIGFwc3Jfbnpjdiwg
ZnBzY3IKCWJndCAuTF9vZmZsaW5lYXNtXzY3X2NvbXBhcmVfX2p1bXBUYXJnZXQKCWFkZHMgcjks
ICMxNgoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTF9vZmZsaW5lYXNtXzY3X2NvbXBh
cmVfX29wMk5vdEludDoKCXZtb3YgczAsIHIxCgl2Y3Z0LmY2NC5zMzIgZDAsIHMwCgltdm4gcjYs
ICM2CgljbXAgcjIsIHI2CgliaGkgLkxfb2ZmbGluZWFzbV82N19jb21wYXJlX19zbG93Cgl2bW92
IGQxLCByNCwgcjIKCXZjbXBlLmY2NCBkMCwgZDEKCXZtcnMgYXBzcl9uemN2LCBmcHNjcgoJYmd0
IC5MX29mZmxpbmVhc21fNjdfY29tcGFyZV9fanVtcFRhcmdldAoJYWRkcyByOSwgIzE2CglsZHIg
cjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MX29mZmxpbmVhc21fNjdfY29tcGFyZV9fanVtcFRh
cmdldDoKCWxkciByMCwgW3I5LCAjMTJdCglsc2xzIHIwLCByMCwgIzIKCWFkZCByOSwgcjAKCWxk
ciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxfb2ZmbGluZWFzbV82N19jb21wYXJlX19zbG93
OgoJbW92IHIwLCByNwoJbW92IHIxLCByOQoJYmx4IGxsaW50X3Nsb3dfcGF0aF9qZ3JlYXRlcgoJ
bW92IHI5LCByMAoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTGxsaW50X29wX2puZ3Jl
YXRlcjoKCWxkciByMiwgW3I5LCAjNF0KCWxkciByNCwgW3I5LCAjOF0KCW1vdncgcjYsICMwCglt
b3Z0IHI2LCAjMTYzODQKCWNtcCByMiwgcjYKCWJnZSAuTF9vZmZsaW5lYXNtX2NvbXBhcmVfXzY4
X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50CglhZGQgcjYsIHI3LCByMiwgbHNsICMz
CglsZHIgcjAsIFtyNiwgIzRdCglsZHIgcjEsIFtyNywgcjIsIGxzbCAjM10KCWIgLkxfb2ZmbGlu
ZWFzbV9jb21wYXJlX182OF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lCi5MX29mZmxpbmVh
c21fY29tcGFyZV9fNjhfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ6CglsZHIgcjEs
IFtyNywgIzhdCglsZHIgcjEsIFtyMSwgIzI3Nl0KCWFkZCByNiwgcjEsIHIyLCBsc2wgIzMKCWxk
ciByMCwgW3I2LCAjNF0KCWxkciByMSwgW3IxLCByMiwgbHNsICMzXQouTF9vZmZsaW5lYXNtX2Nv
bXBhcmVfXzY4X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU6Cgltb3Z3IHI2LCAjMAoJbW92
dCByNiwgIzE2Mzg0CgljbXAgcjQsIHI2CgliZ2UgLkxfb2ZmbGluZWFzbV9jb21wYXJlX182OF9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQKCWFkZCByNiwgcjcsIHI0LCBsc2wg
IzMKCWxkciByMiwgW3I2LCAjNF0KCWxkciByNCwgW3I3LCByNCwgbHNsICMzXQoJYiAuTF9vZmZs
aW5lYXNtX2NvbXBhcmVfXzY4X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lCi5MX29m
ZmxpbmVhc21fY29tcGFyZV9fNjhfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50
OgoJbGRyIHIyLCBbcjcsICM4XQoJbGRyIHIyLCBbcjIsICMyNzZdCglsc2xzIHI0LCByNCwgIzMK
CWFkZCByMiwgcjQKCWxkciByNCwgW3IyLCAjMF0KCWxkciByMiwgW3IyLCAjNF0KLkxfb2ZmbGlu
ZWFzbV9jb21wYXJlX182OF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZToKCW12biBy
NiwgIzAKCWNtcCByMCwgcjYKCWJuZSAuTF9vZmZsaW5lYXNtXzY4X2NvbXBhcmVfX29wMU5vdElu
dAoJbXZuIHI2LCAjMAoJY21wIHIyLCByNgoJYm5lIC5MX29mZmxpbmVhc21fNjhfY29tcGFyZV9f
b3AyTm90SW50CgljbXAgcjEsIHI0CglibGUgLkxfb2ZmbGluZWFzbV82OF9jb21wYXJlX19qdW1w
VGFyZ2V0CglhZGRzIHI5LCAjMTYKCWxkciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxfb2Zm
bGluZWFzbV82OF9jb21wYXJlX19vcDFOb3RJbnQ6Cgltdm4gcjYsICM2CgljbXAgcjAsIHI2Cgli
aGkgLkxfb2ZmbGluZWFzbV82OF9jb21wYXJlX19zbG93Cgltdm4gcjYsICM2CgljbXAgcjIsIHI2
CglibG8gLkxfb2ZmbGluZWFzbV82OF9jb21wYXJlX19vcDFOb3RJbnRPcDJEb3VibGUKCW12biBy
NiwgIzAKCWNtcCByMiwgcjYKCWJuZSAuTF9vZmZsaW5lYXNtXzY4X2NvbXBhcmVfX3Nsb3cKCXZt
b3YgczIsIHI0Cgl2Y3Z0LmY2NC5zMzIgZDEsIHMyCgliIC5MX29mZmxpbmVhc21fNjhfY29tcGFy
ZV9fb3AxTm90SW50UmVhZHkKLkxfb2ZmbGluZWFzbV82OF9jb21wYXJlX19vcDFOb3RJbnRPcDJE
b3VibGU6Cgl2bW92IGQxLCByNCwgcjIKLkxfb2ZmbGluZWFzbV82OF9jb21wYXJlX19vcDFOb3RJ
bnRSZWFkeToKCXZtb3YgZDAsIHIxLCByMAoJdmNtcGUuZjY0IGQwLCBkMQoJdm1ycyBhcHNyX256
Y3YsIGZwc2NyCglibGUgLkxfb2ZmbGluZWFzbV82OF9jb21wYXJlX19qdW1wVGFyZ2V0CglhZGRz
IHI5LCAjMTYKCWxkciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxfb2ZmbGluZWFzbV82OF9j
b21wYXJlX19vcDJOb3RJbnQ6Cgl2bW92IHMwLCByMQoJdmN2dC5mNjQuczMyIGQwLCBzMAoJbXZu
IHI2LCAjNgoJY21wIHIyLCByNgoJYmhpIC5MX29mZmxpbmVhc21fNjhfY29tcGFyZV9fc2xvdwoJ
dm1vdiBkMSwgcjQsIHIyCgl2Y21wZS5mNjQgZDAsIGQxCgl2bXJzIGFwc3JfbnpjdiwgZnBzY3IK
CWJsZSAuTF9vZmZsaW5lYXNtXzY4X2NvbXBhcmVfX2p1bXBUYXJnZXQKCWFkZHMgcjksICMxNgoJ
bGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTF9vZmZsaW5lYXNtXzY4X2NvbXBhcmVfX2p1
bXBUYXJnZXQ6CglsZHIgcjAsIFtyOSwgIzEyXQoJbHNscyByMCwgcjAsICMyCglhZGQgcjksIHIw
CglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MX29mZmxpbmVhc21fNjhfY29tcGFyZV9f
c2xvdzoKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBsbGludF9zbG93X3BhdGhfam5ncmVh
dGVyCgltb3YgcjksIHIwCglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MbGxpbnRfb3Bf
amxlc3NlcToKCWxkciByMiwgW3I5LCAjNF0KCWxkciByNCwgW3I5LCAjOF0KCW1vdncgcjYsICMw
Cgltb3Z0IHI2LCAjMTYzODQKCWNtcCByMiwgcjYKCWJnZSAuTF9vZmZsaW5lYXNtX2NvbXBhcmVf
XzY5X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50CglhZGQgcjYsIHI3LCByMiwgbHNs
ICMzCglsZHIgcjAsIFtyNiwgIzRdCglsZHIgcjEsIFtyNywgcjIsIGxzbCAjM10KCWIgLkxfb2Zm
bGluZWFzbV9jb21wYXJlX182OV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lCi5MX29mZmxp
bmVhc21fY29tcGFyZV9fNjlfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQ6CglsZHIg
cjEsIFtyNywgIzhdCglsZHIgcjEsIFtyMSwgIzI3Nl0KCWFkZCByNiwgcjEsIHIyLCBsc2wgIzMK
CWxkciByMCwgW3I2LCAjNF0KCWxkciByMSwgW3IxLCByMiwgbHNsICMzXQouTF9vZmZsaW5lYXNt
X2NvbXBhcmVfXzY5X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU6Cgltb3Z3IHI2LCAjMAoJ
bW92dCByNiwgIzE2Mzg0CgljbXAgcjQsIHI2CgliZ2UgLkxfb2ZmbGluZWFzbV9jb21wYXJlX182
OV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQKCWFkZCByNiwgcjcsIHI0LCBs
c2wgIzMKCWxkciByMiwgW3I2LCAjNF0KCWxkciByNCwgW3I3LCByNCwgbHNsICMzXQoJYiAuTF9v
ZmZsaW5lYXNtX2NvbXBhcmVfXzY5X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lCi5M
X29mZmxpbmVhc21fY29tcGFyZV9fNjlfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0
YW50OgoJbGRyIHIyLCBbcjcsICM4XQoJbGRyIHIyLCBbcjIsICMyNzZdCglsc2xzIHI0LCByNCwg
IzMKCWFkZCByMiwgcjQKCWxkciByNCwgW3IyLCAjMF0KCWxkciByMiwgW3IyLCAjNF0KLkxfb2Zm
bGluZWFzbV9jb21wYXJlX182OV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZToKCW12
biByNiwgIzAKCWNtcCByMCwgcjYKCWJuZSAuTF9vZmZsaW5lYXNtXzY5X2NvbXBhcmVfX29wMU5v
dEludAoJbXZuIHI2LCAjMAoJY21wIHIyLCByNgoJYm5lIC5MX29mZmxpbmVhc21fNjlfY29tcGFy
ZV9fb3AyTm90SW50CgljbXAgcjEsIHI0CglibGUgLkxfb2ZmbGluZWFzbV82OV9jb21wYXJlX19q
dW1wVGFyZ2V0CglhZGRzIHI5LCAjMTYKCWxkciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxf
b2ZmbGluZWFzbV82OV9jb21wYXJlX19vcDFOb3RJbnQ6Cgltdm4gcjYsICM2CgljbXAgcjAsIHI2
CgliaGkgLkxfb2ZmbGluZWFzbV82OV9jb21wYXJlX19zbG93Cgltdm4gcjYsICM2CgljbXAgcjIs
IHI2CglibG8gLkxfb2ZmbGluZWFzbV82OV9jb21wYXJlX19vcDFOb3RJbnRPcDJEb3VibGUKCW12
biByNiwgIzAKCWNtcCByMiwgcjYKCWJuZSAuTF9vZmZsaW5lYXNtXzY5X2NvbXBhcmVfX3Nsb3cK
CXZtb3YgczIsIHI0Cgl2Y3Z0LmY2NC5zMzIgZDEsIHMyCgliIC5MX29mZmxpbmVhc21fNjlfY29t
cGFyZV9fb3AxTm90SW50UmVhZHkKLkxfb2ZmbGluZWFzbV82OV9jb21wYXJlX19vcDFOb3RJbnRP
cDJEb3VibGU6Cgl2bW92IGQxLCByNCwgcjIKLkxfb2ZmbGluZWFzbV82OV9jb21wYXJlX19vcDFO
b3RJbnRSZWFkeToKCXZtb3YgZDAsIHIxLCByMAoJdmNtcGUuZjY0IGQwLCBkMQoJdm1ycyBhcHNy
X256Y3YsIGZwc2NyCglibHMgLkxfb2ZmbGluZWFzbV82OV9jb21wYXJlX19qdW1wVGFyZ2V0Cglh
ZGRzIHI5LCAjMTYKCWxkciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxfb2ZmbGluZWFzbV82
OV9jb21wYXJlX19vcDJOb3RJbnQ6Cgl2bW92IHMwLCByMQoJdmN2dC5mNjQuczMyIGQwLCBzMAoJ
bXZuIHI2LCAjNgoJY21wIHIyLCByNgoJYmhpIC5MX29mZmxpbmVhc21fNjlfY29tcGFyZV9fc2xv
dwoJdm1vdiBkMSwgcjQsIHIyCgl2Y21wZS5mNjQgZDAsIGQxCgl2bXJzIGFwc3JfbnpjdiwgZnBz
Y3IKCWJscyAuTF9vZmZsaW5lYXNtXzY5X2NvbXBhcmVfX2p1bXBUYXJnZXQKCWFkZHMgcjksICMx
NgoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTF9vZmZsaW5lYXNtXzY5X2NvbXBhcmVf
X2p1bXBUYXJnZXQ6CglsZHIgcjAsIFtyOSwgIzEyXQoJbHNscyByMCwgcjAsICMyCglhZGQgcjks
IHIwCglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MX29mZmxpbmVhc21fNjlfY29tcGFy
ZV9fc2xvdzoKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBsbGludF9zbG93X3BhdGhfamxl
c3NlcQoJbW92IHI5LCByMAoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTGxsaW50X29w
X2pubGVzc2VxOgoJbGRyIHIyLCBbcjksICM0XQoJbGRyIHI0LCBbcjksICM4XQoJbW92dyByNiwg
IzAKCW1vdnQgcjYsICMxNjM4NAoJY21wIHIyLCByNgoJYmdlIC5MX29mZmxpbmVhc21fY29tcGFy
ZV9fNzBfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQKCWFkZCByNiwgcjcsIHIyLCBs
c2wgIzMKCWxkciByMCwgW3I2LCAjNF0KCWxkciByMSwgW3I3LCByMiwgbHNsICMzXQoJYiAuTF9v
ZmZsaW5lYXNtX2NvbXBhcmVfXzcwX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUKLkxfb2Zm
bGluZWFzbV9jb21wYXJlX183MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudDoKCWxk
ciByMSwgW3I3LCAjOF0KCWxkciByMSwgW3IxLCAjMjc2XQoJYWRkIHI2LCByMSwgcjIsIGxzbCAj
MwoJbGRyIHIwLCBbcjYsICM0XQoJbGRyIHIxLCBbcjEsIHIyLCBsc2wgIzNdCi5MX29mZmxpbmVh
c21fY29tcGFyZV9fNzBfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZToKCW1vdncgcjYsICMw
Cgltb3Z0IHI2LCAjMTYzODQKCWNtcCByNCwgcjYKCWJnZSAuTF9vZmZsaW5lYXNtX2NvbXBhcmVf
XzcwX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudAoJYWRkIHI2LCByNywgcjQs
IGxzbCAjMwoJbGRyIHIyLCBbcjYsICM0XQoJbGRyIHI0LCBbcjcsIHI0LCBsc2wgIzNdCgliIC5M
X29mZmxpbmVhc21fY29tcGFyZV9fNzBfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUK
Lkxfb2ZmbGluZWFzbV9jb21wYXJlX183MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29u
c3RhbnQ6CglsZHIgcjIsIFtyNywgIzhdCglsZHIgcjIsIFtyMiwgIzI3Nl0KCWxzbHMgcjQsIHI0
LCAjMwoJYWRkIHIyLCByNAoJbGRyIHI0LCBbcjIsICMwXQoJbGRyIHIyLCBbcjIsICM0XQouTF9v
ZmZsaW5lYXNtX2NvbXBhcmVfXzcwX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lOgoJ
bXZuIHI2LCAjMAoJY21wIHIwLCByNgoJYm5lIC5MX29mZmxpbmVhc21fNzBfY29tcGFyZV9fb3Ax
Tm90SW50Cgltdm4gcjYsICMwCgljbXAgcjIsIHI2CglibmUgLkxfb2ZmbGluZWFzbV83MF9jb21w
YXJlX19vcDJOb3RJbnQKCWNtcCByMSwgcjQKCWJndCAuTF9vZmZsaW5lYXNtXzcwX2NvbXBhcmVf
X2p1bXBUYXJnZXQKCWFkZHMgcjksICMxNgoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgou
TF9vZmZsaW5lYXNtXzcwX2NvbXBhcmVfX29wMU5vdEludDoKCW12biByNiwgIzYKCWNtcCByMCwg
cjYKCWJoaSAuTF9vZmZsaW5lYXNtXzcwX2NvbXBhcmVfX3Nsb3cKCW12biByNiwgIzYKCWNtcCBy
MiwgcjYKCWJsbyAuTF9vZmZsaW5lYXNtXzcwX2NvbXBhcmVfX29wMU5vdEludE9wMkRvdWJsZQoJ
bXZuIHI2LCAjMAoJY21wIHIyLCByNgoJYm5lIC5MX29mZmxpbmVhc21fNzBfY29tcGFyZV9fc2xv
dwoJdm1vdiBzMiwgcjQKCXZjdnQuZjY0LnMzMiBkMSwgczIKCWIgLkxfb2ZmbGluZWFzbV83MF9j
b21wYXJlX19vcDFOb3RJbnRSZWFkeQouTF9vZmZsaW5lYXNtXzcwX2NvbXBhcmVfX29wMU5vdElu
dE9wMkRvdWJsZToKCXZtb3YgZDEsIHI0LCByMgouTF9vZmZsaW5lYXNtXzcwX2NvbXBhcmVfX29w
MU5vdEludFJlYWR5OgoJdm1vdiBkMCwgcjEsIHIwCgl2Y21wZS5mNjQgZDAsIGQxCgl2bXJzIGFw
c3JfbnpjdiwgZnBzY3IKCWJoaSAuTF9vZmZsaW5lYXNtXzcwX2NvbXBhcmVfX2p1bXBUYXJnZXQK
CWFkZHMgcjksICMxNgoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTF9vZmZsaW5lYXNt
XzcwX2NvbXBhcmVfX29wMk5vdEludDoKCXZtb3YgczAsIHIxCgl2Y3Z0LmY2NC5zMzIgZDAsIHMw
Cgltdm4gcjYsICM2CgljbXAgcjIsIHI2CgliaGkgLkxfb2ZmbGluZWFzbV83MF9jb21wYXJlX19z
bG93Cgl2bW92IGQxLCByNCwgcjIKCXZjbXBlLmY2NCBkMCwgZDEKCXZtcnMgYXBzcl9uemN2LCBm
cHNjcgoJYmhpIC5MX29mZmxpbmVhc21fNzBfY29tcGFyZV9fanVtcFRhcmdldAoJYWRkcyByOSwg
IzE2CglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MX29mZmxpbmVhc21fNzBfY29tcGFy
ZV9fanVtcFRhcmdldDoKCWxkciByMCwgW3I5LCAjMTJdCglsc2xzIHIwLCByMCwgIzIKCWFkZCBy
OSwgcjAKCWxkciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxfb2ZmbGluZWFzbV83MF9jb21w
YXJlX19zbG93OgoJbW92IHIwLCByNwoJbW92IHIxLCByOQoJYmx4IGxsaW50X3Nsb3dfcGF0aF9q
bmxlc3NlcQoJbW92IHI5LCByMAoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTGxsaW50
X29wX2pncmVhdGVyZXE6CglsZHIgcjIsIFtyOSwgIzRdCglsZHIgcjQsIFtyOSwgIzhdCgltb3Z3
IHI2LCAjMAoJbW92dCByNiwgIzE2Mzg0CgljbXAgcjIsIHI2CgliZ2UgLkxfb2ZmbGluZWFzbV9j
b21wYXJlX183MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudAoJYWRkIHI2LCByNywg
cjIsIGxzbCAjMwoJbGRyIHIwLCBbcjYsICM0XQoJbGRyIHIxLCBbcjcsIHIyLCBsc2wgIzNdCgli
IC5MX29mZmxpbmVhc21fY29tcGFyZV9fNzFfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZQou
TF9vZmZsaW5lYXNtX2NvbXBhcmVfXzcxX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50
OgoJbGRyIHIxLCBbcjcsICM4XQoJbGRyIHIxLCBbcjEsICMyNzZdCglhZGQgcjYsIHIxLCByMiwg
bHNsICMzCglsZHIgcjAsIFtyNiwgIzRdCglsZHIgcjEsIFtyMSwgcjIsIGxzbCAjM10KLkxfb2Zm
bGluZWFzbV9jb21wYXJlX183MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lOgoJbW92dyBy
NiwgIzAKCW1vdnQgcjYsICMxNjM4NAoJY21wIHI0LCByNgoJYmdlIC5MX29mZmxpbmVhc21fY29t
cGFyZV9fNzFfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50CglhZGQgcjYsIHI3
LCByNCwgbHNsICMzCglsZHIgcjIsIFtyNiwgIzRdCglsZHIgcjQsIFtyNywgcjQsIGxzbCAjM10K
CWIgLkxfb2ZmbGluZWFzbV9jb21wYXJlX183MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19f
ZG9uZQouTF9vZmZsaW5lYXNtX2NvbXBhcmVfXzcxX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVn
X19jb25zdGFudDoKCWxkciByMiwgW3I3LCAjOF0KCWxkciByMiwgW3IyLCAjMjc2XQoJbHNscyBy
NCwgcjQsICMzCglhZGQgcjIsIHI0CglsZHIgcjQsIFtyMiwgIzBdCglsZHIgcjIsIFtyMiwgIzRd
Ci5MX29mZmxpbmVhc21fY29tcGFyZV9fNzFfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2Rv
bmU6Cgltdm4gcjYsICMwCgljbXAgcjAsIHI2CglibmUgLkxfb2ZmbGluZWFzbV83MV9jb21wYXJl
X19vcDFOb3RJbnQKCW12biByNiwgIzAKCWNtcCByMiwgcjYKCWJuZSAuTF9vZmZsaW5lYXNtXzcx
X2NvbXBhcmVfX29wMk5vdEludAoJY21wIHIxLCByNAoJYmdlIC5MX29mZmxpbmVhc21fNzFfY29t
cGFyZV9fanVtcFRhcmdldAoJYWRkcyByOSwgIzE2CglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMs
IHI2Ci5MX29mZmxpbmVhc21fNzFfY29tcGFyZV9fb3AxTm90SW50OgoJbXZuIHI2LCAjNgoJY21w
IHIwLCByNgoJYmhpIC5MX29mZmxpbmVhc21fNzFfY29tcGFyZV9fc2xvdwoJbXZuIHI2LCAjNgoJ
Y21wIHIyLCByNgoJYmxvIC5MX29mZmxpbmVhc21fNzFfY29tcGFyZV9fb3AxTm90SW50T3AyRG91
YmxlCgltdm4gcjYsICMwCgljbXAgcjIsIHI2CglibmUgLkxfb2ZmbGluZWFzbV83MV9jb21wYXJl
X19zbG93Cgl2bW92IHMyLCByNAoJdmN2dC5mNjQuczMyIGQxLCBzMgoJYiAuTF9vZmZsaW5lYXNt
XzcxX2NvbXBhcmVfX29wMU5vdEludFJlYWR5Ci5MX29mZmxpbmVhc21fNzFfY29tcGFyZV9fb3Ax
Tm90SW50T3AyRG91YmxlOgoJdm1vdiBkMSwgcjQsIHIyCi5MX29mZmxpbmVhc21fNzFfY29tcGFy
ZV9fb3AxTm90SW50UmVhZHk6Cgl2bW92IGQwLCByMSwgcjAKCXZjbXBlLmY2NCBkMCwgZDEKCXZt
cnMgYXBzcl9uemN2LCBmcHNjcgoJYmdlIC5MX29mZmxpbmVhc21fNzFfY29tcGFyZV9fanVtcFRh
cmdldAoJYWRkcyByOSwgIzE2CglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MX29mZmxp
bmVhc21fNzFfY29tcGFyZV9fb3AyTm90SW50OgoJdm1vdiBzMCwgcjEKCXZjdnQuZjY0LnMzMiBk
MCwgczAKCW12biByNiwgIzYKCWNtcCByMiwgcjYKCWJoaSAuTF9vZmZsaW5lYXNtXzcxX2NvbXBh
cmVfX3Nsb3cKCXZtb3YgZDEsIHI0LCByMgoJdmNtcGUuZjY0IGQwLCBkMQoJdm1ycyBhcHNyX256
Y3YsIGZwc2NyCgliZ2UgLkxfb2ZmbGluZWFzbV83MV9jb21wYXJlX19qdW1wVGFyZ2V0CglhZGRz
IHI5LCAjMTYKCWxkciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxfb2ZmbGluZWFzbV83MV9j
b21wYXJlX19qdW1wVGFyZ2V0OgoJbGRyIHIwLCBbcjksICMxMl0KCWxzbHMgcjAsIHIwLCAjMgoJ
YWRkIHI5LCByMAoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTF9vZmZsaW5lYXNtXzcx
X2NvbXBhcmVfX3Nsb3c6Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggbGxpbnRfc2xvd19w
YXRoX2pncmVhdGVyZXEKCW1vdiByOSwgcjAKCWxkciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYK
LkxsbGludF9vcF9qbmdyZWF0ZXJlcToKCWxkciByMiwgW3I5LCAjNF0KCWxkciByNCwgW3I5LCAj
OF0KCW1vdncgcjYsICMwCgltb3Z0IHI2LCAjMTYzODQKCWNtcCByMiwgcjYKCWJnZSAuTF9vZmZs
aW5lYXNtX2NvbXBhcmVfXzcyX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50CglhZGQg
cjYsIHI3LCByMiwgbHNsICMzCglsZHIgcjAsIFtyNiwgIzRdCglsZHIgcjEsIFtyNywgcjIsIGxz
bCAjM10KCWIgLkxfb2ZmbGluZWFzbV9jb21wYXJlX183Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
X19kb25lCi5MX29mZmxpbmVhc21fY29tcGFyZV9fNzJfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9f
Y29uc3RhbnQ6CglsZHIgcjEsIFtyNywgIzhdCglsZHIgcjEsIFtyMSwgIzI3Nl0KCWFkZCByNiwg
cjEsIHIyLCBsc2wgIzMKCWxkciByMCwgW3I2LCAjNF0KCWxkciByMSwgW3IxLCByMiwgbHNsICMz
XQouTF9vZmZsaW5lYXNtX2NvbXBhcmVfXzcyX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmU6
Cgltb3Z3IHI2LCAjMAoJbW92dCByNiwgIzE2Mzg0CgljbXAgcjQsIHI2CgliZ2UgLkxfb2ZmbGlu
ZWFzbV9jb21wYXJlX183Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQKCWFk
ZCByNiwgcjcsIHI0LCBsc2wgIzMKCWxkciByMiwgW3I2LCAjNF0KCWxkciByNCwgW3I3LCByNCwg
bHNsICMzXQoJYiAuTF9vZmZsaW5lYXNtX2NvbXBhcmVfXzcyX2xvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnX19kb25lCi5MX29mZmxpbmVhc21fY29tcGFyZV9fNzJfbG9hZENvbnN0YW50T3JWYXJp
YWJsZTJSZWdfX2NvbnN0YW50OgoJbGRyIHIyLCBbcjcsICM4XQoJbGRyIHIyLCBbcjIsICMyNzZd
Cglsc2xzIHI0LCByNCwgIzMKCWFkZCByMiwgcjQKCWxkciByNCwgW3IyLCAjMF0KCWxkciByMiwg
W3IyLCAjNF0KLkxfb2ZmbGluZWFzbV9jb21wYXJlX183Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZ19fZG9uZToKCW12biByNiwgIzAKCWNtcCByMCwgcjYKCWJuZSAuTF9vZmZsaW5lYXNtXzcy
X2NvbXBhcmVfX29wMU5vdEludAoJbXZuIHI2LCAjMAoJY21wIHIyLCByNgoJYm5lIC5MX29mZmxp
bmVhc21fNzJfY29tcGFyZV9fb3AyTm90SW50CgljbXAgcjEsIHI0CglibHQgLkxfb2ZmbGluZWFz
bV83Ml9jb21wYXJlX19qdW1wVGFyZ2V0CglhZGRzIHI5LCAjMTYKCWxkciByNiwgW3I5LCAjMF0K
CW1vdiBwYywgcjYKLkxfb2ZmbGluZWFzbV83Ml9jb21wYXJlX19vcDFOb3RJbnQ6Cgltdm4gcjYs
ICM2CgljbXAgcjAsIHI2CgliaGkgLkxfb2ZmbGluZWFzbV83Ml9jb21wYXJlX19zbG93Cgltdm4g
cjYsICM2CgljbXAgcjIsIHI2CglibG8gLkxfb2ZmbGluZWFzbV83Ml9jb21wYXJlX19vcDFOb3RJ
bnRPcDJEb3VibGUKCW12biByNiwgIzAKCWNtcCByMiwgcjYKCWJuZSAuTF9vZmZsaW5lYXNtXzcy
X2NvbXBhcmVfX3Nsb3cKCXZtb3YgczIsIHI0Cgl2Y3Z0LmY2NC5zMzIgZDEsIHMyCgliIC5MX29m
ZmxpbmVhc21fNzJfY29tcGFyZV9fb3AxTm90SW50UmVhZHkKLkxfb2ZmbGluZWFzbV83Ml9jb21w
YXJlX19vcDFOb3RJbnRPcDJEb3VibGU6Cgl2bW92IGQxLCByNCwgcjIKLkxfb2ZmbGluZWFzbV83
Ml9jb21wYXJlX19vcDFOb3RJbnRSZWFkeToKCXZtb3YgZDAsIHIxLCByMAoJdmNtcGUuZjY0IGQw
LCBkMQoJdm1ycyBhcHNyX256Y3YsIGZwc2NyCglibHQgLkxfb2ZmbGluZWFzbV83Ml9jb21wYXJl
X19qdW1wVGFyZ2V0CglhZGRzIHI5LCAjMTYKCWxkciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYK
Lkxfb2ZmbGluZWFzbV83Ml9jb21wYXJlX19vcDJOb3RJbnQ6Cgl2bW92IHMwLCByMQoJdmN2dC5m
NjQuczMyIGQwLCBzMAoJbXZuIHI2LCAjNgoJY21wIHIyLCByNgoJYmhpIC5MX29mZmxpbmVhc21f
NzJfY29tcGFyZV9fc2xvdwoJdm1vdiBkMSwgcjQsIHIyCgl2Y21wZS5mNjQgZDAsIGQxCgl2bXJz
IGFwc3JfbnpjdiwgZnBzY3IKCWJsdCAuTF9vZmZsaW5lYXNtXzcyX2NvbXBhcmVfX2p1bXBUYXJn
ZXQKCWFkZHMgcjksICMxNgoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTF9vZmZsaW5l
YXNtXzcyX2NvbXBhcmVfX2p1bXBUYXJnZXQ6CglsZHIgcjAsIFtyOSwgIzEyXQoJbHNscyByMCwg
cjAsICMyCglhZGQgcjksIHIwCglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MX29mZmxp
bmVhc21fNzJfY29tcGFyZV9fc2xvdzoKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBsbGlu
dF9zbG93X3BhdGhfam5ncmVhdGVyZXEKCW1vdiByOSwgcjAKCWxkciByNiwgW3I5LCAjMF0KCW1v
diBwYywgcjYKLkxsbGludF9vcF9sb29wX2hpbnQ6CglsZHIgcjEsIFtyNywgIzhdCglsZHIgcjEs
IFtyMSwgIzU2XQoJbW92dyByNiwgIzIyOTU2CglhZGQgcjYsIHIxCglsZHJiIHIwLCBbcjYsICMw
XQoJdHN0IHIwLCByMAoJYm5lIC5MX29mZmxpbmVhc21faGFuZGxlV2F0Y2hkb2dUaW1lcgouTF9v
ZmZsaW5lYXNtX2FmdGVyV2F0Y2hkb2dUaW1lckNoZWNrOgoJbGRyIHIwLCBbcjcsICM4XQoJbGRy
IHI2LCBbcjAsICMzMTZdCglhZGRzIHI2LCAjMQoJc3RyIHI2LCBbcjAsICMzMTZdCglibWkgLkxf
b2ZmbGluZWFzbV9jaGVja1N3aXRjaFRvSklURm9yTG9vcF9fNzJfY2hlY2tTd2l0Y2hUb0pJVF9f
Y29udGludWUKCXN0ciByOSwgW3I3LCAjMzZdCgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHgg
bGxpbnRfbG9vcF9vc3IKCXRzdCByMCwgcjAKCWJlcSAuTF9vZmZsaW5lYXNtX2NoZWNrU3dpdGNo
VG9KSVRGb3JMb29wX19jaGVja1N3aXRjaFRvSklUX19hY3Rpb25fX3JlY292ZXIKCW1vdiBzcCwg
cjEKCW1vdiBwYywgcjAKLkxfb2ZmbGluZWFzbV9jaGVja1N3aXRjaFRvSklURm9yTG9vcF9fY2hl
Y2tTd2l0Y2hUb0pJVF9fYWN0aW9uX19yZWNvdmVyOgoJbGRyIHI5LCBbcjcsICMzNl0KLkxfb2Zm
bGluZWFzbV9jaGVja1N3aXRjaFRvSklURm9yTG9vcF9fNzJfY2hlY2tTd2l0Y2hUb0pJVF9fY29u
dGludWU6CglhZGRzIHI5LCAjNAoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTF9vZmZs
aW5lYXNtX2hhbmRsZVdhdGNoZG9nVGltZXI6CglzdHIgcjksIFtyNywgIzM2XQoJbW92IHIwLCBy
NwoJbW92IHIxLCByOQoJYmx4IGxsaW50X3Nsb3dfcGF0aF9oYW5kbGVfd2F0Y2hkb2dfdGltZXIK
CXRzdCByMCwgcjAKCWJuZSAuTF9vZmZsaW5lYXNtX3Rocm93SGFuZGxlcgoJbGRyIHI5LCBbcjcs
ICMzNl0KCWIgLkxfb2ZmbGluZWFzbV9hZnRlcldhdGNoZG9nVGltZXJDaGVjawouTF9vZmZsaW5l
YXNtX3Rocm93SGFuZGxlcjoKCWIgLkxsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9s
aW5lCi5MbGxpbnRfb3Bfc3dpdGNoX3N0cmluZzoKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJs
eCBsbGludF9zbG93X3BhdGhfc3dpdGNoX3N0cmluZwoJbW92IHI5LCByMAoJbGRyIHI2LCBbcjks
ICMwXQoJbW92IHBjLCByNgouTGxsaW50X29wX25ld19mdW5jX2V4cDoKCW1vdiByMCwgcjcKCW1v
diByMSwgcjkKCWJseCBsbGludF9zbG93X3BhdGhfbmV3X2Z1bmNfZXhwCgltb3YgcjksIHIwCglh
ZGRzIHI5LCAjMTIKCWxkciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxsbGludF9vcF9jYWxs
OgoJbGRyIHI0LCBbcjksICMxNl0KCXJzYnMgcjQsIHI0LCAjMAoJYWRkIHI2LCByNywgcjQsIGxz
bCAjMwoJbXZuIHIxMiwgIzQKCWxkciByMTAsIFtyNiwgIzQ0XQoJY21wIHIxMCwgcjEyCglibmUg
Lkxfb2ZmbGluZWFzbV9hcnJheVByb2ZpbGVGb3JDYWxsX19kb25lCglhZGQgcjEyLCByNywgcjQs
IGxzbCAjMwoJbGRyIHIwLCBbcjEyLCAjNDBdCglsZHIgcjAsIFtyMCwgIzBdCglsZHIgcjEsIFty
OSwgIzI4XQoJc3RyIHIwLCBbcjEsICM0XQouTF9vZmZsaW5lYXNtX2FycmF5UHJvZmlsZUZvckNh
bGxfX2RvbmU6CglsZHIgcjAsIFtyOSwgIzhdCglsZHIgcjEsIFtyOSwgIzIwXQoJbGRyIHIyLCBb
cjEsICM4XQoJbW92dyByMTIsICMwCgltb3Z0IHIxMiwgIzE2Mzg0CgljbXAgcjAsIHIxMgoJYmdl
IC5MX29mZmxpbmVhc21fZG9DYWxsX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNzJf
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50CglhZGQgcjEy
LCByNywgcjAsIGxzbCAjMwoJbXZuIHIxMCwgIzQKCWxkciByNiwgW3IxMiwgIzRdCgljbXAgcjYs
IHIxMAoJYm5lIC5MX29mZmxpbmVhc21fZG9DYWxsX19vcENhbGxTbG93CglsZHIgcjQsIFtyNywg
cjAsIGxzbCAjM10KCWIgLkxfb2ZmbGluZWFzbV9kb0NhbGxfX2xvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkX183Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9u
ZQouTF9vZmZsaW5lYXNtX2RvQ2FsbF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzcy
X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudDoKCWxkciBy
NCwgW3I3LCAjOF0KCWxkciByNCwgW3I0LCAjMjc2XQoJYWRkIHIxMCwgcjQsIHIwLCBsc2wgIzMK
CW12biByNiwgIzQKCWxkciByMTIsIFtyMTAsICM0XQoJY21wIHIxMiwgcjYKCWJuZSAuTF9vZmZs
aW5lYXNtX2RvQ2FsbF9fb3BDYWxsU2xvdwoJbGRyIHI0LCBbcjQsIHIwLCBsc2wgIzNdCi5MX29m
ZmxpbmVhc21fZG9DYWxsX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNzJfbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmU6CgljbXAgcjQsIHIyCglibmUg
Lkxfb2ZmbGluZWFzbV9kb0NhbGxfX29wQ2FsbFNsb3cKCWxkciByNCwgW3I5LCAjMTZdCglsc2xz
IHI0LCByNCwgIzMKCXJzYnMgcjQsIHI0LCAjMAoJYWRkIHI0LCByNwoJbGRyIHIwLCBbcjIsICMy
NF0KCXN0ciByMiwgW3I0LCAjMjRdCglzdHIgcjAsIFtyNCwgIzE2XQoJbGRyIHIyLCBbcjksICMx
Ml0KCXN0ciByOSwgW3I3LCAjMzZdCglzdHIgcjIsIFtyNCwgIzMyXQoJbXZuIHI2LCAjNAoJc3Ry
IHI2LCBbcjQsICMyOF0KCW12biByNiwgIzQKCXN0ciByNiwgW3I0LCAjMjBdCglhZGRzIHI0LCAj
OAoJbW92IHNwLCByNAoJbGRyIHI2LCBbcjEsICMxNl0KCWJseCByNgoJbGRyIHIyLCBbcjcsICM4
XQoJbGRyIHI4LCBbcjIsICMyOF0KCWxzbHMgcjgsIHI4LCAjMwoJYWRkcyByOCwgIzI0CglzdWJz
IHI4LCByNywgcjgKCW1vdiBzcCwgcjgKCWxkciByOSwgW3I3LCAjMzZdCglsZHIgcjIsIFtyOSwg
IzRdCglhZGQgcjYsIHI3LCByMiwgbHNsICMzCglzdHIgcjEsIFtyNiwgIzRdCglzdHIgcjAsIFty
NywgcjIsIGxzbCAjM10KCWxkciByNCwgW3I5LCAjMzJdCglzdHIgcjEsIFtyNCwgIzIwXQoJc3Ry
IHIwLCBbcjQsICMxNl0KCWFkZHMgcjksICMzNgoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCBy
NgouTF9vZmZsaW5lYXNtX2RvQ2FsbF9fb3BDYWxsU2xvdzoKCXN0ciByOSwgW3I3LCAjMzZdCglt
b3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggbGxpbnRfc2xvd19wYXRoX2NhbGwKCXRzdCByMSwg
cjEKCWJlcSAuTF9vZmZsaW5lYXNtX2RvQ2FsbF9fc2xvd1BhdGhGb3JDYWxsX19jYWxsQ2FsbFNs
b3dQYXRoX19hY3Rpb25fX2RvbnRVcGRhdGVTUAoJYWRkcyByMSwgcjEsICM4Cgltb3Ygc3AsIHIx
Ci5MX29mZmxpbmVhc21fZG9DYWxsX19zbG93UGF0aEZvckNhbGxfX2NhbGxDYWxsU2xvd1BhdGhf
X2FjdGlvbl9fZG9udFVwZGF0ZVNQOgoJYmx4IHIwCglsZHIgcjIsIFtyNywgIzhdCglsZHIgcjgs
IFtyMiwgIzI4XQoJbHNscyByOCwgcjgsICMzCglhZGRzIHI4LCAjMjQKCXN1YnMgcjgsIHI3LCBy
OAoJbW92IHNwLCByOAoJbGRyIHI5LCBbcjcsICMzNl0KCWxkciByMiwgW3I5LCAjNF0KCWFkZCBy
NiwgcjcsIHIyLCBsc2wgIzMKCXN0ciByMSwgW3I2LCAjNF0KCXN0ciByMCwgW3I3LCByMiwgbHNs
ICMzXQoJbGRyIHI0LCBbcjksICMzMl0KCXN0ciByMSwgW3I0LCAjMjBdCglzdHIgcjAsIFtyNCwg
IzE2XQoJYWRkcyByOSwgIzM2CglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2Ci5MbGxpbnRf
b3BfY29uc3RydWN0OgoJbGRyIHIwLCBbcjksICM4XQoJbGRyIHIxLCBbcjksICMyMF0KCWxkciBy
MiwgW3IxLCAjOF0KCW1vdncgcjYsICMwCgltb3Z0IHI2LCAjMTYzODQKCWNtcCByMCwgcjYKCWJn
ZSAuTF9vZmZsaW5lYXNtX2RvQ2FsbF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzcz
X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudAoJYWRkIHI2
LCByNywgcjAsIGxzbCAjMwoJbXZuIHIxMiwgIzQKCWxkciByMTAsIFtyNiwgIzRdCgljbXAgcjEw
LCByMTIKCWJuZSAuTF9vZmZsaW5lYXNtXzczX2RvQ2FsbF9fb3BDYWxsU2xvdwoJbGRyIHI0LCBb
cjcsIHIwLCBsc2wgIzNdCgliIC5MX29mZmxpbmVhc21fZG9DYWxsX19sb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZF9fNzNfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21f
X2RvbmUKLkxfb2ZmbGluZWFzbV9kb0NhbGxfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
X183M19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQ6Cgls
ZHIgcjQsIFtyNywgIzhdCglsZHIgcjQsIFtyNCwgIzI3Nl0KCWFkZCByMTIsIHI0LCByMCwgbHNs
ICMzCgltdm4gcjEwLCAjNAoJbGRyIHI2LCBbcjEyLCAjNF0KCWNtcCByNiwgcjEwCglibmUgLkxf
b2ZmbGluZWFzbV83M19kb0NhbGxfX29wQ2FsbFNsb3cKCWxkciByNCwgW3I0LCByMCwgbHNsICMz
XQouTF9vZmZsaW5lYXNtX2RvQ2FsbF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzcz
X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lOgoJY21wIHI0LCBy
MgoJYm5lIC5MX29mZmxpbmVhc21fNzNfZG9DYWxsX19vcENhbGxTbG93CglsZHIgcjQsIFtyOSwg
IzE2XQoJbHNscyByNCwgcjQsICMzCglyc2JzIHI0LCByNCwgIzAKCWFkZCByNCwgcjcKCWxkciBy
MCwgW3IyLCAjMjRdCglzdHIgcjIsIFtyNCwgIzI0XQoJc3RyIHIwLCBbcjQsICMxNl0KCWxkciBy
MiwgW3I5LCAjMTJdCglzdHIgcjksIFtyNywgIzM2XQoJc3RyIHIyLCBbcjQsICMzMl0KCW12biBy
MTAsICM0CglzdHIgcjEwLCBbcjQsICMyOF0KCW12biByMTAsICM0CglzdHIgcjEwLCBbcjQsICMy
MF0KCWFkZHMgcjQsICM4Cgltb3Ygc3AsIHI0CglsZHIgcjEwLCBbcjEsICMxNl0KCWJseCByMTAK
CWxkciByMiwgW3I3LCAjOF0KCWxkciByOCwgW3IyLCAjMjhdCglsc2xzIHI4LCByOCwgIzMKCWFk
ZHMgcjgsICMyNAoJc3VicyByOCwgcjcsIHI4Cgltb3Ygc3AsIHI4CglsZHIgcjksIFtyNywgIzM2
XQoJbGRyIHIyLCBbcjksICM0XQoJYWRkIHIxMCwgcjcsIHIyLCBsc2wgIzMKCXN0ciByMSwgW3Ix
MCwgIzRdCglzdHIgcjAsIFtyNywgcjIsIGxzbCAjM10KCWxkciByNCwgW3I5LCAjMzJdCglzdHIg
cjEsIFtyNCwgIzIwXQoJc3RyIHIwLCBbcjQsICMxNl0KCWFkZHMgcjksICMzNgoJbGRyIHIxMCwg
W3I5LCAjMF0KCW1vdiBwYywgcjEwCi5MX29mZmxpbmVhc21fNzNfZG9DYWxsX19vcENhbGxTbG93
OgoJc3RyIHI5LCBbcjcsICMzNl0KCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBsbGludF9z
bG93X3BhdGhfY29uc3RydWN0Cgl0c3QgcjEsIHIxCgliZXEgLkxfb2ZmbGluZWFzbV9kb0NhbGxf
X3Nsb3dQYXRoRm9yQ2FsbF9fY2FsbENhbGxTbG93UGF0aF9fNzNfYWN0aW9uX19kb250VXBkYXRl
U1AKCWFkZHMgcjEsIHIxLCAjOAoJbW92IHNwLCByMQouTF9vZmZsaW5lYXNtX2RvQ2FsbF9fc2xv
d1BhdGhGb3JDYWxsX19jYWxsQ2FsbFNsb3dQYXRoX183M19hY3Rpb25fX2RvbnRVcGRhdGVTUDoK
CWJseCByMAoJbGRyIHIyLCBbcjcsICM4XQoJbGRyIHI4LCBbcjIsICMyOF0KCWxzbHMgcjgsIHI4
LCAjMwoJYWRkcyByOCwgIzI0CglzdWJzIHI4LCByNywgcjgKCW1vdiBzcCwgcjgKCWxkciByOSwg
W3I3LCAjMzZdCglsZHIgcjIsIFtyOSwgIzRdCglhZGQgcjEwLCByNywgcjIsIGxzbCAjMwoJc3Ry
IHIxLCBbcjEwLCAjNF0KCXN0ciByMCwgW3I3LCByMiwgbHNsICMzXQoJbGRyIHI0LCBbcjksICMz
Ml0KCXN0ciByMSwgW3I0LCAjMjBdCglzdHIgcjAsIFtyNCwgIzE2XQoJYWRkcyByOSwgIzM2Cgls
ZHIgcjEwLCBbcjksICMwXQoJbW92IHBjLCByMTAKLkxsbGludF9vcF9jYWxsX3ZhcmFyZ3M6Cglt
b3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggbGxpbnRfc2xvd19wYXRoX3NpemVfZnJhbWVfZm9y
X3ZhcmFyZ3MKCW1vdiByOSwgcjAKCWxkciByNCwgW3I3LCAjMTZdCgltb3Z3IHIxMCwgIzAKCW1v
dnQgcjEwLCAjNjU1MzUKCWFuZHMgcjQsIHIxMAoJbGRyIHI0LCBbcjQsICMxMDc2XQoJbW92dyBy
MTAsICMyNzA2MAoJYWRkIHIxMCwgcjQKCW12biByNiwgIzUKCWxkciByMTIsIFtyMTAsICMwXQoJ
Y21wIHIxMiwgcjYKCWJlcSAuTF9vZmZsaW5lYXNtX2JyYW5jaElmRXhjZXB0aW9uX19ub0V4Y2Vw
dGlvbgoJYiAuTGxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUKLkxfb2ZmbGlu
ZWFzbV9icmFuY2hJZkV4Y2VwdGlvbl9fbm9FeGNlcHRpb246CglzdWJzIHIyLCByMSwgIzgKCW1v
diBzcCwgcjIKCXN0ciByOSwgW3I3LCAjMzZdCgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHgg
bGxpbnRfc2xvd19wYXRoX2NhbGxfdmFyYXJncwoJdHN0IHIxLCByMQoJYmVxIC5MX29mZmxpbmVh
c21fc2xvd1BhdGhGb3JDYWxsX19jYWxsQ2FsbFNsb3dQYXRoX183NF9hY3Rpb25fX2RvbnRVcGRh
dGVTUAoJYWRkcyByMSwgcjEsICM4Cgltb3Ygc3AsIHIxCi5MX29mZmxpbmVhc21fc2xvd1BhdGhG
b3JDYWxsX19jYWxsQ2FsbFNsb3dQYXRoX183NF9hY3Rpb25fX2RvbnRVcGRhdGVTUDoKCWJseCBy
MAoJbGRyIHIyLCBbcjcsICM4XQoJbGRyIHI4LCBbcjIsICMyOF0KCWxzbHMgcjgsIHI4LCAjMwoJ
YWRkcyByOCwgIzI0CglzdWJzIHI4LCByNywgcjgKCW1vdiBzcCwgcjgKCWxkciByOSwgW3I3LCAj
MzZdCglsZHIgcjIsIFtyOSwgIzRdCglhZGQgcjYsIHI3LCByMiwgbHNsICMzCglzdHIgcjEsIFty
NiwgIzRdCglzdHIgcjAsIFtyNywgcjIsIGxzbCAjM10KCWxkciByNCwgW3I5LCAjMzJdCglzdHIg
cjEsIFtyNCwgIzIwXQoJc3RyIHIwLCBbcjQsICMxNl0KCWFkZHMgcjksICMzNgoJbGRyIHI2LCBb
cjksICMwXQoJbW92IHBjLCByNgouTGxsaW50X29wX2NvbnN0cnVjdF92YXJhcmdzOgoJbW92IHIw
LCByNwoJbW92IHIxLCByOQoJYmx4IGxsaW50X3Nsb3dfcGF0aF9zaXplX2ZyYW1lX2Zvcl92YXJh
cmdzCgltb3YgcjksIHIwCglsZHIgcjQsIFtyNywgIzE2XQoJbW92dyByNiwgIzAKCW1vdnQgcjYs
ICM2NTUzNQoJYW5kcyByNCwgcjYKCWxkciByNCwgW3I0LCAjMTA3Nl0KCW1vdncgcjYsICMyNzA2
MAoJYWRkIHI2LCByNAoJbXZuIHIxMiwgIzUKCWxkciByMTAsIFtyNiwgIzBdCgljbXAgcjEwLCBy
MTIKCWJlcSAuTF9vZmZsaW5lYXNtXzc0X2JyYW5jaElmRXhjZXB0aW9uX19ub0V4Y2VwdGlvbgoJ
YiAuTGxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUKLkxfb2ZmbGluZWFzbV83
NF9icmFuY2hJZkV4Y2VwdGlvbl9fbm9FeGNlcHRpb246CglzdWJzIHIyLCByMSwgIzgKCW1vdiBz
cCwgcjIKCXN0ciByOSwgW3I3LCAjMzZdCgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggbGxp
bnRfc2xvd19wYXRoX2NvbnN0cnVjdF92YXJhcmdzCgl0c3QgcjEsIHIxCgliZXEgLkxfb2ZmbGlu
ZWFzbV9zbG93UGF0aEZvckNhbGxfX2NhbGxDYWxsU2xvd1BhdGhfXzc1X2FjdGlvbl9fZG9udFVw
ZGF0ZVNQCglhZGRzIHIxLCByMSwgIzgKCW1vdiBzcCwgcjEKLkxfb2ZmbGluZWFzbV9zbG93UGF0
aEZvckNhbGxfX2NhbGxDYWxsU2xvd1BhdGhfXzc1X2FjdGlvbl9fZG9udFVwZGF0ZVNQOgoJYmx4
IHIwCglsZHIgcjIsIFtyNywgIzhdCglsZHIgcjgsIFtyMiwgIzI4XQoJbHNscyByOCwgcjgsICMz
CglhZGRzIHI4LCAjMjQKCXN1YnMgcjgsIHI3LCByOAoJbW92IHNwLCByOAoJbGRyIHI5LCBbcjcs
ICMzNl0KCWxkciByMiwgW3I5LCAjNF0KCWFkZCByMTIsIHI3LCByMiwgbHNsICMzCglzdHIgcjEs
IFtyMTIsICM0XQoJc3RyIHIwLCBbcjcsIHIyLCBsc2wgIzNdCglsZHIgcjQsIFtyOSwgIzMyXQoJ
c3RyIHIxLCBbcjQsICMyMF0KCXN0ciByMCwgW3I0LCAjMTZdCglhZGRzIHI5LCAjMzYKCWxkciBy
MTIsIFtyOSwgIzBdCgltb3YgcGMsIHIxMgouTGxsaW50X29wX2NhbGxfZXZhbDoKCXN0ciByOSwg
W3I3LCAjMzZdCgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggbGxpbnRfc2xvd19wYXRoX2Nh
bGxfZXZhbAoJdHN0IHIxLCByMQoJYmVxIC5MX29mZmxpbmVhc21fc2xvd1BhdGhGb3JDYWxsX19j
YWxsQ2FsbFNsb3dQYXRoX183Nl9hY3Rpb25fX2RvbnRVcGRhdGVTUAoJYWRkcyByMSwgcjEsICM4
Cgltb3Ygc3AsIHIxCi5MX29mZmxpbmVhc21fc2xvd1BhdGhGb3JDYWxsX19jYWxsQ2FsbFNsb3dQ
YXRoX183Nl9hY3Rpb25fX2RvbnRVcGRhdGVTUDoKCWJseCByMAoJbGRyIHIyLCBbcjcsICM4XQoJ
bGRyIHI4LCBbcjIsICMyOF0KCWxzbHMgcjgsIHI4LCAjMwoJYWRkcyByOCwgIzI0CglzdWJzIHI4
LCByNywgcjgKCW1vdiBzcCwgcjgKCWxkciByOSwgW3I3LCAjMzZdCglsZHIgcjIsIFtyOSwgIzRd
CglhZGQgcjEyLCByNywgcjIsIGxzbCAjMwoJc3RyIHIxLCBbcjEyLCAjNF0KCXN0ciByMCwgW3I3
LCByMiwgbHNsICMzXQoJbGRyIHI0LCBbcjksICMzMl0KCXN0ciByMSwgW3I0LCAjMjBdCglzdHIg
cjAsIFtyNCwgIzE2XQoJYWRkcyByOSwgIzM2CglsZHIgcjEyLCBbcjksICMwXQoJbW92IHBjLCBy
MTIKLkxsbGludF9nZW5lcmljX3JldHVybl9wb2ludDoKCWxkciByOSwgW3I3LCAjMzZdCglsZHIg
cjIsIFtyOSwgIzRdCglhZGQgcjEyLCByNywgcjIsIGxzbCAjMwoJc3RyIHIxLCBbcjEyLCAjNF0K
CXN0ciByMCwgW3I3LCByMiwgbHNsICMzXQoJbGRyIHI0LCBbcjksICMzMl0KCXN0ciByMSwgW3I0
LCAjMjBdCglzdHIgcjAsIFtyNCwgIzE2XQoJYWRkcyByOSwgIzM2CglsZHIgcjEyLCBbcjksICMw
XQoJbW92IHBjLCByMTIKLkxsbGludF9vcF9zdHJjYXQ6Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5
CglibHggc2xvd19wYXRoX3N0cmNhdAoJbW92IHI5LCByMAoJYWRkcyByOSwgIzE2CglsZHIgcjEy
LCBbcjksICMwXQoJbW92IHBjLCByMTIKLkxsbGludF9vcF9wdXNoX3dpdGhfc2NvcGU6Cgltb3Yg
cjAsIHI3Cgltb3YgcjEsIHI5CglibHggbGxpbnRfc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZQoJ
bW92IHI5LCByMAoJYWRkcyByOSwgIzgKCWxkciByMTIsIFtyOSwgIzBdCgltb3YgcGMsIHIxMgou
TGxsaW50X29wX3BvcF9zY29wZToKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBsbGludF9z
bG93X3BhdGhfcG9wX3Njb3BlCgltb3YgcjksIHIwCglhZGRzIHI5LCAjNAoJbGRyIHIxMiwgW3I5
LCAjMF0KCW1vdiBwYywgcjEyCi5MbGxpbnRfb3BfcHVzaF9uYW1lX3Njb3BlOgoJbW92IHIwLCBy
NwoJbW92IHIxLCByOQoJYmx4IGxsaW50X3Nsb3dfcGF0aF9wdXNoX25hbWVfc2NvcGUKCW1vdiBy
OSwgcjAKCWFkZHMgcjksICMxNgoJbGRyIHIxMiwgW3I5LCAjMF0KCW1vdiBwYywgcjEyCi5MbGxp
bnRfb3BfdGhyb3c6Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggbGxpbnRfc2xvd19wYXRo
X3Rocm93Cgltb3YgcjksIHIwCglhZGRzIHI5LCAjOAoJbGRyIHIxMiwgW3I5LCAjMF0KCW1vdiBw
YywgcjEyCi5MbGxpbnRfb3BfdGhyb3dfc3RhdGljX2Vycm9yOgoJbW92IHIwLCByNwoJbW92IHIx
LCByOQoJYmx4IGxsaW50X3Nsb3dfcGF0aF90aHJvd19zdGF0aWNfZXJyb3IKCW1vdiByOSwgcjAK
CWFkZHMgcjksICMxMgoJbGRyIHIxMiwgW3I5LCAjMF0KCW1vdiBwYywgcjEyCi5MbGxpbnRfb3Bf
cHJvZmlsZV93aWxsX2NhbGw6CglsZHIgcjAsIFtyNywgIzhdCglsZHIgcjAsIFtyMCwgIzU2XQoJ
bW92dyByMTIsICMyNzA3MgoJYWRkIHIxMiwgcjAKCWxkciByMCwgW3IxMiwgIzBdCgl0c3QgcjAs
IHIwCgliZXEgLkxfb2ZmbGluZWFzbV9vcFByb2ZpbGVyV2lsbENhbGxEb25lCgltb3YgcjAsIHI3
Cgltb3YgcjEsIHI5CglibHggbGxpbnRfc2xvd19wYXRoX3Byb2ZpbGVfd2lsbF9jYWxsCgltb3Yg
cjksIHIwCi5MX29mZmxpbmVhc21fb3BQcm9maWxlcldpbGxDYWxsRG9uZToKCWFkZHMgcjksICM4
CglsZHIgcjEyLCBbcjksICMwXQoJbW92IHBjLCByMTIKLkxsbGludF9vcF9wcm9maWxlX2RpZF9j
YWxsOgoJbGRyIHIwLCBbcjcsICM4XQoJbGRyIHIwLCBbcjAsICM1Nl0KCW1vdncgcjEyLCAjMjcw
NzIKCWFkZCByMTIsIHIwCglsZHIgcjAsIFtyMTIsICMwXQoJdHN0IHIwLCByMAoJYmVxIC5MX29m
ZmxpbmVhc21fb3BQcm9maWxlckRpZENhbGxEb25lCgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5Cgli
bHggbGxpbnRfc2xvd19wYXRoX3Byb2ZpbGVfZGlkX2NhbGwKCW1vdiByOSwgcjAKLkxfb2ZmbGlu
ZWFzbV9vcFByb2ZpbGVyRGlkQ2FsbERvbmU6CglhZGRzIHI5LCAjOAoJbGRyIHIxMiwgW3I5LCAj
MF0KCW1vdiBwYywgcjEyCi5MbGxpbnRfb3BfZGVidWc6CglsZHIgcjAsIFtyNywgIzhdCglsZHIg
cjAsIFtyMCwgIzQ4XQoJdHN0IHIwLCByMAoJYmVxIC5MX29mZmxpbmVhc21fb3BEZWJ1Z0RvbmUK
CW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBsbGludF9zbG93X3BhdGhfZGVidWcKCW1vdiBy
OSwgcjAKLkxfb2ZmbGluZWFzbV9vcERlYnVnRG9uZToKCWFkZHMgcjksICMxMgoJbGRyIHIxMiwg
W3I5LCAjMF0KCW1vdiBwYywgcjEyCi5MbGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZToKCXB1
c2ggeyBsciB9CglwdXNoIHsgcjcgfQoJbW92IHI3LCBzcAoJbW92IHIxMiwgIzAKCXN0ciByMTIs
IFtyNywgIzhdCglsZHIgcjAsIFtyNywgIzBdCglsZHIgcjEsIFtyMCwgIzE2XQoJbXZuIHIxMiwg
IzQKCXN0ciByMTIsIFtyNywgIzIwXQoJc3RyIHIxLCBbcjcsICMxNl0KCXN1YnMgc3AsIHNwLCAj
OAoJbW92dyByMTIsICMwCgltb3Z0IHIxMiwgIzY1NTM1CglhbmRzIHIxLCByMTIKCWxkciByMSwg
W3IxLCAjMTA3Nl0KCW1vdncgcjEyLCAjMjI5NTIKCWFkZCByMTIsIHIxCglzdHIgcjcsIFtyMTIs
ICMwXQoJbW92IHIwLCByNwoJbGRyIHIxLCBbcjcsICMyNF0KCWxkciByMSwgW3IxLCAjMjBdCglt
b3YgcjQsIHNwCglhbmQgcjQsIHI0LCAjMTUKCXRzdCByNCwgcjQKCWJlcSAuTF9vZmZsaW5lYXNt
X25hdGl2ZUNhbGxUcmFtcG9saW5lX183Nl9jaGVja1N0YWNrUG9pbnRlckFsaWdubWVudF9fc3Rh
Y2tQb2ludGVyT2theQoJbW92dyByNCwgIzEKCW1vdnQgcjQsICM1NzAwNQoJYmtwdCAjMAouTF9v
ZmZsaW5lYXNtX25hdGl2ZUNhbGxUcmFtcG9saW5lX183Nl9jaGVja1N0YWNrUG9pbnRlckFsaWdu
bWVudF9fc3RhY2tQb2ludGVyT2theToKCWxkciByMTIsIFtyMSwgIzQ4XQoJYmx4IHIxMgoJbGRy
IHI0LCBbcjcsICMxNl0KCW1vdncgcjEyLCAjMAoJbW92dCByMTIsICM2NTUzNQoJYW5kcyByNCwg
cjEyCglsZHIgcjQsIFtyNCwgIzEwNzZdCglhZGRzIHNwLCAjOAoJcG9wIHsgcjcgfQoJcG9wIHsg
bHIgfQoJbW92dyByMTIsICMyNzA2MAoJYWRkIHIxMiwgcjQKCW12biByMTAsICM1CglsZHIgcjYs
IFtyMTIsICMwXQoJY21wIHI2LCByMTAKCWJuZSAuTF9vZmZsaW5lYXNtX25hdGl2ZUNhbGxUcmFt
cG9saW5lX19oYW5kbGVFeGNlcHRpb24KCWJ4IGxyCi5MX29mZmxpbmVhc21fbmF0aXZlQ2FsbFRy
YW1wb2xpbmVfX2hhbmRsZUV4Y2VwdGlvbjoKCW1vdncgcjEwLCAjMjI5NTIKCWFkZCByMTAsIHI0
CglzdHIgcjcsIFtyMTAsICMwXQoJbGRyIHIyLCBbcjcsICM4XQoJbGRyIHI4LCBbcjIsICMyOF0K
CWxzbHMgcjgsIHI4LCAjMwoJYWRkcyByOCwgIzI0CglzdWJzIHI4LCByNywgcjgKCW1vdiBzcCwg
cjgKCWIgLkxsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lCi5MbGxpbnRfbmF0
aXZlX2NvbnN0cnVjdF90cmFtcG9saW5lOgoJcHVzaCB7IGxyIH0KCXB1c2ggeyByNyB9Cgltb3Yg
cjcsIHNwCgltb3YgcjEwLCAjMAoJc3RyIHIxMCwgW3I3LCAjOF0KCWxkciByMCwgW3I3LCAjMF0K
CWxkciByMSwgW3IwLCAjMTZdCgltdm4gcjEwLCAjNAoJc3RyIHIxMCwgW3I3LCAjMjBdCglzdHIg
cjEsIFtyNywgIzE2XQoJc3VicyBzcCwgc3AsICM4Cgltb3Z3IHIxMCwgIzAKCW1vdnQgcjEwLCAj
NjU1MzUKCWFuZHMgcjEsIHIxMAoJbGRyIHIxLCBbcjEsICMxMDc2XQoJbW92dyByMTAsICMyMjk1
MgoJYWRkIHIxMCwgcjEKCXN0ciByNywgW3IxMCwgIzBdCgltb3YgcjAsIHI3CglsZHIgcjEsIFty
NywgIzI0XQoJbGRyIHIxLCBbcjEsICMyMF0KCW1vdiByNCwgc3AKCWFuZCByNCwgcjQsICMxNQoJ
dHN0IHI0LCByNAoJYmVxIC5MX29mZmxpbmVhc21fbmF0aXZlQ2FsbFRyYW1wb2xpbmVfXzc3X2No
ZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50X19zdGFja1BvaW50ZXJPa2F5Cgltb3Z3IHI0LCAjMQoJ
bW92dCByNCwgIzU3MDA1Cglia3B0ICMwCi5MX29mZmxpbmVhc21fbmF0aXZlQ2FsbFRyYW1wb2xp
bmVfXzc3X2NoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50X19zdGFja1BvaW50ZXJPa2F5OgoJbGRy
IHIxMCwgW3IxLCAjNTJdCglibHggcjEwCglsZHIgcjQsIFtyNywgIzE2XQoJbW92dyByMTAsICMw
Cgltb3Z0IHIxMCwgIzY1NTM1CglhbmRzIHI0LCByMTAKCWxkciByNCwgW3I0LCAjMTA3Nl0KCWFk
ZHMgc3AsICM4Cglwb3AgeyByNyB9Cglwb3AgeyBsciB9Cgltb3Z3IHIxMCwgIzI3MDYwCglhZGQg
cjEwLCByNAoJbXZuIHI2LCAjNQoJbGRyIHIxMiwgW3IxMCwgIzBdCgljbXAgcjEyLCByNgoJYm5l
IC5MX29mZmxpbmVhc21fNzdfbmF0aXZlQ2FsbFRyYW1wb2xpbmVfX2hhbmRsZUV4Y2VwdGlvbgoJ
YnggbHIKLkxfb2ZmbGluZWFzbV83N19uYXRpdmVDYWxsVHJhbXBvbGluZV9faGFuZGxlRXhjZXB0
aW9uOgoJbW92dyByNiwgIzIyOTUyCglhZGQgcjYsIHI0CglzdHIgcjcsIFtyNiwgIzBdCglsZHIg
cjIsIFtyNywgIzhdCglsZHIgcjgsIFtyMiwgIzI4XQoJbHNscyByOCwgcjgsICMzCglhZGRzIHI4
LCAjMjQKCXN1YnMgcjgsIHI3LCByOAoJbW92IHNwLCByOAoJYiAuTGxsaW50X3Rocm93X2Zyb21f
c2xvd19wYXRoX3RyYW1wb2xpbmUKLkxsbGludF9vcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6Cglt
b3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggc2xvd19wYXRoX2dldF9lbnVtZXJhYmxlX2xlbmd0
aAoJbW92IHI5LCByMAoJYWRkcyByOSwgIzEyCglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2
Ci5MbGxpbnRfb3BfaGFzX2luZGV4ZWRfcHJvcGVydHk6Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5
CglibHggc2xvd19wYXRoX2hhc19pbmRleGVkX3Byb3BlcnR5Cgltb3YgcjksIHIwCglhZGRzIHI5
LCAjMjAKCWxkciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxsbGludF9vcF9oYXNfc3RydWN0
dXJlX3Byb3BlcnR5OgoJbW92IHIwLCByNwoJbW92IHIxLCByOQoJYmx4IHNsb3dfcGF0aF9oYXNf
c3RydWN0dXJlX3Byb3BlcnR5Cgltb3YgcjksIHIwCglhZGRzIHI5LCAjMjAKCWxkciByNiwgW3I5
LCAjMF0KCW1vdiBwYywgcjYKLkxsbGludF9vcF9oYXNfZ2VuZXJpY19wcm9wZXJ0eToKCW1vdiBy
MCwgcjcKCW1vdiByMSwgcjkKCWJseCBzbG93X3BhdGhfaGFzX2dlbmVyaWNfcHJvcGVydHkKCW1v
diByOSwgcjAKCWFkZHMgcjksICMxNgoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTGxs
aW50X29wX2dldF9kaXJlY3RfcG5hbWU6Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggc2xv
d19wYXRoX2dldF9kaXJlY3RfcG5hbWUKCW1vdiByOSwgcjAKCWFkZHMgcjksICMyOAoJbGRyIHI2
LCBbcjksICMwXQoJbW92IHBjLCByNgouTGxsaW50X29wX2dldF9zdHJ1Y3R1cmVfcHJvcGVydHlf
ZW51bWVyYXRvcjoKCW1vdiByMCwgcjcKCW1vdiByMSwgcjkKCWJseCBzbG93X3BhdGhfZ2V0X3N0
cnVjdHVyZV9wcm9wZXJ0eV9lbnVtZXJhdG9yCgltb3YgcjksIHIwCglhZGRzIHI5LCAjMTYKCWxk
ciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxsbGludF9vcF9nZXRfZ2VuZXJpY19wcm9wZXJ0
eV9lbnVtZXJhdG9yOgoJbW92IHIwLCByNwoJbW92IHIxLCByOQoJYmx4IHNsb3dfcGF0aF9nZXRf
Z2VuZXJpY19wcm9wZXJ0eV9lbnVtZXJhdG9yCgltb3YgcjksIHIwCglhZGRzIHI5LCAjMjAKCWxk
ciByNiwgW3I5LCAjMF0KCW1vdiBwYywgcjYKLkxsbGludF9vcF9uZXh0X2VudW1lcmF0b3JfcG5h
bWU6Cgltb3YgcjAsIHI3Cgltb3YgcjEsIHI5CglibHggc2xvd19wYXRoX25leHRfZW51bWVyYXRv
cl9wbmFtZQoJbW92IHI5LCByMAoJYWRkcyByOSwgIzE2CglsZHIgcjYsIFtyOSwgIzBdCgltb3Yg
cGMsIHI2Ci5MbGxpbnRfb3BfdG9faW5kZXhfc3RyaW5nOgoJbW92IHIwLCByNwoJbW92IHIxLCBy
OQoJYmx4IHNsb3dfcGF0aF90b19pbmRleF9zdHJpbmcKCW1vdiByOSwgcjAKCWFkZHMgcjksICMx
MgoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTGxsaW50X29wX2luaXRfZ2xvYmFsX2Nv
bnN0X25vcDoKCWFkZHMgcjksICMyMAoJbGRyIHI2LCBbcjksICMwXQoJbW92IHBjLCByNgouTGxs
aW50X29wX3Byb2ZpbGVfdHlwZXNfd2l0aF9oaWdoX2ZpZGVsaXR5OgoJbW92IHIwLCByNwoJbW92
IHIxLCByOQoJYmx4IHNsb3dfcGF0aF9wcm9maWxlX3R5cGVzX3dpdGhfaGlnaF9maWRlbGl0eQoJ
bW92IHI5LCByMAoJYWRkcyByOSwgIzI0CglsZHIgcjYsIFtyOSwgIzBdCgltb3YgcGMsIHI2CgoJ
LmlkZW50CSJHQ0M6IChjcm9zc3Rvb2wtTkcgMS4xOS4wKSA0LjguMSIKCS5zZWN0aW9uCS5ub3Rl
LkdOVS1zdGFjaywiIiwlcHJvZ2JpdHMK
</data>

          </attachment>
      

    </bug>

</bugzilla>